branch feature/7621 updated (adb80d9 -> 65b291a)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7621 in repository observe. See http://git.codelutin.com/observe.git from adb80d9 réactivation de l'action pour changer une marée de programme new 02439c6 extraction de la méthode de filtrage dans le dtos new e7045a3 déplacement des marées longline sélectionnées dans un dossier aléatoire (refs #7621) new 2294265 refactoring new b421105 déplacement d'une marée seine dans un programme aléatoire (refs #7621) new 65b291a sélection du programme dans lequel déplacer les marées (refs #7621) The 5 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 65b291a45c46101f769d0f59fc8d5916b115507c Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 18:21:48 2015 +0100 sélection du programme dans lequel déplacer les marées (refs #7621) commit b4211051b32bb025dcf3204feef8440aaff44d96 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 17:41:10 2015 +0100 déplacement d'une marée seine dans un programme aléatoire (refs #7621) commit 229426589a9f8bbb4834f47eadd8601dc8e8b6e1 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 17:32:04 2015 +0100 refactoring commit e7045a3aa72986f9619928901e52cd5a215204b5 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 17:06:25 2015 +0100 déplacement des marées longline sélectionnées dans un dossier aléatoire (refs #7621) commit 02439c64afc1cd7d3dfb3fa99547043e40f930f6 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 13:56:51 2015 +0100 extraction de la méthode de filtrage dans le dtos Summary of changes: .../observe/ObserveSwingApplicationContext.java | 4 + .../actions/shared/MoveTripLonglinesUIAction.java | 69 +++++++ .../ui/actions/shared/MoveTripSeinesUIAction.java | 69 +++++++ .../ui/actions/shared/MoveTripsUIAction.java | 222 +++++++++++++++++++++ .../content/list/impl/longline/TripLonglinesUI.css | 12 ++ .../list/impl/longline/TripLonglinesUI.jaxx | 23 +++ .../list/impl/longline/TripLonglinesUIModel.java | 33 +++ .../ui/content/list/impl/seine/TripSeinesUI.css | 9 + .../ui/content/list/impl/seine/TripSeinesUI.jaxx | 23 +++ .../content/list/impl/seine/TripSeinesUIModel.java | 33 +++ .../tree/ObserveNavigationTreeShowPopupAction.java | 8 +- .../actions/ChangeTripProgramActionListener.java | 1 - .../observe-application-swing_en_GB.properties | 4 + .../observe-application-swing_es_ES.properties | 4 + .../observe-application-swing_fr_FR.properties | 2 + .../v1/longline/TripLonglineServiceController.java | 7 + .../v1/seine/TripSeineServiceController.java | 7 + .../service/longline/TripLonglineService.java | 7 + .../services/service/seine/TripSeineService.java | 7 + .../services/dto/referential/ProgramDtos.java | 5 + .../service/longline/TripLonglineServiceTopia.java | 22 ++ .../service/seine/TripSeineServiceTopia.java | 23 +++ 22 files changed, 587 insertions(+), 7 deletions(-) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7621 in repository observe. See http://git.codelutin.com/observe.git commit 02439c64afc1cd7d3dfb3fa99547043e40f930f6 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 13:56:51 2015 +0100 extraction de la méthode de filtrage dans le dtos --- .../ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java | 8 ++------ .../java/fr/ird/observe/services/dto/referential/ProgramDtos.java | 5 +++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java index 3712097..c4eb58c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java @@ -23,15 +23,14 @@ package fr.ird.observe.ui.tree; */ import com.google.common.base.Preconditions; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.dto.ReferenceDto; -import fr.ird.observe.services.dto.ReferenceDtos; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramDtos; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.ui.tree.actions.ChangeTripProgramActionListener; import org.apache.commons.logging.Log; @@ -255,10 +254,7 @@ public class ObserveNavigationTreeShowPopupAction { LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) .getReferentialReferenceSet(ProgramDto.class) .getReference(); - List<ReferenceDto> programs = - Lists.newArrayList(Iterables.filter(allPrograms, - ReferenceDtos.newLabelValuePredicate(ProgramDto.PROPERTY_GEAR_TYPE, - gearType))); + List<ReferenceDto> programs = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, gearType)); String openProgramId = applicationContext.getDataContext().getOpenProgramId(); diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java index eb0b619..03c2e3c 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java @@ -1,5 +1,6 @@ package fr.ird.observe.services.dto.referential; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceDtos; @@ -62,4 +63,8 @@ public class ProgramDtos extends AbstractProgramDtos { return reference; } + public static Iterable<ReferenceDto> filterReferencesByGearType(Iterable<ReferenceDto> programs, GearType gearType) { + return Iterables.filter(programs, ReferenceDtos.newLabelValuePredicate(ProgramDto.PROPERTY_GEAR_TYPE, gearType)); + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7621 in repository observe. See http://git.codelutin.com/observe.git commit e7045a3aa72986f9619928901e52cd5a215204b5 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 17:06:25 2015 +0100 déplacement des marées longline sélectionnées dans un dossier aléatoire (refs #7621) --- .../observe/ObserveSwingApplicationContext.java | 2 + .../ui/actions/shared/MoveTripsUIAction.java | 223 +++++++++++++++++++++ .../content/list/impl/longline/TripLonglinesUI.css | 12 ++ .../list/impl/longline/TripLonglinesUI.jaxx | 20 ++ .../list/impl/longline/TripLonglinesUIModel.java | 33 +++ .../actions/ChangeTripProgramActionListener.java | 1 - .../observe-application-swing_en_GB.properties | 4 + .../observe-application-swing_es_ES.properties | 4 + .../observe-application-swing_fr_FR.properties | 4 + .../v1/longline/TripLonglineServiceController.java | 7 + .../service/longline/TripLonglineService.java | 7 + .../service/longline/TripLonglineServiceTopia.java | 22 ++ 12 files changed, 338 insertions(+), 1 deletion(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index 7cdd000..ded603a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -68,6 +68,7 @@ import fr.ird.observe.ui.actions.shared.DeleteDataUIAction; import fr.ird.observe.ui.actions.shared.DeleteReferenceUIAction; import fr.ird.observe.ui.actions.shared.GoDownUIAction; import fr.ird.observe.ui.actions.shared.GoUpUIAction; +import fr.ird.observe.ui.actions.shared.MoveTripsUIAction; import fr.ird.observe.ui.actions.shared.ReOpenUIAction; import fr.ird.observe.ui.actions.shared.ResetEditUIAction; import fr.ird.observe.ui.actions.shared.SaveEditUIAction; @@ -907,6 +908,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im registerMainAction(actionMap, new SaveEditUIAction(ui)); registerMainAction(actionMap, new DeleteDataUIAction(ui)); registerMainAction(actionMap, new DeleteReferenceUIAction(ui)); + registerMainAction(actionMap, new MoveTripsUIAction(ui)); } public void registerMainAction(ActionMap actionMap, AbstractUIAction action) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java new file mode 100644 index 0000000..1ade193 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java @@ -0,0 +1,223 @@ +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * 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% + */ +package fr.ird.observe.ui.actions.shared; + +import com.google.common.collect.Lists; +import fr.ird.observe.ObserveOpenDataManager; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceDtos; +import fr.ird.observe.services.dto.constants.GearType; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramDtos; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.content.ContentUI; +import fr.ird.observe.ui.content.list.impl.longline.ActivityLonglinesUI; +import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUI; +import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUIModel; +import fr.ird.observe.ui.content.open.impl.longline.ActivityLonglineUI; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JComponent; +import javax.swing.JTree; +import javax.swing.SwingUtilities; +import javax.swing.tree.TreePath; +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Random; + +import static org.nuiton.i18n.I18n.n; + +/** + * Action pour fermer l'objet sous-jacent à l'écran. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public class MoveTripsUIAction extends AbstractUIAction { + + private static final long serialVersionUID = 1L; + + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(MoveTripsUIAction.class); + + public static final String ACTION_NAME = "moveTrips"; + + public MoveTripsUIAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + n("observe.action.move.trips"), + n("observe.action.move.trips.tip"), + "close" + ); + } + + @Override + public void actionPerformed(final ActionEvent e) { + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + JComponent c = (JComponent) e.getSource(); + ContentUI<?> ui = (ContentUI<?>) + c.getClientProperty("ui"); + if (ui == null) { + throw new IllegalStateException( + "could not find client property " + + "ui on component" + c); + } + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + + if (ui instanceof TripLonglinesUI) { + + // cas particulier pour l'écran des marées longline + + LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) + .getReferentialReferenceSet(ProgramDto.class) + .getReference(); + + List<ReferenceDto> programs = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, GearType.longline)); + +// int programIndex = JOptionPane.showOptionDialog(ui, "mesage", "test", +// JOptionPane.OK_CANCEL_OPTION, +// JOptionPane.QUESTION_MESSAGE, +// null, +// programs.toArray(new ReferenceDto[programs.size()]), +// null); + int programIndex = new Random().nextInt(programs.size()); + + ReferenceDto program = programs.get(programIndex); + String programId = program.getId(); + + TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; + TripLonglinesUIModel model = tripLonglinesUI.getModel(); + List<ReferenceDto> selectedDatas = model.getSelectedDatas(); + + ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + + ObserveNode oldProgramNode = treeHelper.getSelectedNode(); + String oldProgramId = oldProgramNode.getId(); + + ObserveNode rootNode = treeHelper.getRootNode(); + ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); + + List<String> tripIds = Lists.transform(selectedDatas, ReferenceDtos.getIdFunction()); + TripLonglineService service = applicationContext.newService(TripLonglineService.class); + List<Integer> positions = service.moveTripLonglinesToProgram(tripIds, programId); + + for (int i = 0, s = positions.size() ; i < s ; i++) { + + String tripId = tripIds.get(i); + ObserveNode tripNode = treeHelper.getChild(oldProgramNode, tripId); + boolean wasOpen = tripNode.isOpen(); + treeHelper.removeNode(tripNode); + + if (wasOpen) { + openDataManager.closeProgram(oldProgramId); + openDataManager.openProgram(programId); + } + + ObserveNode newTripNode = treeHelper.getChild(newProgramNode, tripId); + + if (newTripNode == null) { + + // create it + if (log.isInfoEnabled()) { + log.info("Insert trip node: "); + } + treeHelper.insertNode(newProgramNode, tripNode, positions.get(i)); + } + } + + List<ReferenceDto> data = new ArrayList<>(model.getData()); + data.removeAll(model.getSelectedDatas()); + model.setData(data); + + treeHelper.reloadNode(oldProgramNode, true); + treeHelper.reloadNode(newProgramNode, true); + treeHelper.selectNode(newProgramNode); + + return; + } + + if (ui instanceof ActivityLonglinesUI) { + + // cas particulier pour l'écran des activités + + JTree tree = getMainUI().getNavigation(); + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + + // recuperation du noeud courant (activitys) + ObserveNode node = treeHelper.getSelectedNode(); + + boolean wasCollapsed = isOpenActivityNodeCollapsed( + tree, + treeHelper, + getMainUI().getDataContext() + ); + + // selection du noeud de l'activity ouverte + treeHelper.selectOpenNode(getMainUI(), ActivityLonglineDto.class); + + // on conserve le path de l'activity + TreePath path = tree.getSelectionPath(); + + // recuperation de l'écran associé + ActivityLonglineUI selectedUI = (ActivityLonglineUI) + ObserveSwingApplicationContext.get().getSelectedContentUI(); + + // fermeture de l'activity + selectedUI.closeData(); + + if (wasCollapsed) { + + // on ferme le noeud de l'activity (qui a ete ouvert + // lors de la selection de celle-ci) + tree.collapsePath(path); + } + + // retour sur le noeud des activitys + treeHelper.selectNode(node); + + return; + } + + throw new IllegalStateException("Can not come here!"); + } + }); + + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css index 9403431..2856efb 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css @@ -20,14 +20,20 @@ * #L% */ +#listSelectionModel { + selectionMode:{ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; +} + #gotoSelectedChild { _text:{t("observe.action.goto.selected.maree")}; _toolTipText:{t("observe.action.goto.selected.maree.tip")}; + enabled:{model.getSelectedDatas() != null && model.getSelectedDatas().size() == 1}; } #reopenChild { _text:{t("observe.action.reopen.selected.maree")}; _toolTipText:{t("observe.action.reopen.selected.maree.tip")}; + enabled:{model.getSelectedDatas() != null && model.getSelectedDatas().size() == 1}; } #createChild { @@ -35,4 +41,10 @@ toolTipText:"observe.action.create.maree.tip"; } +#moveSelectedTrips { + text:"observe.action.move.trips"; + toolTipText:"observe.action.move.trips.tip"; + enabled:{model.getSelectedDatas() != null}; + _observeAction:{MoveTripsUIAction.ACTION_NAME}; +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx index 5256c29..1f38e94 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx @@ -24,16 +24,30 @@ emptyListMessage='{n("observe.message.no.trip.for.program")}'> <import> + fr.ird.observe.services.dto.ReferenceDto fr.ird.observe.services.dto.longline.ActivityLonglineDto fr.ird.observe.services.dto.longline.TripLonglineDto fr.ird.observe.services.dto.referential.ProgramDto fr.ird.observe.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.ui.actions.shared.MoveTripsUIAction + + java.util.List + + javax.swing.ListSelectionModel static org.nuiton.i18n.I18n.n </import> <style source="CommonListUI.css"/> + <script><![CDATA[ + +public final List<ReferenceDto> getSelectedDatas() { + return (List<ReferenceDto>) list.getSelectedValuesList(); +} + +]]></script> + <!-- handler --> <TripLonglinesUIHandler id='handler' constructorParams='this'/> @@ -43,6 +57,9 @@ <!-- edit bean --> <ProgramDto id='bean'/> + <ListSelectionModel id='listSelectionModel' + onValueChanged='if (!event.getValueIsAdjusting()) getModel().setSelectedDatas(getSelectedDatas());'/> + <!-- override generic actions --> <JButton id='gotoSelectedChild'/> <JButton id='reopenChild'/> @@ -59,6 +76,9 @@ <cell> <JButton id='gotoOpenActivity2' styleClass='gotoOpenActivity2'/> </cell> + <cell> + <JButton id='moveSelectedTrips'/> + </cell> </row> </Table> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIModel.java index c704361..a3be385 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIModel.java @@ -22,9 +22,14 @@ package fr.ird.observe.ui.content.list.impl.longline; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.ui.content.list.ContentListUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.List; /** * Created on 9/26/14. @@ -36,8 +41,36 @@ public class TripLonglinesUIModel extends ContentListUIModel<ProgramDto, TripLon private static final long serialVersionUID = 1L; + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(TripLonglinesUIModel.class); + + public static final String PROPERTY_SELECTED_DATAS = "selectedDatas"; + + /** entité sélectionnée dans la liste */ + protected List<ReferenceDto> selectedDatas; + public TripLonglinesUIModel() { super(ProgramDto.class, TripLonglineDto.class); } + public List<ReferenceDto> getSelectedDatas() { + return selectedDatas; + } + + public void setSelectedDatas(List<ReferenceDto> selectedDatas) { + List<ReferenceDto> old = getSelectedDatas(); + this.selectedDatas = selectedDatas; + if (log.isDebugEnabled()) { + log.debug("New selected datas : " + selectedDatas); + } + firePropertyChange(PROPERTY_SELECTED_DATAS, old, selectedDatas); + } + + @Override + public void setData(List<ReferenceDto> data) { + super.setData(data); + setSelectedDatas(null); + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java index 02d2f6f..cdf5587 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java @@ -80,7 +80,6 @@ public class ChangeTripProgramActionListener implements ActionListener { int position; - if (IdDtos.isTripLonglineId(tripId)) { TripLonglineService service = applicationContext.newService(TripLonglineService.class); position = service.moveTripLonglineToProgram(tripId, programId); diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties index 714463d..bf26992 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties @@ -280,6 +280,10 @@ observe.action.mitigationType.detail.tip= observe.action.mitigationType.modify.tip= observe.action.mitigationType.save.tip= observe.action.modify=Modify +observe.action.move.maree= +observe.action.move.maree.tip= +observe.action.move.trips= +observe.action.move.trips.tip= observe.action.new.entry=Add observe.action.new.entry.tip= observe.action.objectFate.create.tip= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties index b237af9..9faa438 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties @@ -280,6 +280,10 @@ observe.action.mitigationType.detail.tip= observe.action.mitigationType.modify.tip= observe.action.mitigationType.save.tip= observe.action.modify=Modificar +observe.action.move.maree= +observe.action.move.maree.tip= +observe.action.move.trips= +observe.action.move.trips.tip= observe.action.new.entry=Nuevo observe.action.new.entry.tip=Crear una nueva entrada observe.action.objectFate.create.tip=Crear un nuevo devenir de objeto diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 83e1f91..6772b97 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -280,6 +280,10 @@ observe.action.mitigationType.detail.tip=Voir les détails du type de mesure d'a observe.action.mitigationType.modify.tip=Modifier le type de mesure d'atténuation sélectionné observe.action.mitigationType.save.tip=Sauver les modifications du type de mesure d'atténuation observe.action.modify=Modifier +observe.action.move.maree= +observe.action.move.maree.tip= +observe.action.move.trips= +observe.action.move.trips.tip= observe.action.new.entry=Nouveau observe.action.new.entry.tip=Créer une nouvelle entrée observe.action.objectFate.create.tip=Créer un nouveau devenir objet diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java index 4f66c33..e837d57 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java @@ -31,6 +31,8 @@ import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.longline.TripLonglineService; +import java.util.List; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -104,4 +106,9 @@ public class TripLonglineServiceController extends ObserveAuthenticatedServiceCo public int moveTripLonglineToProgram(String tripLonglineId, String programId) { return service.moveTripLonglineToProgram(tripLonglineId, programId); } + + @Override + public List<Integer> moveTripLonglinesToProgram(List<String> tripLonglineIds, String programId) { + return service.moveTripLonglinesToProgram(tripLonglineIds, programId); + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java index 45b37f5..3c5e492 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java @@ -35,6 +35,8 @@ import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; +import java.util.List; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -85,4 +87,9 @@ public interface TripLonglineService extends ObserveService { @PostRequest int moveTripLonglineToProgram(String tripLonglineId, String programId); + @Write + @WriteDataPermission + @PostRequest + List<Integer> moveTripLonglinesToProgram(List<String> tripLonglineIds, String programId); + } \ No newline at end of file diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java index 440325f..a7c7691 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java @@ -42,6 +42,7 @@ import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.result.SaveResultDtos; import org.nuiton.util.DateUtil; +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.LinkedHashSet; @@ -224,4 +225,25 @@ public class TripLonglineServiceTopia extends ObserveServiceTopia implements Tri return getTripLonglinePositionInProgram(programId, tripLonglineId); } + + @Override + public List<Integer> moveTripLonglinesToProgram(List<String> tripLonglineIds, String programId) { + Program program = loadEntity(ProgramDto.class, Program.class, programId); + + List<Integer> result = new ArrayList<>(); + ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); + + for (String tripLonglineId : tripLonglineIds) { + + TripLongline tripLongline = loadEntity(TripLonglineDto.class, TripLongline.class, tripLonglineId); + tripLongline.setProgram(program); + + saveEntity(TripLongline.class, tripLongline); + persistenceContext.flush(); + + result.add(getTripLonglinePositionInProgram(programId, tripLonglineId)); + } + + return result; + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7621 in repository observe. See http://git.codelutin.com/observe.git commit 229426589a9f8bbb4834f47eadd8601dc8e8b6e1 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 17:32:04 2015 +0100 refactoring --- .../observe/ObserveSwingApplicationContext.java | 4 +- .../actions/shared/MoveTripLonglinesUIAction.java | 69 +++++++++ .../ui/actions/shared/MoveTripsUIAction.java | 166 +++++++-------------- .../content/list/impl/longline/TripLonglinesUI.css | 2 +- .../list/impl/longline/TripLonglinesUI.jaxx | 2 +- .../observe-application-swing_fr_FR.properties | 6 +- 6 files changed, 128 insertions(+), 121 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index ded603a..c829d63 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -68,7 +68,7 @@ import fr.ird.observe.ui.actions.shared.DeleteDataUIAction; import fr.ird.observe.ui.actions.shared.DeleteReferenceUIAction; import fr.ird.observe.ui.actions.shared.GoDownUIAction; import fr.ird.observe.ui.actions.shared.GoUpUIAction; -import fr.ird.observe.ui.actions.shared.MoveTripsUIAction; +import fr.ird.observe.ui.actions.shared.MoveTripLonglinesUIAction; import fr.ird.observe.ui.actions.shared.ReOpenUIAction; import fr.ird.observe.ui.actions.shared.ResetEditUIAction; import fr.ird.observe.ui.actions.shared.SaveEditUIAction; @@ -908,7 +908,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im registerMainAction(actionMap, new SaveEditUIAction(ui)); registerMainAction(actionMap, new DeleteDataUIAction(ui)); registerMainAction(actionMap, new DeleteReferenceUIAction(ui)); - registerMainAction(actionMap, new MoveTripsUIAction(ui)); + registerMainAction(actionMap, new MoveTripLonglinesUIAction(ui)); } public void registerMainAction(ActionMap actionMap, AbstractUIAction action) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java new file mode 100644 index 0000000..bb35e7c --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java @@ -0,0 +1,69 @@ +package fr.ird.observe.ui.actions.shared; + +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.constants.GearType; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.content.ContentUI; +import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUI; +import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since 5.0 + */ +public class MoveTripLonglinesUIAction extends MoveTripsUIAction { + + private static final long serialVersionUID = 1L; + + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(MoveTripsUIAction.class); + + public static final String ACTION_NAME = "moveTripLongliness"; + + public MoveTripLonglinesUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME); + } + + @Override + protected void checkUIClass(ContentUI<?> ui) throws IllegalStateException { + if (!(ui instanceof TripLonglinesUI)) { + throw new IllegalStateException("Can not come here!"); + } + } + + @Override + protected List<ReferenceDto> getSelectedDatas(ContentUI<?> ui) { + TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; + TripLonglinesUIModel model = tripLonglinesUI.getModel(); + return model.getSelectedDatas(); + } + + @Override + protected GearType getGearType(ContentUI<?> ui) { + return GearType.longline; + } + + @Override + protected List<Integer> getPositions(List<String> tripIds, String programId) { + TripLonglineService service = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + return service.moveTripLonglinesToProgram(tripIds, programId); + } + + @Override + protected void updateModelData(ContentUI<?> ui) { + TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; + TripLonglinesUIModel model = tripLonglinesUI.getModel(); + List<ReferenceDto> data = new ArrayList<>(model.getData()); + data.removeAll(model.getSelectedDatas()); + model.setData(data); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java index 1ade193..ed31b84 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java @@ -27,28 +27,19 @@ import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceDtos; import fr.ird.observe.services.dto.constants.GearType; -import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ProgramDtos; import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.content.ContentUI; -import fr.ird.observe.ui.content.list.impl.longline.ActivityLonglinesUI; -import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUI; -import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUIModel; -import fr.ird.observe.ui.content.open.impl.longline.ActivityLonglineUI; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; -import javax.swing.JTree; import javax.swing.SwingUtilities; -import javax.swing.tree.TreePath; import java.awt.event.ActionEvent; -import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Random; @@ -56,12 +47,12 @@ import java.util.Random; import static org.nuiton.i18n.I18n.n; /** - * Action pour fermer l'objet sous-jacent à l'écran. + * Action pour changer le programme d'une ou plusieurs marée dans la liste. * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.4 + * @author Kevin Morin (Code Lutin) + * @since 5.0 */ -public class MoveTripsUIAction extends AbstractUIAction { +public abstract class MoveTripsUIAction extends AbstractUIAction { private static final long serialVersionUID = 1L; @@ -72,9 +63,9 @@ public class MoveTripsUIAction extends AbstractUIAction { public static final String ACTION_NAME = "moveTrips"; - public MoveTripsUIAction(ObserveMainUI mainUI) { + public MoveTripsUIAction(ObserveMainUI mainUI, String actionName) { super(mainUI, - ACTION_NAME, + actionName, n("observe.action.move.trips"), n("observe.action.move.trips.tip"), "close" @@ -94,130 +85,79 @@ public class MoveTripsUIAction extends AbstractUIAction { if (ui == null) { throw new IllegalStateException( "could not find client property " + - "ui on component" + c); + "ui on component" + c); } - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - if (ui instanceof TripLonglinesUI) { - - // cas particulier pour l'écran des marées longline - - LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) - .getReferentialReferenceSet(ProgramDto.class) - .getReference(); + checkUIClass(ui); - List<ReferenceDto> programs = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, GearType.longline)); - -// int programIndex = JOptionPane.showOptionDialog(ui, "mesage", "test", -// JOptionPane.OK_CANCEL_OPTION, -// JOptionPane.QUESTION_MESSAGE, -// null, -// programs.toArray(new ReferenceDto[programs.size()]), -// null); - int programIndex = new Random().nextInt(programs.size()); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ReferenceDto program = programs.get(programIndex); - String programId = program.getId(); + LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) + .getReferentialReferenceSet(ProgramDto.class) + .getReference(); - TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; - TripLonglinesUIModel model = tripLonglinesUI.getModel(); - List<ReferenceDto> selectedDatas = model.getSelectedDatas(); + GearType gearType = getGearType(ui); - ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + List<ReferenceDto> programs = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, gearType)); + int programIndex = new Random().nextInt(programs.size()); + ReferenceDto program = programs.get(programIndex); + String programId = program.getId(); - ObserveNode oldProgramNode = treeHelper.getSelectedNode(); - String oldProgramId = oldProgramNode.getId(); + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + ObserveNode rootNode = treeHelper.getRootNode(); + ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); - ObserveNode rootNode = treeHelper.getRootNode(); - ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); + List<ReferenceDto> selectedDatas = getSelectedDatas(ui); + List<String> tripIds = Lists.transform(selectedDatas, ReferenceDtos.getIdFunction()); + List<Integer> positions = getPositions(tripIds, programId); - List<String> tripIds = Lists.transform(selectedDatas, ReferenceDtos.getIdFunction()); - TripLonglineService service = applicationContext.newService(TripLonglineService.class); - List<Integer> positions = service.moveTripLonglinesToProgram(tripIds, programId); + ObserveNode oldProgramNode = treeHelper.getSelectedNode(); + String oldProgramId = oldProgramNode.getId(); + ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); - for (int i = 0, s = positions.size() ; i < s ; i++) { + for (int i = 0, s = positions.size(); i < s; i++) { - String tripId = tripIds.get(i); - ObserveNode tripNode = treeHelper.getChild(oldProgramNode, tripId); - boolean wasOpen = tripNode.isOpen(); - treeHelper.removeNode(tripNode); + String tripId = tripIds.get(i); + ObserveNode tripNode = treeHelper.getChild(oldProgramNode, tripId); + boolean wasOpen = tripNode.isOpen(); + treeHelper.removeNode(tripNode); - if (wasOpen) { - openDataManager.closeProgram(oldProgramId); - openDataManager.openProgram(programId); - } + if (wasOpen) { + openDataManager.closeProgram(oldProgramId); + openDataManager.openProgram(programId); + } - ObserveNode newTripNode = treeHelper.getChild(newProgramNode, tripId); + ObserveNode newTripNode = treeHelper.getChild(newProgramNode, tripId); - if (newTripNode == null) { + if (newTripNode == null) { - // create it - if (log.isInfoEnabled()) { - log.info("Insert trip node: "); - } - treeHelper.insertNode(newProgramNode, tripNode, positions.get(i)); + // create it + if (log.isInfoEnabled()) { + log.info("Insert trip node: "); } + treeHelper.insertNode(newProgramNode, tripNode, positions.get(i)); } - - List<ReferenceDto> data = new ArrayList<>(model.getData()); - data.removeAll(model.getSelectedDatas()); - model.setData(data); - - treeHelper.reloadNode(oldProgramNode, true); - treeHelper.reloadNode(newProgramNode, true); - treeHelper.selectNode(newProgramNode); - - return; } - if (ui instanceof ActivityLonglinesUI) { - - // cas particulier pour l'écran des activités - - JTree tree = getMainUI().getNavigation(); - ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + updateModelData(ui); - // recuperation du noeud courant (activitys) - ObserveNode node = treeHelper.getSelectedNode(); + treeHelper.reloadNode(oldProgramNode, true); + treeHelper.reloadNode(newProgramNode, true); + treeHelper.selectNode(newProgramNode); - boolean wasCollapsed = isOpenActivityNodeCollapsed( - tree, - treeHelper, - getMainUI().getDataContext() - ); - - // selection du noeud de l'activity ouverte - treeHelper.selectOpenNode(getMainUI(), ActivityLonglineDto.class); - - // on conserve le path de l'activity - TreePath path = tree.getSelectionPath(); - - // recuperation de l'écran associé - ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveSwingApplicationContext.get().getSelectedContentUI(); - - // fermeture de l'activity - selectedUI.closeData(); + } + }); - if (wasCollapsed) { + } - // on ferme le noeud de l'activity (qui a ete ouvert - // lors de la selection de celle-ci) - tree.collapsePath(path); - } + protected abstract void checkUIClass(ContentUI<?> ui) throws IllegalStateException; - // retour sur le noeud des activitys - treeHelper.selectNode(node); + protected abstract List<ReferenceDto> getSelectedDatas(ContentUI<?> ui); - return; - } + protected abstract GearType getGearType(ContentUI<?> ui); - throw new IllegalStateException("Can not come here!"); - } - }); + protected abstract List<Integer> getPositions(List<String> tripIds, String programId); - } + protected abstract void updateModelData(ContentUI<?> ui); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css index 2856efb..7f85d81 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.css @@ -45,6 +45,6 @@ text:"observe.action.move.trips"; toolTipText:"observe.action.move.trips.tip"; enabled:{model.getSelectedDatas() != null}; - _observeAction:{MoveTripsUIAction.ACTION_NAME}; + _observeAction:{MoveTripLonglinesUIAction.ACTION_NAME}; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx index 1f38e94..3776dbc 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx @@ -29,7 +29,7 @@ fr.ird.observe.services.dto.longline.TripLonglineDto fr.ird.observe.services.dto.referential.ProgramDto fr.ird.observe.ui.actions.shared.SelectOpenNodeUIAction - fr.ird.observe.ui.actions.shared.MoveTripsUIAction + fr.ird.observe.ui.actions.shared.MoveTripLonglinesUIAction java.util.List diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 6772b97..843e2f3 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -280,10 +280,8 @@ observe.action.mitigationType.detail.tip=Voir les détails du type de mesure d'a observe.action.mitigationType.modify.tip=Modifier le type de mesure d'atténuation sélectionné observe.action.mitigationType.save.tip=Sauver les modifications du type de mesure d'atténuation observe.action.modify=Modifier -observe.action.move.maree= -observe.action.move.maree.tip= -observe.action.move.trips= -observe.action.move.trips.tip= +observe.action.move.trips=Changer de programme +observe.action.move.trips.tip=Changer le programme des marées sélectionnées observe.action.new.entry=Nouveau observe.action.new.entry.tip=Créer une nouvelle entrée observe.action.objectFate.create.tip=Créer un nouveau devenir objet -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7621 in repository observe. See http://git.codelutin.com/observe.git commit b4211051b32bb025dcf3204feef8440aaff44d96 Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 17:41:10 2015 +0100 déplacement d'une marée seine dans un programme aléatoire (refs #7621) --- .../observe/ObserveSwingApplicationContext.java | 2 ++ .../actions/shared/MoveTripLonglinesUIAction.java | 4 +-- ...esUIAction.java => MoveTripSeinesUIAction.java} | 30 ++++++++++---------- .../list/impl/longline/TripLonglinesUI.jaxx | 3 ++ .../ui/content/list/impl/seine/TripSeinesUI.css | 9 ++++++ .../ui/content/list/impl/seine/TripSeinesUI.jaxx | 22 +++++++++++++++ .../content/list/impl/seine/TripSeinesUIModel.java | 33 ++++++++++++++++++++++ .../v1/seine/TripSeineServiceController.java | 7 +++++ .../services/service/seine/TripSeineService.java | 7 +++++ .../service/seine/TripSeineServiceTopia.java | 23 +++++++++++++++ 10 files changed, 123 insertions(+), 17 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index c829d63..23ed676 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -69,6 +69,7 @@ import fr.ird.observe.ui.actions.shared.DeleteReferenceUIAction; import fr.ird.observe.ui.actions.shared.GoDownUIAction; import fr.ird.observe.ui.actions.shared.GoUpUIAction; import fr.ird.observe.ui.actions.shared.MoveTripLonglinesUIAction; +import fr.ird.observe.ui.actions.shared.MoveTripSeinesUIAction; import fr.ird.observe.ui.actions.shared.ReOpenUIAction; import fr.ird.observe.ui.actions.shared.ResetEditUIAction; import fr.ird.observe.ui.actions.shared.SaveEditUIAction; @@ -909,6 +910,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im registerMainAction(actionMap, new DeleteDataUIAction(ui)); registerMainAction(actionMap, new DeleteReferenceUIAction(ui)); registerMainAction(actionMap, new MoveTripLonglinesUIAction(ui)); + registerMainAction(actionMap, new MoveTripSeinesUIAction(ui)); } public void registerMainAction(ActionMap actionMap, AbstractUIAction action) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java index bb35e7c..e7f65da 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java @@ -25,9 +25,9 @@ public class MoveTripLonglinesUIAction extends MoveTripsUIAction { /** * Logger. */ - private static final Log log = LogFactory.getLog(MoveTripsUIAction.class); + private static final Log log = LogFactory.getLog(MoveTripLonglinesUIAction.class); - public static final String ACTION_NAME = "moveTripLongliness"; + public static final String ACTION_NAME = "moveTripLonglines"; public MoveTripLonglinesUIAction(ObserveMainUI mainUI) { super(mainUI, ACTION_NAME); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java similarity index 56% copy from observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java copy to observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java index bb35e7c..4532e71 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java @@ -3,11 +3,11 @@ package fr.ird.observe.ui.actions.shared; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.constants.GearType; -import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.content.ContentUI; -import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUI; -import fr.ird.observe.ui.content.list.impl.longline.TripLonglinesUIModel; +import fr.ird.observe.ui.content.list.impl.seine.TripSeinesUI; +import fr.ird.observe.ui.content.list.impl.seine.TripSeinesUIModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -18,50 +18,50 @@ import java.util.List; * @author Kevin Morin (Code Lutin) * @since 5.0 */ -public class MoveTripLonglinesUIAction extends MoveTripsUIAction { +public class MoveTripSeinesUIAction extends MoveTripsUIAction { private static final long serialVersionUID = 1L; /** * Logger. */ - private static final Log log = LogFactory.getLog(MoveTripsUIAction.class); + private static final Log log = LogFactory.getLog(MoveTripSeinesUIAction.class); - public static final String ACTION_NAME = "moveTripLongliness"; + public static final String ACTION_NAME = "moveTripSeines"; - public MoveTripLonglinesUIAction(ObserveMainUI mainUI) { + public MoveTripSeinesUIAction(ObserveMainUI mainUI) { super(mainUI, ACTION_NAME); } @Override protected void checkUIClass(ContentUI<?> ui) throws IllegalStateException { - if (!(ui instanceof TripLonglinesUI)) { + if (!(ui instanceof TripSeinesUI)) { throw new IllegalStateException("Can not come here!"); } } @Override protected List<ReferenceDto> getSelectedDatas(ContentUI<?> ui) { - TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; - TripLonglinesUIModel model = tripLonglinesUI.getModel(); + TripSeinesUI tripSeinesUI = (TripSeinesUI) ui; + TripSeinesUIModel model = tripSeinesUI.getModel(); return model.getSelectedDatas(); } @Override protected GearType getGearType(ContentUI<?> ui) { - return GearType.longline; + return GearType.seine; } @Override protected List<Integer> getPositions(List<String> tripIds, String programId) { - TripLonglineService service = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); - return service.moveTripLonglinesToProgram(tripIds, programId); + TripSeineService service = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + return service.moveTripSeinesToProgram(tripIds, programId); } @Override protected void updateModelData(ContentUI<?> ui) { - TripLonglinesUI tripLonglinesUI = (TripLonglinesUI) ui; - TripLonglinesUIModel model = tripLonglinesUI.getModel(); + TripSeinesUI tripSeinesUI = (TripSeinesUI) ui; + TripSeinesUIModel model = tripSeinesUI.getModel(); List<ReferenceDto> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx index 3776dbc..1615507 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUI.jaxx @@ -57,6 +57,7 @@ public final List<ReferenceDto> getSelectedDatas() { <!-- edit bean --> <ProgramDto id='bean'/> + <!-- override data selection --> <ListSelectionModel id='listSelectionModel' onValueChanged='if (!event.getValueIsAdjusting()) getModel().setSelectedDatas(getSelectedDatas());'/> @@ -76,6 +77,8 @@ public final List<ReferenceDto> getSelectedDatas() { <cell> <JButton id='gotoOpenActivity2' styleClass='gotoOpenActivity2'/> </cell> + </row> + <row weighty="1" weightx="1"> <cell> <JButton id='moveSelectedTrips'/> </cell> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.css index b63c074..d582c45 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.css @@ -19,6 +19,9 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +#listSelectionModel { + selectionMode:{ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; +} #gotoSelectedChild { _text:{t("observe.action.goto.selected.maree")}; @@ -35,4 +38,10 @@ toolTipText:"observe.action.create.maree.tip"; } +#moveSelectedTrips { + text:"observe.action.move.trips"; + toolTipText:"observe.action.move.trips.tip"; + enabled:{model.getSelectedDatas() != null}; + _observeAction:{MoveTripSeinesUIAction.ACTION_NAME}; +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx index 4e1122b..fe7952b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx @@ -30,12 +30,25 @@ fr.ird.observe.services.dto.seine.RouteDto fr.ird.observe.services.dto.referential.ProgramDto fr.ird.observe.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.ui.actions.shared.MoveTripSeinesUIAction + + java.util.List + + javax.swing.ListSelectionModel static org.nuiton.i18n.I18n.n </import> <style source="CommonListUI.css"/> + <script><![CDATA[ + +public final List<ReferenceDto> getSelectedDatas() { + return (List<ReferenceDto>) list.getSelectedValuesList(); +} + +]]></script> + <!-- handler --> <TripSeinesUIHandler id='handler' constructorParams='this'/> @@ -45,6 +58,10 @@ <!-- edit bean --> <ProgramDto id='bean'/> + <!-- override data selection --> + <ListSelectionModel id='listSelectionModel' + onValueChanged='if (!event.getValueIsAdjusting()) getModel().setSelectedDatas(getSelectedDatas());'/> + <!-- override generic actions --> <JButton id='gotoSelectedChild'/> <JButton id='reopenChild'/> @@ -70,6 +87,11 @@ <JButton id='gotoOpenActivity2' styleClass='gotoOpenActivity2'/> </cell> </row> + <row weighty="1" weightx="1"> + <cell> + <JButton id='moveSelectedTrips'/> + </cell> + </row> </Table> </fr.ird.observe.ui.content.list.ContentListUI> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIModel.java index f28ed51..9efc69b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIModel.java @@ -22,9 +22,14 @@ package fr.ird.observe.ui.content.list.impl.seine; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.content.list.ContentListUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.List; /** * Created on 9/26/14. @@ -36,8 +41,36 @@ public class TripSeinesUIModel extends ContentListUIModel<ProgramDto, TripSeineD private static final long serialVersionUID = 1L; + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(TripSeinesUIModel.class); + + public static final String PROPERTY_SELECTED_DATAS = "selectedDatas"; + + /** entité sélectionnée dans la liste */ + protected List<ReferenceDto> selectedDatas; + public TripSeinesUIModel() { super(ProgramDto.class, TripSeineDto.class); } + public List<ReferenceDto> getSelectedDatas() { + return selectedDatas; + } + + public void setSelectedDatas(List<ReferenceDto> selectedDatas) { + List<ReferenceDto> old = getSelectedDatas(); + this.selectedDatas = selectedDatas; + if (log.isDebugEnabled()) { + log.debug("New selected datas : " + selectedDatas); + } + firePropertyChange(PROPERTY_SELECTED_DATAS, old, selectedDatas); + } + + @Override + public void setData(List<ReferenceDto> data) { + super.setData(data); + setSelectedDatas(null); + } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TripSeineServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TripSeineServiceController.java index cf321f5..9f5fdaf 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TripSeineServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/TripSeineServiceController.java @@ -31,6 +31,8 @@ import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.service.seine.TripSeineService; +import java.util.List; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -104,4 +106,9 @@ public class TripSeineServiceController extends ObserveAuthenticatedServiceContr public int moveTripSeineToProgram(String tripSeineId, String programId) { return service.moveTripSeineToProgram(tripSeineId, programId); } + + @Override + public List<Integer> moveTripSeinesToProgram(List<String> tripSeineIds, String programId) { + return service.moveTripSeinesToProgram(tripSeineIds, programId); + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java index 937cb3d..47e2d1f 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TripSeineService.java @@ -35,6 +35,8 @@ import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; +import java.util.List; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -83,4 +85,9 @@ public interface TripSeineService extends ObserveService { @WriteDataPermission @PostRequest int moveTripSeineToProgram(String tripSeineId, String programId); + + @Write + @WriteDataPermission + @PostRequest + List<Integer> moveTripSeinesToProgram(List<String> tripSeineIds, String programId); } \ No newline at end of file diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TripSeineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TripSeineServiceTopia.java index 054f0f2..607b7d5 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TripSeineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TripSeineServiceTopia.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.service.seine; */ import com.google.common.collect.Sets; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.constants.ReferenceLocale; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; @@ -40,6 +41,7 @@ import fr.ird.observe.services.dto.result.SaveResultDtos; import fr.ird.observe.services.dto.seine.TripSeineDto; import org.nuiton.util.DateUtil; +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.LinkedHashSet; @@ -215,4 +217,25 @@ public class TripSeineServiceTopia extends ObserveServiceTopia implements TripSe saveEntity(TripSeine.class, tripSeine); return getTripSeinePositionInProgram(programId, tripSeineId); } + + @Override + public List<Integer> moveTripSeinesToProgram(List<String> tripSeineIds, String programId) { + Program program = loadEntity(ProgramDto.class, Program.class, programId); + + List<Integer> result = new ArrayList<>(); + ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); + + for (String tripSeineId : tripSeineIds) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + tripSeine.setProgram(program); + + saveEntity(TripSeine.class, tripSeine); + persistenceContext.flush(); + + result.add(getTripSeinePositionInProgram(programId, tripSeineId)); + } + + return result; + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7621 in repository observe. See http://git.codelutin.com/observe.git commit 65b291a45c46101f769d0f59fc8d5916b115507c Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 9 18:21:48 2015 +0100 sélection du programme dans lequel déplacer les marées (refs #7621) --- .../ui/actions/shared/MoveTripsUIAction.java | 143 +++++++++++++++------ .../ui/content/list/impl/seine/TripSeinesUI.jaxx | 1 + 2 files changed, 102 insertions(+), 42 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java index ed31b84..5a97048 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripsUIAction.java @@ -36,13 +36,14 @@ import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; import javax.swing.JComponent; +import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import java.awt.event.ActionEvent; import java.util.LinkedHashSet; import java.util.List; -import java.util.Random; import static org.nuiton.i18n.I18n.n; @@ -90,64 +91,103 @@ public abstract class MoveTripsUIAction extends AbstractUIAction { checkUIClass(ui); - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) - .getReferentialReferenceSet(ProgramDto.class) - .getReference(); - - GearType gearType = getGearType(ui); - - List<ReferenceDto> programs = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, gearType)); - int programIndex = new Random().nextInt(programs.size()); - ReferenceDto program = programs.get(programIndex); - String programId = program.getId(); - + // get current program id ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); - ObserveNode rootNode = treeHelper.getRootNode(); - ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); + ObserveNode oldProgramNode = treeHelper.getSelectedNode(); + String oldProgramId = oldProgramNode.getId(); + + // choose the new program + String programId = chooseNewProgram(ui, oldProgramId); + // change the program of the selected trips List<ReferenceDto> selectedDatas = getSelectedDatas(ui); List<String> tripIds = Lists.transform(selectedDatas, ReferenceDtos.getIdFunction()); List<Integer> positions = getPositions(tripIds, programId); - ObserveNode oldProgramNode = treeHelper.getSelectedNode(); - String oldProgramId = oldProgramNode.getId(); - ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); + // update the tree + updateTree(ui, oldProgramNode, oldProgramId, programId, tripIds, positions); - for (int i = 0, s = positions.size(); i < s; i++) { + } + }); - String tripId = tripIds.get(i); - ObserveNode tripNode = treeHelper.getChild(oldProgramNode, tripId); - boolean wasOpen = tripNode.isOpen(); - treeHelper.removeNode(tripNode); + } - if (wasOpen) { - openDataManager.closeProgram(oldProgramId); - openDataManager.openProgram(programId); - } + protected String chooseNewProgram(ContentUI<?> ui, String oldProgramId) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveNode newTripNode = treeHelper.getChild(newProgramNode, tripId); + LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) + .getReferentialReferenceSet(ProgramDto.class) + .getReference(); - if (newTripNode == null) { + GearType gearType = getGearType(ui); - // create it - if (log.isInfoEnabled()) { - log.info("Insert trip node: "); - } - treeHelper.insertNode(newProgramNode, tripNode, positions.get(i)); - } - } + List<ReferenceDto> programs = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, gearType)); - updateModelData(ui); + Decorator<ReferenceDto> decorator = applicationContext.getDecorator(ReferenceDto.class, + ProgramDto.class.getSimpleName()); - treeHelper.reloadNode(oldProgramNode, true); - treeHelper.reloadNode(newProgramNode, true); - treeHelper.selectNode(newProgramNode); + //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel + DecoratedProgram[] decoratedPrograms = new DecoratedProgram[programs.size() - 1]; + int j = 0; + for (ReferenceDto program : programs) { + if (!oldProgramId.equals(program.getId())) { + decoratedPrograms[j++] = new DecoratedProgram(program.getId(), decorator.toString(program)); } - }); + } + + Object decoratedProgram = JOptionPane.showInputDialog(ui, "message", "title", + JOptionPane.QUESTION_MESSAGE, + null, + decoratedPrograms, + null); + return ((DecoratedProgram) decoratedProgram).getId(); + } + + protected void updateTree(ContentUI<?> ui, + ObserveNode oldProgramNode, + String oldProgramId, + String programId, + List<String> tripIds, + List<Integer> positions) { + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); + ObserveTreeHelper treeHelper = getMainUI().getTreeHelper(); + ObserveNode rootNode = treeHelper.getRootNode(); + ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); + + + for (int i = 0, s = positions.size(); i < s; i++) { + + String tripId = tripIds.get(i); + ObserveNode tripNode = treeHelper.getChild(oldProgramNode, tripId); + boolean wasOpen = tripNode.isOpen(); + treeHelper.removeNode(tripNode); + + if (wasOpen) { + openDataManager.closeProgram(oldProgramId); + openDataManager.openProgram(programId); + } + + ObserveNode newTripNode = treeHelper.getChild(newProgramNode, tripId); + + if (newTripNode == null) { + + // create it + if (log.isInfoEnabled()) { + log.info("Insert trip node: "); + } + treeHelper.insertNode(newProgramNode, tripNode, positions.get(i)); + } + } + + updateModelData(ui); + + treeHelper.reloadNode(oldProgramNode, true); + treeHelper.reloadNode(newProgramNode, true); + treeHelper.selectNode(newProgramNode); } protected abstract void checkUIClass(ContentUI<?> ui) throws IllegalStateException; @@ -160,4 +200,23 @@ public abstract class MoveTripsUIAction extends AbstractUIAction { protected abstract void updateModelData(ContentUI<?> ui); + public static class DecoratedProgram { + + private final String id; + private final String label; + + public DecoratedProgram(String id, String label) { + this.id = id; + this.label = label; + } + + public String getId() { + return id; + } + + @Override + public String toString() { + return label; + } + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx index fe7952b..4904580 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUI.jaxx @@ -25,6 +25,7 @@ emptyListMessage='{n("observe.message.no.trip.for.program")}'> <import> + fr.ird.observe.services.dto.ReferenceDto fr.ird.observe.services.dto.seine.ActivitySeineDto fr.ird.observe.services.dto.seine.TripSeineDto fr.ird.observe.services.dto.seine.RouteDto -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm