Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 718bcc1c by tchemit at 2019-02-25T13:01:36Z Improve select tree - C:oses #1239 - - - - - 15 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/SelectionTree.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/SelectionTreeCellRenderer.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ProgramSelectionTreeNode.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/RootSelectionTreeNode.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/SelectionTreeNodeSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java - + client-core/src/main/resources/icons/checkBox.png - + client-core/src/main/resources/icons/checkBoxIndeterminateSelected.png - + client-core/src/main/resources/icons/checkBoxSelected.png - client-core/src/main/resources/observe-ui.properties Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java ===================================== @@ -61,6 +61,7 @@ public abstract class ObserveKeyStrokes { public static final KeyStroke KEY_STROKE_RELOAD_DEFAULT_CONFIGURATION = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK); public static final KeyStroke KEY_STROKE_ESCAPE = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); public static final KeyStroke KEY_STROKE_ENTER = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0); + public static final KeyStroke KEY_STROKE_SPACE = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0); public static final KeyStroke KEY_STROKE_NAVIGATION_CONFIGURE = KeyStroke.getKeyStroke("ctrl pressed F1"); public static final KeyStroke KEY_STROKE_SHOW_SEINE = KeyStroke.getKeyStroke("ctrl pressed F2"); public static final KeyStroke KEY_STROKE_SHOW_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed F3"); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/SelectionTree.java ===================================== @@ -56,9 +56,11 @@ public class SelectionTree extends JXTree { public void installUI() { + getInputMap().put(ObserveKeyStrokes.KEY_STROKE_SPACE,"none"); InputMap inputMap = getInputMap(WHEN_IN_FOCUSED_WINDOW); ActionMap actionMap = getActionMap(); inputMap.put(ObserveKeyStrokes.KEY_STROKE_ENTER, "select/unselect"); + inputMap.put(ObserveKeyStrokes.KEY_STROKE_SPACE, "select/unselect"); actionMap.put("select/unselect", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { @@ -80,8 +82,11 @@ public class SelectionTree extends JXTree { InputMap inputMap = getInputMap(WHEN_IN_FOCUSED_WINDOW); ActionMap actionMap = getActionMap(); + getInputMap().put(ObserveKeyStrokes.KEY_STROKE_SPACE,"none"); + oppositeTree.getInputMap().put(ObserveKeyStrokes.KEY_STROKE_SPACE,"none"); inputMap.put(ObserveKeyStrokes.KEY_STROKE_ENTER, "select/unselect"); + inputMap.put(ObserveKeyStrokes.KEY_STROKE_SPACE, "select/unselect"); actionMap.put("select/unselect", new AbstractAction() { @Override ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/SelectionTreeCellRenderer.java ===================================== @@ -31,9 +31,11 @@ import javax.swing.Icon; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JTree; +import javax.swing.UIManager; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; +import java.util.Objects; /** * Created on 14/11/16. @@ -45,6 +47,8 @@ public class SelectionTreeCellRenderer extends DefaultXTreeCellRenderer { private final JPanel panel; private final JCheckBox selected; + private final Icon unselectedIcon; + private Icon partialIcon; protected SelectionTreeCellRenderer() { selected = new JCheckBox(); @@ -52,6 +56,11 @@ public class SelectionTreeCellRenderer extends DefaultXTreeCellRenderer { panel.setOpaque(false); panel.add(selected, BorderLayout.WEST); panel.add(this, BorderLayout.CENTER); + partialIcon = Objects.requireNonNull(UIManager.getIcon("checkbox.partial")); + unselectedIcon = Objects.requireNonNull(UIManager.getIcon("checkbox.empty")); + selected.setIcon(unselectedIcon); + Icon selectedIcon = Objects.requireNonNull(UIManager.getIcon("checkbox.selected")); + selected.setSelectedIcon(selectedIcon); } public Icon getIcon(SelectionTreeNodeSupport node) { @@ -69,7 +78,9 @@ public class SelectionTreeCellRenderer extends DefaultXTreeCellRenderer { } else if (node instanceof TripLonglineSelectionTreeNode) { setToolTipText(((TripLonglineSelectionTreeNode) node).getToolTipText()); } - selected.setSelected(node.isSelected()); + boolean selected = node.isSelected(); + this.selected.setSelected(selected); + this.selected.setIcon(selected || !node.isPartialSelected() ? unselectedIcon : partialIcon); panel.setPreferredSize(new Dimension(getPreferredSize().width + 20, getPreferredSize().height + 2)); return panel; } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ProgramSelectionTreeNode.java ===================================== @@ -29,6 +29,7 @@ import fr.ird.observe.dto.data.ps.common.TripSeineReference; import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.dto.referential.common.ProgramDto; import fr.ird.observe.dto.referential.common.ProgramReference; +import fr.ird.observe.navigation.model.edit.ObserveEditModel; import org.apache.commons.collections4.EnumerationUtils; import java.util.Collection; @@ -65,10 +66,12 @@ public class ProgramSelectionTreeNode extends ReferenceSelectionTreeNodeSupport< @Override public boolean isOpen() { - return Objects.equals(ObserveSwingApplicationContext.get().getNavigationEdit().getLongline().getProgram().getId(),toString()) - || Objects.equals(ObserveSwingApplicationContext.get().getNavigationEdit().getSeine().getProgram().getId(),toString()); + ObserveEditModel navigationEdit = getNavigationEditModel(); + return Objects.equals(navigationEdit.getLongline().getProgram().getId(), toString()) + || Objects.equals(navigationEdit.getSeine().getProgram().getId(), toString()); } + @Override public Iterator<TripSelectionTreeNodeSupport<?, ?>> iterator() { return (Iterator) EnumerationUtils.toList(super.children()).iterator(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java ===================================== @@ -26,8 +26,11 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.dto.IdDto; import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.reference.DtoReference; +import fr.ird.observe.navigation.model.edit.ObserveEditModel; import org.nuiton.decorator.Decorator; +import java.util.Enumeration; + /** * Created on 18/11/16. * @@ -69,4 +72,26 @@ public abstract class ReferenceSelectionTreeNodeSupport<D extends IdDto, R exten public void setSelected(boolean selected) { this.selected = selected; } + + @Override + public boolean isPartialSelected() { + if (isSelected()) { + return false; + } + if (isLeaf()) { + return false; + } + Enumeration<SelectionTreeNodeSupport> children = children(); + while (children.hasMoreElements()) { + SelectionTreeNodeSupport nodeSupport = children.nextElement(); + if (nodeSupport.isSelected()) { + return true; + } + } + return false; + } + + ObserveEditModel getNavigationEditModel() { + return ObserveSwingApplicationContext.get().getNavigationEdit(); + } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java ===================================== @@ -66,6 +66,11 @@ public class ReferentialSelectionTreeNode<D extends ReferentialDto> extends Sele return selected; } + @Override + public boolean isPartialSelected() { + return false; + } + @Override public void setSelected(boolean selected) { this.selected = selected; ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java ===================================== @@ -100,6 +100,19 @@ public class ReferentialsSelectionTreeNode extends SelectionTreeNodeSupport<Stri return true; } + @Override + public boolean isPartialSelected() { + if (isSelected()) { + return false; + } + for (ReferentialSelectionTreeNode<?> nodeSupport : this) { + if (nodeSupport.isSelected()) { + return true; + } + } + return false; + } + public ImmutableList<Class<? extends ReferentialDto>> getSelected() { ImmutableList.Builder<Class<? extends ReferentialDto>> builder = ImmutableList.builder(); for (ReferentialSelectionTreeNode<?> nodeSupport : this) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/RootSelectionTreeNode.java ===================================== @@ -74,6 +74,11 @@ public class RootSelectionTreeNode extends SelectionTreeNodeSupport<Void> implem // rien a faire } + @Override + public boolean isPartialSelected() { + return false; + } + public ReferentialsSelectionTreeNode[] getReferentialsNodes() { ReferentialsSelectionTreeNode[] result = new ReferentialsSelectionTreeNode[3]; result[0] = (ReferentialsSelectionTreeNode) getChildAt(getChildCount() - 3); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/SelectionTreeNodeSupport.java ===================================== @@ -42,6 +42,8 @@ public abstract class SelectionTreeNodeSupport<O> extends DefaultMutableTreeNode public abstract boolean isOpen(); + public abstract boolean isPartialSelected(); + public abstract String getId(); public abstract String getText(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java ===================================== @@ -44,7 +44,7 @@ public class TripLonglineSelectionTreeNode extends TripSelectionTreeNodeSupport< @Override public boolean isOpen() { - return Objects.equals(ObserveSwingApplicationContext.get().getNavigationEdit().getLongline().getTrip().getId(), getId()); + return Objects.equals(getNavigationEditModel().getLongline().getTrip().getId(), getId()); } @Override ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java ===================================== @@ -44,7 +44,7 @@ public class TripSeineSelectionTreeNode extends TripSelectionTreeNodeSupport<Tri @Override public boolean isOpen() { - return Objects.equals(ObserveSwingApplicationContext.get().getNavigationEdit().getSeine().getTrip().getId(), getId()); + return Objects.equals(getNavigationEditModel().getSeine().getTrip().getId(), getId()); } @Override ===================================== client-core/src/main/resources/icons/checkBox.png ===================================== Binary files /dev/null and b/client-core/src/main/resources/icons/checkBox.png differ ===================================== client-core/src/main/resources/icons/checkBoxIndeterminateSelected.png ===================================== Binary files /dev/null and b/client-core/src/main/resources/icons/checkBoxIndeterminateSelected.png differ ===================================== client-core/src/main/resources/icons/checkBoxSelected.png ===================================== Binary files /dev/null and b/client-core/src/main/resources/icons/checkBoxSelected.png differ ===================================== client-core/src/main/resources/observe-ui.properties ===================================== @@ -65,6 +65,11 @@ icon.navigation.data.ll.observation.ActivityLonglineObs-16=navigation/ird/route1 icon.navigation.data.ll.observation.SetLonglineObs-16=navigation/ird/set16.png icon.navigation.data.ll.observation.CatchLonglineObs-16=navigation/ird/floatingObject16.png icon.navigation.data.ll.observation.TdrObs-16=navigation/ird/floatingObject16.png + +icon.checkbox.empty=checkBox.png +icon.checkbox.partial=checkBoxIndeterminateSelected.png +icon.checkbox.selected=checkBoxSelected.png + # icones d'action sur les editeurs numeriques #icon.action.numbereditor-showpopup=action-numbereditor-showpopup.png #icon.action.numbereditor-reset=action-numbereditor-reset.png View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/718bcc1c7009f075bb40f32dd609... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/718bcc1c7009f075bb40f32dd609... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT