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 15c02cfee0fa7ed1379483b42491e77178e757c8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Oct 4 09:15:42 2016 +0200 [GESTION AVANCEE DES MAREES] Identifier les marées qui sont présentes des 2 côtés (Fixes #8575) --- .../data/DataSynchroSelectionTreeCellRenderer.java | 62 ++++++++++++++++++++++ .../ui/admin/synchronize/data/DataSynchroUI.jcss | 4 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 2 +- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroSelectionTreeCellRenderer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroSelectionTreeCellRenderer.java new file mode 100644 index 0000000..6b6cd04 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroSelectionTreeCellRenderer.java @@ -0,0 +1,62 @@ +package fr.ird.observe.application.swing.ui.admin.synchronize.data; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.tree.DataSelectionTreeCellRenderer; +import fr.ird.observe.application.swing.ui.tree.ObserveNode; +import fr.ird.observe.application.swing.ui.tree.ReferentialReferenceNodeSupport; + +import javax.swing.Icon; +import javax.swing.JTree; +import javax.swing.tree.TreeModel; +import java.util.Enumeration; + +/** + * Created by tchemit on 04/10/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DataSynchroSelectionTreeCellRenderer extends DataSelectionTreeCellRenderer { + + private final Icon newTripIcon = UIHelper.createActionIcon("synchroAdd"); + private final Icon existingTripIcon = UIHelper.createActionIcon("synchroUpdate"); + private final JTree oppositeTree; + + private ImmutableSet<String> oppositeIds; + + public DataSynchroSelectionTreeCellRenderer(JTree oppositeTree) { + this.oppositeTree = oppositeTree; + } + + @Override + public void setIcon(ObserveNode node) { + if (node instanceof ReferentialReferenceNodeSupport<?> || !(oppositeTree.getModel().getRoot() instanceof ObserveNode)) { + super.setIcon(node); + } else { + if (getOppositeIds().contains(node.getId())) { + setDefaultIcons(existingTripIcon); + } else { + setDefaultIcons(newTripIcon); + } + } + } + + private ImmutableSet<String> getOppositeIds() { + if (oppositeIds == null) { + ImmutableSet.Builder<String> builder = ImmutableSet.builder(); + TreeModel model = oppositeTree.getModel(); + ObserveNode rootNode = (ObserveNode) model.getRoot(); + Enumeration<ObserveNode> programNodes = rootNode.children(); + while (programNodes.hasMoreElements()) { + ObserveNode programNode = programNodes.nextElement(); + Enumeration<ObserveNode> tripNodes = programNode.children(); + while (tripNodes.hasMoreElements()) { + ObserveNode tripNode = tripNodes.nextElement(); + builder.add(tripNode.getId()); + } + } + oppositeIds = builder.build(); + } + return oppositeIds; + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jcss index d7a19f5..a6be801 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jcss @@ -51,7 +51,7 @@ showsRootHandles:false; toggleClickCount:100; selectionModel:{leftSelectionModel}; - cellRenderer:{new DataSelectionTreeCellRenderer()}; + cellRenderer:{new DataSynchroSelectionTreeCellRenderer(rightTree)}; } #leftSelectionModel { @@ -71,7 +71,7 @@ showsRootHandles:false; toggleClickCount:100; selectionModel:{rightSelectionModel}; - cellRenderer:{new DataSelectionTreeCellRenderer()}; + cellRenderer:{new DataSynchroSelectionTreeCellRenderer(leftTree)}; } #rightSelectionModel { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/AbstractObserveTreeCellRenderer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/AbstractObserveTreeCellRenderer.java index a3f3c92..b00bf46 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/AbstractObserveTreeCellRenderer.java @@ -231,7 +231,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel return icon; } - private void setDefaultIcons(Icon icon) { + protected void setDefaultIcons(Icon icon) { if (icon == null) { // the icon is not customized for this node setOpenIcon(getDefaultOpenIcon()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.