This is an automated email from the git hooks/post-receive script. New change to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git from c009f80 ajout des listeners sur les strates et sous strates (refs #7929) new 00cd88d suprpession des sous strates d'une zone (refs #7929) new ede2fb2 ajout des icones + tri des noeuds dans les arbres (refs #7929) new 08c08a6 sauvegarde du protocol (refs #7929) new 0f29ae8 on pousse les zones dans le modele de protocole (peut etre faire l'inverse...) (refs #7929) The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 0f29ae890ce61c4d136afcd6ad1091cf30cc4dfc Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 17:35:38 2016 +0100 on pousse les zones dans le modele de protocole (peut etre faire l'inverse...) (refs #7929) commit 08c08a6124f05fd054c22bfaf8c38dcb359ac40e Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 17:12:06 2016 +0100 sauvegarde du protocol (refs #7929) commit ede2fb2b8acf64ad94ad87819800cd4ebdd5b567 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 14:49:39 2016 +0100 ajout des icones + tri des noeuds dans les arbres (refs #7929) commit 00cd88dd28c8eaee31674e1943eb332016214290 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 11:34:43 2016 +0100 suprpession des sous strates d'une zone (refs #7929) Summary of changes: .../entities/protocol/TuttiProtocols.java | 3 + .../service/ProtocolPersistenceServiceImpl.java | 47 ++++++++++ .../content/protocol/EditProtocolUIHandler.java | 10 ++- .../content/protocol/EditProtocolUIModel.java | 11 ++- .../protocol/actions/SaveProtocolAction.java | 12 ++- .../swing/content/protocol/zones/ZoneEditorUI.jaxx | 6 ++ .../swing/content/protocol/zones/ZoneEditorUI.jcss | 30 ++++++- .../protocol/zones/ZoneEditorUIHandler.java | 78 +++++++++++----- .../content/protocol/zones/ZoneEditorUIModel.java | 98 ++++++++++----------- .../protocol/zones/actions/AddStratasAction.java | 2 +- .../CollapseAvailableStratasTreeAction.java | 20 +++++ .../zones/actions/CollapseZonesTreeAction.java | 20 +++++ .../actions/ExpandAvailableStratasTreeAction.java | 21 +++++ .../zones/actions/ExpandZonesTreeAction.java | 21 +++++ .../zones/actions/RemoveStratasAction.java | 17 ++-- .../protocol/zones/models/StrataUIModel.java | 33 +++++++ .../protocol/zones/models/SubStrataUIModel.java | 14 +++ .../content/protocol/zones/models/ZoneUIModel.java | 50 +++++++++-- .../content/protocol/zones/tree/StrataNode.java | 5 +- .../protocol/zones/tree/StratasTreeModel.java | 44 ++------- .../content/protocol/zones/tree/SubStrataNode.java | 4 +- .../protocol/zones/tree/ZoneEditorNode.java | 33 +++++++ .../zones/tree/ZoneEditorTreeCellRenderer.java | 37 ++++---- .../content/protocol/zones/tree/ZoneNode.java | 5 +- .../protocol/zones/tree/ZonesTreeModel.java | 21 ++++- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 - .../src/main/resources/icons/action-left.png | Bin 0 -> 345 bytes .../src/main/resources/icons/action-right.png | Bin 0 -> 349 bytes 29 files changed, 482 insertions(+), 165 deletions(-) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseAvailableStratasTreeAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseZonesTreeAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandAvailableStratasTreeAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandZonesTreeAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorNode.java create mode 100644 tutti-ui-swing/src/main/resources/icons/action-left.png create mode 100644 tutti-ui-swing/src/main/resources/icons/action-right.png -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git commit 00cd88dd28c8eaee31674e1943eb332016214290 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 11:34:43 2016 +0100 suprpession des sous strates d'une zone (refs #7929) --- .../content/protocol/zones/ZoneEditorUIModel.java | 79 ++++++++++------------ .../protocol/zones/actions/AddStratasAction.java | 2 +- .../zones/actions/RemoveStratasAction.java | 6 +- .../protocol/zones/models/StrataUIModel.java | 15 ++++ .../protocol/zones/models/SubStrataUIModel.java | 14 ++++ .../content/protocol/zones/models/ZoneUIModel.java | 32 +++++++-- 6 files changed, 93 insertions(+), 55 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java index dc98b25..0053939 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones; import fr.ifremer.tutti.persistence.entities.protocol.Strata; -import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.SubStrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; @@ -11,9 +10,7 @@ import org.jdesktop.beans.AbstractSerializableBean; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * @author Kevin Morin (Code Lutin) @@ -28,8 +25,6 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { public static final String PROPERTY_ZONES = "zones"; - protected final Map<SubStrata, StrataUIModel> strataBySubstrata = new HashMap<>(); - protected final List<StrataUIModel> availableStratas = new ArrayList<>(); protected final List<ZoneUIModel> zones = new ArrayList<>(); @@ -41,19 +36,21 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { public void setAvailableStratas(Collection<StrataUIModel> availableStratas) { this.availableStratas.clear(); addAllAvailableStratas(availableStratas); - - strataBySubstrata.clear(); - updateStrataBySubStrata(availableStratas); } public void addAllAvailableStratas(Collection<StrataUIModel> availableStratas) { Object oldValue = copyAvailableStratas(); this.availableStratas.addAll(availableStratas); - updateStrataBySubStrata(availableStratas); firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); } - public void removeAvailableStratas(Collection<StrataUIModel> stratas) { + public void addAvailableStrata(StrataUIModel availableStrata) { + Object oldValue = copyAvailableStratas(); + this.availableStratas.add(availableStrata); + firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); + } + + public void removeAllAvailableStratas(Collection<StrataUIModel> stratas) { Object oldValue = copyAvailableStratas(); @@ -63,22 +60,11 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { } - public void removeAvailableSubStratas(Collection<SubStrataUIModel> subStratas) { - Object oldValue = copyAvailableStratas(); - - subStratas.forEach(subStrata -> { - - StrataUIModel strata = strataBySubstrata.get(subStrata); - if (log.isInfoEnabled()) { - log.info("remove " + subStrata); - } - strata.removeSubstrata(subStrata); + public void removeAvailableStrata(StrataUIModel strata) { - if (strata.isSubstrataEmpty()) { - availableStratas.remove(strata); - } + Object oldValue = copyAvailableStratas(); - }); + availableStratas.remove(strata); firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); @@ -113,7 +99,7 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { } zone.addAllStrata(new ArrayList<>(stratas)); - removeAvailableStratas(stratas); + removeAllAvailableStratas(stratas); } public void removeStratasFromZone(Collection<StrataUIModel> stratas) { @@ -131,21 +117,21 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { } subStratas.forEach(subStrata -> { - StrataUIModel strata = strataBySubstrata.get(subStrata); + StrataUIModel strata = subStrata.getStrata(); + strata.removeSubstrata(subStrata); Strata zoneStrata = zone.getStrata(strata); - if (zoneStrata == null) { zoneStrata = new StrataUIModel(strata.getLocation()); zone.addStrata(zoneStrata); } - zoneStrata.addSubstrata(subStrata); + if (strata.isSubstrataEmpty()) { + removeAvailableStrata(strata); + } }); - removeAvailableSubStratas(subStratas); - } public void removeSubStratasFromZone(Collection<SubStrataUIModel> subStratas) { @@ -154,26 +140,33 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { } subStratas.forEach(subStrata -> { - StrataUIModel strata = strataBySubstrata.get(subStrata); + StrataUIModel strata = subStrata.getStrata(); + strata.removeSubstrata(subStrata); - //TODO remove substrata from zone -// StrataUIModel zoneStrata = -// strata.removeSubstrata(subStrata); -// strata.getZone().removeStrata(strata) + StrataUIModel availableStrata = getStrata(strata); + if (availableStrata == null) { + availableStrata = new StrataUIModel(strata.getLocation()); + addAvailableStrata(availableStrata); + } + availableStrata.addSubstrata(subStrata); + + if (strata.isSubstrataEmpty()) { + strata.getZone().removeStrata(strata); + } - strata.addSubstrata(subStrata); }); } + /** + * @param strata + * @return the strata from the available stratas which equals the strata in parameters + */ + protected StrataUIModel getStrata(StrataUIModel strata) { + return availableStratas.stream().filter(s -> s != null && s.equals(strata)).findFirst().orElse(null); + } + protected List<StrataUIModel> copyAvailableStratas() { return new ArrayList<>(availableStratas); } - protected void updateStrataBySubStrata(Collection<StrataUIModel> availableStratas) { - for (StrataUIModel strata : availableStratas) { - for (SubStrata substrata : strata.getSubstrata()) { - strataBySubstrata.put(substrata, strata); - } - } - } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/AddStratasAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/AddStratasAction.java index b7930e7..4782588 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/AddStratasAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/AddStratasAction.java @@ -40,7 +40,7 @@ public class AddStratasAction extends SimpleActionSupport<ZoneEditorUI> { JTree zonesTree = zoneEditorUI.getZonesTree(); TreePath selectedZonePath = zonesTree.getSelectionPath(); - ZoneNode zoneNode = (ZoneNode) selectedZonePath.getLastPathComponent(); + ZoneNode zoneNode = (ZoneNode) selectedZonePath.getPathComponent(1); ZoneUIModel selectedZone = zoneNode.getZone(); Set<StrataUIModel> stratasToAdd = new HashSet<>(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java index 582d278..1b2dcbd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java @@ -33,8 +33,6 @@ public class RemoveStratasAction extends SimpleActionSupport<ZoneEditorUI> { @Override protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { - JTree availableStratasTree = zoneEditorUI.getAvailableStratasTree(); - JTree zonesTree = zoneEditorUI.getZonesTree(); TreePath[] selectedStratas = zonesTree.getSelectionPaths(); @@ -49,14 +47,14 @@ public class RemoveStratasAction extends SimpleActionSupport<ZoneEditorUI> { StrataUIModel strata = ((StrataNode) node).getStrata(); if (log.isInfoEnabled()) { - log.info("add strata " + strata.getLabel()); + log.info("remove strata " + strata.getLabel()); } stratasToRemove.add(strata); } else if (node instanceof SubStrataNode) { SubStrataUIModel subStrata = ((SubStrataNode) node).getSubstrata(); if (log.isInfoEnabled()) { - log.info("add subtrata " + subStrata.getLabel()); + log.info("remove subtrata " + subStrata.getLabel() + " from " + subStrata.getStrata()); } subStratasToRemove.add(subStrata); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java index e7a09f8..d833a93 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java @@ -41,6 +41,7 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode public void addAllSubstrata(Collection<SubStrata> substrata) { Object oldValue = new HashSet<>(getSubstrata()); delegate.addAllSubstrata(substrata); + updateSubStrataStrata(substrata, this); firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); } @@ -48,6 +49,7 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode public void addSubstrata(SubStrata substrata) { Object oldValue = new HashSet<>(getSubstrata()); delegate.addSubstrata(substrata); + updateSubStrataStrata(substrata, this); firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); } @@ -85,6 +87,7 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode public boolean removeAllSubstrata(Collection<SubStrata> substrata) { Object oldValue = new HashSet<>(getSubstrata()); boolean result = delegate.removeAllSubstrata(substrata); + updateSubStrataStrata(substrata, null); firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); return result; } @@ -93,6 +96,7 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode public boolean removeSubstrata(SubStrata substrata) { Object oldValue = new HashSet<>(getSubstrata()); boolean result = delegate.removeSubstrata(substrata); + updateSubStrataStrata(substrata, null); firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); return result; } @@ -107,7 +111,9 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode @Override public void setSubstrata(Collection<SubStrata> substrata) { Object oldValue = new HashSet<>(getSubstrata()); + updateSubStrataStrata(getSubstrata(), null); delegate.setSubstrata(substrata); + updateSubStrataStrata(getSubstrata(), this); firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); } @@ -189,4 +195,13 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode return Stratas.newStrata(); } + protected void updateSubStrataStrata(Collection<SubStrata> subStratas, StrataUIModel strata) { + subStratas.forEach(subStrata -> updateSubStrataStrata(subStrata, strata)); + } + + protected void updateSubStrataStrata(SubStrata subStrata, StrataUIModel strata) { + if (subStrata instanceof SubStrataUIModel) { + ((SubStrataUIModel) subStrata).setStrata(strata); + } + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/SubStrataUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/SubStrataUIModel.java index a57aa4c..8dcbd8a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/SubStrataUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/SubStrataUIModel.java @@ -15,8 +15,12 @@ import java.util.Objects; */ public class SubStrataUIModel extends AbstractTuttiBeanUIModel<SubStrata, SubStrataUIModel> implements SubStrata { + public static final String PROPERTY_STRATA = "strata"; + protected final SubStrata delegate = SubStratas.newSubStrata(); + protected StrataUIModel strata; + protected static Binder<SubStrataUIModel, SubStrata> toBeanBinder = BinderFactory.newBinder(SubStrataUIModel.class, SubStrata.class); protected static Binder<SubStrata, SubStrataUIModel> fromBeanBinder = BinderFactory.newBinder(SubStrata.class, SubStrataUIModel.class); @@ -70,6 +74,16 @@ public class SubStrataUIModel extends AbstractTuttiBeanUIModel<SubStrata, SubStr return getLocation() == null ? null : getLocation().getLabel(); } + public StrataUIModel getStrata() { + return strata; + } + + public void setStrata(StrataUIModel strata) { + Object oldValue = getStrata(); + this.strata = strata; + firePropertyChange(PROPERTY_STRATA, oldValue, strata); + } + @Override public boolean equals(Object obj) { if (obj == null) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java index 6ff1188..433bb49 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java @@ -27,18 +27,38 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp } @Override - public void addAllStrata(Collection<Strata> strata) { + public void addAllStrata(Collection<Strata> stratas) { Object oldValue = new HashSet<>(getStrata()); - delegate.addAllStrata(strata); - updateStrataZone(strata, this); + + stratas.forEach(strata -> { + Strata existingStrata = getStrata(strata); + if (existingStrata != null) { + existingStrata.addAllSubstrata(strata.getSubstrata()); + + } else { + delegate.addStrata(strata); + } + }); + + updateStrataZone(stratas, this); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); } @Override public void addStrata(Strata strata) { Object oldValue = new HashSet<>(getStrata()); - delegate.addStrata(strata); + + Strata existingStrata = getStrata(strata); + if (existingStrata != null) { + existingStrata.addAllSubstrata(strata.getSubstrata()); + + } else { + delegate.addStrata(strata); + } + updateStrataZone(strata, this); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); } @@ -154,9 +174,7 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp } protected void updateStrataZone(Collection<Strata> stratas, ZoneUIModel zone) { - stratas.stream() - .filter(strata -> strata instanceof StrataUIModel) - .forEach(strata -> ((StrataUIModel) strata).setZone(zone)); + stratas.forEach(strata -> updateStrataZone(strata, zone)); } protected void updateStrataZone(Strata strata, ZoneUIModel zone) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git commit ede2fb2b8acf64ad94ad87819800cd4ebdd5b567 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 14:49:39 2016 +0100 ajout des icones + tri des noeuds dans les arbres (refs #7929) --- .../swing/content/protocol/zones/ZoneEditorUI.jaxx | 6 +++ .../swing/content/protocol/zones/ZoneEditorUI.jcss | 30 ++++++++++++-- .../protocol/zones/ZoneEditorUIHandler.java | 17 ++++++++ .../CollapseAvailableStratasTreeAction.java | 20 ++++++++++ .../zones/actions/CollapseZonesTreeAction.java | 20 ++++++++++ .../actions/ExpandAvailableStratasTreeAction.java | 21 ++++++++++ .../zones/actions/ExpandZonesTreeAction.java | 21 ++++++++++ .../content/protocol/zones/tree/StrataNode.java | 5 +-- .../protocol/zones/tree/StratasTreeModel.java | 44 +++------------------ .../content/protocol/zones/tree/SubStrataNode.java | 4 +- .../protocol/zones/tree/ZoneEditorNode.java | 33 ++++++++++++++++ .../zones/tree/ZoneEditorTreeCellRenderer.java | 37 +++++++++-------- .../content/protocol/zones/tree/ZoneNode.java | 5 +-- .../protocol/zones/tree/ZonesTreeModel.java | 13 ++++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 -- .../src/main/resources/icons/action-left.png | Bin 0 -> 345 bytes .../src/main/resources/icons/action-right.png | Bin 0 -> 349 bytes 18 files changed, 206 insertions(+), 75 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jaxx index 18129bb..bd4b528 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jaxx @@ -1,11 +1,13 @@ <Table id='editProtocolTopPanel' + fill="both" implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<ZoneEditorUIModel, ZoneEditorUIHandler>'> <import> fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneEditorTreeCellRenderer fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil + jaxx.runtime.SwingUtil </import> <script><![CDATA[ @@ -23,6 +25,8 @@ <cell> <JToolBar id="zonesTreeToolBar"> <JButton id="createZone"/> + <JButton id="expandZonesTree"/> + <JButton id="collapseZonesTree"/> </JToolBar> </cell> <cell> @@ -30,6 +34,8 @@ </cell> <cell> <JToolBar id="availableStratasTreeToolBar"> + <JButton id="expandAvailableStratasTree"/> + <JButton id="collapseAvailableStratasTree"/> </JToolBar> </cell> </row> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jcss index 8c336fa..c322086 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jcss @@ -3,23 +3,47 @@ JTree { expandsSelectedPaths: true; scrollsOnExpand: true; rootVisible: false; - showsRootHandles: false; + showsRootHandles: true; cellRenderer: {new ZoneEditorTreeCellRenderer()}; } +JToolBar { + floatable: false; +} + #createZone { actionIcon: add; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.CreateZoneAction.class}; } +#expandZonesTree { + actionIcon: expand; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.ExpandZonesTreeAction.class}; +} + +#collapseZonesTree { + actionIcon: collapse; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.CollapseZonesTreeAction.class}; +} + +#expandAvailableStratasTree { + actionIcon: expand; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.ExpandAvailableStratasTreeAction.class}; +} + +#collapseAvailableStratasTree { + actionIcon: collapse; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.CollapseAvailableStratasTreeAction.class}; +} + #addButton { - text: "<<"; + actionIcon: left; enabled: {zonesTree.getSelectionCount() == 1}; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.AddStratasAction.class}; } #removeButton { - text: ">>"; + actionIcon: right; enabled: {zonesTree.getSelectionCount() >= 1}; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.RemoveStratasAction.class}; } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java index 80a630c..1e08f5a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java @@ -14,12 +14,14 @@ import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.StratasTreeModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZonesTreeModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; import javax.swing.JTree; +import javax.swing.SwingUtilities; import javax.swing.tree.TreeModel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -164,16 +166,31 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode TreeModel availableStratasTreeModel = new StratasTreeModel(); JTree availableStratasTree = ui.getAvailableStratasTree(); availableStratasTree.setModel(availableStratasTreeModel); + SwingUtil.addExpandOnClickListener(availableStratasTree); TreeModel zonesTreeModel = new ZonesTreeModel(); JTree zonesTree = ui.getZonesTree(); zonesTree.setModel(zonesTreeModel); + SwingUtil.addExpandOnClickListener(zonesTree); // get data initModel(); } + public static void collapseTree(final JTree tree) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + int i = 0; + + while(i < tree.getRowCount()) { + tree.collapseRow(i++); + } + + } + }); + } + @Override public SwingValidator<ZoneEditorUIModel> getValidator() { return null; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseAvailableStratasTreeAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseAvailableStratasTreeAction.java new file mode 100644 index 0000000..940f29f --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseAvailableStratasTreeAction.java @@ -0,0 +1,20 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class CollapseAvailableStratasTreeAction extends SimpleActionSupport<ZoneEditorUI> { + + public CollapseAvailableStratasTreeAction(ZoneEditorUI zoneEditorUI) { + super(zoneEditorUI); + } + + @Override + protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { + zoneEditorUI.getHandler().collapseTree(zoneEditorUI.getAvailableStratasTree()); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseZonesTreeAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseZonesTreeAction.java new file mode 100644 index 0000000..8d2823e --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CollapseZonesTreeAction.java @@ -0,0 +1,20 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class CollapseZonesTreeAction extends SimpleActionSupport<ZoneEditorUI> { + + public CollapseZonesTreeAction(ZoneEditorUI zoneEditorUI) { + super(zoneEditorUI); + } + + @Override + protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { + zoneEditorUI.getHandler().collapseTree(zoneEditorUI.getZonesTree()); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandAvailableStratasTreeAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandAvailableStratasTreeAction.java new file mode 100644 index 0000000..77d7977 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandAvailableStratasTreeAction.java @@ -0,0 +1,21 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import jaxx.runtime.SwingUtil; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class ExpandAvailableStratasTreeAction extends SimpleActionSupport<ZoneEditorUI> { + + public ExpandAvailableStratasTreeAction(ZoneEditorUI zoneEditorUI) { + super(zoneEditorUI); + } + + @Override + protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { + SwingUtil.expandTree(zoneEditorUI.getAvailableStratasTree()); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandZonesTreeAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandZonesTreeAction.java new file mode 100644 index 0000000..d7541db --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/ExpandZonesTreeAction.java @@ -0,0 +1,21 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import jaxx.runtime.SwingUtil; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class ExpandZonesTreeAction extends SimpleActionSupport<ZoneEditorUI> { + + public ExpandZonesTreeAction(ZoneEditorUI zoneEditorUI) { + super(zoneEditorUI); + } + + @Override + protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { + SwingUtil.expandTree(zoneEditorUI.getZonesTree()); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StrataNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StrataNode.java index c4a4f03..0b33420 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StrataNode.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StrataNode.java @@ -2,13 +2,11 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; -import javax.swing.tree.DefaultMutableTreeNode; - /** * @author Kevin Morin (Code Lutin) * @since 4.5 */ -public class StrataNode extends DefaultMutableTreeNode { +public class StrataNode extends ZoneEditorNode { public StrataNode(StrataUIModel strata) { super(strata, true); @@ -17,4 +15,5 @@ public class StrataNode extends DefaultMutableTreeNode { public StrataUIModel getStrata() { return (StrataUIModel) userObject; } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java index b75dd47..dc89aed 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java @@ -1,7 +1,6 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; import com.google.common.base.Preconditions; -import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.SubStrataUIModel; import org.apache.commons.logging.Log; @@ -23,12 +22,12 @@ public class StratasTreeModel extends DefaultTreeModel { private static final Log log = LogFactory.getLog(StratasTreeModel.class); public StratasTreeModel() { - super(new DefaultMutableTreeNode()); + super(new ZoneEditorNode()); } public void removeStratas(Collection<StrataUIModel> stratasToRemove) { - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + ZoneEditorNode root = (ZoneEditorNode) getRoot(); Enumeration rootChildren = root.children(); Collection<DefaultMutableTreeNode> nodesToRemove = new HashSet<>(); @@ -46,29 +45,9 @@ public class StratasTreeModel extends DefaultTreeModel { } -// public void removeSubStratas(Collection<Strata> subStratasToRemove) { -// -// DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); -// -// Enumeration rootChildren = root.children(); -// Collection<DefaultMutableTreeNode> nodesToRemove = new HashSet<>(); -// -// while (rootChildren.hasMoreElements()) { -// -// StrataNode strataNode = (StrataNode) rootChildren.nextElement(); -// -// if (stratasToRemove.contains(strataNode.getStrata())) { -// nodesToRemove.add(strataNode); -// } -// } -// -// nodesToRemove.forEach(strataNode ->removeNodeFromParent(strataNode)); -// -// } - public void addStratas(Collection<StrataUIModel> stratasToAdd) { - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + ZoneEditorNode root = (ZoneEditorNode) getRoot(); stratasToAdd.forEach(strata -> { @@ -86,20 +65,7 @@ public class StratasTreeModel extends DefaultTreeModel { }); - } - - public void addSubStratas(Collection<SubStrata> subStratas, StrataUIModel strata) { - - StrataNode strataNode = findStrataNode(strata); - - subStratas.forEach(substrata -> { - - if (substrata != null) { - SubStrataNode subStrataNode = new SubStrataNode((SubStrataUIModel) substrata); - insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); - } - - }); + root.sortChildren(); } @@ -140,6 +106,8 @@ public class StratasTreeModel extends DefaultTreeModel { insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); } + + strataNode.sortChildren(); } protected StrataNode findStrataNode(StrataUIModel strata) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/SubStrataNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/SubStrataNode.java index 0ce5a2f..2c73aa9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/SubStrataNode.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/SubStrataNode.java @@ -2,13 +2,11 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.SubStrataUIModel; -import javax.swing.tree.DefaultMutableTreeNode; - /** * @author Kevin Morin (Code Lutin) * @since 4.5 */ -public class SubStrataNode extends DefaultMutableTreeNode { +public class SubStrataNode extends ZoneEditorNode { public SubStrataNode(SubStrataUIModel substrata) { super(substrata, false); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorNode.java new file mode 100644 index 0000000..519538a --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorNode.java @@ -0,0 +1,33 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; + +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.Collections; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class ZoneEditorNode extends DefaultMutableTreeNode implements Comparable { + + public ZoneEditorNode() { + super(); + } + + public ZoneEditorNode(Object userObject, boolean allowchildren) { + super(userObject, allowchildren); + } + + public void sortChildren() { + if (children != null) { + Collections.sort(children); + } + } + + @Override + public int compareTo(Object o) { + if (o == null) { + return 1; + } + return toString().compareTo(o.toString()); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java index 97aad64..f81d71d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java @@ -1,8 +1,6 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; -import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; -import fr.ifremer.tutti.persistence.entities.protocol.Zone; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; +import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -24,22 +22,23 @@ public class ZoneEditorTreeCellRenderer extends DefaultTreeCellRenderer { super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); - String text = ""; - - if (value instanceof StrataNode) { - StrataUIModel strata = ((StrataNode) value).getStrata(); - text = strata.getLabel(); - - } else if (value instanceof SubStrataNode) { - SubStrata substrata = ((SubStrataNode) value).getSubstrata(); - text = substrata.getLocation().getLabel(); - - } else if (value instanceof ZoneNode) { - Zone zone = ((ZoneNode) value).getZone(); - text = zone.getLabel(); - } - - setText(text); +// String text = ""; +// +// if (value instanceof StrataNode) { +// StrataUIModel strata = ((StrataNode) value).getStrata(); +// text = strata.getLabel(); +// +// } else if (value instanceof SubStrataNode) { +// SubStrataUIModel substrata = ((SubStrataNode) value).getSubstrata(); +// text = substrata.getLabel(); +// +// } else if (value instanceof ZoneNode) { +// Zone zone = ((ZoneNode) value).getZone(); +// text = zone.getLabel(); +// } + +// setText(text); + setIcon(SwingUtil.createActionIcon("location")); return this; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java index 924fa07..84bf1ad 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java @@ -2,13 +2,11 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; -import javax.swing.tree.DefaultMutableTreeNode; - /** * @author Kevin Morin (Code Lutin) * @since 4.5 */ -public class ZoneNode extends DefaultMutableTreeNode { +public class ZoneNode extends ZoneEditorNode { public ZoneNode(ZoneUIModel zone) { super(zone, true); @@ -17,4 +15,5 @@ public class ZoneNode extends DefaultMutableTreeNode { public ZoneUIModel getZone() { return (ZoneUIModel) userObject; } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java index 3ee80fe..a7e9f23 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java @@ -26,12 +26,12 @@ public class ZonesTreeModel extends DefaultTreeModel { private static final Log log = LogFactory.getLog(ZonesTreeModel.class); public ZonesTreeModel() { - super(new DefaultMutableTreeNode()); + super(new ZoneEditorNode()); } public void removeZones(Collection<ZoneUIModel> zonesToRemove) { - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + ZoneEditorNode root = (ZoneEditorNode) getRoot(); Enumeration rootChildren = root.children(); Collection<DefaultMutableTreeNode> nodesToRemove = new HashSet<>(); @@ -50,7 +50,7 @@ public class ZonesTreeModel extends DefaultTreeModel { public void addZones(Collection<ZoneUIModel> zonesToAdd) { - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + ZoneEditorNode root = (ZoneEditorNode) getRoot(); zonesToAdd.forEach(zone -> { @@ -58,6 +58,9 @@ public class ZonesTreeModel extends DefaultTreeModel { insertNodeInto(zoneNode, root, root.getChildCount()); }); + + root.sortChildren(); + } public void updateStratas(ZoneUIModel zone, @@ -102,6 +105,8 @@ public class ZonesTreeModel extends DefaultTreeModel { updateSubStratas(strataNode, subStratasToAdd, Collections.emptySet()); } + + zoneNode.sortChildren(); } public void updateSubStratas(StrataUIModel strata, @@ -141,6 +146,8 @@ public class ZonesTreeModel extends DefaultTreeModel { insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); } + + strataNode.sortChildren(); } protected ZoneNode findZoneNode(ZoneUIModel zone) { diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index f058c04..046f523 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -3,7 +3,9 @@ application.action.create.error= application.error.ui.business.warning= jaxx.application.action.create.error= +left= next= +right= rtpEditor.femalePanel= rtpEditor.malePanel= rtpEditor.undefinedPanel= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 91180c9..5005fdc 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1,9 +1,6 @@ -<<= ->>= application.action.create.error= application.error.ui.business.warning= jaxx.application.action.create.error= -next= swing.error.cannot.open.file=Aucun programme n'est défini pour ouvrir ce type de fichier. Enregistrez le fichier et ouvrez le en dehors de l'application tutti.about.bottomText=Copyright %s - %s - version %s tutti.about.message=<h3>Allegro Campagne</h3><p><strong>Outil de saisie de données d'opérations et de captures au cours des campagnes halieutiques.</strong></p><br/><p>Ce logiciel permettra la saisie en mer des données d'opération de pêche (positions, environnement, engin, etc) et des captures associées (composition de la capture en espèces scientifiques avec poids, nombres, tailles etc) pour l'ensemble des campagnes halieutiques réalisées par l'Ifremer.</p><p>Ce projet a été initiée en [...] diff --git a/tutti-ui-swing/src/main/resources/icons/action-left.png b/tutti-ui-swing/src/main/resources/icons/action-left.png new file mode 100644 index 0000000..5dc6967 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/icons/action-left.png differ diff --git a/tutti-ui-swing/src/main/resources/icons/action-right.png b/tutti-ui-swing/src/main/resources/icons/action-right.png new file mode 100644 index 0000000..b1a1819 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/icons/action-right.png differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git commit 08c08a6124f05fd054c22bfaf8c38dcb359ac40e Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 17:12:06 2016 +0100 sauvegarde du protocol (refs #7929) --- .../entities/protocol/TuttiProtocols.java | 3 ++ .../service/ProtocolPersistenceServiceImpl.java | 47 +++++++++++++++++++ .../content/protocol/EditProtocolUIHandler.java | 10 +++- .../content/protocol/EditProtocolUIModel.java | 11 ++++- .../protocol/actions/SaveProtocolAction.java | 12 ++++- .../protocol/zones/ZoneEditorUIHandler.java | 53 +++++++++++++--------- .../content/protocol/zones/ZoneEditorUIModel.java | 23 ++++++---- .../zones/actions/RemoveStratasAction.java | 11 ++++- .../protocol/zones/models/StrataUIModel.java | 18 ++++++++ .../content/protocol/zones/models/ZoneUIModel.java | 18 ++++++++ .../protocol/zones/tree/ZonesTreeModel.java | 8 ++++ 11 files changed, 176 insertions(+), 38 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 7f158bd..ed13f53 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -375,6 +375,9 @@ public class TuttiProtocols extends AbstractTuttiProtocols { SpeciesProtocols.typeOfSpeciesProtocol()); result.setClassTag(CaracteristicMappingRow.class.getSimpleName(), CaracteristicMappingRows.typeOfCaracteristicMappingRow()); + result.setClassTag(Zone.class.getSimpleName(), Zones.typeOfZone()); + result.setClassTag(Strata.class.getSimpleName(), Stratas.typeOfStrata()); + result.setClassTag(SubStrata.class.getSimpleName(), SubStratas.typeOfSubStrata()); result.writeConfig.setAlwaysWriteClassname(false); result.writeConfig.setWriteRootTags(false); return result; diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java index b08a0bd..5cfff98 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java @@ -26,8 +26,14 @@ import com.google.common.collect.Lists; import fr.ifremer.adagio.core.service.technical.CacheService; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; +import fr.ifremer.tutti.persistence.entities.protocol.Strata; +import fr.ifremer.tutti.persistence.entities.protocol.Stratas; +import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; +import fr.ifremer.tutti.persistence.entities.protocol.SubStratas; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; +import fr.ifremer.tutti.persistence.entities.protocol.Zones; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -186,8 +192,10 @@ public class ProtocolPersistenceServiceImpl extends AbstractPersistenceService i // result.setGearUseFeaturePmfmId(TuttiEntities.getList(bean.getGearUseFeaturePmfmId())); result.setLengthClassesPmfmId(bean.getLengthClassesPmfmId()); result.setCaracteristicMapping(bean.getCaracteristicMapping()); + Binder<SpeciesProtocol, SpeciesProtocol> speciesProtocolBinder = BinderFactory.newBinder(SpeciesProtocol.class); + List<SpeciesProtocol> species = Lists.newArrayList(); if (!bean.isSpeciesEmpty()) { for (SpeciesProtocol speciesProtocol : bean.getSpecies()) { @@ -210,6 +218,45 @@ public class ProtocolPersistenceServiceImpl extends AbstractPersistenceService i } result.setBenthos(benthos); + Binder<Zone, Zone> zoneBinder = BinderFactory.newBinder(Zone.class); + Binder<Strata, Strata> strataBinder = BinderFactory.newBinder(Strata.class); + Binder<SubStrata, SubStrata> subStrataBinder = BinderFactory.newBinder(SubStrata.class); + + List<Zone> zones = Lists.newArrayList(); + if (!bean.isZoneEmpty()) { + for (Zone zone : bean.getZone()) { + Zone z = Zones.newZone(); + zoneBinder.copy(zone, z); + z.setId(UUID.randomUUID().toString()); + zones.add(z); + + List<Strata> stratas = Lists.newArrayList(); + if (!zone.isStrataEmpty()) { + for (Strata strata : zone.getStrata()) { + Strata s = Stratas.newStrata(); + strataBinder.copy(strata, s); + s.setId(UUID.randomUUID().toString()); + stratas.add(s); + + List<SubStrata> subStratas = Lists.newArrayList(); + if (!strata.isSubstrataEmpty()) { + for (SubStrata subStrata : strata.getSubstrata()) { + SubStrata ss = SubStratas.newSubStrata(); + subStrataBinder.copy(subStrata, ss); + ss.setId(UUID.randomUUID().toString()); + subStratas.add(ss); + } + } + + s.setSubstrata(subStratas); + } + } + + z.setStrata(stratas); + } + } + result.setZone(zones); + String id = result.getId(); File file = getProtocolFile(id); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index f6c14e6..6ae0b2e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -40,6 +40,7 @@ import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; @@ -51,6 +52,7 @@ import fr.ifremer.tutti.ui.swing.content.home.actions.ImportProtocolAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHelper; import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpCellEditor; import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpCellRenderer; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; @@ -630,9 +632,13 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } }); - model.setVersion(TuttiProtocols.CURRENT_PROTOCOL_VERSION); + ZoneEditorUIModel zoneEditorUIModel = this.ui.getZoneEditor().getModel(); + zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, + evt -> getModel().setZone((Collection<Zone>) evt.getNewValue())); + +// listenModelModifiy(zoneEditorUIModel); -// dialog = new SelectSpeciesUI(false, this.ui); + model.setVersion(TuttiProtocols.CURRENT_PROTOCOL_VERSION); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java index 04d6188..2873164 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java @@ -787,6 +787,7 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void setZone(Collection<Zone> zones) { editObject.setZone(zones); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); } @Override @@ -807,21 +808,27 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void addZone(Zone zone) { editObject.addZone(zone); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); } @Override public void addAllZone(Collection<Zone> zones) { editObject.addAllZone(zones); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); } @Override public boolean removeZone(Zone zone) { - return editObject.removeZone(zone); + boolean result = editObject.removeZone(zone); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + return result; } @Override public boolean removeAllZone(Collection<Zone> zones) { - return editObject.removeAllZone(zones); + boolean result = editObject.removeAllZone(zones); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + return result; } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java index 9615448..a4cb330 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java @@ -28,15 +28,17 @@ import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiUIContext; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolCaracteristicsRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolOperationFieldsRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -115,6 +117,14 @@ public class SaveProtocolAction extends LongActionSupport<EditProtocolUIModel, E } bean.setBenthos(benthosProtocols); + List<Zone> zones = Lists.newArrayList(); + + for (Zone zone : model.getZone()) { + Zone z = ((ZoneUIModel) zone).toEntity(); + zones.add(z); + } + bean.setZone(zones); + if (log.isDebugEnabled()) { log.debug("protocol id to save: " + bean.getId()); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java index 1e08f5a..e26c8fb 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java @@ -4,6 +4,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.protocol.Strata; import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; @@ -28,7 +29,6 @@ import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.stream.Collectors; /** @@ -127,8 +127,8 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode getModel().addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, evt -> { - List<ZoneUIModel> newZones = (List<ZoneUIModel>) evt.getNewValue(); - List<ZoneUIModel> oldZones = (List<ZoneUIModel>) evt.getOldValue(); + Collection<ZoneUIModel> newZones = (Collection<ZoneUIModel>) evt.getNewValue(); + Collection<ZoneUIModel> oldZones = (Collection<ZoneUIModel>) evt.getOldValue(); Collection<ZoneUIModel> zonesToAdd = new ArrayList<>(newZones); zonesToAdd.removeAll(oldZones); @@ -223,35 +223,44 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode programStratasAndSubstratas.put(test, location); } - Collection<Zone> zones = getDataContext().getProtocol().getZone(); - Collection<Strata> protocolStratas = zones.stream() - .map(zone -> zone.getStrata()) - .flatMap(stratas -> stratas.stream()) - .collect(Collectors.toSet()); + Collection<Zone> zones; - protocolStratas.forEach(strata -> { + TuttiProtocol protocol = getDataContext().getProtocol(); + if (protocol != null) { - TuttiLocation strataLocation = strata.getLocation(); + zones = protocol.getZone(); + Collection<Strata> protocolStratas = zones.stream() + .map(zone -> zone.getStrata()) + .flatMap(stratas -> stratas.stream()) + .collect(Collectors.toSet()); - Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() - .stream() - .map(subStrata -> subStrata.getLocation()) - .collect(Collectors.toSet()); + protocolStratas.forEach(strata -> { - subStrataLocations.forEach(subStrataLocation -> - programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); - }); + TuttiLocation strataLocation = strata.getLocation(); + + Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() + .stream() + .map(subStrata -> subStrata.getLocation()) + .collect(Collectors.toSet()); + + subStrataLocations.forEach(subStrataLocation -> + programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); + }); + + } else { + zones = new HashSet<>(); + } - Collection<StrataUIModel> availableStratas = new ArrayList<>(); + Collection<StrataUIModel> availableStratas = new HashSet<>(); programStratasAndSubstratas.keySet().forEach(strataLocation -> { StrataUIModel strata = new StrataUIModel(strataLocation); Collection<TuttiLocation> subStrataLocations = new HashSet<>(programStratasAndSubstratas.get(strataLocation)); subStrataLocations.remove(null); - List<SubStrata> subStratas = subStrataLocations.stream() + Collection<SubStrata> subStratas = subStrataLocations.stream() .map(subStrataLocation -> new SubStrataUIModel(subStrataLocation)) - .collect(Collectors.toList()); + .collect(Collectors.toSet()); strata.setSubstrata(subStratas); availableStratas.add(strata); @@ -259,13 +268,13 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode getModel().setAvailableStratas(availableStratas); - List<ZoneUIModel> zoneModels = zones.stream() + Collection<ZoneUIModel> zoneModels = zones.stream() .map(zone -> { ZoneUIModel zoneUIModel = new ZoneUIModel(); zoneUIModel.fromEntity(zone); return zoneUIModel; }) - .collect(Collectors.toList()); + .collect(Collectors.toSet()); getModel().setZones(zoneModels); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java index 0053939..17ca15a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java @@ -10,6 +10,7 @@ import org.jdesktop.beans.AbstractSerializableBean; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; /** @@ -25,11 +26,11 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { public static final String PROPERTY_ZONES = "zones"; - protected final List<StrataUIModel> availableStratas = new ArrayList<>(); + protected final Collection<StrataUIModel> availableStratas = new HashSet<>(); - protected final List<ZoneUIModel> zones = new ArrayList<>(); + protected final Collection<ZoneUIModel> zones = new HashSet<>(); - public List<StrataUIModel> getAvailableStratas() { + public Collection<StrataUIModel> getAvailableStratas() { return availableStratas; } @@ -70,27 +71,27 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { } - public List<ZoneUIModel> getZones() { + public Collection<ZoneUIModel> getZones() { return zones; } - public void setZones(List<ZoneUIModel> zones) { - Object oldValue = getZones(); + public void setZones(Collection<ZoneUIModel> zones) { + Object oldValue = new HashSet<>(getZones()); this.zones.clear(); this.zones.addAll(zones); - firePropertyChange(PROPERTY_ZONES, oldValue, zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } public void addZone(ZoneUIModel zone) { - Object oldValue = new ArrayList<>(getZones()); + Object oldValue = new HashSet<>(getZones()); zones.add(zone); - firePropertyChange(PROPERTY_ZONES, oldValue, zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } public void removeZone(ZoneUIModel zone) { Object oldValue = new ArrayList<>(getZones()); zones.remove(zone); - firePropertyChange(PROPERTY_ZONES, oldValue, zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } public void moveStratasToZone(Collection<StrataUIModel> stratas, ZoneUIModel zone) { @@ -121,10 +122,12 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { strata.removeSubstrata(subStrata); Strata zoneStrata = zone.getStrata(strata); + if (zoneStrata == null) { zoneStrata = new StrataUIModel(strata.getLocation()); zone.addStrata(zoneStrata); } + zoneStrata.addSubstrata(subStrata); if (strata.isSubstrataEmpty()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java index 1b2dcbd..07448a2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java @@ -6,6 +6,7 @@ import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.SubStrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.StrataNode; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.SubStrataNode; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -43,7 +44,15 @@ public class RemoveStratasAction extends SimpleActionSupport<ZoneEditorUI> { Object node = treePath.getLastPathComponent(); - if (node instanceof StrataNode) { + if (node instanceof ZoneNode) { + +// ZoneUIModel zone = ((ZoneNode) node).getZone(); +// if (log.isInfoEnabled()) { +// log.info("remove zone stratas " + zone.getLabel()); +// } +// stratasToRemove.addAll(zone.getStrata()); + + } else if (node instanceof StrataNode) { StrataUIModel strata = ((StrataNode) node).getStrata(); if (log.isInfoEnabled()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java index d833a93..122d049 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java @@ -38,6 +38,24 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode } @Override + public void fromEntity(Strata entity) { + fromBeanBinder.copyExcluding(entity, this, PROPERTY_SUBSTRATA); + entity.getSubstrata().forEach(subStrata -> { + SubStrataUIModel copy = new SubStrataUIModel(); + copy.fromEntity(subStrata); + addSubstrata(copy); + }); + } + + @Override + public Strata toEntity() { + Strata result = newEntity(); + toBeanBinder.copyExcluding(this, result, PROPERTY_SUBSTRATA); + getSubstrata().forEach(subStrata -> result.addSubstrata(((SubStrataUIModel) subStrata).toEntity())); + return result; + } + + @Override public void addAllSubstrata(Collection<SubStrata> substrata) { Object oldValue = new HashSet<>(getSubstrata()); delegate.addAllSubstrata(substrata); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java index 433bb49..e898b0a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java @@ -27,6 +27,24 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp } @Override + public void fromEntity(Zone entity) { + fromBeanBinder.copyExcluding(entity, this, PROPERTY_STRATA); + entity.getStrata().forEach(strata -> { + StrataUIModel copy = new StrataUIModel(); + copy.fromEntity(strata); + addStrata(copy); + }); + } + + @Override + public Zone toEntity() { + Zone result = newEntity(); + toBeanBinder.copyExcluding(this, result, PROPERTY_STRATA); + getStrata().forEach(strata -> result.addStrata(((StrataUIModel) strata).toEntity())); + return result; + } + + @Override public void addAllStrata(Collection<Strata> stratas) { Object oldValue = new HashSet<>(getStrata()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java index a7e9f23..158a167 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java @@ -57,6 +57,14 @@ public class ZonesTreeModel extends DefaultTreeModel { ZoneNode zoneNode = new ZoneNode(zone); insertNodeInto(zoneNode, root, root.getChildCount()); + + Set<StrataUIModel> stratasToAdd = zone.getStrata() + .stream() + .map(strata -> (StrataUIModel) strata) + .collect(Collectors.toSet()); + + updateStratas(zoneNode, stratasToAdd, Collections.emptySet()); + }); root.sortChildren(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git commit 0f29ae890ce61c4d136afcd6ad1091cf30cc4dfc Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 17:35:38 2016 +0100 on pousse les zones dans le modele de protocole (peut etre faire l'inverse...) (refs #7929) --- .../ui/swing/content/protocol/EditProtocolUIHandler.java | 10 ++++++---- .../ui/swing/content/protocol/zones/ZoneEditorUIHandler.java | 12 ++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 6ae0b2e..7ccba13 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -96,6 +96,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -632,14 +633,15 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } }); + model.setVersion(TuttiProtocols.CURRENT_PROTOCOL_VERSION); + ZoneEditorUIModel zoneEditorUIModel = this.ui.getZoneEditor().getModel(); + getModel().setZone(new HashSet<>(zoneEditorUIModel.getZones())); zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, - evt -> getModel().setZone((Collection<Zone>) evt.getNewValue())); + evt -> getModel().setZone(new HashSet<>((Collection<Zone>) evt.getNewValue()))); + //FIXME kmorin ecouter toutes les modifs sur le model d'editeur de zone // listenModelModifiy(zoneEditorUIModel); - - model.setVersion(TuttiProtocols.CURRENT_PROTOCOL_VERSION); - } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java index e26c8fb..7918284 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java @@ -236,6 +236,9 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode protocolStratas.forEach(strata -> { + if (log.isInfoEnabled()) { + log.info("protocol strata " + strata); + } TuttiLocation strataLocation = strata.getLocation(); Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() @@ -243,8 +246,13 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode .map(subStrata -> subStrata.getLocation()) .collect(Collectors.toSet()); - subStrataLocations.forEach(subStrataLocation -> - programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); + if (subStrataLocations.isEmpty()) { + programStratasAndSubstratas.removeAll(strataLocation); + + } else { + subStrataLocations.forEach(subStrataLocation -> + programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); + } }); } else { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm