This is an automated email from the git hooks/post-receive script. New change to branch feature/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 382541a UI for data synchronize action new 3c24ced more decoration methods new 31a27a1 Continue ui for data synchronize action The 2 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 31a27a10048a964c4c1f64119988dae4c9c27478 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:28 2016 +0200 Continue ui for data synchronize action commit 3c24cedd4edb6fcc742e8b3f035941aeae798272 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:14 2016 +0200 more decoration methods Summary of changes: .../swing/decoration/DecoratorService.java | 10 + .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 55 ++++-- .../datasynchro/CopyToLeftDataSynchronizeTask.java | 25 +++ .../CopyToRightDataSynchronizeTask.java | 26 +++ .../ui/admin/datasynchro/DataSynchroModel.java | 21 +++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 82 +++++---- .../ui/admin/datasynchro/DataSynchroUI.jcss | 14 +- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 204 ++++++++++++++++++--- .../DataSynchronizeTaskListCellRenderer.java | 37 ++++ .../datasynchro/DataSynchronizeTaskSupport.java | 47 +++++ .../DeleteFromLeftDataSynchronizeTask.java | 25 +++ .../DeleteFromRightDataSynchronizeTask.java | 25 +++ .../ui/storage/tabs/DataSelectionModel.java | 21 +++ .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 63 ++++++- .../loadors/ProgramLonglineNodeChildLoador.java | 7 + .../tree/loadors/ProgramSeineNodeChildLoador.java | 8 + .../observe-application-swing_en_GB.properties | 4 + .../observe-application-swing_es_ES.properties | 4 + .../observe-application-swing_fr_FR.properties | 4 + 19 files changed, 592 insertions(+), 90 deletions(-) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java -- 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/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 3c24cedd4edb6fcc742e8b3f035941aeae798272 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:14 2016 +0200 more decoration methods --- .../observe/application/swing/decoration/DecoratorService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java b/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java index a349c6c..0706a18 100644 --- a/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java +++ b/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java @@ -607,6 +607,16 @@ public class DecoratorService extends DecoratorProvider { return decorator; } + public DataReferenceDecorator getTripReferenceDecorator(DataReference tripDto) { + DataReferenceDecorator decorator; + if (tripDto.getType().isAssignableFrom(TripSeineDto.class)) { + decorator = (DataReferenceDecorator) getDataReferenceDecorator(TripSeineDto.class); + } else { + decorator = (DataReferenceDecorator) getDataReferenceDecorator(TripLonglineDto.class); + } + return decorator; + } + protected <T extends ReferentialDto> void registerDefaultReferentialAndReferentialReferenceDecorator(Class<T> referenceType, String libelle) { registerReferentialReferenceDecorator(referenceType, "${code}$s##${label}$s"); registerObserveDecorator(referenceType, "${code}$s##${" + libelle + "}$s", " "); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 31a27a10048a964c4c1f64119988dae4c9c27478 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:28 2016 +0200 Continue ui for data synchronize action --- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 55 ++++-- .../datasynchro/CopyToLeftDataSynchronizeTask.java | 25 +++ .../CopyToRightDataSynchronizeTask.java | 26 +++ .../ui/admin/datasynchro/DataSynchroModel.java | 21 +++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 82 +++++---- .../ui/admin/datasynchro/DataSynchroUI.jcss | 14 +- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 204 ++++++++++++++++++--- .../DataSynchronizeTaskListCellRenderer.java | 37 ++++ .../datasynchro/DataSynchronizeTaskSupport.java | 47 +++++ .../DeleteFromLeftDataSynchronizeTask.java | 25 +++ .../DeleteFromRightDataSynchronizeTask.java | 25 +++ .../ui/storage/tabs/DataSelectionModel.java | 21 +++ .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 63 ++++++- .../loadors/ProgramLonglineNodeChildLoador.java | 7 + .../tree/loadors/ProgramSeineNodeChildLoador.java | 8 + .../observe-application-swing_en_GB.properties | 4 + .../observe-application-swing_es_ES.properties | 4 + .../observe-application-swing_fr_FR.properties | 4 + 18 files changed, 582 insertions(+), 90 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 80930e2..77cf722 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -133,7 +133,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { private final PropertyChangeListener listenReportModified; - private final PropertyChangeListener listenerSelectedDataForReport; + private final PropertyChangeListener listenerSelectedDataForReport; private final PropertyChangeListener listenConsolidateModified; @@ -245,6 +245,22 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return; } + if (AdminStep.CONFIG == oldStep && AdminStep.DATA_SYNCHRONIZE == newStep) { + + // On lance le chargement de la sélection des arbres + + DataSynchroModel dataSynchroModel = getDataSynchroModel(); + + ObserveSwingDataSource leftSource = getSafeLocalSource(true); + dataSynchroModel.setLeftSource(leftSource); + + ObserveSwingDataSource rightSource = getSafeCentralSource(true); + dataSynchroModel.setRightSource(rightSource); + + return; + + } + // on était sur l'écran de configuration // mise à jour des modèles de sélection si on arrive sur une étape @@ -278,13 +294,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { DataSelectionModel source = (DataSelectionModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("selection data model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); if (log.isDebugEnabled()) { log.debug("nb selected export datas = " + - source.getSelectedData().size()); + source.getSelectedData().size()); } // on declanche la revalidation du modèle @@ -294,13 +310,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { ValidateModel source = (ValidateModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("validation model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); if (log.isDebugEnabled()) { log.debug("nb validators = " + - source.getValidators().size() + source.getValidators().size() ); } firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); @@ -309,8 +325,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { ReportModel source = (ReportModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("report model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); @@ -328,8 +344,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { ConsolidateModel source = (ConsolidateModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("consolidate model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); @@ -501,7 +517,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (log.isDebugEnabled()) { log.debug("Close previous source " + - previousSource.getLabel()); + previousSource.getLabel()); } doCloseSource(previousSource, false); } @@ -1094,7 +1110,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } - } if (containsOperation(AdminStep.SYNCHRONIZE)) { @@ -1118,7 +1133,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // validate &= centralSourceModel.isValid() && // centralSourceModel.getPgConfig().isCanWriteData(); validate &= centralSourceModel.getDataSourceInformation() != null - && centralSourceModel.getDataSourceInformation().canWriteData(); + && centralSourceModel.getDataSourceInformation().canWriteData(); } @@ -1127,7 +1142,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut le fichier di'mport existe File reportFile = getReportModel().getReportFile(); validate &= reportFile != null && - reportFile.exists(); + reportFile.exists(); } break; case SELECT_DATA: @@ -1174,21 +1189,21 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut exactement une Trip de selectionnee boolean empty = selectionModel.isDataEmpty(); validate &= !empty && - selectionModel.getSelectedData().size() == 1; + selectionModel.getSelectedData().size() == 1; } } break; case VALIDATE: validate &= validate(AdminStep.SELECT_DATA) && - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case EXPORT_DATA: validate &= validate(AdminStep.SELECT_DATA) && - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case CONSOLIDATE: validate &= validate(AdminStep.SELECT_DATA) && - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case REPORT: @@ -1202,7 +1217,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { case SAVE_LOCAL: // valide si l'action a ete executee avec success validate &= !getSaveLocalModel().isDoBackup() || - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case SHOW_RESUME: validate = true; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java new file mode 100644 index 0000000..26689a2 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java @@ -0,0 +1,25 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class CopyToLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public CopyToLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.copyToLeftTask", decorateProgram(), decorateTrip()); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java new file mode 100644 index 0000000..03bf7f0 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java @@ -0,0 +1,26 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class CopyToRightDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public CopyToRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.copyToRightTask", decorateProgram(), decorateTrip()); + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java index 1371502..d41df3c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java @@ -7,16 +7,23 @@ import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.DefaultListModel; + /** * Created on 02/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class DataSynchroModel extends AdminActionModel { /** Logger. */ private static final Log log = LogFactory.getLog(DataSynchroModel.class); + public static final String LEFT_SOURCE_PROPERTY_NAME = "leftSource"; + public static final String RIGHT_SOURCE_PROPERTY_NAME = "rightSource"; + public static final String TASKS_PROPERTY_NAME = "tasks"; + public static final String LEFT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "leftSelectionModelChanged"; public static final String RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "rightSelectionModelChanged"; @@ -32,6 +39,8 @@ public class DataSynchroModel extends AdminActionModel { /** les données sélectionnées sur le panneau de droite. */ protected final DataSelectionModel rightSelectionDataModel; + protected final DefaultListModel<DataSynchronizeTaskSupport> tasks; + public DataSynchroModel() { super(AdminStep.DATA_SYNCHRONIZE); @@ -40,6 +49,8 @@ public class DataSynchroModel extends AdminActionModel { rightSelectionDataModel = new DataSelectionModel(); rightSelectionDataModel.setUseData(true); + tasks = new DefaultListModel<>(); + } public ObserveSwingDataSource getLeftSource() { @@ -48,6 +59,7 @@ public class DataSynchroModel extends AdminActionModel { public void setLeftSource(ObserveSwingDataSource leftSource) { this.leftSource = leftSource; + firePropertyChange(LEFT_SOURCE_PROPERTY_NAME, leftSource); } public ObserveSwingDataSource getRightSource() { @@ -56,6 +68,7 @@ public class DataSynchroModel extends AdminActionModel { public void setRightSource(ObserveSwingDataSource rightSource) { this.rightSource = rightSource; + firePropertyChange(RIGHT_SOURCE_PROPERTY_NAME, rightSource); } public DataSelectionModel getLeftSelectionDataModel() { @@ -74,6 +87,14 @@ public class DataSynchroModel extends AdminActionModel { populateSelectionModel(rightSource, rightSelectionDataModel, RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME); } + public DefaultListModel<DataSynchronizeTaskSupport> getTasks() { + return tasks; + } + + public void addTask(DataSynchronizeTaskSupport task) { + tasks.addElement(task); + } + private void populateSelectionModel(ObserveSwingDataSource dataSource, DataSelectionModel selectionDataModel, String propertyName) { try { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx index 0d21a11..61cbf25 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx @@ -37,6 +37,7 @@ jaxx.runtime.SwingUtil + javax.swing.ListSelectionModel javax.swing.tree.TreeSelectionModel </import> @@ -76,7 +77,7 @@ public void destroy() { ]]> </script> - <JPanel id='PENDING_content'> + <!--JPanel id='PENDING_content'> <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> @@ -85,43 +86,52 @@ public void destroy() { </cell> </row> </Table> - </JPanel> + </JPanel--> - <JPanel id='NEED_FIX_content'> - <Table fill="both" constraints='BorderLayout.CENTER'> - <row weighty="0.8"> - <cell weightx="0.4"> - <JScrollPane id='leftTreePane' decorator='boxed'> - <JTree id='leftTree'/> - </JScrollPane> - </cell> - <cell weightx="0.2"> - <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> - <JPanel id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.CENTER'> - <JButton id="copyToRight"/> - <JButton id="copyToLeft"/> - <JButton id="deleteFromLeft"/> - <JButton id="deleteFromRight"/> + <JPanel id='PENDING_content'> + <JSplitPane id="contentSplitPane" constraints='BorderLayout.CENTER'> + <Table fill="both"> + <row weighty="1"> + <cell weightx="0.45"> + <JScrollPane id='leftTreePane' decorator='boxed'> + <JTree id='leftTree'/> + </JScrollPane> + </cell> + <cell weightx="0.1"> + <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> + <JPanel id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.CENTER'> + <JButton id="copyToRight" onActionPerformed="getHandler().addCopyToRightTasks()"/> + <JButton id="copyToLeft" onActionPerformed="getHandler().addCopyToLeftTasks()"/> + <JButton id="deleteFromLeft" onActionPerformed="getHandler().addDeleteFromLeftTasks()"/> + <JButton id="deleteFromRight" onActionPerformed="getHandler().addDeleteFromRightTasks()"/> + </JPanel> </JPanel> - </JPanel> - </cell> - <cell weightx="0.4"> - <JScrollPane id='rightTreePane' decorator='boxed'> - <JTree id='rightTree'/> - </JScrollPane> - </cell> - </row> - <row weighty="0.8"> - <cell columns="3"> - <JList id="actionsToConsume"/> - </cell> - </row> - <row> - <cell columns='3'> - <JButton id='applyAction' onActionPerformed='getHandler().doExecuteAction()'/> - </cell> - </row> - </Table> + </cell> + <cell weightx="0.45"> + <JScrollPane id='rightTreePane' decorator='boxed'> + <JTree id='rightTree'/> + </JScrollPane> + </cell> + </row> + </Table> + <Table fill="both"> + <row weighty="1"> + <cell weightx="1"> + <JScrollPane id='actionsToConsumePane'> + <JList id="actionsToConsume" onMouseClicked="getHandler().removeTasks(event)"/> + </JScrollPane> + </cell> + </row> + <row> + <cell> + <JPanel layout="{new BorderLayout()}" > + <JButton id='applyAction' constraints='BorderLayout.CENTER' onActionPerformed='getHandler().doExecuteAction()'/> + </JPanel> + </cell> + </row> + </Table> + </JSplitPane> + </JPanel> </fr.ird.observe.ui.admin.AdminTabUI> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss index c7781a4..6073115 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss @@ -28,6 +28,11 @@ layout:{new BorderLayout()}; } +#contentSplitPane { + orientation: {JSplitPane.VERTICAL_SPLIT}; + resizeWeight: 0.8; +} + #startAction { actionIcon:"wizard-start"; } @@ -101,6 +106,13 @@ enabled:false; } -#actionsToConsume { +#actionsToConsumePane { border:{new TitledBorder(t("observe.datasynchro.actionsToPerform"))}; + verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#actionsToConsume { + selectionMode:{ListSelectionModel.SINGLE_SELECTION}; + cellRenderer:{new DataSynchronizeTaskListCellRenderer()}; + model:{getStepModel().getTasks()}; } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index 200b2dc..98b49fd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -1,14 +1,25 @@ package fr.ird.observe.ui.admin.datasynchro; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; +import fr.ird.observe.ui.tree.DataSelectionTreeCellRenderer; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.JList; import javax.swing.border.TitledBorder; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.Map; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -16,6 +27,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 02/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class DataSynchroUIHandler extends AdminTabUIHandler { @@ -43,7 +55,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); } - tabUI.getStartAction().setText(t("observe.action.datasynchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); +// tabUI.getStartAction().setText(t("observe.action.datasynchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); getStepModel().getLeftSelectionDataModel().addPropertyChangeListener(evt -> { @@ -64,58 +76,190 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { }); - } + DataSelectionTreeCellRenderer.initUI(tabUI.getLeftTreePane(), tabUI.getLeftTree()); + DataSelectionTreeCellRenderer.initUI(tabUI.getRightTreePane(), tabUI.getRightTree()); + + getStepModel().addPropertyChangeListener(DataSynchroModel.LEFT_SOURCE_PROPERTY_NAME, evt -> { + + DataSynchroModel stepModel = (DataSynchroModel) evt.getSource(); + ObserveSwingDataSource dataSource = (ObserveSwingDataSource) evt.getNewValue(); + + tabUI.getLeftTreePane().setBorder(new TitledBorder(getModel().getLocalSourceModel().getLabel())); + stepModel.populateLeftSelectionModel(); + updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), dataSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); + sendMessage(t("observe.message.datasynchro.leftData.loaded")); + }); + + getStepModel().addPropertyChangeListener(DataSynchroModel.RIGHT_SOURCE_PROPERTY_NAME, evt -> { - public void doPrepareAction() { + DataSynchroModel stepModel = (DataSynchroModel) evt.getSource(); + ObserveSwingDataSource dataSource = (ObserveSwingDataSource) evt.getNewValue(); - addAdminWorker(getUi().getStartAction().getToolTipText(), this::doAction); + tabUI.getRightTreePane().setBorder(new TitledBorder(getModel().getCentralSourceModel().getLabel())); + stepModel.populateRightSelectionModel(); + updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), dataSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); + sendMessage(t("observe.message.datasynchro.rightData.loaded")); + + }); } - public void doExecuteAction() { +// public void doPrepareAction() { +// +// addAdminWorker(getUi().getStartAction().getToolTipText(), this::doAction); +// +// } + + public void addCopyToLeftTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getRightSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getRightTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new CopyToLeftDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } + } - //TODO - getModel().setStepState(WizardState.SUCCESSED); } - private WizardState doAction() throws Exception { + public void addCopyToRightTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getLeftSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getLeftTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new CopyToRightDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } + } - if (log.isDebugEnabled()) { - log.debug(this); + } + + public void addDeleteFromLeftTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getLeftSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getLeftTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new DeleteFromLeftDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } + } + + } + + public void addDeleteFromRightTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getRightSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getRightTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new DeleteFromRightDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } } - DataSynchroModel stepModel = getStepModel(); + } - // on cree les sources de données + public void removeTasks(MouseEvent event) { - ObserveSwingDataSource leftSource = model.getSafeLocalSource(false); - stepModel.setLeftSource(leftSource); + if (event.getClickCount() > 1) { - ObserveSwingDataSource rightSource = model.getSafeCentralSource(false); - stepModel.setRightSource(rightSource); + JList source = (JList) event.getSource(); + int selectionIndex = source.getMinSelectionIndex(); + DataSynchronizeTaskSupport task = getStepModel().getTasks().getElementAt(selectionIndex); + getStepModel().getTasks().removeElementAt(selectionIndex); - openSource(leftSource); - openSource(rightSource); + ObserveTreeHelper treeHelper; + DataSelectionModel selectionDataModel; + if (task instanceof CopyToLeftDataSynchronizeTask || task instanceof DeleteFromRightDataSynchronizeTask) { - // Populate tree models + // push back to right tree + treeHelper = getUi().getRightTreeHelper(); + selectionDataModel = getStepModel().getRightSelectionDataModel(); + } else { - DataSynchroUI tabUI = getUi(); + // push back to left tree - tabUI.getLeftTreePane().setBorder(new TitledBorder(leftSource.getLabel())); - stepModel.populateLeftSelectionModel(); - updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); - sendMessage(t("observe.message.datasynchro.leftData.loaded")); + treeHelper = getUi().getLeftTreeHelper(); + selectionDataModel = getStepModel().getLeftSelectionDataModel(); + } - tabUI.getRightTreePane().setBorder(new TitledBorder(rightSource.getLabel())); - stepModel.populateRightSelectionModel(); - updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), rightSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); - sendMessage(t("observe.message.datasynchro.rightData.loaded")); + ReferentialReference<ProgramDto> program = task.getProgram(); + DataReference trip = task.getTrip(); - sendMessage(t("observe.message.datasynchro.ready")); + Set<ReferentialReference<ProgramDto>> programs = selectionDataModel.getPrograms(); + ObserveNode programNode; + if (programs.contains(program)) { + programNode = treeHelper.getChild(treeHelper.getRootNode(), program.getId()); + } else { + programNode = treeHelper.addProgram(programs, program); + } - return WizardState.NEED_FIX; + selectionDataModel.addData(program, trip); + treeHelper.addSimpleTrip(programNode, trip); + } } + public void doExecuteAction() { + + //TODO + getModel().setStepState(WizardState.SUCCESSED); + + } + +// private WizardState doAction() throws Exception { +// +// if (log.isDebugEnabled()) { +// log.debug(this); +// } +// +// DataSynchroModel stepModel = getStepModel(); +// +// // on cree les sources de données +// +// ObserveSwingDataSource leftSource = model.getSafeLocalSource(false); +// openSource(leftSource); +// stepModel.setLeftSource(leftSource); +// +// ObserveSwingDataSource rightSource = model.getSafeCentralSource(false); +// openSource(rightSource); +// stepModel.setRightSource(rightSource); +// +// +// // Populate tree models +// +// DataSynchroUI tabUI = getUi(); +// +// tabUI.getLeftTreePane().setBorder(new TitledBorder(leftSource.getLabel())); +// stepModel.populateLeftSelectionModel(); +// updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); +// sendMessage(t("observe.message.datasynchro.leftData.loaded")); +// +// +// sendMessage(t("observe.message.datasynchro.ready")); +// +// return WizardState.NEED_FIX; +// +// } + } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java new file mode 100644 index 0000000..cccbbab --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java @@ -0,0 +1,37 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import jaxx.runtime.SwingUtil; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.ImageIcon; +import javax.swing.JList; +import java.awt.Component; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DataSynchronizeTaskListCellRenderer extends DefaultListCellRenderer { + + private static final long serialVersionUID = 1L; + + private final ImageIcon icon; + + public DataSynchronizeTaskListCellRenderer() { + icon = SwingUtil.createActionIcon("cancel"); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + + DataSynchronizeTaskSupport task = (DataSynchronizeTaskSupport) value; + String label = task.getLabel(); + Component listCellRendererComponent = super.getListCellRendererComponent(list, label, index, isSelected, cellHasFocus); + setIcon(icon); + return listCellRendererComponent; + + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java new file mode 100644 index 0000000..b60565f --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java @@ -0,0 +1,47 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public abstract class DataSynchronizeTaskSupport { + + private final ReferentialReference<ProgramDto> program; + private final DataReference trip; + + public abstract String getLabel(); + + public ReferentialReference<ProgramDto> getProgram() { + return program; + } + + public DataReference getTrip() { + return trip; + } + + protected DataSynchronizeTaskSupport(ReferentialReference<ProgramDto> program, DataReference trip) { + this.program = program; + this.trip = trip; + } + + protected String decorateProgram() { + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); + String programStr = decoratorService.getReferentialReferenceDecorator(ProgramDto.class).toString(getProgram()); + return programStr; + } + + protected String decorateTrip() { + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); + String tripStr = decoratorService.getTripReferenceDecorator(getTrip()).toString(getTrip()); + return tripStr; + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java new file mode 100644 index 0000000..d6705fb --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java @@ -0,0 +1,25 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DeleteFromLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public DeleteFromLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.deleteFromLeftTask", decorateProgram(), decorateTrip()); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java new file mode 100644 index 0000000..b891c9a --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java @@ -0,0 +1,25 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DeleteFromRightDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public DeleteFromRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.deleteFromRightTask", decorateProgram(), decorateTrip()); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index 95aecc8..9f7f29e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -47,6 +47,7 @@ import org.apache.commons.logging.LogFactory; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -539,4 +540,24 @@ public class DataSelectionModel implements Serializable { return result; } + + public void addData(ReferentialReference<ProgramDto> program, DataReference trip) { + if (!getDatas().containsKey(program)) { + getDatas().put(program, new ArrayList<>()); + } + getDatas(program.getId()).add(trip); + firePropertyChange(PROPERTY_DATAS, getDatas()); + } + + public Set<ReferentialReference<ProgramDto>> getPrograms() { + return getDatas().keySet(); + } + + public void removeTrip(ReferentialReference<ProgramDto> program, DataReference trip) { + List<DataReference> trips = getDatas(program.getId()); + trips.remove(trip); + if (trips.isEmpty()) { + getDatas().remove(program); + } + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 6c28585..97d0aa5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -377,8 +377,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } finally { getBridge().setPathToSelect(); if (log.isInfoEnabled()) { - log.info("Creates " + (ObserveNode.count - count) + - " nodes to select path " + Arrays.toString(path)); + log.info("Creates " + (ObserveNode.count - count) + " nodes to select path " + Arrays.toString(path)); } } } @@ -457,6 +456,35 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { return result; } + public ObserveNode addSimpleTrip(ObserveNode parentNode, DataReference<?> bean) { + ObserveNode result; + + if (bean.getType().isAssignableFrom(TripSeineDto.class)) { + + ProgramSeineNodeChildLoador loador = getChildLoador(ProgramSeineNodeChildLoador.class); + boolean addChilds = loador.isAddChilds(); + loador.setAddChilds(false); + try { + result = loador.createNode((DataReference<TripSeineDto>) bean, dataProvider); + insertNode(parentNode, result); + } finally { + loador.setAddChilds(addChilds); + } + } else { + + ProgramLonglineNodeChildLoador loador = getChildLoador(ProgramLonglineNodeChildLoador.class); + boolean addChilds = loador.isAddChilds(); + loador.setAddChilds(false); + try { + result = loador.createNode((DataReference<TripLonglineDto>) bean, dataProvider); + insertNode(parentNode, result); + } finally { + loador.setAddChilds(addChilds); + } + } + return result; + } + public ObserveNode addRoute(ObserveNode parentNode, DataReference<RouteDto> bean) { RoutesNodeChildLoador loador = getChildLoador(RoutesNodeChildLoador.class); @@ -508,7 +536,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { public ObserveNode addProgram(ReferentialReference<ProgramDto> bean) { Set<ReferentialReference<ProgramDto>> programs = getDataProvider().getDataSource().getReferentialReferences(ProgramDto.class); - List data = Lists.newArrayList(programs); + List<ReferentialReference<ProgramDto>> data = Lists.newArrayList(programs); int newIndex = 0; if (CollectionUtils.isNotEmpty(data)) { sortPrograms(data); @@ -536,6 +564,35 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { refreshNode(result, false); } + public ObserveNode addProgram(Set<ReferentialReference<ProgramDto>> existingPrograms, ReferentialReference<ProgramDto> bean) { + + List<ReferentialReference<ProgramDto>> data = Lists.newArrayList(existingPrograms); + data.add(bean); + int newIndex = 0; + if (CollectionUtils.isNotEmpty(data)) { + sortPrograms(data); + newIndex = data.indexOf(bean); + } + RootNodeChildLoador loador = getChildLoador(RootNodeChildLoador.class); + ObserveNode result = loador.createNode(bean, dataProvider); + insertNode(getRootNode(), result, newIndex); + return result; + } + + public void removeTrip(ReferentialReference<ProgramDto> program, DataReference trip) { + + ObserveNode rootNode = getRootNode(); + ObserveNode programNode = rootNode.getChild(program.getId(), getBridge(), dataProvider); + Preconditions.checkNotNull(programNode, "Could not find program node with id: " + program); + ObserveNode tripNode = programNode.getChild(trip.getId(), getBridge(), dataProvider); + Preconditions.checkNotNull(tripNode, "Could not find program node with id: " + trip); + removeNode(tripNode); + + if (programNode.isLeaf()) { + removeProgram(program.getId()); + } + } + public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChilds) { ObserveNode node = getSelectedNode(); ((AbstrctReferenceNodeSupport) node).setReloadEntity(true); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index 70c65bc..b786b43 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -134,5 +134,12 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Data } + public void setAddChilds(boolean addChilds) { + this.addChilds = addChilds; + } + + public boolean isAddChilds() { + return addChilds; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java index 03899dc..5dc088f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -128,4 +128,12 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<DataRef return result; } + + public boolean isAddChilds() { + return addChilds; + } + + public void setAddChilds(boolean addChilds) { + this.addChilds = addChilds; + } } 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 908924b..7d26d45 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 @@ -1042,6 +1042,10 @@ observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= observe.datasynchro.actionsToPerform= +observe.datasynchro.copyToLeftTask= +observe.datasynchro.copyToRightTask= +observe.datasynchro.deleteFromLeftTask= +observe.datasynchro.deleteFromRightTask= observe.encounter.action.create=Insert this encounter observe.encounter.action.create.tip=Insert this encounter observe.encounter.count=Count 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 6b9c8cf..bc0bf88 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 @@ -1042,6 +1042,10 @@ observe.content.mode.create.tip=Objeto en proceso de creación observe.content.mode.read.tip=Objeto no se puede editar observe.content.mode.update.tip=Objeto en proceso de edición observe.datasynchro.actionsToPerform= +observe.datasynchro.copyToLeftTask= +observe.datasynchro.copyToRightTask= +observe.datasynchro.deleteFromLeftTask= +observe.datasynchro.deleteFromRightTask= observe.encounter.action.create= observe.encounter.action.create.tip= observe.encounter.count= 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 770bc94..279004e 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 @@ -1041,6 +1041,10 @@ observe.content.mode.create.tip=L'objet est en cours de création observe.content.mode.read.tip=L'objet n'est pas éditable observe.content.mode.update.tip=L'objet est en cours d'édition observe.datasynchro.actionsToPerform=Opérations à réaliser +observe.datasynchro.copyToLeftTask=Copier vers la base de gauche \: %s - %s +observe.datasynchro.copyToRightTask=Copier vers la base de droite \: %s - %s +observe.datasynchro.deleteFromLeftTask=Supprimer de la base de gauche \: %s - %s +observe.datasynchro.deleteFromRightTask=Supprimer de la base de droite \: %s - %s observe.encounter.action.create=Insérer cette rencontre observe.encounter.action.create.tip=Insérer cette rencontre observe.encounter.count=Nombre -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm