branch feature/7929_editeur_de_zone updated (32a93e0 -> a96d18f)
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 discards 32a93e0 desactivation des boutons d'ajout et de suppression des strates à l'ouverture de l'écran (refs #7929) discards 2beea6e activation ou non des boutons d'ajout et de suppresion des strates (refs #7929) discards 3be1d33 - utilisation directement du modele du protocol - ajout d'une popup de menu pour surrpimer et renommer les zones (refs #7929) discards 6ca90c6 utilisation de fromEntity et toEntity au lieu de fromBean et toBean discards b99cb29 tri des noeuds + i18n (refs #7929) discards 38b5700 - ajout de la suppression de zone - probleme de rechargement de l'arbre quand on cache la racine - sélection de la zone créée (refs #7929) discards 0f29ae8 on pousse les zones dans le modele de protocole (peut etre faire l'inverse...) (refs #7929) discards 08c08a6 sauvegarde du protocol (refs #7929) discards ede2fb2 ajout des icones + tri des noeuds dans les arbres (refs #7929) discards 00cd88d suprpession des sous strates d'une zone (refs #7929) discards c009f80 ajout des listeners sur les strates et sous strates (refs #7929) discards 8f112f8 création des modeles de strates et sous strates (refs #7929) discards f259b29 creation de zones + déplacement des noeuds (refs #7929) discards 48ded36 noeuds + renderer + modeles d'arbre + modele de zone (refs #7929) discards fc7dabe mise a jour suite aux modifs du modele + appel des oncloseui des sous-ui (refs #7929) discards 9ae2970 ajout des strates et sous strates au modèle (refs #7929) discards 267fd13 ajout de l'onglet d'édition des zone (refs #7929) discards dedff13 ajout des zones au protocole (refs #7929) discards 595843d use java 1.8 adds 320a3a0 Trim update url, because of haw theroy... (See #7946) adds 3a73396 Merge branch 'feature/7946' into 'develop' new be26619 use java 1.8 new cb089af ajout des zones au protocole (refs #7929) new c175e1d ajout de l'onglet d'édition des zone (refs #7929) new 553538e ajout des strates et sous strates au modèle (refs #7929) new 7a82e95 mise a jour suite aux modifs du modele + appel des oncloseui des sous-ui (refs #7929) new ee33a64 noeuds + renderer + modeles d'arbre + modele de zone (refs #7929) new 0ff5002 creation de zones + déplacement des noeuds (refs #7929) new ea86043 création des modeles de strates et sous strates (refs #7929) new 3cbf075 ajout des listeners sur les strates et sous strates (refs #7929) new 2f86084 suprpession des sous strates d'une zone (refs #7929) new c1770b6 ajout des icones + tri des noeuds dans les arbres (refs #7929) new 64396f9 sauvegarde du protocol (refs #7929) new 48ee1cf on pousse les zones dans le modele de protocole (peut etre faire l'inverse...) (refs #7929) new b5d8711 - ajout de la suppression de zone - probleme de rechargement de l'arbre quand on cache la racine - sélection de la zone créée (refs #7929) new a437aed tri des noeuds + i18n (refs #7929) new 098b663 utilisation de fromEntity et toEntity au lieu de fromBean et toBean new e7fd65a - utilisation directement du modele du protocol - ajout d'une popup de menu pour surrpimer et renommer les zones (refs #7929) new 119818a activation ou non des boutons d'ajout et de suppresion des strates (refs #7929) new a96d18f desactivation des boutons d'ajout et de suppression des strates à l'ouverture de l'écran (refs #7929) This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (32a93e0) \ N -- N -- N refs/heads/feature/7929_editeur_de_zone (a96d18f) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 19 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 a96d18ff71d6f71f8c3d23dabc8e929a619b4358 Author: Kevin Morin <morin@codelutin.com> Date: Wed Feb 3 11:05:50 2016 +0100 desactivation des boutons d'ajout et de suppression des strates à l'ouverture de l'écran (refs #7929) commit 119818a13e446de273c79eed7116ab0410a910d5 Author: Kevin Morin <morin@codelutin.com> Date: Wed Feb 3 10:46:33 2016 +0100 activation ou non des boutons d'ajout et de suppresion des strates (refs #7929) commit e7fd65aa77e3448775ccc6348b28452bdd0241cc Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 19:10:52 2016 +0100 - utilisation directement du modele du protocol - ajout d'une popup de menu pour surrpimer et renommer les zones (refs #7929) commit 098b663940cb314765a5be5a4469be2b2fa909cc Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 15:54:09 2016 +0100 utilisation de fromEntity et toEntity au lieu de fromBean et toBean commit a437aed7070ad5b8370872afe22554cdee8d0e14 Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 14:36:07 2016 +0100 tri des noeuds + i18n (refs #7929) commit b5d8711c0fb79b98858ff7436b8ea0eea552d245 Author: Kevin Morin <morin@codelutin.com> Date: Mon Feb 1 19:09:05 2016 +0100 - ajout de la suppression de zone - probleme de rechargement de l'arbre quand on cache la racine - sélection de la zone créée (refs #7929) commit 48ee1cfebc5f8314475040567a55afe268f51928 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 64396f97ee982f248d402a765c74ca1440b30d26 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 17:12:06 2016 +0100 sauvegarde du protocol (refs #7929) commit c1770b68bdadd49ee0c46a779aab22fd2d081d7b 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 2f86084d3917f753b6f2f3453228af6b1a88318d Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 11:34:43 2016 +0100 suprpession des sous strates d'une zone (refs #7929) commit 3cbf075d1be41de84bd93df0f1031b40de2ec92a Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 28 19:22:03 2016 +0100 ajout des listeners sur les strates et sous strates (refs #7929) commit ea86043f569ce4557f2cfff793e4e9ac1cb0230e Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 28 19:21:56 2016 +0100 création des modeles de strates et sous strates (refs #7929) commit 0ff5002e3a03ae359d36f5bd04981d817e5c1990 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 27 18:39:17 2016 +0100 creation de zones + déplacement des noeuds (refs #7929) commit ee33a6433136cb43cb42f46093c8d941cfd452a7 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 27 18:38:05 2016 +0100 noeuds + renderer + modeles d'arbre + modele de zone (refs #7929) commit 7a82e9504cde295068df51bf9a1f4e81140fa957 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 27 18:37:01 2016 +0100 mise a jour suite aux modifs du modele + appel des oncloseui des sous-ui (refs #7929) commit 553538eacb36c4da27722fc604c34b2c46a3a386 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 27 18:35:31 2016 +0100 ajout des strates et sous strates au modèle (refs #7929) commit c175e1d3a00958464221bc56bea4fafb9db07348 Author: Kevin Morin <morin@codelutin.com> Date: Mon Jan 25 11:23:25 2016 +0100 ajout de l'onglet d'édition des zone (refs #7929) commit cb089af19dca490f53adc3d5d4790145df880e13 Author: Kevin Morin <morin@codelutin.com> Date: Mon Jan 25 11:22:53 2016 +0100 ajout des zones au protocole (refs #7929) commit be26619afdfe3a0a3baaac8ad850cbb257c30ae0 Author: Kevin Morin <morin@codelutin.com> Date: Mon Jan 25 11:22:00 2016 +0100 use java 1.8 Summary of changes: .../src/main/java/fr/ifremer/tutti/TuttiConfiguration.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -- 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 ea86043f569ce4557f2cfff793e4e9ac1cb0230e Author: Kevin Morin <morin@codelutin.com> Date: Thu Jan 28 19:21:56 2016 +0100 création des modeles de strates et sous strates (refs #7929) --- .../content/protocol/zones/ZonesTreeModel.java | 98 ---------- .../protocol/zones/models/StrataUIModel.java | 192 ++++++++++++++++++++ .../protocol/zones/models/SubStrataUIModel.java | 108 +++++++++++ .../protocol/zones/{ => models}/ZoneUIModel.java | 44 ++++- .../content/protocol/zones/nodes/StrataNode.java | 20 -- .../protocol/zones/nodes/SubStrataNode.java | 20 -- .../content/protocol/zones/tree/StrataNode.java | 20 ++ .../zones/{ => tree}/StratasTreeModel.java | 75 +++++++- .../content/protocol/zones/tree/SubStrataNode.java | 20 ++ .../{ => tree}/ZoneEditorTreeCellRenderer.java | 16 +- .../protocol/zones/{nodes => tree}/ZoneNode.java | 4 +- .../protocol/zones/tree/ZonesTreeModel.java | 202 +++++++++++++++++++++ 12 files changed, 656 insertions(+), 163 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZonesTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZonesTreeModel.java deleted file mode 100644 index b2d3e19..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZonesTreeModel.java +++ /dev/null @@ -1,98 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones; - -import com.google.common.base.Preconditions; -import fr.ifremer.tutti.persistence.entities.protocol.Strata; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes.StrataNode; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes.ZoneNode; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeModel; -import java.util.Collection; -import java.util.Enumeration; -import java.util.HashSet; - -/** - * @author Kevin Morin (Code Lutin) - * @since 4.5 - */ -public class ZonesTreeModel extends DefaultTreeModel { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ZonesTreeModel.class); - - public ZonesTreeModel() { - super(new DefaultMutableTreeNode()); - } - - public void removeZones(Collection<ZoneUIModel> zonesToRemove) { - - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); - - Enumeration rootChildren = root.children(); - Collection<DefaultMutableTreeNode> nodesToRemove = new HashSet<>(); - - while (rootChildren.hasMoreElements()) { - - ZoneNode zoneNode = (ZoneNode) rootChildren.nextElement(); - - if (zonesToRemove.contains(zoneNode.getZone())) { - nodesToRemove.add(zoneNode); - } - } - - nodesToRemove.forEach(zoneNode ->removeNodeFromParent(zoneNode)); - } - - public void addZones(Collection<ZoneUIModel> zonesToAdd) { - - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); - - zonesToAdd.forEach(zone -> { - - ZoneNode zoneNode = new ZoneNode(zone); - insertNodeInto(zoneNode, root, root.getChildCount()); - - }); - } - - public void setStratas(ZoneUIModel zone, Collection<Strata> stratas) { - - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); - - Enumeration rootChildren = root.children(); - - ZoneNode zoneNode = null; - - while (zoneNode == null && rootChildren.hasMoreElements()) { - ZoneNode nextNode = (ZoneNode) rootChildren.nextElement(); - if (zone.equals(nextNode.getZone())) { - zoneNode = nextNode; - } - } - - Preconditions.checkNotNull(zoneNode); - - for (Strata strata : stratas) { - - StrataNode strataNode = new StrataNode(strata); - - if (log.isInfoEnabled()) { - log.info("add strata " + strata.getLocation().getLabel()); - } - - insertNodeInto(strataNode, zoneNode, zoneNode.getChildCount()); - -// newAvailableStratas.get(strata).forEach(substrata -> { -// -// if (substrata != null) { -// SubStrataNode subStrataNode = new SubStrataNode(substrata); -// insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); -// } -// -// }); - - } - } -} 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 new file mode 100644 index 0000000..e7a09f8 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java @@ -0,0 +1,192 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.models; + +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.referential.TuttiLocation; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Objects; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIModel> implements Strata { + + public static final String PROPERTY_ZONE = "zone"; + + protected final Strata delegate = Stratas.newStrata(); + + protected ZoneUIModel zone; + + protected static Binder<StrataUIModel, Strata> toBeanBinder = BinderFactory.newBinder(StrataUIModel.class, Strata.class); + + protected static Binder<Strata, StrataUIModel> fromBeanBinder = BinderFactory.newBinder(Strata.class, StrataUIModel.class); + + public StrataUIModel() { + super(fromBeanBinder, toBeanBinder); + } + + public StrataUIModel(TuttiLocation location) { + this(); + setLocation(location); + } + + @Override + public void addAllSubstrata(Collection<SubStrata> substrata) { + Object oldValue = new HashSet<>(getSubstrata()); + delegate.addAllSubstrata(substrata); + firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); + } + + @Override + public void addSubstrata(SubStrata substrata) { + Object oldValue = new HashSet<>(getSubstrata()); + delegate.addSubstrata(substrata); + firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); + } + + @Override + public boolean containsAllSubstrata(Collection<SubStrata> substrata) { + return delegate.containsAllSubstrata(substrata); + } + + @Override + public boolean containsSubstrata(SubStrata substrata) { + return delegate.containsSubstrata(substrata); + } + + @Override + public TuttiLocation getLocation() { + return delegate.getLocation(); + } + + @Override + public Collection<SubStrata> getSubstrata() { + return delegate.getSubstrata(); + } + + @Override + public SubStrata getSubstrata(int index) { + return delegate.getSubstrata(index); + } + + @Override + public boolean isSubstrataEmpty() { + return delegate.isSubstrataEmpty(); + } + + @Override + public boolean removeAllSubstrata(Collection<SubStrata> substrata) { + Object oldValue = new HashSet<>(getSubstrata()); + boolean result = delegate.removeAllSubstrata(substrata); + firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); + return result; + } + + @Override + public boolean removeSubstrata(SubStrata substrata) { + Object oldValue = new HashSet<>(getSubstrata()); + boolean result = delegate.removeSubstrata(substrata); + firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); + return result; + } + + @Override + public void setLocation(TuttiLocation location) { + Object oldValue = getLocation(); + delegate.setLocation(location); + firePropertyChanged(PROPERTY_LOCATION, oldValue, getLocation()); + } + + @Override + public void setSubstrata(Collection<SubStrata> substrata) { + Object oldValue = new HashSet<>(getSubstrata()); + delegate.setSubstrata(substrata); + firePropertyChanged(PROPERTY_SUBSTRATA, oldValue, getSubstrata()); + } + + @Override + public int sizeSubstrata() { + return delegate.sizeSubstrata(); + } + + @Override + public String getId() { + return delegate.getId(); + } + + @Override + public Integer getIdAsInt() { + return delegate.getIdAsInt(); + } + + @Override + public void setId(Integer id) { + Object oldValue = getId(); + delegate.setId(id); + firePropertyChanged(PROPERTY_ID, oldValue, getId()); + } + + @Override + public void setId(String id) { + Object oldValue = getId(); + delegate.setId(id); + firePropertyChanged(PROPERTY_ID, oldValue, getId()); + } + + public String getLabel() { + return getLocation() == null ? null : getLocation().getLabel(); + } + + public ZoneUIModel getZone() { + return zone; + } + + public void setZone(ZoneUIModel zone) { + Object oldValue = getZone(); + this.zone = zone; + firePropertyChange(PROPERTY_ZONE, oldValue, zone); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + if (!StrataUIModel.class.equals(obj.getClass())) { + return false; + } + if (getId() != null) { + return getId().equals(((StrataUIModel) obj).getId()); + } + if (getLocation() != null) { + return getLocation().equals(((StrataUIModel) obj).getLocation()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hash(getId(), getLocation()); + } + + @Override + public String toString() { + return getLabel(); + } + + @Override + protected Strata newEntity() { + return Stratas.newStrata(); + } + +} 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 new file mode 100644 index 0000000..a57aa4c --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/SubStrataUIModel.java @@ -0,0 +1,108 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.models; + +import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; +import fr.ifremer.tutti.persistence.entities.protocol.SubStratas; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.util.Objects; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class SubStrataUIModel extends AbstractTuttiBeanUIModel<SubStrata, SubStrataUIModel> implements SubStrata { + + protected final SubStrata delegate = SubStratas.newSubStrata(); + + protected static Binder<SubStrataUIModel, SubStrata> toBeanBinder = BinderFactory.newBinder(SubStrataUIModel.class, SubStrata.class); + + protected static Binder<SubStrata, SubStrataUIModel> fromBeanBinder = BinderFactory.newBinder(SubStrata.class, SubStrataUIModel.class); + + public SubStrataUIModel() { + super(fromBeanBinder, toBeanBinder); + } + + public SubStrataUIModel(TuttiLocation location) { + this(); + setLocation(location); + } + + @Override + public TuttiLocation getLocation() { + return delegate.getLocation(); + } + + @Override + public void setLocation(TuttiLocation location) { + Object oldValue = getLocation(); + delegate.setLocation(location); + firePropertyChanged(PROPERTY_LOCATION, oldValue, getLocation()); + } + + @Override + public String getId() { + return delegate.getId(); + } + + @Override + public void setId(Integer id) { + Object oldValue = getId(); + delegate.setId(id); + firePropertyChanged(PROPERTY_ID, oldValue, getId()); + } + + @Override + public void setId(String id) { + Object oldValue = getId(); + delegate.setId(id); + firePropertyChanged(PROPERTY_ID, oldValue, getId()); + } + + @Override + public Integer getIdAsInt() { + return delegate.getIdAsInt(); + } + + public String getLabel() { + return getLocation() == null ? null : getLocation().getLabel(); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + if (!StrataUIModel.class.equals(obj.getClass())) { + return false; + } + if (getId() != null) { + return getId().equals(((StrataUIModel) obj).getId()); + } + if (getLocation() != null) { + return getLocation().equals(((StrataUIModel) obj).getLocation()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hash(getId(), getLocation()); + } + + @Override + public String toString() { + return getLabel(); + } + + @Override + protected SubStrata newEntity() { + return SubStratas.newSubStrata(); + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java similarity index 69% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneUIModel.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java index e01af7e..6ff1188 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones; +package fr.ifremer.tutti.ui.swing.content.protocol.zones.models; import fr.ifremer.tutti.persistence.entities.protocol.Strata; import fr.ifremer.tutti.persistence.entities.protocol.Zone; @@ -30,14 +30,16 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp public void addAllStrata(Collection<Strata> strata) { Object oldValue = new HashSet<>(getStrata()); delegate.addAllStrata(strata); - firePropertyChanged(PROPERTY_STRATA, oldValue, strata); + updateStrataZone(strata, this); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); } @Override public void addStrata(Strata strata) { Object oldValue = new HashSet<>(getStrata()); delegate.addStrata(strata); - firePropertyChanged(PROPERTY_STRATA, oldValue, strata); + updateStrataZone(strata, this); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); } @Override @@ -65,6 +67,14 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp return delegate.getStrata(index); } + /** + * @param strata + * @return the strata from the stratas of the zone which equals the strata in parameters + */ + public Strata getStrata(Strata strata) { + return getStrata().stream().filter(s -> s != null && s.equals(strata)).findFirst().orElse(null); + } + @Override public boolean isStrataEmpty() { return delegate.isStrataEmpty(); @@ -74,7 +84,8 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp public boolean removeAllStrata(Collection<Strata> strata) { Object oldValue = new HashSet<>(getStrata()); boolean result = delegate.removeAllStrata(strata); - firePropertyChanged(PROPERTY_STRATA, oldValue, strata); + updateStrataZone(strata, null); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); return result; } @@ -82,7 +93,8 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp public boolean removeStrata(Strata strata) { Object oldValue = new HashSet<>(getStrata()); boolean result = delegate.removeStrata(strata); - firePropertyChanged(PROPERTY_STRATA, oldValue, strata); + updateStrataZone(strata, null); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); return result; } @@ -96,8 +108,10 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp @Override public void setStrata(Collection<Strata> strata) { Object oldValue = new HashSet<>(getStrata()); + updateStrataZone(getStrata(), null); delegate.setStrata(strata); - firePropertyChanged(PROPERTY_STRATA, oldValue, strata); + updateStrataZone(strata, this); + firePropertyChanged(PROPERTY_STRATA, oldValue, getStrata()); } @Override @@ -130,7 +144,25 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp } @Override + public String toString() { + return getLabel(); + } + + @Override protected Zone newEntity() { return Zones.newZone(); } + + protected void updateStrataZone(Collection<Strata> stratas, ZoneUIModel zone) { + stratas.stream() + .filter(strata -> strata instanceof StrataUIModel) + .forEach(strata -> ((StrataUIModel) strata).setZone(zone)); + } + + protected void updateStrataZone(Strata strata, ZoneUIModel zone) { + if (strata instanceof StrataUIModel) { + ((StrataUIModel) strata).setZone(zone); + } + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/StrataNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/StrataNode.java deleted file mode 100644 index 87255bc..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/StrataNode.java +++ /dev/null @@ -1,20 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes; - -import fr.ifremer.tutti.persistence.entities.protocol.Strata; - -import javax.swing.tree.DefaultMutableTreeNode; - -/** - * @author Kevin Morin (Code Lutin) - * @since 4.5 - */ -public class StrataNode extends DefaultMutableTreeNode { - - public StrataNode(Strata strata) { - super(strata, true); - } - - public Strata getStrata() { - return (Strata) userObject; - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/SubStrataNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/SubStrataNode.java deleted file mode 100644 index 0cc705d..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/SubStrataNode.java +++ /dev/null @@ -1,20 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes; - -import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; - -import javax.swing.tree.DefaultMutableTreeNode; - -/** - * @author Kevin Morin (Code Lutin) - * @since 4.5 - */ -public class SubStrataNode extends DefaultMutableTreeNode { - - public SubStrataNode(SubStrata substrata) { - super(substrata, false); - } - - public SubStrata getSubstrata() { - return (SubStrata) userObject; - } -} 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 new file mode 100644 index 0000000..c4a4f03 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StrataNode.java @@ -0,0 +1,20 @@ +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 StrataNode(StrataUIModel strata) { + super(strata, true); + } + + public StrataUIModel getStrata() { + return (StrataUIModel) userObject; + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/StratasTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java similarity index 57% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/StratasTreeModel.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java index 4a17b0f..b75dd47 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/StratasTreeModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/StratasTreeModel.java @@ -1,9 +1,9 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones; +package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; -import fr.ifremer.tutti.persistence.entities.protocol.Strata; +import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes.StrataNode; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes.SubStrataNode; +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; import org.apache.commons.logging.LogFactory; @@ -26,7 +26,7 @@ public class StratasTreeModel extends DefaultTreeModel { super(new DefaultMutableTreeNode()); } - public void removeStratas(Collection<Strata> stratasToRemove) { + public void removeStratas(Collection<StrataUIModel> stratasToRemove) { DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); @@ -66,7 +66,7 @@ public class StratasTreeModel extends DefaultTreeModel { // // } - public void addStratas(Collection<Strata> stratasToAdd) { + public void addStratas(Collection<StrataUIModel> stratasToAdd) { DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); @@ -78,7 +78,7 @@ public class StratasTreeModel extends DefaultTreeModel { strata.getSubstrata().forEach(substrata -> { if (substrata != null) { - SubStrataNode subStrataNode = new SubStrataNode(substrata); + SubStrataNode subStrataNode = new SubStrataNode((SubStrataUIModel) substrata); insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); } @@ -88,14 +88,14 @@ public class StratasTreeModel extends DefaultTreeModel { } - public void addSubStratas(Collection<SubStrata> subStratas, Strata strata) { + public void addSubStratas(Collection<SubStrata> subStratas, StrataUIModel strata) { StrataNode strataNode = findStrataNode(strata); subStratas.forEach(substrata -> { if (substrata != null) { - SubStrataNode subStrataNode = new SubStrataNode(substrata); + SubStrataNode subStrataNode = new SubStrataNode((SubStrataUIModel) substrata); insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); } @@ -103,7 +103,46 @@ public class StratasTreeModel extends DefaultTreeModel { } - protected StrataNode findStrataNode(Strata strata) { + public void updateSubStratas(StrataUIModel strata, + Collection<SubStrataUIModel> subStratasToAdd, + Collection<SubStrataUIModel> subStratasToRemove) { + + StrataNode strataNode = findStrataNode(strata); + updateSubStratas(strataNode, subStratasToAdd, subStratasToRemove); + + } + + public void updateSubStratas(StrataNode strataNode, + Collection<SubStrataUIModel> subStratasToAdd, + Collection<SubStrataUIModel> subStratasToRemove) { + + Preconditions.checkNotNull(strataNode); + + for (SubStrataUIModel subStrata : subStratasToRemove) { + + SubStrataNode subStrataNode = findSubStrataNode(subStrata, strataNode); + + if (log.isInfoEnabled()) { + log.info("remove subStrata " + subStrata.getLabel()); + } + + removeNodeFromParent(subStrataNode); + } + + for (SubStrataUIModel subStrata : subStratasToAdd) { + + SubStrataNode subStrataNode = new SubStrataNode(subStrata); + + if (log.isInfoEnabled()) { + log.info("add strata " + subStrata.getLabel()); + } + + insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); + + } + } + + protected StrataNode findStrataNode(StrataUIModel strata) { DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); @@ -120,4 +159,20 @@ public class StratasTreeModel extends DefaultTreeModel { return strataNode; } + + protected SubStrataNode findSubStrataNode(SubStrataUIModel subStrata, StrataNode strataNode) { + + Enumeration strataChildren = strataNode.children(); + + SubStrataNode subStrataNode = null; + + while (subStrataNode == null && strataChildren.hasMoreElements()) { + SubStrataNode nextNode = (SubStrataNode) strataChildren.nextElement(); + if (subStrata.equals(nextNode.getSubstrata())) { + subStrataNode = nextNode; + } + } + + return subStrataNode; + } } 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 new file mode 100644 index 0000000..0ce5a2f --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/SubStrataNode.java @@ -0,0 +1,20 @@ +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 SubStrataNode(SubStrataUIModel substrata) { + super(substrata, false); + } + + public SubStrataUIModel getSubstrata() { + return (SubStrataUIModel) userObject; + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorTreeCellRenderer.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java similarity index 70% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorTreeCellRenderer.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java index a319e9e..97aad64 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorTreeCellRenderer.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneEditorTreeCellRenderer.java @@ -1,11 +1,10 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones; +package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; -import fr.ifremer.tutti.persistence.entities.protocol.Strata; 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.nodes.StrataNode; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes.SubStrataNode; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes.ZoneNode; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; @@ -17,6 +16,9 @@ import java.awt.Component; */ public class ZoneEditorTreeCellRenderer extends DefaultTreeCellRenderer { + /** Logger. */ + private static final Log log = LogFactory.getLog(ZoneEditorTreeCellRenderer.class); + @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { @@ -25,8 +27,8 @@ public class ZoneEditorTreeCellRenderer extends DefaultTreeCellRenderer { String text = ""; if (value instanceof StrataNode) { - Strata strata = ((StrataNode) value).getStrata(); - text = strata.getLocation().getLabel(); + StrataUIModel strata = ((StrataNode) value).getStrata(); + text = strata.getLabel(); } else if (value instanceof SubStrataNode) { SubStrata substrata = ((SubStrataNode) value).getSubstrata(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/ZoneNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java similarity index 69% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/ZoneNode.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java index 8406978..924fa07 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/nodes/ZoneNode.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZoneNode.java @@ -1,6 +1,6 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones.nodes; +package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneUIModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; import javax.swing.tree.DefaultMutableTreeNode; 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 new file mode 100644 index 0000000..3ee80fe --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java @@ -0,0 +1,202 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; + +import com.google.common.base.Preconditions; +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; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class ZonesTreeModel extends DefaultTreeModel { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ZonesTreeModel.class); + + public ZonesTreeModel() { + super(new DefaultMutableTreeNode()); + } + + public void removeZones(Collection<ZoneUIModel> zonesToRemove) { + + DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + + Enumeration rootChildren = root.children(); + Collection<DefaultMutableTreeNode> nodesToRemove = new HashSet<>(); + + while (rootChildren.hasMoreElements()) { + + ZoneNode zoneNode = (ZoneNode) rootChildren.nextElement(); + + if (zonesToRemove.contains(zoneNode.getZone())) { + nodesToRemove.add(zoneNode); + } + } + + nodesToRemove.forEach(zoneNode ->removeNodeFromParent(zoneNode)); + } + + public void addZones(Collection<ZoneUIModel> zonesToAdd) { + + DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + + zonesToAdd.forEach(zone -> { + + ZoneNode zoneNode = new ZoneNode(zone); + insertNodeInto(zoneNode, root, root.getChildCount()); + + }); + } + + public void updateStratas(ZoneUIModel zone, + Collection<StrataUIModel> stratasToAdd, + Collection<StrataUIModel> stratasToRemove) { + + ZoneNode zoneNode = findZoneNode(zone); + updateStratas(zoneNode, stratasToAdd, stratasToRemove); + } + + public void updateStratas(ZoneNode zoneNode, + Collection<StrataUIModel> stratasToAdd, + Collection<StrataUIModel> stratasToRemove) { + + Preconditions.checkNotNull(zoneNode); + + for (StrataUIModel strata : stratasToRemove) { + + StrataNode strataNode = findStrataNode(strata, zoneNode); + + if (log.isInfoEnabled()) { + log.info("remove strata " + strata.getLabel()); + } + + removeNodeFromParent(strataNode); + } + + for (StrataUIModel strata : stratasToAdd) { + + StrataNode strataNode = new StrataNode(strata); + + if (log.isInfoEnabled()) { + log.info("add strata " + strata.getLabel()); + } + + insertNodeInto(strataNode, zoneNode, zoneNode.getChildCount()); + + Set<SubStrataUIModel> subStratasToAdd = strata.getSubstrata() + .stream() + .map(subStrata -> (SubStrataUIModel) subStrata) + .collect(Collectors.toSet()); + + updateSubStratas(strataNode, subStratasToAdd, Collections.emptySet()); + } + } + + public void updateSubStratas(StrataUIModel strata, + Collection<SubStrataUIModel> subStratasToAdd, + Collection<SubStrataUIModel> subStratasToRemove) { + + StrataNode strataNode = findStrataNode(strata, strata.getZone()); + updateSubStratas(strataNode, subStratasToAdd, subStratasToRemove); + + } + + public void updateSubStratas(StrataNode strataNode, + Collection<SubStrataUIModel> subStratasToAdd, + Collection<SubStrataUIModel> subStratasToRemove) { + + Preconditions.checkNotNull(strataNode); + + for (SubStrataUIModel subStrata : subStratasToRemove) { + + SubStrataNode subStrataNode = findSubStrataNode(subStrata, strataNode); + + if (log.isInfoEnabled()) { + log.info("remove subStrata " + subStrata.getLabel()); + } + + removeNodeFromParent(subStrataNode); + } + + for (SubStrataUIModel subStrata : subStratasToAdd) { + + SubStrataNode subStrataNode = new SubStrataNode(subStrata); + + if (log.isInfoEnabled()) { + log.info("add strata " + subStrata.getLabel()); + } + + insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); + + } + } + + protected ZoneNode findZoneNode(ZoneUIModel zone) { + + DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + + Enumeration rootChildren = root.children(); + + ZoneNode zoneNode = null; + + while (zoneNode == null && rootChildren.hasMoreElements()) { + ZoneNode nextNode = (ZoneNode) rootChildren.nextElement(); + if (zone.equals(nextNode.getZone())) { + zoneNode = nextNode; + } + } + + return zoneNode; + } + + protected StrataNode findStrataNode(StrataUIModel strata, ZoneUIModel zone) { + + ZoneNode zoneNode = findZoneNode(zone); + + return findStrataNode(strata, zoneNode); + } + + protected StrataNode findStrataNode(StrataUIModel strata, ZoneNode zoneNode) { + + Enumeration zoneChildren = zoneNode.children(); + + StrataNode strataNode = null; + + while (strataNode == null && zoneChildren.hasMoreElements()) { + StrataNode nextNode = (StrataNode) zoneChildren.nextElement(); + if (strata.equals(nextNode.getStrata())) { + strataNode = nextNode; + } + } + + return strataNode; + } + + protected SubStrataNode findSubStrataNode(SubStrataUIModel subStrata, StrataNode strataNode) { + + Enumeration strataChildren = strataNode.children(); + + SubStrataNode subStrataNode = null; + + while (subStrataNode == null && strataChildren.hasMoreElements()) { + SubStrataNode nextNode = (SubStrataNode) strataChildren.nextElement(); + if (subStrata.equals(nextNode.getSubstrata())) { + subStrataNode = nextNode; + } + } + + return subStrataNode; + } +} -- 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 2f86084d3917f753b6f2f3453228af6b1a88318d 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 c1770b68bdadd49ee0c46a779aab22fd2d081d7b 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 64396f97ee982f248d402a765c74ca1440b30d26 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 48ee1cfebc5f8314475040567a55afe268f51928 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>.
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 b5d8711c0fb79b98858ff7436b8ea0eea552d245 Author: Kevin Morin <morin@codelutin.com> Date: Mon Feb 1 19:09:05 2016 +0100 - ajout de la suppression de zone - probleme de rechargement de l'arbre quand on cache la racine - sélection de la zone créée (refs #7929) --- .../content/protocol/EditProtocolUIHandler.java | 6 +++ .../swing/content/protocol/zones/ZoneEditorUI.jaxx | 1 + .../swing/content/protocol/zones/ZoneEditorUI.jcss | 7 ++- .../protocol/zones/ZoneEditorUIHandler.java | 30 ++++++++---- .../protocol/zones/actions/CreateZoneAction.java | 15 ++++++ .../protocol/zones/actions/DeleteZoneAction.java | 54 ++++++++++++++++++++++ .../protocol/zones/tree/StratasTreeModel.java | 14 ++++-- .../protocol/zones/tree/ZonesTreeModel.java | 14 +++--- .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + 10 files changed, 120 insertions(+), 23 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 7ccba13..970952d 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 @@ -53,6 +53,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHe 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.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; @@ -639,6 +640,11 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI getModel().setZone(new HashSet<>(zoneEditorUIModel.getZones())); zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, evt -> getModel().setZone(new HashSet<>((Collection<Zone>) evt.getNewValue()))); + zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_AVAILABLE_STRATAS, + evt -> { + Collection<StrataUIModel> newValue = (Collection<StrataUIModel>) evt.getNewValue(); + getModel().setValid(getModel().isValid() && newValue.isEmpty()); + }); //FIXME kmorin ecouter toutes les modifs sur le model d'editeur de zone // listenModelModifiy(zoneEditorUIModel); 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 bd4b528..e886452 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 @@ -25,6 +25,7 @@ <cell> <JToolBar id="zonesTreeToolBar"> <JButton id="createZone"/> + <JButton id="deleteZone"/> <JButton id="expandZonesTree"/> <JButton id="collapseZonesTree"/> </JToolBar> 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 c322086..6cb7019 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 @@ -2,7 +2,7 @@ JTree { autoscrolls: true; expandsSelectedPaths: true; scrollsOnExpand: true; - rootVisible: false; + //rootVisible: false; showsRootHandles: true; cellRenderer: {new ZoneEditorTreeCellRenderer()}; } @@ -16,6 +16,11 @@ JToolBar { _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.CreateZoneAction.class}; } +#deleteZone { + actionIcon: delete; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.DeleteZoneAction.class}; +} + #expandZonesTree { actionIcon: expand; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.ExpandZonesTreeAction.class}; 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 7918284..b103d12 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 @@ -16,6 +16,7 @@ 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.swing.JAXXWidgetUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -63,7 +64,7 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode ZonesTreeModel zonesTreeModel = (ZonesTreeModel) getUI().getZonesTree().getModel(); zonesTreeModel.updateStratas(zone, stratasToAdd, stratasToRemove); - zonesTreeModel.reload(); +// zonesTreeModel.reload(); } }; @@ -85,7 +86,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode ZonesTreeModel zonesTreeModel = (ZonesTreeModel) getUI().getZonesTree().getModel(); zonesTreeModel.updateSubStratas(strata, subStratasToAdd, subStratasToRemove); - zonesTreeModel.reload(); } }; @@ -112,7 +112,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode StratasTreeModel stratasTreeModel = (StratasTreeModel) getUI().getAvailableStratasTree().getModel(); stratasTreeModel.updateSubStratas(strata, subStratasToAdd, subStratasToRemove); - stratasTreeModel.reload(); } }; @@ -176,9 +175,13 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode // get data initModel(); + + JAXXWidgetUtil.expandTree(availableStratasTree); + JAXXWidgetUtil.expandTree(zonesTree); } - public static void collapseTree(final JTree tree) { + //FIXME move to jaxx + public void collapseTree(final JTree tree) { SwingUtilities.invokeLater(new Runnable() { public void run() { int i = 0; @@ -232,13 +235,14 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode Collection<Strata> protocolStratas = zones.stream() .map(zone -> zone.getStrata()) .flatMap(stratas -> stratas.stream()) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); + + if (log.isInfoEnabled()) { + log.info("protocol strata " + protocolStratas); + } protocolStratas.forEach(strata -> { - if (log.isInfoEnabled()) { - log.info("protocol strata " + strata); - } TuttiLocation strataLocation = strata.getLocation(); Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() @@ -246,6 +250,11 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode .map(subStrata -> subStrata.getLocation()) .collect(Collectors.toSet()); + + if (log.isInfoEnabled()) { + log.info("protocol strata " + strata.getLocation() + " " + subStrataLocations); + } + if (subStrataLocations.isEmpty()) { programStratasAndSubstratas.removeAll(strataLocation); @@ -290,6 +299,9 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode JTree zonesTree = getUI().getZonesTree(); ZonesTreeModel zonesTreeModel = (ZonesTreeModel) zonesTree.getModel(); + if (log.isInfoEnabled()) { + log.info("zones to remove" + zonesToRemove); + } zonesTreeModel.removeZones(zonesToRemove); zonesTreeModel.addZones(zonesToAdd); @@ -299,7 +311,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode zonesToAdd.forEach(zone -> zone.addPropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, stratasChangeListener)); - zonesTreeModel.reload(); } protected void updateAvailableStratasTreeModel(Collection<StrataUIModel> stratasToAdd, @@ -321,7 +332,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode stratasToAdd.forEach(strata -> strata.addPropertyChangeListener(StrataUIModel.PROPERTY_SUBSTRATA, availableSubStratasChangeListener)); - availableStratasTreeModel.reload(); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java index 9be290a..d5780b8 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java @@ -2,9 +2,15 @@ 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.content.protocol.zones.models.ZoneUIModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZonesTreeModel; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; import static org.nuiton.i18n.I18n.t; @@ -14,6 +20,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CreateZoneAction extends SimpleActionSupport<ZoneEditorUI> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CreateZoneAction.class); + public CreateZoneAction(ZoneEditorUI zoneEditorUI) { super(zoneEditorUI); } @@ -27,6 +36,12 @@ public class CreateZoneAction extends SimpleActionSupport<ZoneEditorUI> { ZoneUIModel zone = new ZoneUIModel(); zone.setLabel(zoneLabel); zoneEditorUI.getModel().addZone(zone); + + //select newly created node + JTree zonesTree = zoneEditorUI.getZonesTree(); + ZoneNode zoneNode = ((ZonesTreeModel) zonesTree.getModel()).findZoneNode(zone); + TreePath path = new TreePath(zoneNode.getPath()); + zonesTree.setSelectionPath(path); } } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java new file mode 100644 index 0000000..3ae5235 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java @@ -0,0 +1,54 @@ +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.content.protocol.zones.models.StrataUIModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; +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; + +import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; + +import java.util.stream.Collectors; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class DeleteZoneAction extends SimpleActionSupport<ZoneEditorUI> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(DeleteZoneAction.class); + + public DeleteZoneAction(ZoneEditorUI zoneEditorUI) { + super(zoneEditorUI); + } + + @Override + protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { + + JTree zonesTree = zoneEditorUI.getZonesTree(); + + if (zonesTree.getSelectionCount() >= 1) { + + int confirmDeletion = JOptionPane.showConfirmDialog(zoneEditorUI, t("tutti.zoneEditor.deleteZone.message")); + + if (confirmDeletion == JOptionPane.YES_OPTION) { + + TreePath[] selectionPaths = zonesTree.getSelectionPaths(); + for (TreePath selectedPath : selectionPaths) { + ZoneUIModel zone = ((ZoneNode) selectedPath.getPathComponent(1)).getZone(); + zoneEditorUI.getModel().removeStratasFromZone(zone.getStrata().stream() + .map(strata -> (StrataUIModel) strata) + .collect(Collectors.toSet())); + } + + } + } + } +} 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 dc89aed..2e7de3e 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 @@ -43,6 +43,7 @@ public class StratasTreeModel extends DefaultTreeModel { nodesToRemove.forEach(strataNode ->removeNodeFromParent(strataNode)); + nodeChanged(root); } public void addStratas(Collection<StrataUIModel> stratasToAdd) { @@ -52,13 +53,13 @@ public class StratasTreeModel extends DefaultTreeModel { stratasToAdd.forEach(strata -> { StrataNode strataNode = new StrataNode(strata); - insertNodeInto(strataNode, root, root.getChildCount()); + insertNodeInto(strataNode, root, 0); strata.getSubstrata().forEach(substrata -> { if (substrata != null) { SubStrataNode subStrataNode = new SubStrataNode((SubStrataUIModel) substrata); - insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); + insertNodeInto(subStrataNode, strataNode, 0); } }); @@ -67,6 +68,7 @@ public class StratasTreeModel extends DefaultTreeModel { root.sortChildren(); + nodeChanged(root); } public void updateSubStratas(StrataUIModel strata, @@ -103,14 +105,16 @@ public class StratasTreeModel extends DefaultTreeModel { log.info("add strata " + subStrata.getLabel()); } - insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); + insertNodeInto(subStrataNode, strataNode, 0); } strataNode.sortChildren(); + + nodeChanged(root); } - protected StrataNode findStrataNode(StrataUIModel strata) { + public StrataNode findStrataNode(StrataUIModel strata) { DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); @@ -128,7 +132,7 @@ public class StratasTreeModel extends DefaultTreeModel { return strataNode; } - protected SubStrataNode findSubStrataNode(SubStrataUIModel subStrata, StrataNode strataNode) { + public SubStrataNode findSubStrataNode(SubStrataUIModel subStrata, StrataNode strataNode) { Enumeration strataChildren = strataNode.children(); 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 158a167..5bdd816 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 @@ -55,7 +55,7 @@ public class ZonesTreeModel extends DefaultTreeModel { zonesToAdd.forEach(zone -> { ZoneNode zoneNode = new ZoneNode(zone); - insertNodeInto(zoneNode, root, root.getChildCount()); + insertNodeInto(zoneNode, root, 0); Set<StrataUIModel> stratasToAdd = zone.getStrata() @@ -104,7 +104,7 @@ public class ZonesTreeModel extends DefaultTreeModel { log.info("add strata " + strata.getLabel()); } - insertNodeInto(strataNode, zoneNode, zoneNode.getChildCount()); + insertNodeInto(strataNode, zoneNode, 0); Set<SubStrataUIModel> subStratasToAdd = strata.getSubstrata() .stream() @@ -151,14 +151,14 @@ public class ZonesTreeModel extends DefaultTreeModel { log.info("add strata " + subStrata.getLabel()); } - insertNodeInto(subStrataNode, strataNode, strataNode.getChildCount()); + insertNodeInto(subStrataNode, strataNode, 0); } strataNode.sortChildren(); } - protected ZoneNode findZoneNode(ZoneUIModel zone) { + public ZoneNode findZoneNode(ZoneUIModel zone) { DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); @@ -176,14 +176,14 @@ public class ZonesTreeModel extends DefaultTreeModel { return zoneNode; } - protected StrataNode findStrataNode(StrataUIModel strata, ZoneUIModel zone) { + public StrataNode findStrataNode(StrataUIModel strata, ZoneUIModel zone) { ZoneNode zoneNode = findZoneNode(zone); return findStrataNode(strata, zoneNode); } - protected StrataNode findStrataNode(StrataUIModel strata, ZoneNode zoneNode) { + public StrataNode findStrataNode(StrataUIModel strata, ZoneNode zoneNode) { Enumeration zoneChildren = zoneNode.children(); @@ -199,7 +199,7 @@ public class ZonesTreeModel extends DefaultTreeModel { return strataNode; } - protected SubStrataNode findSubStrataNode(SubStrataUIModel subStrata, StrataNode strataNode) { + public SubStrataNode findSubStrataNode(SubStrataUIModel subStrata, StrataNode strataNode) { Enumeration strataChildren = strataNode.children(); 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 046f523..4354fd8 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 @@ -2347,3 +2347,4 @@ tutti.vesselUseFeatureTable.table.header.key= tutti.vesselUseFeatureTable.table.header.value= tutti.vesselUseFeatureTable.title= tutti.zoneEditor.createZone.message= +tutti.zoneEditor.deleteZone.message= 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 5005fdc..4f7c100 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 @@ -2172,3 +2172,4 @@ tutti.vesselUseFeatureTable.table.header.key=Caractéristique tutti.vesselUseFeatureTable.table.header.value=Valeur tutti.vesselUseFeatureTable.title=Autres paramètres tutti.zoneEditor.createZone.message=Libellé de la nouvelle zone +tutti.zoneEditor.deleteZone.message= -- 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 a437aed7070ad5b8370872afe22554cdee8d0e14 Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 14:36:07 2016 +0100 tri des noeuds + i18n (refs #7929) --- .../content/protocol/EditProtocolUIHandler.java | 4 +++ .../content/protocol/zones/ZoneEditorUIModel.java | 19 ++++++++++++++ .../protocol/zones/actions/CreateZoneAction.java | 8 ++++-- .../protocol/zones/actions/DeleteZoneAction.java | 29 ++++++++++++--------- .../zones/tree/AbstractZoneEditorTreeModel.java | 25 ++++++++++++++++++ .../protocol/zones/tree/StratasTreeModel.java | 30 +++------------------- .../protocol/zones/tree/ZoneEditorNode.java | 19 ++++++++++++++ .../protocol/zones/tree/ZonesTreeModel.java | 30 +++------------------- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 ++- 10 files changed, 103 insertions(+), 67 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 970952d..1082106 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 @@ -643,8 +643,12 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_AVAILABLE_STRATAS, evt -> { Collection<StrataUIModel> newValue = (Collection<StrataUIModel>) evt.getNewValue(); + if (log.isInfoEnabled()) { + log.info("newValue " + newValue); + } getModel().setValid(getModel().isValid() && newValue.isEmpty()); }); + getModel().setValid(getModel().isValid() && zoneEditorUIModel.getAvailableStratas().isEmpty()); //FIXME kmorin ecouter toutes les modifs sur le model d'editeur de zone // listenModelModifiy(zoneEditorUIModel); 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 17ca15a..a2069e4 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 @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.stream.Collectors; /** * @author Kevin Morin (Code Lutin) @@ -90,7 +91,25 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { public void removeZone(ZoneUIModel zone) { Object oldValue = new ArrayList<>(getZones()); + + removeStratasFromZone(zone.getStrata().stream() + .map(strata -> (StrataUIModel) strata) + .collect(Collectors.toSet())); zones.remove(zone); + + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); + } + + public void removeAllZones(Collection<ZoneUIModel> zones) { + Object oldValue = new ArrayList<>(getZones()); + + removeStratasFromZone(zones.stream() + .map(zone -> zone.getStrata()) + .flatMap(s -> s.stream()) + .map(strata -> (StrataUIModel) strata) + .collect(Collectors.toSet())); + this.zones.removeAll(zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java index d5780b8..72a4e02 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/CreateZoneAction.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZonesTreeModel; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -30,9 +31,12 @@ public class CreateZoneAction extends SimpleActionSupport<ZoneEditorUI> { @Override protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { - String zoneLabel = JOptionPane.showInputDialog(t("tutti.zoneEditor.createZone.message")); + String zoneLabel = JOptionPane.showInputDialog(zoneEditorUI, + t("tutti.zoneEditor.createZone.message"), + t("tutti.zoneEditor.createZone.title"), + JOptionPane.QUESTION_MESSAGE); - if (zoneLabel != null) { + if (StringUtils.isNotEmpty(zoneLabel)) { ZoneUIModel zone = new ZoneUIModel(); zone.setLabel(zoneLabel); zoneEditorUI.getModel().addZone(zone); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java index 3ae5235..68c6d03 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java @@ -1,18 +1,18 @@ 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.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; import javax.swing.JTree; import javax.swing.tree.TreePath; - -import java.util.stream.Collectors; +import java.util.HashSet; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -36,18 +36,23 @@ public class DeleteZoneAction extends SimpleActionSupport<ZoneEditorUI> { if (zonesTree.getSelectionCount() >= 1) { - int confirmDeletion = JOptionPane.showConfirmDialog(zoneEditorUI, t("tutti.zoneEditor.deleteZone.message")); + Set<ZoneUIModel> zonesToDelete = new HashSet<>(); + TreePath[] selectionPaths = zonesTree.getSelectionPaths(); + for (TreePath selectedPath : selectionPaths) { + ZoneUIModel zone = ((ZoneNode) selectedPath.getPathComponent(1)).getZone(); + zonesToDelete.add(zone); + } - if (confirmDeletion == JOptionPane.YES_OPTION) { + String zonesToDeleteListItems = "<li>" + StringUtils.join(zonesToDelete, "</li><li>") + "</li>"; - TreePath[] selectionPaths = zonesTree.getSelectionPaths(); - for (TreePath selectedPath : selectionPaths) { - ZoneUIModel zone = ((ZoneNode) selectedPath.getPathComponent(1)).getZone(); - zoneEditorUI.getModel().removeStratasFromZone(zone.getStrata().stream() - .map(strata -> (StrataUIModel) strata) - .collect(Collectors.toSet())); - } + int confirmDeletion = JOptionPane.showConfirmDialog(zoneEditorUI, + t("tutti.zoneEditor.deleteZone.message", zonesToDeleteListItems), + t("tutti.zoneEditor.deleteZone.title"), + JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + if (confirmDeletion == JOptionPane.YES_OPTION) { + zoneEditorUI.getModel().removeAllZones(zonesToDelete); } } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/AbstractZoneEditorTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/AbstractZoneEditorTreeModel.java new file mode 100644 index 0000000..b1617cd --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/AbstractZoneEditorTreeModel.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.tree.DefaultTreeModel; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public abstract class AbstractZoneEditorTreeModel extends DefaultTreeModel { + + /** Logger. */ + private static final Log log = LogFactory.getLog(AbstractZoneEditorTreeModel.class); + + public AbstractZoneEditorTreeModel() { + super(new ZoneEditorNode()); + } + + public void addNode(ZoneEditorNode newChild, ZoneEditorNode parent) { + int index = parent.getFutureNodePosition(newChild); + insertNodeInto(newChild, parent, index); + } +} 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 2e7de3e..1b9838c 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 @@ -7,7 +7,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeModel; import java.util.Collection; import java.util.Enumeration; import java.util.HashSet; @@ -16,15 +15,11 @@ import java.util.HashSet; * @author Kevin Morin (Code Lutin) * @since 4.5 */ -public class StratasTreeModel extends DefaultTreeModel { +public class StratasTreeModel extends AbstractZoneEditorTreeModel { /** Logger. */ private static final Log log = LogFactory.getLog(StratasTreeModel.class); - public StratasTreeModel() { - super(new ZoneEditorNode()); - } - public void removeStratas(Collection<StrataUIModel> stratasToRemove) { ZoneEditorNode root = (ZoneEditorNode) getRoot(); @@ -42,8 +37,6 @@ public class StratasTreeModel extends DefaultTreeModel { } nodesToRemove.forEach(strataNode ->removeNodeFromParent(strataNode)); - - nodeChanged(root); } public void addStratas(Collection<StrataUIModel> stratasToAdd) { @@ -53,22 +46,19 @@ public class StratasTreeModel extends DefaultTreeModel { stratasToAdd.forEach(strata -> { StrataNode strataNode = new StrataNode(strata); - insertNodeInto(strataNode, root, 0); + addNode(strataNode, root); strata.getSubstrata().forEach(substrata -> { if (substrata != null) { SubStrataNode subStrataNode = new SubStrataNode((SubStrataUIModel) substrata); - insertNodeInto(subStrataNode, strataNode, 0); + addNode(subStrataNode, strataNode); } }); }); - root.sortChildren(); - - nodeChanged(root); } public void updateSubStratas(StrataUIModel strata, @@ -90,10 +80,6 @@ public class StratasTreeModel extends DefaultTreeModel { SubStrataNode subStrataNode = findSubStrataNode(subStrata, strataNode); - if (log.isInfoEnabled()) { - log.info("remove subStrata " + subStrata.getLabel()); - } - removeNodeFromParent(subStrataNode); } @@ -101,17 +87,9 @@ public class StratasTreeModel extends DefaultTreeModel { SubStrataNode subStrataNode = new SubStrataNode(subStrata); - if (log.isInfoEnabled()) { - log.info("add strata " + subStrata.getLabel()); - } - - insertNodeInto(subStrataNode, strataNode, 0); + addNode(subStrataNode, strataNode); } - - strataNode.sortChildren(); - - nodeChanged(root); } public StrataNode findStrataNode(StrataUIModel strata) { 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 index 519538a..43e113a 100644 --- 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 @@ -1,7 +1,12 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.tree; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import javax.swing.tree.DefaultMutableTreeNode; +import java.util.ArrayList; import java.util.Collections; +import java.util.List; /** * @author Kevin Morin (Code Lutin) @@ -9,6 +14,9 @@ import java.util.Collections; */ public class ZoneEditorNode extends DefaultMutableTreeNode implements Comparable { + /** Logger. */ + private static final Log log = LogFactory.getLog(ZoneEditorNode.class); + public ZoneEditorNode() { super(); } @@ -23,6 +31,17 @@ public class ZoneEditorNode extends DefaultMutableTreeNode implements Comparable } } + public int getFutureNodePosition(ZoneEditorNode node) { + if (children == null) { + return 0; + } + + List<ZoneEditorNode> orderedChildren = new ArrayList<>(children); + orderedChildren.add(node); + Collections.sort(orderedChildren); + return orderedChildren.indexOf(node); + } + @Override public int compareTo(Object o) { if (o == null) { 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 5bdd816..2072ed3 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 @@ -8,7 +8,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeModel; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; @@ -20,15 +19,11 @@ import java.util.stream.Collectors; * @author Kevin Morin (Code Lutin) * @since 4.5 */ -public class ZonesTreeModel extends DefaultTreeModel { +public class ZonesTreeModel extends AbstractZoneEditorTreeModel { /** Logger. */ private static final Log log = LogFactory.getLog(ZonesTreeModel.class); - public ZonesTreeModel() { - super(new ZoneEditorNode()); - } - public void removeZones(Collection<ZoneUIModel> zonesToRemove) { ZoneEditorNode root = (ZoneEditorNode) getRoot(); @@ -55,8 +50,7 @@ public class ZonesTreeModel extends DefaultTreeModel { zonesToAdd.forEach(zone -> { ZoneNode zoneNode = new ZoneNode(zone); - insertNodeInto(zoneNode, root, 0); - + addNode(zoneNode, root); Set<StrataUIModel> stratasToAdd = zone.getStrata() .stream() @@ -67,8 +61,6 @@ public class ZonesTreeModel extends DefaultTreeModel { }); - root.sortChildren(); - } public void updateStratas(ZoneUIModel zone, @@ -100,11 +92,7 @@ public class ZonesTreeModel extends DefaultTreeModel { StrataNode strataNode = new StrataNode(strata); - if (log.isInfoEnabled()) { - log.info("add strata " + strata.getLabel()); - } - - insertNodeInto(strataNode, zoneNode, 0); + addNode(strataNode, zoneNode); Set<SubStrataUIModel> subStratasToAdd = strata.getSubstrata() .stream() @@ -114,7 +102,6 @@ public class ZonesTreeModel extends DefaultTreeModel { updateSubStratas(strataNode, subStratasToAdd, Collections.emptySet()); } - zoneNode.sortChildren(); } public void updateSubStratas(StrataUIModel strata, @@ -136,10 +123,6 @@ public class ZonesTreeModel extends DefaultTreeModel { SubStrataNode subStrataNode = findSubStrataNode(subStrata, strataNode); - if (log.isInfoEnabled()) { - log.info("remove subStrata " + subStrata.getLabel()); - } - removeNodeFromParent(subStrataNode); } @@ -147,15 +130,10 @@ public class ZonesTreeModel extends DefaultTreeModel { SubStrataNode subStrataNode = new SubStrataNode(subStrata); - if (log.isInfoEnabled()) { - log.info("add strata " + subStrata.getLabel()); - } - - insertNodeInto(subStrataNode, strataNode, 0); + addNode(subStrataNode, strataNode); } - strataNode.sortChildren(); } public 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 4354fd8..7979ac0 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 @@ -2347,4 +2347,6 @@ tutti.vesselUseFeatureTable.table.header.key= tutti.vesselUseFeatureTable.table.header.value= tutti.vesselUseFeatureTable.title= tutti.zoneEditor.createZone.message= +tutti.zoneEditor.createZone.title= tutti.zoneEditor.deleteZone.message= +tutti.zoneEditor.deleteZone.title= 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 4f7c100..146154c 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 @@ -2172,4 +2172,6 @@ tutti.vesselUseFeatureTable.table.header.key=Caractéristique tutti.vesselUseFeatureTable.table.header.value=Valeur tutti.vesselUseFeatureTable.title=Autres paramètres tutti.zoneEditor.createZone.message=Libellé de la nouvelle zone -tutti.zoneEditor.deleteZone.message= +tutti.zoneEditor.createZone.title=Nouvelle zone +tutti.zoneEditor.deleteZone.message=<html><div>Vous êtes sur le point de supprimer les zones suivantes \:</div><ul>%s</ul><div>Êtes-vous sûr de vouloir les supprimer ?</div></html> +tutti.zoneEditor.deleteZone.title=Suppression de 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 098b663940cb314765a5be5a4469be2b2fa909cc Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 15:54:09 2016 +0100 utilisation de fromEntity et toEntity au lieu de fromBean et toBean --- .../ui/swing/content/cruise/EditCruiseUIHandler.java | 2 +- .../swing/content/cruise/actions/SaveCruiseAction.java | 4 ++-- .../catches/accidental/AccidentalBatchUIHandler.java | 2 +- .../operation/catches/benthos/BenthosBatchUIHandler.java | 4 ++-- .../IndividualObservationBatchUIHandler.java | 2 +- .../catches/marinelitter/MarineLitterBatchUIHandler.java | 2 +- .../operation/catches/species/SpeciesBatchUIHandler.java | 4 ++-- .../fishing/actions/EditFishingOperationAction.java | 4 ++-- .../fishing/actions/SaveFishingOperationAction.java | 2 +- .../ui/swing/content/program/EditProgramUIHandler.java | 2 +- .../swing/content/program/actions/SaveProgramAction.java | 2 +- .../protocol/actions/ExportProtocolBenthosAction.java | 2 +- .../actions/ExportProtocolCaracteristicAction.java | 2 +- .../protocol/actions/ExportProtocolSpeciesAction.java | 2 +- .../protocol/actions/ImportProtocolBenthosAction.java | 2 +- .../actions/ImportProtocolCaracteristicAction.java | 4 ++-- .../protocol/actions/ImportProtocolSpeciesAction.java | 2 +- .../content/protocol/actions/SaveProtocolAction.java | 16 +++------------- .../content/report/actions/GenerateReportAction.java | 2 +- .../actions/EditCruiseInValidationUIAction.java | 2 +- .../EditFishingOperationInValidationUIAction.java | 4 ++-- 21 files changed, 29 insertions(+), 39 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java index 96d9bfa..4a50ced 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java @@ -111,7 +111,7 @@ public class EditCruiseUIHandler extends AbstractTuttiUIHandler<EditCruiseUIMode // load existing cruise Cruise cruise = getDataContext().getCruise(); - model.fromBean(cruise); + model.fromEntity(cruise); if (!model.isGearEmpty()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/actions/SaveCruiseAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/actions/SaveCruiseAction.java index 0ae2a53..96aab10 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/actions/SaveCruiseAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/actions/SaveCruiseAction.java @@ -68,7 +68,7 @@ public class SaveCruiseAction extends LongActionSupport<EditCruiseUIModel, EditC public boolean prepareAction() throws Exception { boolean result = super.prepareAction(); - Cruise bean = getModel().toBean(); + Cruise bean = getModel().toEntity(); if (!TuttiEntities.isNew(bean)) { Cruise oldCruise = persistenceService.getCruise(bean.getId()); @@ -150,7 +150,7 @@ public class SaveCruiseAction extends LongActionSupport<EditCruiseUIModel, EditC TuttiUIContext context = getContext(); EditCruiseUIModel model = getModel(); - Cruise bean = model.toBean(); + Cruise bean = model.toEntity(); Cruise saved; boolean createCruise = TuttiEntities.isNew(bean); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java index 266016f..feebb58 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java @@ -172,7 +172,7 @@ public class AccidentalBatchUIHandler @Override protected boolean isRowValid(AccidentalBatchRowModel row) { - AccidentalBatch batch = row.toBean(); + AccidentalBatch batch = row.toEntity(); NuitonValidatorResult validator = getValidationService().validateEditAccidentalBatch(batch); boolean result = !validator.hasErrorMessagess(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java index 76ec945..c0fa132 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java @@ -1263,7 +1263,7 @@ public class BenthosBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Bent BenthosBatchRowModel parent = row.getParentBatch(); if (parent != null) { //FIXME Check no need to convert parent weight ? :( - entityToSave.setParentBatch(parent.toBean()); + entityToSave.setParentBatch(parent.toEntity()); } if (TuttiEntities.isNew(entityToSave)) { @@ -1431,7 +1431,7 @@ public class BenthosBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Bent Preconditions.checkNotNull(sampleCategory.getCategoryId()); Preconditions.checkNotNull(sampleCategory.getCategoryValue()); - BenthosBatch catchBean = row.toBean(); + BenthosBatch catchBean = row.toEntity(); // convert weight Float weight = catchBean.getWeight(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java index e692476..7b7a96b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java @@ -193,7 +193,7 @@ public class IndividualObservationBatchUIHandler @Override protected boolean isRowValid(IndividualObservationBatchRowModel row) { - IndividualObservationBatch batch = row.toBean(); + IndividualObservationBatch batch = row.toEntity(); NuitonValidatorResult validator = getValidationService().validateEditIndividualObservationBatch(batch); boolean result = !validator.hasErrorMessagess(); return result; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java index 954c6b4..c825ed0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java @@ -142,7 +142,7 @@ public class MarineLitterBatchUIHandler extends AbstractTuttiBatchTableUIHandler @Override protected boolean isRowValid(MarineLitterBatchRowModel row) { - MarineLitterBatch batch = row.toBean(); + MarineLitterBatch batch = row.toEntity(); NuitonValidatorResult validator = getValidationService().validateEditMarineLitterBatch(batch); boolean result = !validator.hasErrorMessagess(); return result; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java index 01475e0..17d0779 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java @@ -1267,7 +1267,7 @@ public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Spec Preconditions.checkNotNull(sampleCategory.getCategoryId()); Preconditions.checkNotNull(sampleCategory.getCategoryValue()); - SpeciesBatch catchBean = row.toBean(); + SpeciesBatch catchBean = row.toEntity(); // convert weight Float weight = catchBean.getWeight(); @@ -1278,7 +1278,7 @@ public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Spec SpeciesBatchRowModel parent = row.getParentBatch(); if (parent != null) { //FIXME Check no need to convert parent weight ? :( - catchBean.setParentBatch(parent.toBean()); + catchBean.setParentBatch(parent.toEntity()); } // apply sample category diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java index bc0190d..0d9fb66 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java @@ -475,7 +475,7 @@ public class EditFishingOperationAction extends LongActionSupport<FishingOperati if (bean == null) { - editFishingOperationUIModel.fromBean( + editFishingOperationUIModel.fromEntity( FishingOperations.newFishingOperation()); editFishingOperationUIModel.setFishingOperation(bean); @@ -519,7 +519,7 @@ public class EditFishingOperationAction extends LongActionSupport<FishingOperati ui.getGearComboBox().setData(gears); } - editFishingOperationUIModel.fromBean(bean); + editFishingOperationUIModel.fromEntity(bean); // to be sure combo list will be reloaded editFishingOperationUIModel.setStrata(null); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/SaveFishingOperationAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/SaveFishingOperationAction.java index 2029d9e..e5c4d87 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/SaveFishingOperationAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/SaveFishingOperationAction.java @@ -95,7 +95,7 @@ public class SaveFishingOperationAction extends LongActionSupport<EditFishingOpe beanToSave.convertGearShootingCoordinatesToDD(); // save modified fishing operation - FishingOperation toSave = beanToSave.toBean(); + FishingOperation toSave = beanToSave.toEntity(); AbstractCaracteristicTabUIModel[] subModels = handler.getSubModels(); for (AbstractCaracteristicTabUIModel subModel : subModels) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java index 83d9a80..7f8c0ec 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java @@ -80,7 +80,7 @@ public class EditProgramUIHandler extends AbstractTuttiUIHandler<EditProgramUIMo // load existing program Program program = getPersistenceService().getProgram(programId); - model.fromBean(program); + model.fromEntity(program); } listModelIsModify(model); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/actions/SaveProgramAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/actions/SaveProgramAction.java index ee4df00..139765b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/actions/SaveProgramAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/actions/SaveProgramAction.java @@ -52,7 +52,7 @@ public class SaveProgramAction extends LongActionSupport<EditProgramUIModel, Edi EditProgramUIModel model = getModel(); - Program bean = model.toBean(); + Program bean = model.toEntity(); Program saved; if (TuttiEntities.isNew(bean)) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolBenthosAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolBenthosAction.java index 3a21cca..37af49c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolBenthosAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolBenthosAction.java @@ -97,7 +97,7 @@ public class ExportProtocolBenthosAction extends LongActionSupport<EditProtocolU List<SpeciesProtocol> protocols = Lists.newArrayList(); for (EditProtocolSpeciesRowModel row : model.getBenthosRow()) { if (row.isValid()) { - protocols.add(row.toBean()); + protocols.add(row.toEntity()); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java index bae4cab..cc77055 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java @@ -88,7 +88,7 @@ public class ExportProtocolCaracteristicAction extends LongActionSupport<EditPro } // bind to a protocol - TuttiProtocol protocol = getModel().toBean(); + TuttiProtocol protocol = getModel().toEntity(); // export protocol caracteristics ProtocolImportExportService service = diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java index d1ecea2..09050c3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java @@ -97,7 +97,7 @@ public class ExportProtocolSpeciesAction extends LongActionSupport<EditProtocolU List<SpeciesProtocol> protocols = Lists.newArrayList(); for (EditProtocolSpeciesRowModel row : model.getSpeciesRow()) { if (row.isValid()) { - protocols.add(row.toBean()); + protocols.add(row.toEntity()); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolBenthosAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolBenthosAction.java index 8755f90..082fa96 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolBenthosAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolBenthosAction.java @@ -94,7 +94,7 @@ public class ImportProtocolBenthosAction extends LongActionSupport<EditProtocolU EditProtocolUIModel model = getModel(); // bind to a protocol - TuttiProtocol protocol = model.toBean(); + TuttiProtocol protocol = model.toEntity(); // import ProtocolImportExportService service = diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java index 7e46c87..1282984 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java @@ -89,7 +89,7 @@ public class ImportProtocolCaracteristicAction extends LongActionSupport<EditPro EditProtocolUIModel model = getModel(); // bind to a protocol - TuttiProtocol protocol = model.toBean(); + TuttiProtocol protocol = model.toEntity(); ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService(); @@ -102,7 +102,7 @@ public class ImportProtocolCaracteristicAction extends LongActionSupport<EditPro try { // rebind to model - model.fromBean(protocol); + model.fromEntity(protocol); } finally { handler.removeDoubleListListeners(); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolSpeciesAction.java index 516633f..63f914e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolSpeciesAction.java @@ -94,7 +94,7 @@ public class ImportProtocolSpeciesAction extends LongActionSupport<EditProtocolU EditProtocolUIModel model = getModel(); // bind to a protocol - TuttiProtocol protocol = model.toBean(); + TuttiProtocol protocol = model.toEntity(); // import ProtocolImportExportService service = 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 a4cb330..6f45997 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,7 +28,6 @@ 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.content.protocol.EditProtocolCaracteristicsRowModel; @@ -37,7 +36,6 @@ 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; @@ -75,7 +73,7 @@ public class SaveProtocolAction extends LongActionSupport<EditProtocolUIModel, E PersistenceService persistenceService = context.getPersistenceService(); - TuttiProtocol bean = model.toBean(); + TuttiProtocol bean = model.toEntity(); Collection<EditProtocolCaracteristicsRowModel> protocolCaracteristicMappingRows = getUI().getModel().getCaracteristicMappingRows(); List<CaracteristicMappingRow> caracteristicMappingRows = new ArrayList<CaracteristicMappingRow>(); @@ -101,7 +99,7 @@ public class SaveProtocolAction extends LongActionSupport<EditProtocolUIModel, E for (EditProtocolSpeciesRowModel row : model.getSpeciesRow()) { if (row.isValid()) { - SpeciesProtocol protocol = row.toBean(); + SpeciesProtocol protocol = row.toEntity(); speciesProtocols.add(protocol); } } @@ -111,20 +109,12 @@ public class SaveProtocolAction extends LongActionSupport<EditProtocolUIModel, E for (EditProtocolSpeciesRowModel row : model.getBenthosRow()) { if (row.isValid()) { - SpeciesProtocol protocol = row.toBean(); + SpeciesProtocol protocol = row.toEntity(); benthosProtocols.add(protocol); } } 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/report/actions/GenerateReportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/report/actions/GenerateReportAction.java index 53f4b21..e5e0b8a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/report/actions/GenerateReportAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/report/actions/GenerateReportAction.java @@ -71,7 +71,7 @@ public class GenerateReportAction extends LongActionSupport<ReportUIModel, Repor progressionModel.increments(t("tutti.generateReport.action.computeNbSteps")); - ReportGenerationRequest reportGenerationRequest = getModel().toBean(); + ReportGenerationRequest reportGenerationRequest = getModel().toEntity(); ReportGenerationService reportGenerationService = getContext().getReportGenerationService(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditCruiseInValidationUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditCruiseInValidationUIAction.java index 08ba57f..edfa12a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditCruiseInValidationUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditCruiseInValidationUIAction.java @@ -83,7 +83,7 @@ public class EditCruiseInValidationUIAction extends LongActionSupport<ValidateCr } else if (!propertiesToIgnore.contains(evt.getPropertyName())) { - Cruise cruise = model.toBean(); + Cruise cruise = model.toEntity(); NuitonValidatorResult validationResult = validationService.validateCruiseCruise(cruise); ValidateCruiseUIModel uiModel = getModel(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java index 3ed5596..473d689 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java @@ -88,7 +88,7 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< } else if (!propertiesToIgnore.contains(evt.getPropertyName())) { model.convertGearShootingCoordinatesToDD(); - FishingOperation operation = model.toBean(); + FishingOperation operation = model.toEntity(); NuitonValidatorResult validationResult = validationService.validateCruiseOperation(operation); ValidateCruiseUIModel uiModel = getModel(); @@ -138,7 +138,7 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< } } else if (!propertiesToIgnore.contains(evt.getPropertyName())) { - CatchBatch catchBatch = model.toBean(); + CatchBatch catchBatch = model.toEntity(); NuitonValidatorResult validationResult = validationService.validateCruiseOperation(catchBatch); ValidateCruiseUIModel uiModel = getModel(); -- 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 e7fd65aa77e3448775ccc6348b28452bdd0241cc Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 19:10:52 2016 +0100 - utilisation directement du modele du protocol - ajout d'une popup de menu pour surrpimer et renommer les zones (refs #7929) --- .../content/protocol/EditProtocolUIHandler.java | 30 +-- .../content/protocol/EditProtocolUIModel.java | 179 +++++++++++++++++- .../protocol/actions/SaveProtocolAction.java | 7 + .../swing/content/protocol/zones/ZoneEditorUI.jaxx | 18 +- .../swing/content/protocol/zones/ZoneEditorUI.jcss | 16 +- .../protocol/zones/ZoneEditorUIHandler.java | 207 +++++++++++---------- .../content/protocol/zones/ZoneEditorUIModel.java | 194 ------------------- .../protocol/zones/actions/AddStratasAction.java | 55 +++--- .../CollapseAvailableStratasTreeAction.java | 3 +- .../zones/actions/CollapseZonesTreeAction.java | 3 +- .../protocol/zones/actions/DeleteZoneAction.java | 21 +-- .../protocol/zones/actions/RenameZoneAction.java | 54 ++++++ .../protocol/zones/models/SubStrataUIModel.java | 6 +- .../protocol/zones/tree/ZonesTreeModel.java | 4 + .../ifremer/tutti/ui/swing/util/TuttiUIUtil.java | 15 ++ .../EditProtocolUIModel-error-validation.xml | 40 ++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 9 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 11 +- 18 files changed, 502 insertions(+), 370 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 1082106..0b0f601 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,7 +40,6 @@ 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; @@ -52,8 +51,6 @@ 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.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; @@ -97,7 +94,6 @@ 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; @@ -246,7 +242,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI model.setCleaned(true); this.ui.getSaveWarning().setText(t("tutti.editProtocol.warn.clean")); } - model.fromBean(protocol); + model.fromEntity(protocol); } else if ((protocol = ImportProtocolAction.IMPORT_PROTOCOL_ENTRY.getContextValue(this.ui)) != null) { @@ -256,7 +252,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI ImportProtocolAction.IMPORT_PROTOCOL_ENTRY.removeContextValue(this.ui); - model.fromBean(protocol); + model.fromEntity(protocol); model.setImported(true); this.ui.getSaveWarning().setText(t("tutti.editProtocol.warn.import")); @@ -268,7 +264,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI CloneProtocolAction.CLONE_PROTOCOL_ENTRY.removeContextValue(this.ui); - model.fromBean(protocol); + model.fromEntity(protocol); model.setCloned(true); this.ui.getSaveWarning().setText(t("tutti.editProtocol.warn.clone")); @@ -636,22 +632,6 @@ 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(new HashSet<>((Collection<Zone>) evt.getNewValue()))); - zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_AVAILABLE_STRATAS, - evt -> { - Collection<StrataUIModel> newValue = (Collection<StrataUIModel>) evt.getNewValue(); - if (log.isInfoEnabled()) { - log.info("newValue " + newValue); - } - getModel().setValid(getModel().isValid() && newValue.isEmpty()); - }); - getModel().setValid(getModel().isValid() && zoneEditorUIModel.getAvailableStratas().isEmpty()); - - //FIXME kmorin ecouter toutes les modifs sur le model d'editeur de zone -// listenModelModifiy(zoneEditorUIModel); } @Override @@ -709,7 +689,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI lengthClassesPmfmId.add(lengthStepPmfm); } row.setLengthStepPmfm(lengthStepPmfm); - row.fromBean(speciesProtocol); + row.fromEntity(speciesProtocol); // make sure to get a clean copy of the list row.setMandatorySampleCategoryId(Lists.newArrayList(speciesProtocol.getMandatorySampleCategoryId())); @@ -755,7 +735,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI caracteristicSet.add(model.getAllCaracteristic().get(pmfmId)); EditProtocolCaracteristicsRowModel row = createEditProtocolCaracteristicsRowModel(); - row.fromBean(caracteristicMappingRow); + row.fromEntity(caracteristicMappingRow); row.setValid(row.getType() != null); result.add(row); 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 2873164..fea45e0 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 @@ -31,21 +31,29 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; 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.Strata; 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.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; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.apache.commons.lang3.mutable.MutableInt; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author Tony Chemit - chemit@codelutin.com @@ -53,6 +61,9 @@ import java.util.Map; */ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, EditProtocolUIModel> implements TuttiProtocol { + /** Logger. */ + private static final Log log = LogFactory.getLog(EditProtocolUIModel.class); + private static final long serialVersionUID = 1L; public static final String PROPERTY_CARACTERISTIC_MAPPING_ROWS = "caracteristicMappingRows"; @@ -79,6 +90,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, public static final String PROPERTY_CLEANED = "cleaned"; + public static final String PROPERTY_AVAILABLE_STRATAS = "availableStratas"; + /** * Delegate edit object. * @@ -156,6 +169,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, protected List<EditProtocolSpeciesRowModel> benthosRow; + protected final Collection<StrataUIModel> availableStratas = new HashSet<>(); + protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolUIModel.class, TuttiProtocol.class); @@ -172,6 +187,37 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, return TuttiProtocols.newTuttiProtocol(); } + @Override + public void fromEntity(TuttiProtocol entity) { + fromBeanBinder.copyExcluding(entity, this, PROPERTY_ZONE); + + Collection<Zone> zoneModels = entity.getZone() + .stream() + .map(zone -> { + ZoneUIModel zoneUIModel = new ZoneUIModel(); + zoneUIModel.fromEntity(zone); + return zoneUIModel; + }) + .collect(Collectors.toList()); + + setZone(zoneModels); + } + + @Override + public TuttiProtocol toEntity() { + TuttiProtocol result = newEntity(); + toBeanBinder.copyExcluding(this, result, PROPERTY_ZONE); + Collection<Zone> zoneModels = getZone().stream() + .map(zone -> { + ZoneUIModel zoneUIModel = (ZoneUIModel) zone; + return zoneUIModel.toEntity(); + }) + .collect(Collectors.toList()); + + result.setZone(zoneModels); + return result; + } + public void setLengthClassesPmfm(List<Caracteristic> lengthClassesPmfm) { List<String> ids = Lists.newArrayList(TuttiEntities.collecIds(lengthClassesPmfm)); setLengthClassesPmfmId(ids); @@ -786,8 +832,9 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void setZone(Collection<Zone> zones) { + Object oldZones = new ArrayList<>(getZone()); editObject.setZone(zones); - firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, oldZones, getZone()); } @Override @@ -807,27 +854,31 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void addZone(Zone zone) { + Object oldZones = new ArrayList<>(getZone()); editObject.addZone(zone); - firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, oldZones, getZone()); } @Override public void addAllZone(Collection<Zone> zones) { + Object oldZones = new ArrayList<>(getZone()); editObject.addAllZone(zones); - firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, oldZones, getZone()); } @Override public boolean removeZone(Zone zone) { + Object oldZones = new ArrayList<>(getZone()); boolean result = editObject.removeZone(zone); - firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, oldZones, getZone()); return result; } @Override public boolean removeAllZone(Collection<Zone> zones) { + Object oldZones = new ArrayList<>(getZone()); boolean result = editObject.removeAllZone(zones); - firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, oldZones, getZone()); return result; } @@ -930,4 +981,122 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, return mutableInt.intValue(); } + public Collection<StrataUIModel> getAvailableStratas() { + return availableStratas; + } + + public void setAvailableStratas(Collection<StrataUIModel> availableStratas) { + this.availableStratas.clear(); + addAllAvailableStratas(availableStratas); + } + + public void addAllAvailableStratas(Collection<StrataUIModel> availableStratas) { + Object oldValue = copyAvailableStratas(); + this.availableStratas.addAll(availableStratas); + firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); + } + + 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(); + + availableStratas.removeAll(stratas); + + firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); + + } + + public void removeAvailableStrata(StrataUIModel strata) { + + Object oldValue = copyAvailableStratas(); + + availableStratas.remove(strata); + + firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); + + } + + public void moveStratasToZone(Collection<StrataUIModel> stratas, ZoneUIModel zone) { + if (log.isInfoEnabled()) { + log.info("stratas " + stratas); + } + + zone.addAllStrata(new ArrayList<>(stratas)); + removeAllAvailableStratas(stratas); + } + + public void removeStratasFromZone(Collection<StrataUIModel> stratas) { + if (log.isInfoEnabled()) { + log.info("stratas " + stratas); + } + + stratas.forEach(strata -> strata.getZone().removeStrata(strata)); + addAllAvailableStratas(stratas); + } + + public void moveSubStratasToZone(Collection<SubStrataUIModel> subStratas, ZoneUIModel zone) { + if (log.isInfoEnabled()) { + log.info("substrats " + subStratas); + } + + subStratas.forEach(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); + } + }); + + } + + public void removeSubStratasFromZone(Collection<SubStrataUIModel> subStratas) { + if (log.isInfoEnabled()) { + log.info("subStratas " + subStratas); + } + + subStratas.forEach(subStrata -> { + StrataUIModel strata = subStrata.getStrata(); + strata.removeSubstrata(subStrata); + + StrataUIModel availableStrata = getStrata(strata); + if (availableStrata == null) { + availableStrata = new StrataUIModel(strata.getLocation()); + addAvailableStrata(availableStrata); + } + availableStrata.addSubstrata(subStrata); + + if (strata.isSubstrataEmpty()) { + strata.getZone().removeStrata(strata); + } + + }); + } + + /** + * @param strata + * @return the strata from the available stratas which equals the strata in parameters + */ + public 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); + } } 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 6f45997..70c9409 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 @@ -115,6 +115,13 @@ public class SaveProtocolAction extends LongActionSupport<EditProtocolUIModel, E } bean.setBenthos(benthosProtocols); + + + if (log.isInfoEnabled()) { + log.info("bean zones " + bean.getZone()); + log.info("bean zones " + bean.getZone()); + } + 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/ZoneEditorUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jaxx index e886452..e4b989c 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,10 +1,11 @@ <Table id='editProtocolTopPanel' fill="both" - implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<ZoneEditorUIModel, ZoneEditorUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditProtocolUIModel, ZoneEditorUIHandler>'> <import> fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneEditorTreeCellRenderer + fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil jaxx.runtime.SwingUtil @@ -19,13 +20,22 @@ </script> <!-- model --> - <ZoneEditorUIModel id='model' javaBean='new ZoneEditorUIModel()'/> + <EditProtocolUIModel id='model' javaBean='getContextValue(EditProtocolUIModel.class)'/> + + <BeanValidator id='validator' bean='model' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='availableStratas' component='editProtocolTopPanel'/> + </BeanValidator> + + <JPopupMenu id='zonePopupMenu'> + <JMenuItem id='deleteZoneMenuItem'/> + <JMenuItem id='renameZoneMenuItem'/> + </JPopupMenu> <row> <cell> <JToolBar id="zonesTreeToolBar"> <JButton id="createZone"/> - <JButton id="deleteZone"/> <JButton id="expandZonesTree"/> <JButton id="collapseZonesTree"/> </JToolBar> @@ -44,7 +54,7 @@ <cell weightx='0.5' weighty='1' fill='both'> <JScrollPane onFocusGained='zonesTree.requestFocus()'> <!-- List of the zones --> - <JTree id='zonesTree'/> + <JTree id='zonesTree' onMouseClicked="handler.autoSelectNodeInTree(event, zonePopupMenu)"/> <!--onFocusGained='handler.selectFirstRowIfNoSelection(event)'--> <!--onMouseClicked='handler.onUniverseListClicked(event)'--> <!--onKeyPressed='handler.onKeyPressedOnUniverseList(event)'--> 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 6cb7019..6a83608 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 @@ -16,11 +16,25 @@ JToolBar { _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.CreateZoneAction.class}; } -#deleteZone { +#deleteZoneMenuItem { actionIcon: delete; + text: "tutti.zoneEditor.action.delete"; + toolTipText: "tutti.zoneEditor.action.delete.tip"; + i18nMnemonic: "tutti.zoneEditor.action.delete.mnemonic"; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.DeleteZoneAction.class}; + _help: {"tutti.zoneEditor.action.delete.help"}; } +#renameZoneMenuItem { + actionIcon: edit; + text: "tutti.zoneEditor.action.rename"; + toolTipText: "tutti.zoneEditor.action.rename.tip"; + i18nMnemonic: "tutti.zoneEditor.action.rename.mnemonic"; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.RenameZoneAction.class}; + _help: {"tutti.zoneEditor.action.rename.help"}; +} + + #expandZonesTree { actionIcon: expand; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.ExpandZonesTreeAction.class}; 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 b103d12..f541124 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 @@ -2,17 +2,16 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones; 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; import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; 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; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.StratasTreeModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZonesTreeModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import jaxx.runtime.SwingUtil; @@ -22,9 +21,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; +import javax.swing.JPopupMenu; import javax.swing.JTree; import javax.swing.SwingUtilities; import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; +import java.awt.Point; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; @@ -36,11 +39,22 @@ import java.util.stream.Collectors; * @author Kevin Morin (Code Lutin) * @since 4.5 */ -public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIModel, ZoneEditorUI> { +public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIModel, ZoneEditorUI> { /** Logger. */ private static final Log log = LogFactory.getLog(ZoneEditorUIHandler.class); + protected final PropertyChangeListener labelChangeListener = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + + ZoneUIModel zone = (ZoneUIModel) evt.getSource(); + ZonesTreeModel zonesTreeModel = (ZonesTreeModel) getUI().getZonesTree().getModel(); + zonesTreeModel.zoneLabelChanged(zone); + } + }; + protected final PropertyChangeListener stratasChangeListener = new PropertyChangeListener() { @Override @@ -64,7 +78,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode ZonesTreeModel zonesTreeModel = (ZonesTreeModel) getUI().getZonesTree().getModel(); zonesTreeModel.updateStratas(zone, stratasToAdd, stratasToRemove); -// zonesTreeModel.reload(); } }; @@ -100,6 +113,11 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode Collection<SubStrataUIModel> newSubStratas = (Collection<SubStrataUIModel>) evt.getNewValue(); Collection<SubStrataUIModel> oldSubStratas = (Collection<SubStrataUIModel>) evt.getOldValue(); + if (log.isInfoEnabled()) { + log.info(oldSubStratas); + log.info(newSubStratas); + } + Collection<SubStrataUIModel> subStratasToAdd = new ArrayList<>(newSubStratas); subStratasToAdd.removeAll(oldSubStratas); @@ -123,7 +141,7 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode // init models - getModel().addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, + getModel().addPropertyChangeListener(EditProtocolUIModel.PROPERTY_ZONE, evt -> { Collection<ZoneUIModel> newZones = (Collection<ZoneUIModel>) evt.getNewValue(); @@ -137,19 +155,17 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode updateZonesTreeModel(zonesToAdd, zonesToRemove); + // si pas de zones avant, c'est soit que le modele etait vide, soit qu'on a initialisé l'arbre + if (oldZones.isEmpty()) { + SwingUtil.expandTree(zoneEditorUI.getZonesTree()); + } + }); - getModel().addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_AVAILABLE_STRATAS, evt -> { + getModel().addPropertyChangeListener(EditProtocolUIModel.PROPERTY_AVAILABLE_STRATAS, evt -> { Collection<StrataUIModel> oldAvailableStratas = (Collection<StrataUIModel>) evt.getOldValue(); - if (log.isInfoEnabled()) { - log.info("oldAvailableStratas " + oldAvailableStratas); - } - Collection<StrataUIModel> newAvailableStratas = (Collection<StrataUIModel> ) evt.getNewValue(); - if (log.isInfoEnabled()) { - log.info("newAvailableStratas " + newAvailableStratas); - } Collection<StrataUIModel> stratasToAdd = new ArrayList<>(newAvailableStratas); stratasToAdd.removeAll(oldAvailableStratas); @@ -168,10 +184,16 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode SwingUtil.addExpandOnClickListener(availableStratasTree); TreeModel zonesTreeModel = new ZonesTreeModel(); - JTree zonesTree = ui.getZonesTree(); + final JTree zonesTree = ui.getZonesTree(); zonesTree.setModel(zonesTreeModel); SwingUtil.addExpandOnClickListener(zonesTree); + zonesTree.addTreeSelectionListener(event -> { + boolean zoneSelected = event.getPath().getLastPathComponent() instanceof ZoneNode; + getUI().getDeleteZoneMenuItem().setEnabled(zoneSelected); + getUI().getRenameZoneMenuItem().setEnabled(zoneSelected); + }); + // get data initModel(); @@ -180,22 +202,8 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode JAXXWidgetUtil.expandTree(zonesTree); } - //FIXME move to jaxx - public 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() { + public SwingValidator<EditProtocolUIModel> getValidator() { return null; } @@ -206,68 +214,64 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode @Override public void onCloseUI() { - getModel().getZones().forEach(zone -> zone.removePropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, + getModel().getZone().forEach(zone -> ((ZoneUIModel) zone).removePropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, stratasChangeListener)); } - protected void initModel() { - PersistenceService persistenceService = getPersistenceService(); + public void autoSelectNodeInTree(MouseEvent e, JPopupMenu popup) { - TuttiLocation programZone = getDataContext().getProgram().getZone(); + boolean rightClick = SwingUtilities.isRightMouseButton(e); - Multimap<TuttiLocation, TuttiLocation> programStratasAndSubstratas = - HashMultimap.create(persistenceService.getAllFishingOperationStratasAndSubstratas(programZone.getId())); - //FIXME only for tests - TuttiLocation test = programStratasAndSubstratas.keySet().iterator().next(); - for (int i = 0 ; i < 5 ; i++) { - TuttiLocation location = TuttiLocations.newTuttiLocation(); - location.setId(i); - location.setLabel("substrata" + i); - programStratasAndSubstratas.put(test, location); - } + if (rightClick || SwingUtilities.isLeftMouseButton(e)) { - Collection<Zone> zones; + // get the coordinates of the mouse click + Point p = e.getPoint(); - TuttiProtocol protocol = getDataContext().getProtocol(); - if (protocol != null) { + JTree source = (JTree) e.getSource(); - zones = protocol.getZone(); - Collection<Strata> protocolStratas = zones.stream() - .map(zone -> zone.getStrata()) - .flatMap(stratas -> stratas.stream()) - .collect(Collectors.toList()); + // get the row index at this point + int rowIndex = source.getRowForLocation(p.x, p.y); - if (log.isInfoEnabled()) { - log.info("protocol strata " + protocolStratas); + if (log.isDebugEnabled()) { + log.debug("At point [" + p + "] found Row " + rowIndex); } - protocolStratas.forEach(strata -> { + // select row (could empty selection) + if (rowIndex == -1) { + source.clearSelection(); - TuttiLocation strataLocation = strata.getLocation(); + } else { + // set selection + source.setSelectionRow(rowIndex); + } - Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() - .stream() - .map(subStrata -> subStrata.getLocation()) - .collect(Collectors.toSet()); + if (rightClick) { + TreePath path = source.getPathForRow(rowIndex); - if (log.isInfoEnabled()) { - log.info("protocol strata " + strata.getLocation() + " " + subStrataLocations); - } + // on right click show popup + popup.show(source, e.getX(), e.getY()); + } + } + } - if (subStrataLocations.isEmpty()) { - programStratasAndSubstratas.removeAll(strataLocation); + protected void initModel() { + PersistenceService persistenceService = getPersistenceService(); - } else { - subStrataLocations.forEach(subStrataLocation -> - programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); - } - }); + TuttiLocation programZone = getDataContext().getProgram().getZone(); - } else { - zones = new HashSet<>(); + Multimap<TuttiLocation, TuttiLocation> programStratasAndSubstratas = + HashMultimap.create(persistenceService.getAllFishingOperationStratasAndSubstratas(programZone.getId())); + //FIXME only for tests + TuttiLocation test = programStratasAndSubstratas.keySet().iterator().next(); + for (int i = 0 ; i < 5 ; i++) { + TuttiLocation location = TuttiLocations.newTuttiLocation(); + location.setId(i); + location.setLabel("substrata" + i); + programStratasAndSubstratas.put(test, location); } + // on transforme les données du service en modele d'ui Collection<StrataUIModel> availableStratas = new HashSet<>(); programStratasAndSubstratas.keySet().forEach(strataLocation -> { @@ -276,40 +280,59 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode Collection<TuttiLocation> subStrataLocations = new HashSet<>(programStratasAndSubstratas.get(strataLocation)); subStrataLocations.remove(null); Collection<SubStrata> subStratas = subStrataLocations.stream() - .map(subStrataLocation -> new SubStrataUIModel(subStrataLocation)) - .collect(Collectors.toSet()); + .map(subStrataLocation -> new SubStrataUIModel(subStrataLocation)) + .collect(Collectors.toList()); strata.setSubstrata(subStratas); availableStratas.add(strata); }); getModel().setAvailableStratas(availableStratas); - - Collection<ZoneUIModel> zoneModels = zones.stream() - .map(zone -> { - ZoneUIModel zoneUIModel = new ZoneUIModel(); - zoneUIModel.fromEntity(zone); - return zoneUIModel; - }) - .collect(Collectors.toSet()); - getModel().setZones(zoneModels); } protected void updateZonesTreeModel(Collection<ZoneUIModel> zonesToAdd, Collection<ZoneUIModel> zonesToRemove) { JTree zonesTree = getUI().getZonesTree(); ZonesTreeModel zonesTreeModel = (ZonesTreeModel) zonesTree.getModel(); - if (log.isInfoEnabled()) { - log.info("zones to remove" + zonesToRemove); - } + getModel().removeStratasFromZone(zonesToRemove.stream() + .map(zone -> zone.getStrata()) + .flatMap(s -> s.stream()) + .map(strata -> (StrataUIModel) strata) + .collect(Collectors.toSet())); + + zonesToAdd.stream() + .map(zone -> zone.getStrata()) + .flatMap(s -> s.stream()) + .map(strata -> (StrataUIModel) strata) + .forEach(strata -> { + if (strata.getSubstrata().isEmpty()) { + getModel().removeAvailableStrata(strata); + + } else { + StrataUIModel availableStrata = getModel().getStrata(strata); + availableStrata.removeAllSubstrata(strata.getSubstrata() + .stream() + .map(subStrata -> (SubStrataUIModel) subStrata) + .collect(Collectors.toSet())); + + if (availableStrata.isSubstrataEmpty()) { + getModel().removeAvailableStrata(availableStrata); + } + } + }); + zonesTreeModel.removeZones(zonesToRemove); zonesTreeModel.addZones(zonesToAdd); - zonesToRemove.forEach(zone -> zone.removePropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, - stratasChangeListener)); - zonesToAdd.forEach(zone -> zone.addPropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, - stratasChangeListener)); + zonesToRemove.forEach(zone -> { + zone.removePropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, stratasChangeListener); + zone.removePropertyChangeListener(ZoneUIModel.PROPERTY_LABEL, labelChangeListener); + }); + zonesToAdd.forEach(zone -> { + zone.addPropertyChangeListener(ZoneUIModel.PROPERTY_STRATA, stratasChangeListener); + zone.addPropertyChangeListener(ZoneUIModel.PROPERTY_LABEL, labelChangeListener); + }); } @@ -323,10 +346,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode availableStratasTreeModel.addStratas(stratasToAdd); - if (log.isInfoEnabled()) { - log.info("add ppcl to " + stratasToAdd); - } - stratasToRemove.forEach(strata -> strata.removePropertyChangeListener(StrataUIModel.PROPERTY_SUBSTRATA, availableSubStratasChangeListener)); stratasToAdd.forEach(strata -> strata.addPropertyChangeListener(StrataUIModel.PROPERTY_SUBSTRATA, 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 deleted file mode 100644 index a2069e4..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java +++ /dev/null @@ -1,194 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.protocol.zones; - -import fr.ifremer.tutti.persistence.entities.protocol.Strata; -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; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author Kevin Morin (Code Lutin) - * @since 4.5 - */ -public class ZoneEditorUIModel extends AbstractSerializableBean { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ZoneEditorUIModel.class); - - public static final String PROPERTY_AVAILABLE_STRATAS = "availableStratas"; - - public static final String PROPERTY_ZONES = "zones"; - - protected final Collection<StrataUIModel> availableStratas = new HashSet<>(); - - protected final Collection<ZoneUIModel> zones = new HashSet<>(); - - public Collection<StrataUIModel> getAvailableStratas() { - return availableStratas; - } - - public void setAvailableStratas(Collection<StrataUIModel> availableStratas) { - this.availableStratas.clear(); - addAllAvailableStratas(availableStratas); - } - - public void addAllAvailableStratas(Collection<StrataUIModel> availableStratas) { - Object oldValue = copyAvailableStratas(); - this.availableStratas.addAll(availableStratas); - firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); - } - - 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(); - - availableStratas.removeAll(stratas); - - firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); - - } - - public void removeAvailableStrata(StrataUIModel strata) { - - Object oldValue = copyAvailableStratas(); - - availableStratas.remove(strata); - - firePropertyChange(PROPERTY_AVAILABLE_STRATAS, oldValue, getAvailableStratas()); - - } - - public Collection<ZoneUIModel> getZones() { - return zones; - } - - public void setZones(Collection<ZoneUIModel> zones) { - Object oldValue = new HashSet<>(getZones()); - this.zones.clear(); - this.zones.addAll(zones); - firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); - } - - public void addZone(ZoneUIModel zone) { - Object oldValue = new HashSet<>(getZones()); - zones.add(zone); - firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); - } - - public void removeZone(ZoneUIModel zone) { - Object oldValue = new ArrayList<>(getZones()); - - removeStratasFromZone(zone.getStrata().stream() - .map(strata -> (StrataUIModel) strata) - .collect(Collectors.toSet())); - zones.remove(zone); - - firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); - } - - public void removeAllZones(Collection<ZoneUIModel> zones) { - Object oldValue = new ArrayList<>(getZones()); - - removeStratasFromZone(zones.stream() - .map(zone -> zone.getStrata()) - .flatMap(s -> s.stream()) - .map(strata -> (StrataUIModel) strata) - .collect(Collectors.toSet())); - this.zones.removeAll(zones); - - firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); - } - - public void moveStratasToZone(Collection<StrataUIModel> stratas, ZoneUIModel zone) { - if (log.isInfoEnabled()) { - log.info("stratas " + stratas); - } - - zone.addAllStrata(new ArrayList<>(stratas)); - removeAllAvailableStratas(stratas); - } - - public void removeStratasFromZone(Collection<StrataUIModel> stratas) { - if (log.isInfoEnabled()) { - log.info("stratas " + stratas); - } - - stratas.forEach(strata -> strata.getZone().removeStrata(strata)); - addAllAvailableStratas(stratas); - } - - public void moveSubStratasToZone(Collection<SubStrataUIModel> subStratas, ZoneUIModel zone) { - if (log.isInfoEnabled()) { - log.info("substrats " + subStratas); - } - - subStratas.forEach(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); - } - }); - - } - - public void removeSubStratasFromZone(Collection<SubStrataUIModel> subStratas) { - if (log.isInfoEnabled()) { - log.info("subStratas " + subStratas); - } - - subStratas.forEach(subStrata -> { - StrataUIModel strata = subStrata.getStrata(); - strata.removeSubstrata(subStrata); - - StrataUIModel availableStrata = getStrata(strata); - if (availableStrata == null) { - availableStrata = new StrataUIModel(strata.getLocation()); - addAvailableStrata(availableStrata); - } - availableStrata.addSubstrata(subStrata); - - if (strata.isSubstrataEmpty()) { - strata.getZone().removeStrata(strata); - } - - }); - } - - /** - * @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); - } - -} 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 4782588..615562d 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,43 +40,46 @@ public class AddStratasAction extends SimpleActionSupport<ZoneEditorUI> { JTree zonesTree = zoneEditorUI.getZonesTree(); TreePath selectedZonePath = zonesTree.getSelectionPath(); - ZoneNode zoneNode = (ZoneNode) selectedZonePath.getPathComponent(1); - ZoneUIModel selectedZone = zoneNode.getZone(); - Set<StrataUIModel> stratasToAdd = new HashSet<>(); - Set<SubStrataUIModel> subStratasToAdd = new HashSet<>(); + if (selectedZonePath != null) { + ZoneNode zoneNode = (ZoneNode) selectedZonePath.getPathComponent(1); + ZoneUIModel selectedZone = zoneNode.getZone(); - for (TreePath treePath : selectedStratas) { + Set<StrataUIModel> stratasToAdd = new HashSet<>(); + Set<SubStrataUIModel> subStratasToAdd = new HashSet<>(); - Object node = treePath.getLastPathComponent(); + for (TreePath treePath : selectedStratas) { - if (node instanceof StrataNode) { + Object node = treePath.getLastPathComponent(); - StrataUIModel strata = ((StrataNode) node).getStrata(); - if (log.isInfoEnabled()) { - log.info("add strata " + strata.getLabel()); - } - stratasToAdd.add(strata); + if (node instanceof StrataNode) { + + StrataUIModel strata = ((StrataNode) node).getStrata(); + if (log.isInfoEnabled()) { + log.info("add strata " + strata.getLabel()); + } + stratasToAdd.add(strata); - } else if (node instanceof SubStrataNode) { - SubStrataUIModel subStrata = ((SubStrataNode) node).getSubstrata(); - if (log.isInfoEnabled()) { - log.info("add subtrata " + subStrata.getLabel()); + } else if (node instanceof SubStrataNode) { + SubStrataUIModel subStrata = ((SubStrataNode) node).getSubstrata(); + if (log.isInfoEnabled()) { + log.info("add subtrata " + subStrata.getLabel()); + } + subStratasToAdd.add(subStrata); } - subStratasToAdd.add(subStrata); - } - } + } - Collection<SubStrata> alreadyAddedSubStratas = stratasToAdd.stream() - .map(strata->strata.getSubstrata()) - .flatMap(c -> c.stream()) - .collect(Collectors.toSet()); + Collection<SubStrata> alreadyAddedSubStratas = stratasToAdd.stream() + .map(strata -> strata.getSubstrata()) + .flatMap(c -> c.stream()) + .collect(Collectors.toSet()); - subStratasToAdd.removeAll(alreadyAddedSubStratas); + subStratasToAdd.removeAll(alreadyAddedSubStratas); - zoneEditorUI.getModel().moveStratasToZone(stratasToAdd, selectedZone); - zoneEditorUI.getModel().moveSubStratasToZone(subStratasToAdd, selectedZone); + zoneEditorUI.getModel().moveStratasToZone(stratasToAdd, selectedZone); + zoneEditorUI.getModel().moveSubStratasToZone(subStratasToAdd, selectedZone); + } } } 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 index 940f29f..ab905e5 100644 --- 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 @@ -1,6 +1,7 @@ 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.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; /** @@ -15,6 +16,6 @@ public class CollapseAvailableStratasTreeAction extends SimpleActionSupport<Zone @Override protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { - zoneEditorUI.getHandler().collapseTree(zoneEditorUI.getAvailableStratasTree()); + TuttiUIUtil.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 index 8d2823e..b933796 100644 --- 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 @@ -1,6 +1,7 @@ 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.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; /** @@ -15,6 +16,6 @@ public class CollapseZonesTreeAction extends SimpleActionSupport<ZoneEditorUI> { @Override protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { - zoneEditorUI.getHandler().collapseTree(zoneEditorUI.getZonesTree()); + TuttiUIUtil.collapseTree(zoneEditorUI.getZonesTree()); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java index 68c6d03..66acabd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/DeleteZoneAction.java @@ -1,18 +1,15 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones.actions; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUI; -import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; import javax.swing.JTree; import javax.swing.tree.TreePath; -import java.util.HashSet; -import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -34,25 +31,19 @@ public class DeleteZoneAction extends SimpleActionSupport<ZoneEditorUI> { JTree zonesTree = zoneEditorUI.getZonesTree(); - if (zonesTree.getSelectionCount() >= 1) { + if (zonesTree.getSelectionCount() == 1) { - Set<ZoneUIModel> zonesToDelete = new HashSet<>(); - TreePath[] selectionPaths = zonesTree.getSelectionPaths(); - for (TreePath selectedPath : selectionPaths) { - ZoneUIModel zone = ((ZoneNode) selectedPath.getPathComponent(1)).getZone(); - zonesToDelete.add(zone); - } - - String zonesToDeleteListItems = "<li>" + StringUtils.join(zonesToDelete, "</li><li>") + "</li>"; + TreePath selectedPath = zonesTree.getSelectionPath(); + Zone zone = ((ZoneNode) selectedPath.getPathComponent(1)).getZone(); int confirmDeletion = JOptionPane.showConfirmDialog(zoneEditorUI, - t("tutti.zoneEditor.deleteZone.message", zonesToDeleteListItems), + t("tutti.zoneEditor.deleteZone.message", zone), t("tutti.zoneEditor.deleteZone.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (confirmDeletion == JOptionPane.YES_OPTION) { - zoneEditorUI.getModel().removeAllZones(zonesToDelete); + zoneEditorUI.getModel().removeZone(zone); } } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RenameZoneAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RenameZoneAction.java new file mode 100644 index 0000000..ae67260 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RenameZoneAction.java @@ -0,0 +1,54 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.zones.actions; + +import fr.ifremer.tutti.persistence.entities.protocol.Zone; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.ZoneEditorUI; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class RenameZoneAction extends SimpleActionSupport<ZoneEditorUI> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(RenameZoneAction.class); + + public RenameZoneAction(ZoneEditorUI zoneEditorUI) { + super(zoneEditorUI); + } + + @Override + protected void onActionPerformed(ZoneEditorUI zoneEditorUI) { + + JTree zonesTree = zoneEditorUI.getZonesTree(); + + if (zonesTree.getSelectionCount() == 1) { + + TreePath selectedPath = zonesTree.getSelectionPath(); + ZoneNode zoneNode = (ZoneNode) selectedPath.getPathComponent(1); + Zone zone = zoneNode.getZone(); + + String zoneLabel = (String) JOptionPane.showInputDialog(zoneEditorUI, + t("tutti.zoneEditor.renameZone.message", zone.getLabel()), + t("tutti.zoneEditor.renameZone.title", zone.getLabel()), + JOptionPane.QUESTION_MESSAGE, + null, + null, + zone.getLabel()); + + if (StringUtils.isNotEmpty(zoneLabel)) { + zone.setLabel(zoneLabel); + } + } + } +} 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 8dcbd8a..cdf6487 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 @@ -92,14 +92,14 @@ public class SubStrataUIModel extends AbstractTuttiBeanUIModel<SubStrata, SubStr if (obj == this) { return true; } - if (!StrataUIModel.class.equals(obj.getClass())) { + if (!SubStrataUIModel.class.equals(obj.getClass())) { return false; } if (getId() != null) { - return getId().equals(((StrataUIModel) obj).getId()); + return getId().equals(((SubStrataUIModel) obj).getId()); } if (getLocation() != null) { - return getLocation().equals(((StrataUIModel) obj).getLocation()); + return getLocation().equals(((SubStrataUIModel) obj).getLocation()); } return false; } 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 2072ed3..047e183 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 @@ -192,4 +192,8 @@ public class ZonesTreeModel extends AbstractZoneEditorTreeModel { return subStrataNode; } + + public void zoneLabelChanged(ZoneUIModel zone) { + nodeChanged(findZoneNode(zone)); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java index 701137b..d8df4f1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java @@ -42,7 +42,9 @@ import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JMenuItem; import javax.swing.JRadioButton; +import javax.swing.JTree; import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; import java.awt.Color; import java.awt.Desktop; import java.awt.event.KeyEvent; @@ -229,5 +231,18 @@ public final class TuttiUIUtil extends ApplicationUIUtil { } } + //FIXME move to jaxx + public static void collapseTree(final JTree tree) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + int i = 0; + + while(i < tree.getRowCount()) { + tree.collapseRow(i++); + } + + } + }); + } } diff --git a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml new file mode 100644 index 0000000..62a6e21 --- /dev/null +++ b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + Tutti :: UI + %% + Copyright (C) 2012 - 2014 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="availableStratas"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ availableStratas.isEmpty() ]]> + </param> + <message> + tutti.validator.error.zoneEditor.availableStratas.remaining + </message> + </field-validator> + </field> + +</validators> 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 7979ac0..509c298 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 @@ -2336,6 +2336,7 @@ tutti.validator.error.splitSpeciesBatch.sampleWeight.sampleBatchGreaterThanBatch tutti.validator.error.splitSpeciesBatch.sampleWeight.sampleWeightGreaterThanBatchSampleWeight= tutti.validator.error.splitSpeciesBatch.selectedCategory.required= tutti.validator.error.splitSpeciesBatch.weight.weightGreaterThanBatchSampleWeight= +tutti.validator.error.zoneEditor.availableStratas.remaining= tutti.validator.info.cruise.noError= tutti.validator.info.operation.noError= tutti.validator.warning.benthosFrequency.redundantTotalWeight= @@ -2346,7 +2347,15 @@ tutti.vesselUseFeatureTable.action.removeCaracteristic.tip= tutti.vesselUseFeatureTable.table.header.key= tutti.vesselUseFeatureTable.table.header.value= tutti.vesselUseFeatureTable.title= +tutti.zoneEditor.action.delete= +tutti.zoneEditor.action.delete.mnemonic= +tutti.zoneEditor.action.delete.tip= +tutti.zoneEditor.action.rename= +tutti.zoneEditor.action.rename.mnemonic= +tutti.zoneEditor.action.rename.tip= tutti.zoneEditor.createZone.message= tutti.zoneEditor.createZone.title= tutti.zoneEditor.deleteZone.message= tutti.zoneEditor.deleteZone.title= +tutti.zoneEditor.renameZone.message= +tutti.zoneEditor.renameZone.title= 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 146154c..176e77f 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 @@ -2161,6 +2161,7 @@ tutti.validator.error.speciesFrequency.step.positiveValue=Le pas de la classe de tutti.validator.error.splitSpeciesBatch.sampleWeight.invalidValue=La somme des poids ventilés doit être strictement positive tutti.validator.error.splitSpeciesBatch.sampleWeight.sampleBatchGreaterThanBatchWeight=La somme des poids ventilés doit être inférieur ou égale à celle du poids du lot tutti.validator.error.splitSpeciesBatch.selectedCategory.required=La catégorie est obligatoire +tutti.validator.error.zoneEditor.availableStratas.remaining= tutti.validator.info.cruise.noError=Campagne sans erreur tutti.validator.info.operation.noError=Trait sans erreur tutti.validator.warning.benthosFrequency.redundantTotalWeight=Le poids total est redondant (égal au poids calculé à partir des poids observés) @@ -2171,7 +2172,15 @@ tutti.vesselUseFeatureTable.action.removeCaracteristic.tip=Supprimer la caracté tutti.vesselUseFeatureTable.table.header.key=Caractéristique tutti.vesselUseFeatureTable.table.header.value=Valeur tutti.vesselUseFeatureTable.title=Autres paramètres +tutti.zoneEditor.action.delete=Supprimer la zone +tutti.zoneEditor.action.delete.mnemonic=Supprimer la zone sélectionnée +tutti.zoneEditor.action.delete.tip=S +tutti.zoneEditor.action.rename=Renommer la zone +tutti.zoneEditor.action.rename.mnemonic=Renommer la zone sélectionnée +tutti.zoneEditor.action.rename.tip=R tutti.zoneEditor.createZone.message=Libellé de la nouvelle zone tutti.zoneEditor.createZone.title=Nouvelle zone -tutti.zoneEditor.deleteZone.message=<html><div>Vous êtes sur le point de supprimer les zones suivantes \:</div><ul>%s</ul><div>Êtes-vous sûr de vouloir les supprimer ?</div></html> +tutti.zoneEditor.deleteZone.message=Vous êtes sur le point de supprimer la zone %s. Êtes-vous sûr de vouloir la supprimer ? tutti.zoneEditor.deleteZone.title=Suppression de zone +tutti.zoneEditor.renameZone.message=Nouveau libellé de la zone +tutti.zoneEditor.renameZone.title=Renommer la zone %s -- 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 119818a13e446de273c79eed7116ab0410a910d5 Author: Kevin Morin <morin@codelutin.com> Date: Wed Feb 3 10:46:33 2016 +0100 activation ou non des boutons d'ajout et de suppresion des strates (refs #7929) --- .../swing/content/protocol/zones/ZoneEditorUI.jcss | 5 +- .../protocol/zones/ZoneEditorUIHandler.java | 56 ++++++++++++++++------ .../protocol/zones/actions/AddStratasAction.java | 4 ++ 3 files changed, 48 insertions(+), 17 deletions(-) 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 6a83608..115da48 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 @@ -34,7 +34,6 @@ JToolBar { _help: {"tutti.zoneEditor.action.rename.help"}; } - #expandZonesTree { actionIcon: expand; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.ExpandZonesTreeAction.class}; @@ -57,12 +56,12 @@ JToolBar { #addButton { actionIcon: left; - enabled: {zonesTree.getSelectionCount() == 1}; + enabled: false; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.AddStratasAction.class}; } #removeButton { actionIcon: right; - enabled: {zonesTree.getSelectionCount() >= 1}; + enabled: false; _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 f541124..239922d 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 @@ -10,7 +10,9 @@ import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; 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; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.StrataNode; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.StratasTreeModel; +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.content.protocol.zones.tree.ZonesTreeModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; @@ -24,6 +26,8 @@ import javax.swing.JComponent; import javax.swing.JPopupMenu; import javax.swing.JTree; import javax.swing.SwingUtilities; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import java.awt.Point; @@ -179,7 +183,7 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo // init trees TreeModel availableStratasTreeModel = new StratasTreeModel(); - JTree availableStratasTree = ui.getAvailableStratasTree(); + final JTree availableStratasTree = ui.getAvailableStratasTree(); availableStratasTree.setModel(availableStratasTreeModel); SwingUtil.addExpandOnClickListener(availableStratasTree); @@ -189,11 +193,44 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo SwingUtil.addExpandOnClickListener(zonesTree); zonesTree.addTreeSelectionListener(event -> { - boolean zoneSelected = event.getPath().getLastPathComponent() instanceof ZoneNode; - getUI().getDeleteZoneMenuItem().setEnabled(zoneSelected); - getUI().getRenameZoneMenuItem().setEnabled(zoneSelected); + + TreePath[] selectedPaths = zonesTree.getSelectionPaths(); + boolean allStrataNode = selectedPaths != null; + + if (selectedPaths != null) { + + if (selectedPaths.length == 1) { + boolean zoneSelected = event.getPath().getLastPathComponent() instanceof ZoneNode; + getUI().getDeleteZoneMenuItem().setEnabled(zoneSelected); + getUI().getRenameZoneMenuItem().setEnabled(zoneSelected); + } + + for (TreePath selectedPath : selectedPaths) { + Object lastPathComponent = selectedPath.getLastPathComponent(); + if (!(lastPathComponent instanceof StrataNode + || lastPathComponent instanceof SubStrataNode)) { + allStrataNode = false; + break; + } + } + } + + getUI().getRemoveButton().setEnabled(allStrataNode); + }); + TreeSelectionListener enableAddStrataListener = new TreeSelectionListener() { + + @Override + public void valueChanged(TreeSelectionEvent e) { + getUI().getAddButton().setEnabled(zonesTree.getSelectionCount() == 1 + && zonesTree.getSelectionPath().getLastPathComponent() instanceof ZoneNode + && availableStratasTree.getSelectionCount() >= 1); + } + }; + zonesTree.addTreeSelectionListener(enableAddStrataListener); + availableStratasTree.addTreeSelectionListener(enableAddStrataListener); + // get data initModel(); @@ -236,18 +273,9 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo log.debug("At point [" + p + "] found Row " + rowIndex); } - // select row (could empty selection) - if (rowIndex == -1) { - source.clearSelection(); - - } else { - // set selection - source.setSelectionRow(rowIndex); - } - if (rightClick) { - TreePath path = source.getPathForRow(rowIndex); + source.setSelectionRow(rowIndex); // on right click show popup popup.show(source, e.getX(), e.getY()); 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 615562d..4094e4c 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 @@ -66,6 +66,10 @@ public class AddStratasAction extends SimpleActionSupport<ZoneEditorUI> { log.info("add subtrata " + subStrata.getLabel()); } subStratasToAdd.add(subStrata); + + } else { + // the root node is selected, add all + stratasToAdd.addAll(zoneEditorUI.getModel().getAvailableStratas()); } } -- 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 a96d18ff71d6f71f8c3d23dabc8e929a619b4358 Author: Kevin Morin <morin@codelutin.com> Date: Wed Feb 3 11:05:50 2016 +0100 desactivation des boutons d'ajout et de suppression des strates à l'ouverture de l'écran (refs #7929) --- .../tutti/ui/swing/content/protocol/zones/ZoneEditorUI.jcss | 2 -- .../ui/swing/content/protocol/zones/ZoneEditorUIHandler.java | 12 +++++++----- .../content/protocol/zones/actions/AddStratasAction.java | 1 + .../content/protocol/zones/actions/RemoveStratasAction.java | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) 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 115da48..f4c227e 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 @@ -56,12 +56,10 @@ JToolBar { #addButton { actionIcon: left; - enabled: false; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.zones.actions.AddStratasAction.class}; } #removeButton { actionIcon: right; - enabled: false; _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 239922d..e201889 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 @@ -195,7 +195,7 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo zonesTree.addTreeSelectionListener(event -> { TreePath[] selectedPaths = zonesTree.getSelectionPaths(); - boolean allStrataNode = selectedPaths != null; + boolean allStrataNode = true; if (selectedPaths != null) { @@ -213,9 +213,10 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo break; } } + } - getUI().getRemoveButton().setEnabled(allStrataNode); + getUI().getRemoveButton().setEnabled(selectedPaths != null && allStrataNode); }); @@ -223,9 +224,10 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo @Override public void valueChanged(TreeSelectionEvent e) { - getUI().getAddButton().setEnabled(zonesTree.getSelectionCount() == 1 - && zonesTree.getSelectionPath().getLastPathComponent() instanceof ZoneNode - && availableStratasTree.getSelectionCount() >= 1); + boolean addButtonEnabled = zonesTree.getSelectionCount() == 1 + && zonesTree.getSelectionPath().getLastPathComponent() instanceof ZoneNode + && availableStratasTree.getSelectionCount() >= 1; + getUI().getAddButton().setEnabled(addButtonEnabled); } }; zonesTree.addTreeSelectionListener(enableAddStrataListener); 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 4094e4c..aa0511f 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 @@ -30,6 +30,7 @@ public class AddStratasAction extends SimpleActionSupport<ZoneEditorUI> { public AddStratasAction(ZoneEditorUI zoneEditorUI) { super(zoneEditorUI); + setEnabled(false); } @Override 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 07448a2..93a8cdf 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 @@ -29,6 +29,7 @@ public class RemoveStratasAction extends SimpleActionSupport<ZoneEditorUI> { public RemoveStratasAction(ZoneEditorUI zoneEditorUI) { super(zoneEditorUI); + setEnabled(false); } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm