From 596d2457238d3f6deb2021b255772e55fe7ad47a Mon Sep 17 00:00:00 2001 From: Raphael Girardot <raphael.girardot@synchrotron-soleil.fr> Date: Mon, 30 Nov 2020 11:24:25 +0000 Subject: [PATCH] - The "show view" action also selects the view (seems coherent with JAVAAPI-132) - VlDockView.select() now works as expected (JAVAAPI-132) - Minor code cleaning --- .../docking/vl/SoleilDockingDesktop.java | 21 ++++++++++--------- .../fr/soleil/docking/vl/view/VlDockView.java | 8 ++++++- 2 files changed, 18 insertions(+), 11 deletions(-) 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 0c344dc..1f17120 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 48bc600..dfb6a56 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) { -- GitLab