This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 0b42cc44056d2efb8d9b8522e6341172c7acd6b5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 26 15:21:52 2016 +0100 fixes #8313 Sur l'écran de sélection des marées, remplacer la sélection en bleu par des cases à cocher --- .../application/swing/ui/admin/AdminUIHandler.java | 4 +- .../swing/ui/tree/selection/SelectionTree.java | 110 +++------------------ .../tree/selection/SelectionTreeCellRenderer.java | 26 +++-- .../ui/tree/selection/SelectionTreeModel.java | 102 +++++++------------ .../selection/nodes/ProgramSelectionTreeNode.java | 1 - .../nodes/ReferenceSelectionTreeNodeSupport.java | 3 - .../selection/nodes/SelectionTreeNodeSupport.java | 13 ++- 7 files changed, 76 insertions(+), 183 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java index 4648162..565cc11 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java @@ -234,10 +234,10 @@ public class AdminUIHandler { selectTree.clearSelection(); SwingUtilities.invokeLater(selectTree::grabFocus); - + if (selectTree.getTreeModel().isNotEmpty()) { - selectTree.getSelectionModel().setLeadSelectionIndex(0); + selectTree.setSelectionRow(0); } if (stepUI.getModel().getSafeLocalSource(true).isLocal()) { SwingUtilities.invokeLater(selectTree::expandAll); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java index a440309..4b5a270 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java @@ -23,10 +23,7 @@ package fr.ird.observe.application.swing.ui.tree.selection; */ import fr.ird.observe.application.swing.ui.tree.selection.nodes.SelectionTreeNodeSupport; -import org.jdesktop.swingx.JXTreeTable; -import org.jdesktop.swingx.renderer.CellContext; -import org.jdesktop.swingx.renderer.CheckBoxProvider; -import org.jdesktop.swingx.renderer.DefaultTableRenderer; +import org.jdesktop.swingx.JXTree; import javax.swing.AbstractAction; import javax.swing.ActionMap; @@ -42,25 +39,13 @@ import java.awt.event.KeyEvent; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class SelectionTree extends JXTreeTable { +public class SelectionTree extends JXTree { public SelectionTree() { super(new SelectionTreeModel()); setLargeModel(true); - setTreeCellRenderer(new SelectionTreeCellRenderer()); + setCellRenderer(new SelectionTreeCellRenderer()); setRootVisible(false); - setDefaultRenderer(boolean.class, new DefaultTableRenderer(new CheckBoxProvider() { - @Override - protected void configureVisuals(CellContext context) { - super.configureVisuals(context); - if (context != null) { - SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) getValueAt(context.getRow(), 0); - boolean editable = getTreeModel().isCellEditable(node, 1); - rendererComponent.setEnabled(editable); - } - } - })); - setShowGrid(false); setRowHeight(30); getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -70,41 +55,17 @@ public class SelectionTree extends JXTreeTable { InputMap inputMap = getInputMap(WHEN_IN_FOCUSED_WINDOW); ActionMap actionMap = getActionMap(); - inputMap.put(KeyStroke.getKeyStroke("pressed F3"), "fold/unfold"); - actionMap.put("fold/unfold", new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - int selectedRow = getSelectedRow(); - if (selectedRow == -1) { - return; - } - - if (!isFocusOwner()) { - return; - } - SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) getPathForRow(selectedRow).getLastPathComponent(); - if (node.isLeaf()) { - return; - } - if (isExpanded(selectedRow)) { - - collapseRow(selectedRow); - } else { - expandRow(selectedRow); - } - } - }); - - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "select/unselect"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "select/unselect"); actionMap.put("select/unselect", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - int selectedRow = getSelectedRow(); - if (selectedRow == -1) { + Object selectedRow = getLastSelectedPathComponent(); + if (selectedRow == null) { return; } - SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) getPathForRow(selectedRow).getLastPathComponent(); - getTreeModel().setValueAt(!node.isSelected(), node, 1); + + SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) selectedRow; + getTreeModel().setValueAt(node, !node.isSelected()); } }); } @@ -113,56 +74,24 @@ public class SelectionTree extends JXTreeTable { InputMap inputMap = getInputMap(WHEN_IN_FOCUSED_WINDOW); ActionMap actionMap = getActionMap(); - inputMap.put(KeyStroke.getKeyStroke("pressed F3"), "fold/unfold"); - actionMap.put("fold/unfold", new AbstractAction() { - - protected void forTree(SelectionTree tree) { - int selectedRow = tree.getSelectedRow(); - if (selectedRow == -1) { - return; - } - SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) tree.getPathForRow(selectedRow).getLastPathComponent(); - if (node.isLeaf()) { - return; - } - if (tree.isExpanded(selectedRow)) { - - tree.collapseRow(selectedRow); - } else { - tree.expandRow(selectedRow); - } - } - - @Override - public void actionPerformed(ActionEvent e) { - if (isFocusOwner()) { - forTree(SelectionTree.this); - return; - } else { - forTree(oppositeTree); - } - } - }); - - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "select/unselect"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "select/unselect"); actionMap.put("select/unselect", new AbstractAction() { protected void forTree(SelectionTree tree) { - int selectedRow = tree.getSelectedRow(); - if (selectedRow == -1) { + Object selectedRow = tree.getLastSelectedPathComponent(); + if (selectedRow == null) { return; } - SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) tree.getPathForRow(selectedRow).getLastPathComponent(); - tree.getTreeModel().setValueAt(!node.isSelected(), node, 1); + SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) selectedRow; + tree.getTreeModel().setValueAt(node, !node.isSelected()); } @Override public void actionPerformed(ActionEvent e) { if (isFocusOwner()) { forTree(SelectionTree.this); - return; } else { forTree(oppositeTree); } @@ -171,16 +100,7 @@ public class SelectionTree extends JXTreeTable { } public SelectionTreeModel getTreeModel() { - return (SelectionTreeModel) getTreeTableModel(); + return (SelectionTreeModel) getModel(); } - @Override - protected void configureEnclosingScrollPane() { - // ne rien faire, on utilise un autre composant - } - - @Override - protected void unconfigureEnclosingScrollPane() { - // ne rien faire, on utilise un autre composant - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java index a26db95..46e6d05 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java @@ -28,8 +28,10 @@ import fr.ird.observe.application.swing.ui.tree.selection.nodes.TripSeineSelecti import org.jdesktop.swingx.tree.DefaultXTreeCellRenderer; import javax.swing.Icon; -import javax.swing.JLabel; +import javax.swing.JCheckBox; +import javax.swing.JPanel; import javax.swing.JTree; +import java.awt.BorderLayout; import java.awt.Component; /** @@ -40,6 +42,17 @@ import java.awt.Component; */ public class SelectionTreeCellRenderer extends DefaultXTreeCellRenderer { + private final JPanel panel; + private final JCheckBox selected; + + public SelectionTreeCellRenderer() { + selected = new JCheckBox(); + panel = new JPanel(new BorderLayout(2, 2)); + panel.setOpaque(false); + panel.add(selected, BorderLayout.WEST); + panel.add(this, BorderLayout.CENTER); + } + public Icon getIcon(SelectionTreeNodeSupport node) { return node.getIcon(""); } @@ -48,14 +61,15 @@ public class SelectionTreeCellRenderer extends DefaultXTreeCellRenderer { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { SelectionTreeNodeSupport node = (SelectionTreeNodeSupport) value; Icon icon = getIcon(node); - JLabel treeCellRendererComponent = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); - treeCellRendererComponent.setIcon(icon); + super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + setIcon(icon); if (node instanceof TripSeineSelectionTreeNode) { - treeCellRendererComponent.setToolTipText(((TripSeineSelectionTreeNode) node).getToolTipText()); + setToolTipText(((TripSeineSelectionTreeNode) node).getToolTipText()); } else if (node instanceof TripLonglineSelectionTreeNode) { - treeCellRendererComponent.setToolTipText(((TripLonglineSelectionTreeNode) node).getToolTipText()); + setToolTipText(((TripLonglineSelectionTreeNode) node).getToolTipText()); } - return treeCellRendererComponent; + selected.setSelected(node.isSelected()); + return panel; } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java index 1e53c48..17a41a9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java @@ -45,10 +45,9 @@ import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.service.data.NavigationRequest; import fr.ird.observe.services.service.data.NavigationResult; import fr.ird.observe.services.service.data.NavigationService; -import org.jdesktop.swingx.treetable.DefaultTreeTableModel; -import org.jdesktop.swingx.treetable.TreeTableNode; -import javax.swing.tree.TreePath; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeNode; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; @@ -68,54 +67,32 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class SelectionTreeModel extends DefaultTreeTableModel { +public class SelectionTreeModel extends DefaultTreeModel { public static final String SELECTED_COUNT = "selectedCount"; public static final String SELECTION_EMPTY = "selectionEmpty"; + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); private boolean loadSeine = true; private boolean loadLongline = true; private boolean loadReferential = true; private boolean showEmptyTrips = true; - - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - private int selectedCount; private boolean useOpenData; - @Override - public int getColumnCount() { - return 2; - } - - @Override - public Class<?> getColumnClass(int column) { - if (column == 0) { - return Object.class; - } - return boolean.class; - } - - @Override - public Object getValueAt(Object node, int column) { - switch (column) { - case 0: - return node; - default: - return ((SelectionTreeNodeSupport) node).isSelected(); - } + public SelectionTreeModel() { + super(new RootSelectionTreeNode()); } - @Override - public void setValueAt(Object value, Object node, int column) { - SelectionTreeNodeSupport node1 = (SelectionTreeNodeSupport) node; - node1.setSelected((Boolean) value); - if (node1.isLeaf()) { - modelSupport.firePathChanged(new TreePath(getPathToRoot(node1.getParent()))); + public void setValueAt(SelectionTreeNodeSupport node, boolean value) { + node.setSelected(value); + if (node.isLeaf()) { + nodeChanged(node.getParent()); + nodeChanged(node); } else { - Enumeration<? extends TreeTableNode> children = node1.getParent().children(); + nodeChanged(node); + Enumeration<? extends TreeNode> children = node.children(); while (children.hasMoreElements()) { - TreeTableNode treeTableNode = children.nextElement(); - modelSupport.firePathChanged(new TreePath(treeTableNode)); + nodeChanged(children.nextElement()); } } recomputeSelectedCount(); @@ -143,12 +120,6 @@ public class SelectionTreeModel extends DefaultTreeTableModel { } @Override - public boolean isCellEditable(Object node, int column) { - SelectionTreeNodeSupport node1 = (SelectionTreeNodeSupport) node; - return column == 1 && !(node1 instanceof ProgramSelectionTreeNode && node1.isLeaf()); - } - - @Override public RootSelectionTreeNode getRoot() { return (RootSelectionTreeNode) super.getRoot(); } @@ -169,45 +140,36 @@ public class SelectionTreeModel extends DefaultTreeTableModel { pcs.removePropertyChangeListener(name, listener); } - public SelectionTreeModel() { - super(new RootSelectionTreeNode()); + public boolean isLoadSeine() { + return loadSeine; } public void setLoadSeine(boolean loadSeine) { this.loadSeine = loadSeine; } - public void setLoadLongline(boolean loadLongline) { - this.loadLongline = loadLongline; - } - - public void setLoadReferential(boolean loadReferential) { - this.loadReferential = loadReferential; - } - - public void setShowEmptyTrips(boolean showEmptyTrips) { - this.showEmptyTrips = showEmptyTrips; - } - - public boolean isLoadSeine() { - return loadSeine; - } - public boolean isLoadLongline() { return loadLongline; } + public void setLoadLongline(boolean loadLongline) { + this.loadLongline = loadLongline; + } + public boolean isLoadReferential() { return loadReferential; } + public void setLoadReferential(boolean loadReferential) { + this.loadReferential = loadReferential; + } + public boolean isShowEmptyTrips() { return showEmptyTrips; } - @Override - public int getHierarchicalColumn() { - return 0; + public void setShowEmptyTrips(boolean showEmptyTrips) { + this.showEmptyTrips = showEmptyTrips; } public Set<DataReference<?>> getSelectedData() { @@ -325,7 +287,7 @@ public class SelectionTreeModel extends DefaultTreeTableModel { } else { for (TripSelectionTreeNodeSupport<?> tripNode : programNode) { if (tripNode.isSelected()) { - removeTrip(programNode.getData(), (DataReference) tripNode.getData()); + removeTrip(programNode.getData(), tripNode.getData()); } } } @@ -357,14 +319,14 @@ public class SelectionTreeModel extends DefaultTreeTableModel { } } - public void setUseOpenData(boolean useOpenData) { - this.useOpenData = useOpenData; - } - public boolean isUseOpenData() { return useOpenData; } + public void setUseOpenData(boolean useOpenData) { + this.useOpenData = useOpenData; + } + public boolean isNotEmpty() { return !isEmpty(); } @@ -403,11 +365,13 @@ public class SelectionTreeModel extends DefaultTreeTableModel { } // Ne pas supprimer utiliser dans les templates + @SuppressWarnings("unused") public ImmutableList<ReferentialReference<ProgramDto>> getSelectedProgram() { return ImmutableList.copyOf(getSelectedDataByProgram().keySet()); } // Ne pas supprimer utiliser dans les templates + @SuppressWarnings("unused") public ImmutableList<DataReference<?>> getSelectedTripsByProgram(ReferentialReference<ProgramDto> program) { ProgramSelectionTreeNode programNode = (ProgramSelectionTreeNode) getRoot().findById(program.getId()); return programNode.getSelected(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java index bd390f0..f640935 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.selection.nodes; */ import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java index 13ca850..66d0256 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java @@ -27,9 +27,6 @@ import fr.ird.observe.services.dto.AbstractReference; import fr.ird.observe.services.dto.IdDto; import org.nuiton.decorator.Decorator; -import javax.swing.Icon; -import javax.swing.UIManager; - /** * Created on 18/11/16. * diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java index fe82547..38a93c5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java @@ -22,10 +22,9 @@ package fr.ird.observe.application.swing.ui.tree.selection.nodes; * #L% */ -import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; - import javax.swing.Icon; import javax.swing.UIManager; +import javax.swing.tree.DefaultMutableTreeNode; import java.awt.Color; import java.util.Enumeration; @@ -35,7 +34,11 @@ import java.util.Enumeration; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public abstract class SelectionTreeNodeSupport<O> extends DefaultMutableTreeTableNode { +public abstract class SelectionTreeNodeSupport<O> extends DefaultMutableTreeNode { + + public SelectionTreeNodeSupport(O data, boolean allowChildren) { + super(data, allowChildren); + } public abstract boolean isOpen(); @@ -45,10 +48,6 @@ public abstract class SelectionTreeNodeSupport<O> extends DefaultMutableTreeTabl public abstract String getIconPath(); - public SelectionTreeNodeSupport(O data, boolean allowChildren) { - super(data, allowChildren); - } - @Override public String toString() { return getText(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.