diff --git a/dockingvl/src/main/java/fr/soleil/docking/vl/SoleilDockingDesktop.java b/dockingvl/src/main/java/fr/soleil/docking/vl/SoleilDockingDesktop.java index 0c344dc8bed7812bbf72ca8d05351ac3127061e2..1f17120b784b08c0edd66cad830539332a519ac3 100644 --- a/dockingvl/src/main/java/fr/soleil/docking/vl/SoleilDockingDesktop.java +++ b/dockingvl/src/main/java/fr/soleil/docking/vl/SoleilDockingDesktop.java @@ -25,9 +25,9 @@ import fr.soleil.docking.vl.view.VlDockView; public class SoleilDockingDesktop extends DockingDesktop { - private static final long serialVersionUID = -2283595226822086501L; + private static final long serialVersionUID = -6192752805034560434L; - protected Map<String, RelativeDockablePosition> closedPositions = new HashMap<String, RelativeDockablePosition>(); + protected final Map<String, RelativeDockablePosition> closedPositions; protected boolean closeEnabled; protected boolean autoHideEnabled; @@ -40,17 +40,17 @@ public class SoleilDockingDesktop extends DockingDesktop { public SoleilDockingDesktop(boolean close, boolean autoHide, boolean maximize, boolean floating) { super(); + closedPositions = new HashMap<>(); closeEnabled = close; autoHideEnabled = autoHide; maximizeEnabled = maximize; floatingEnabled = floating; addDockingActionListener(generateDockingActionListener()); addDockableSelectionListener(new DockableSelectionListener() { - @Override - public void selectionChanged(DockableSelectionEvent arg0) { - if (arg0.getSelectedDockable() instanceof VlDockView) { - ((VlDockView) arg0.getSelectedDockable()).focusGained(null); + public void selectionChanged(DockableSelectionEvent dse) { + if (dse.getSelectedDockable() instanceof VlDockView) { + ((VlDockView) dse.getSelectedDockable()).focusGained(null); } } }); @@ -92,12 +92,13 @@ public class SoleilDockingDesktop extends DockingDesktop { public void showDockable(Dockable dockable) { DockableState state = getDockableState(dockable); - if (state == null || Location.CLOSED.equals(state.getLocation()) || Location.HIDDEN.equals(state.getLocation())) { + if (state == null || Location.CLOSED.equals(state.getLocation()) + || Location.HIDDEN.equals(state.getLocation())) { RelativeDockablePosition position = getPositionForClosedView(dockable); - if (position != null) { - addDockable(dockable, position); - } else { + if (position == null) { addDockable(dockable); + } else { + addDockable(dockable, position); } } } diff --git a/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java b/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java index 48bc600f7759b5c0d77a4c4fc02319e84e630f35..dfb6a561d491f1311a97be6a0f0ff96a9e3b9227 100644 --- a/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java +++ b/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java @@ -21,6 +21,8 @@ import com.vldocking.swing.docking.DockKey; import com.vldocking.swing.docking.Dockable; import com.vldocking.swing.docking.DockableState; import com.vldocking.swing.docking.DockableState.Location; +import com.vldocking.swing.docking.DockingUtilities; +import com.vldocking.swing.docking.TabbedDockableContainer; import com.vldocking.swing.docking.event.DockingActionCloseEvent; import com.vldocking.swing.docking.event.DockingActionEvent; import com.vldocking.swing.docking.event.DockingActionListener; @@ -110,9 +112,13 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus @Override public void select() { setVisible(true); - // TODO Doesn't work !!!!!! focus(component, true); focusGained(new FocusEvent(component, FocusEvent.FOCUS_GAINED)); + // Following code is the one that really works + TabbedDockableContainer tabbedDockableContainer = DockingUtilities.findTabbedDockableContainer(this); + if (tabbedDockableContainer != null) { + tabbedDockableContainer.setSelectedDockable(this); + } } protected static boolean focus(Component comp, boolean forceFocus) {