branch feature/7929_editeur_de_zone updated (38b5700 -> 3be1d33)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git from 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) new b99cb29 tri des noeuds + i18n (refs #7929) new 6ca90c6 utilisation de fromEntity et toEntity au lieu de fromBean et toBean new 3be1d33 - utilisation directement du modele du protocol - ajout d'une popup de menu pour surrpimer et renommer les zones (refs #7929) The 3 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 3be1d33a764b90698038151856df99fe3ec8f50f 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 6ca90c62a9ded86114ddad35c64fe7f696146291 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 b99cb2954d19ab03401aaff1bbab0ea0a75091c1 Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 2 14:36:07 2016 +0100 tri des noeuds + i18n (refs #7929) Summary of changes: .../swing/content/cruise/EditCruiseUIHandler.java | 2 +- .../content/cruise/actions/SaveCruiseAction.java | 4 +- .../accidental/AccidentalBatchUIHandler.java | 2 +- .../catches/benthos/BenthosBatchUIHandler.java | 4 +- .../IndividualObservationBatchUIHandler.java | 2 +- .../marinelitter/MarineLitterBatchUIHandler.java | 2 +- .../catches/species/SpeciesBatchUIHandler.java | 4 +- .../actions/EditFishingOperationAction.java | 4 +- .../actions/SaveFishingOperationAction.java | 2 +- .../content/program/EditProgramUIHandler.java | 2 +- .../content/program/actions/SaveProgramAction.java | 2 +- .../content/protocol/EditProtocolUIHandler.java | 26 +-- .../content/protocol/EditProtocolUIModel.java | 179 +++++++++++++++++- .../actions/ExportProtocolBenthosAction.java | 2 +- .../actions/ExportProtocolCaracteristicAction.java | 2 +- .../actions/ExportProtocolSpeciesAction.java | 2 +- .../actions/ImportProtocolBenthosAction.java | 2 +- .../actions/ImportProtocolCaracteristicAction.java | 4 +- .../actions/ImportProtocolSpeciesAction.java | 2 +- .../protocol/actions/SaveProtocolAction.java | 17 +- .../swing/content/protocol/zones/ZoneEditorUI.jaxx | 18 +- .../swing/content/protocol/zones/ZoneEditorUI.jcss | 16 +- .../protocol/zones/ZoneEditorUIHandler.java | 207 +++++++++++---------- .../content/protocol/zones/ZoneEditorUIModel.java | 175 ----------------- .../protocol/zones/actions/AddStratasAction.java | 55 +++--- .../CollapseAvailableStratasTreeAction.java | 3 +- .../zones/actions/CollapseZonesTreeAction.java | 3 +- .../protocol/zones/actions/CreateZoneAction.java | 8 +- .../protocol/zones/actions/DeleteZoneAction.java | 26 ++- .../protocol/zones/actions/RenameZoneAction.java | 54 ++++++ .../protocol/zones/models/SubStrataUIModel.java | 6 +- .../zones/tree/AbstractZoneEditorTreeModel.java | 25 +++ .../protocol/zones/tree/StratasTreeModel.java | 30 +-- .../protocol/zones/tree/ZoneEditorNode.java | 19 ++ .../protocol/zones/tree/ZonesTreeModel.java | 34 +--- .../report/actions/GenerateReportAction.java | 2 +- .../actions/EditCruiseInValidationUIAction.java | 2 +- .../EditFishingOperationInValidationUIAction.java | 4 +- .../ifremer/tutti/ui/swing/util/TuttiUIUtil.java | 15 ++ .../EditProtocolUIModel-error-validation.xml} | 13 +- .../resources/i18n/tutti-ui-swing_en_GB.properties | 11 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 13 +- 42 files changed, 563 insertions(+), 442 deletions(-) delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RenameZoneAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/AbstractZoneEditorTreeModel.java copy tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/{home/SelectCruiseUIModel-error-validation.xml => protocol/EditProtocolUIModel-error-validation.xml} (85%) -- 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 b99cb2954d19ab03401aaff1bbab0ea0a75091c1 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 6ca90c62a9ded86114ddad35c64fe7f696146291 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 3be1d33a764b90698038151856df99fe3ec8f50f 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>.
participants (1)
-
codelutin.com scm