Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 208943b4 by tchemit at 2020-04-15T17:51:29+02:00 Amélioration des logs serveur - Closes ultreiaio/ird-observe#1464 - - - - - d4f87cc2 by tchemit at 2020-04-15T18:05:21+02:00 [SYNCHRO AVANCEE DATA] Visualisation du nom des bases en présence - Closes #1465 - - - - - c542b7be by tchemit at 2020-04-15T18:26:50+02:00 update pom and toolkit - - - - - 19 changed files: - client-core/src/main/java/fr/ird/observe/client/util/ObserveKeyStrokesSupport.java - client-datasource-actions/src/main/i18n/getters/java.getter - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroModel.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroUI.jaxx - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroUI.jcss - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroUIHandler.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Start.java - + client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/DataSelectionTreePane.jaxx - + client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/DataSelectionTreePane.jcss - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/CopyFromRight.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/DataSelectionTreePaneHandler.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/DeleteFromRight.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/DataSelectionTreePaneActionSupport.java - + client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/DataSourceInformation.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/CopyFromLeft.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/RegisterCopy.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/DeleteFromLeft.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/RegisterDelete.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/SelectUnselect.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/SelectionTree.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/actions/SelectUnselect.java - pom.xml - server-core/src/main/java/fr/ird/observe/server/injector/ObserveDtoInjector.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/util/ObserveKeyStrokesSupport.java ===================================== @@ -59,10 +59,10 @@ public abstract class ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_CANCEL = KeyStroke.getKeyStroke("alt pressed A"); public static final KeyStroke KEY_STROKE_EXIT = KeyStroke.getKeyStroke("alt pressed F"); - public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_COPY_FROM_LEFT = KeyStroke.getKeyStroke("ctrl pressed C"); - public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_LEFT = KeyStroke.getKeyStroke("ctrl pressed D"); - public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_COPY_FROM_RIGHT = KeyStroke.getKeyStroke("shift ctrl pressed C"); - public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_RIGHT = KeyStroke.getKeyStroke("shift ctrl pressed D"); + public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_COPY = KeyStroke.getKeyStroke("pressed F1"); + public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_DELETE = KeyStroke.getKeyStroke("pressed F2"); + public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_COPY_FROM_RIGHT = KeyStroke.getKeyStroke("shift pressed F1"); + public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_RIGHT = KeyStroke.getKeyStroke("shift pressed F2"); public static final KeyStroke KEY_STROKE_STORAGE_DO_CONFIGURE_REMOTE = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK); public static final KeyStroke KEY_STROKE_STORAGE_DO_CONFIGURE_SERVER = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK); ===================================== client-datasource-actions/src/main/i18n/getters/java.getter ===================================== @@ -18,7 +18,6 @@ observe.action.goto.next.stage observe.action.goto.next.stage.tip observe.action.goto.previous.stage observe.action.goto.previous.stage.tip -observe.action.info.storage observe.action.info.storage.tip observe.action.validate.config.generateReport observe.actions.consolidate ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroModel.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.actions.AdminActionModel; import fr.ird.observe.client.datasource.actions.AdminStep; import fr.ird.observe.client.datasource.actions.AdminUI; import fr.ird.observe.client.datasource.actions.synchronize.data.task.DataSynchronizeTaskSupport; +import fr.ird.observe.client.datasource.actions.synchronize.referential.ng.ReferentialSynchroUI; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreeModel; import fr.ird.observe.client.util.ProgressModel; @@ -46,6 +47,7 @@ public class DataSynchroModel extends AdminActionModel { private static final String RIGHT_SOURCE_PROPERTY_NAME = "rightSource"; private static final String LEFT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "leftSelectionModelChanged"; private static final String RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "rightSelectionModelChanged"; + private static final String TASKS_EMPTY_PROPERTY_NAME = "tasksEmpty"; private static final Logger log = LogManager.getLogger(DataSynchroModel.class); private final DefaultListModel<DataSynchronizeTaskSupport> tasks; @@ -97,7 +99,7 @@ public class DataSynchroModel extends AdminActionModel { return leftSelectionDataModel; } - void setLeftSelectionDataModel(SelectionTreeModel leftSelectionDataModel) { + public void setLeftSelectionDataModel(SelectionTreeModel leftSelectionDataModel) { this.leftSelectionDataModel = leftSelectionDataModel; } @@ -105,7 +107,7 @@ public class DataSynchroModel extends AdminActionModel { return rightSelectionDataModel; } - void setRightSelectionDataModel(SelectionTreeModel rightSelectionDataModel) { + public void setRightSelectionDataModel(SelectionTreeModel rightSelectionDataModel) { this.rightSelectionDataModel = rightSelectionDataModel; } @@ -122,7 +124,13 @@ public class DataSynchroModel extends AdminActionModel { } public void addTask(DataSynchronizeTaskSupport task) { + boolean tasksEmpty = isTasksEmpty(); tasks.addElement(task); + firePropertyChange(TASKS_EMPTY_PROPERTY_NAME, tasksEmpty, isTasksEmpty()); + } + + public boolean isTasksEmpty() { + return tasks.isEmpty(); } private void populateSelectionModel(ObserveSwingDataSource dataSource, SelectionTreeModel selectionDataModel, String propertyName) { @@ -143,7 +151,7 @@ public class DataSynchroModel extends AdminActionModel { //FIXME Check we don't need any longer // configUI.getLocalSourceConfig().setBorder(new TitledBorder(ui.getModel().getConfigModel().getLocalSourceLabel())); // configUI.getCentralSourceConfig().setBorder(new TitledBorder(ui.getModel().getConfigModel().getCentralSourceLabel())); - + ((DataSynchroUI)ui.getStepUI(AdminStep.DATA_SYNCHRONIZE)).getApply().setEnabled(false); } public ProgressModel getProgressModel() { ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroUI.jaxx ===================================== @@ -24,10 +24,7 @@ fr.ird.observe.client.util.UIHelper fr.ird.observe.client.datasource.actions.AdminUI fr.ird.observe.client.datasource.actions.AdminStep - fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreePane - org.nuiton.jaxx.runtime.swing.SwingUtil - - javax.swing.ListSelectionModel + fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane static io.ultreia.java4all.i18n.I18n.t </import> @@ -35,8 +32,7 @@ <DataSynchroModel id='stepModel' initializer='getModel().getDataSynchroModel()'/> <JPanel id='PENDING_content'> - <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' - weighty='1'> + <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> <cell> <JButton id='start'/> @@ -48,22 +44,12 @@ <JSplitPane id="contentSplitPane" constraints='BorderLayout.CENTER'> <Table id='contentNorth' fill="both" weighty="1"> <row> - <cell weightx="0.45"> - <SelectionTreePane id="leftTreePane"/> - </cell> - <cell weightx="0.1"> - <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> - <JPanel id="middleActions" layout="{new GridLayout(0, 2)}" constraints='BorderLayout.CENTER'> - <JButton id="copyFromLeft" styleClass="disabled"/> - <JButton id="copyFromRight" styleClass="disabled"/> - <JButton id="deleteFromLeft" styleClass="disabled"/> - <JButton id="deleteFromRight" styleClass="disabled"/> - </JPanel> + <cell weightx="1"> + <JPanel layout="{new GridLayout(1, 0)}"> + <DataSelectionTreePane id="leftTreePane" constructorParams="UIHelper.initialContext(this, false)"/> + <DataSelectionTreePane id="rightTreePane" constructorParams="UIHelper.initialContext(this, true)"/> </JPanel> </cell> - <cell weightx="0.45"> - <SelectionTreePane id="rightTreePane" constructorParams="true"/> - </cell> </row> </Table> <Table id='contentSouth' fill="both"> ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroUI.jcss ===================================== @@ -33,29 +33,17 @@ resizeWeight: 0.8; } -#copyToLeft { - enabled:false; -} - -#copyToRight { - enabled:false; -} - -#deleteFromLeft { - enabled:false; -} - -#deleteFromRight { - enabled:false; -} - #actionsToConsumePane { border:{new TitledBorder(t("observe.actions.synchro.data.actionsToPerform"))}; verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; } #actionsToConsume { - selectionMode:{ListSelectionModel.SINGLE_SELECTION}; + selectionMode:{javax.swing.ListSelectionModel.SINGLE_SELECTION}; cellRenderer:{new DataSynchronizeTaskListCellRenderer()}; - model:{getStepModel().getTasks()}; + model:{stepModel.getTasks()}; +} + +#apply { + enabled:{!stepModel.isTasksEmpty()}; } ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/DataSynchroUIHandler.java ===================================== @@ -24,12 +24,18 @@ package fr.ird.observe.client.datasource.actions.synchronize.data; import fr.ird.observe.client.datasource.actions.AdminStep; import fr.ird.observe.client.datasource.actions.AdminTabUIHandler; +import fr.ird.observe.client.datasource.actions.config.ConfigModel; import fr.ird.observe.client.datasource.actions.config.ConfigUI; -import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTree; -import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreeModel; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane; +import fr.ird.observe.client.datasource.editor.tree.selection.actions.SelectUnselectWithOpposite; import fr.ird.observe.client.datasource.editor.wizard.StorageUIModel; +import fr.ird.observe.client.datasource.editor.wizard.connexion.DataSourceSelector; +import fr.ird.observe.client.datasource.editor.wizard.connexion.DataSourceSelectorModel; import org.nuiton.jaxx.runtime.spi.UIHandler; +import javax.swing.border.TitledBorder; +import java.awt.Color; + /** * Created on 02/08/16. * @@ -37,48 +43,62 @@ import org.nuiton.jaxx.runtime.spi.UIHandler; * @since 5.0 */ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> implements UIHandler<DataSynchroUI> { + public static final String SYNCHRO_PARENT = "synchroParent"; + + @Override + public void beforeInit(DataSynchroUI ui) { + super.beforeInit(ui); + ui.setContextValue(ui, SYNCHRO_PARENT); + } @Override public void afterInit(DataSynchroUI ui) { super.afterInit(ui); ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); - configUI.getStepModel().addPropertyChangeListener(StorageUIModel.VALID_PROPERTY_NAME, evt -> updateFromConfig()); - DataSynchroModel stepModel = getStepModel(); - - SelectionTree leftTree = ui.getLeftTreePane().getTree(); - SelectionTreeModel leftSelectionDataModel = leftTree.getTreeModel(); - stepModel.setLeftSelectionDataModel(leftSelectionDataModel); - leftSelectionDataModel.setLoadLongline(true); - leftSelectionDataModel.setLoadSeine(true); - leftSelectionDataModel.setLoadReferential(false); - leftSelectionDataModel.setShowEmptyTrips(false); - - SelectionTree rightTree = ui.getRightTreePane().getTree(); - SelectionTreeModel rightSelectionDataModel = rightTree.getTreeModel(); - stepModel.setRightSelectionDataModel(rightSelectionDataModel); - rightSelectionDataModel.setLoadLongline(true); - rightSelectionDataModel.setLoadSeine(true); - rightSelectionDataModel.setLoadReferential(false); - rightSelectionDataModel.setShowEmptyTrips(false); - - // on n'installe qu'une seule fois l'ui - leftTree.installUI2(ui.getLeftTreePane(), ui.getRightTreePane()); - - stepModel.getLeftSelectionDataModel().addPropertyChangeListener(evt -> { - SelectionTreeModel model = (SelectionTreeModel) evt.getSource(); - boolean withDataSelected = !model.isSelectionEmpty(); - ui.getCopyFromLeft().setEnabled(withDataSelected); - ui.getDeleteFromLeft().setEnabled(withDataSelected); - - }); - stepModel.getRightSelectionDataModel().addPropertyChangeListener(evt -> { - SelectionTreeModel model = (SelectionTreeModel) evt.getSource(); - boolean withDataSelected = !model.isSelectionEmpty(); - ui.getCopyFromRight().setEnabled(withDataSelected); - ui.getDeleteFromRight().setEnabled(withDataSelected); - }); - - stepModel.getProgressModel().installUI(ui.getProgressBar()); + DataSourceSelector leftSourceConfig = configUI.getLocalSourceConfig(); + DataSourceSelector rightSourceConfig = configUI.getCentralSourceConfig(); + ConfigModel stepModel = configUI.getStepModel(); + stepModel.addPropertyChangeListener(StorageUIModel.VALID_PROPERTY_NAME, evt -> updateFromConfig()); + + initSource(configUI, ui.getLeftTreePane(), stepModel.getLocalSourceModel(), leftSourceConfig, rightSourceConfig); + initSource(configUI, ui.getRightTreePane(), stepModel.getCentralSourceModel(), leftSourceConfig, rightSourceConfig); + + SelectUnselectWithOpposite.init(ui.getLeftTreePane().getTree(), null, new SelectUnselectWithOpposite(ui.getRightTreePane().getTree())); + + getStepModel().getProgressModel().installUI(ui.getProgressBar()); + } + + private void initSource(ConfigUI configUI, DataSelectionTreePane treePane, DataSourceSelectorModel sourceModel, DataSourceSelector leftSourceConfig, DataSourceSelector rightSourceConfig) { + treePane.init(); + sourceModel.addPropertyChangeListener(DataSourceSelectorModel.VALID_PROPERTY_NAME, evt -> onSourceValidChanged(configUI, leftSourceConfig, rightSourceConfig)); + } + + private void onSourceValidChanged(ConfigUI configUI, DataSourceSelector leftSourceConfig, DataSourceSelector rightSourceConfig) { + DataSourceSelectorModel leftSourceModel = configUI.getStepModel().getLocalSourceModel(); + DataSourceSelectorModel rightSourceModel = configUI.getStepModel().getCentralSourceModel(); + boolean leftSourceValid = leftSourceModel.isValid() && leftSourceModel.getDataSourceInformation() != null && leftSourceModel.getDataSourceInformation().canReadData(); + boolean rightSourceValid = rightSourceModel.isValid() && rightSourceModel.getDataSourceInformation() != null && rightSourceModel.getDataSourceInformation().canReadData(); + boolean atLeastOneWithWriteData = false; + if (leftSourceValid) { + atLeastOneWithWriteData = leftSourceModel.getDataSourceInformation().canWriteData(); + } + if (!atLeastOneWithWriteData && rightSourceValid) { + atLeastOneWithWriteData = rightSourceModel.getDataSourceInformation().canWriteData(); + } + if (!atLeastOneWithWriteData) { + leftSourceValid = rightSourceValid = false; + } + + setBorderColor(leftSourceConfig, leftSourceValid); + setBorderColor(rightSourceConfig, rightSourceValid); + + } + + private void setBorderColor(DataSourceSelector sourceConfig, boolean valid) { + TitledBorder border = (TitledBorder) sourceConfig.getBorder(); + Color color = valid ? Color.BLACK : Color.RED; + border.setTitleColor(color); + sourceConfig.setBorder(border); } private void updateFromConfig() { ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Start.java ===================================== @@ -27,17 +27,28 @@ import fr.ird.observe.client.datasource.actions.config.ConfigModel; import fr.ird.observe.client.datasource.actions.config.ConfigUI; import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroModel; import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUI; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; +import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTree; +import fr.ird.observe.client.datasource.editor.tree.selection.nodes.SelectionTreeNodeSupport; +import fr.ird.observe.client.datasource.editor.wizard.connexion.DataSourceSelectorModel; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; import javax.swing.border.TitledBorder; +import javax.swing.tree.TreePath; import java.awt.Color; import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import static io.ultreia.java4all.i18n.I18n.t; public class Start extends DataSynchroUIActionSupport { + private static final Logger log = LogManager.getLogger(Start.class); + public Start() { super(t("observe.actions.synchro.data.launch.operation"), t("observe.actions.synchro.data.launch.operation"), "wizard-start", 'D'); } @@ -65,33 +76,50 @@ public class Start extends DataSynchroUIActionSupport { stepModel.setRightSource(rightSource); stepModel.populateLeftSelectionModel(); - sendMessage(t("observe.actions.synchro.data.message.data.loaded", leftSourceLabel)); - - TitledBorder leftBorder = new TitledBorder(leftSourceLabel); - boolean leftCanWriteData = configModel.getLocalSourceModel().getDataSourceInformation().canWriteData(); - leftBorder.setTitleColor(leftCanWriteData ? Color.GREEN : Color.RED); - tabUI.getLeftTreePane().setBorder(leftBorder); - if (!leftCanWriteData) { - tabUI.getCopyFromRight().setVisible(false); - tabUI.getDeleteFromRight().setVisible(false); - } - configUI.getLocalSourceConfig().setBorder(leftBorder); - + initPanel(leftSourceLabel, configModel.getLocalSourceModel(), rightSource.getInformation().canWriteData(), tabUI.getLeftTreePane()); stepModel.populateRightSelectionModel(); - sendMessage(t("observe.actions.synchro.data.message.data.loaded", rightSourceLabel)); - - TitledBorder rightBorder = new TitledBorder(rightSourceLabel); - boolean rightCanWriteData = configModel.getCentralSourceModel().getDataSourceInformation().canWriteData(); - rightBorder.setTitleColor(rightCanWriteData ? Color.GREEN : Color.RED); - tabUI.getRightTreePane().setBorder(rightBorder); - if (!rightCanWriteData) { - tabUI.getCopyFromLeft().setVisible(false); - tabUI.getDeleteFromLeft().setVisible(false); - } - configUI.getCentralSourceConfig().setBorder(rightBorder); + initPanel(rightSourceLabel, configModel.getCentralSourceModel(), leftSource.getInformation().canWriteData(), tabUI.getRightTreePane()); return WizardState.NEED_FIX; } + private void initPanel(String sourceLabel, DataSourceSelectorModel sourceModel,boolean oppositeCanWriteData, DataSelectionTreePane pane) { + + pane.setContextValue(sourceModel); + pane.setBorder(new TitledBorder("")); + + sendMessage(t("observe.actions.synchro.data.message.data.loaded", sourceLabel)); + + boolean canWriteData = sourceModel.getDataSourceInformation().canWriteData(); + Color color = canWriteData ? Color.BLACK : Color.RED; + + pane.getDelete().setVisible(canWriteData); + pane.getCopy().setVisible(oppositeCanWriteData); + + String label = sourceModel.getLabel(); + String labelWithUrl = sourceModel.getLabelWithUrl().substring(label.length() + 1); + pane.getDataSourceLabel().setIcon(sourceModel.getSource().getIcon()); + pane.getDataSourceLabel().setText(sourceModel.getSource().getLabel() + " " + labelWithUrl); + pane.getDataSourceLabel().setForeground(color); + + SelectionTree tree = pane.getTree().getTree(); + tree.addMouseListener(new MouseAdapter() { + @Override + public void mouseReleased(MouseEvent e) { + if (e.getClickCount() == 2) { + TreePath path = tree.getClosestPathForLocation(e.getX(), e.getY()); + Object lastPathComponent = path.getLastPathComponent(); + if (lastPathComponent instanceof SelectionTreeNodeSupport) { + SelectionTreeNodeSupport<?> node = (SelectionTreeNodeSupport<?>) lastPathComponent; + boolean newValue = !node.isSelected(); + log.info(String.format("Node: %s - new selected value: %s", node, newValue)); + tree.getTreeModel().setValueAt(node, newValue); + } + } + } + }); + + } + } ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/DataSelectionTreePane.jaxx ===================================== @@ -0,0 +1,55 @@ +<!-- + #%L + ObServe :: Client DataSource actions + %% + Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + %% + 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% + --> +<JPanel id='topPanel' layout="{new BorderLayout()}" decorator='boxed'> + + <import> + fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreePane + fr.ird.observe.client.util.UIHelper + </import> + <script><![CDATA[ + +public void init() { handler.init(this); } + +public boolean isLeft() { + return !isRight(); +} + +public boolean isRight() { + return Boolean.TRUE.equals(getOpposite()); +} +]]> + </script> + <Boolean id='opposite' initializer='getContextValue(Boolean.class)'/> + <JPanel id='dataSourcePanel' constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'> + <JLabel id='dataSourceLabel' constraints='BorderLayout.WEST'/> + <JToolBar id='dataSourceToolbar' constraints='BorderLayout.EAST'> + <JButton id='dataSourceInformation'/> + </JToolBar> + </JPanel> + + <SelectionTreePane id='tree' constructorParams="isRight()" constraints='BorderLayout.CENTER'/> + <JToolBar id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.EAST'> + <JButton id="copy" enabled="false"/> + <JButton id="delete" enabled="false"/> + </JToolBar> + +</JPanel> ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/DataSelectionTreePane.jcss ===================================== @@ -0,0 +1,21 @@ +/*- + * #%L + * ObServe :: Client DataSource actions + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * 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% + */ ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/CopyFromRight.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/DataSelectionTreePaneHandler.java ===================================== @@ -1,4 +1,4 @@ -package fr.ird.observe.client.datasource.actions.synchronize.data.actions; +package fr.ird.observe.client.datasource.actions.synchronize.data.tree; /*- * #%L @@ -24,40 +24,48 @@ package fr.ird.observe.client.datasource.actions.synchronize.data.actions; import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroModel; import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUI; -import fr.ird.observe.client.datasource.actions.synchronize.data.task.CopyToLeftDataSynchronizeTask; +import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUIHandler; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.actions.RegisterCopy; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.actions.RegisterDelete; import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreeModel; -import fr.ird.observe.client.util.ObserveKeyStrokesSupport; -import fr.ird.observe.dto.data.TripAware; -import fr.ird.observe.dto.referential.common.ProgramReference; +import org.nuiton.jaxx.runtime.spi.UIHandler; -import java.awt.event.ActionEvent; -import java.util.List; -import java.util.Map; +import java.awt.BorderLayout; -import static io.ultreia.java4all.i18n.I18n.t; +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8.0 + */ +public class DataSelectionTreePaneHandler implements UIHandler<DataSelectionTreePane> { -public class CopyFromRight extends DataSynchroUIActionSupport { + void init(DataSelectionTreePane ui) { + boolean isLeft = ui.isLeft(); + RegisterCopy.init(ui, ui.getCopy(), new RegisterCopy(isLeft)); + RegisterDelete.init(ui, ui.getDelete(), new RegisterDelete(isLeft)); + DataSynchroUI parent = ui.getContextValue(DataSynchroUI.class, DataSynchroUIHandler.SYNCHRO_PARENT); + DataSynchroModel stepModel = parent.getStepModel(); - public CopyFromRight() { - super("", t("observe.actions.synchro.data.copyToLeft.tip"), "copyToLeft", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_RIGHT); - } + SelectionTreeModel treeModel = ui.getTree().getTree().getTreeModel(); + treeModel.setLoadLongline(true); + treeModel.setLoadSeine(true); + treeModel.setLoadReferential(false); + treeModel.setShowEmptyTrips(false); - @Override - protected void doActionPerformed(ActionEvent e, DataSynchroUI ui) { - DataSynchroModel stepModel = ui.getStepModel(); - SelectionTreeModel rightSelectionDataModel = stepModel.getRightSelectionDataModel(); - SelectionTreeModel leftSelectionDataModel = stepModel.getLeftSelectionDataModel(); - Map<ProgramReference, List<? extends TripAware>> selectedDataByProgram = rightSelectionDataModel.getSelectedDataByProgram(); - rightSelectionDataModel.removeAllSelectedData(); - for (Map.Entry<ProgramReference, List<? extends TripAware>> entry : selectedDataByProgram.entrySet()) { - ProgramReference program = entry.getKey(); - for (TripAware trip : entry.getValue()) { - boolean tripExistOnLeft = leftSelectionDataModel.containsData(program, trip); - stepModel.addTask(new CopyToLeftDataSynchronizeTask(program, trip, tripExistOnLeft)); - if (tripExistOnLeft) { - leftSelectionDataModel.removeTrip(program, trip); - } - } + if (isLeft) { + stepModel.setLeftSelectionDataModel(treeModel); + } else { + stepModel.setRightSelectionDataModel(treeModel); + ui.remove(ui.getMiddleActions()); + ui.add(ui.getMiddleActions(), BorderLayout.WEST); } + + treeModel.addPropertyChangeListener(evt -> { + SelectionTreeModel model = (SelectionTreeModel) evt.getSource(); + boolean withDataSelected = !model.isSelectionEmpty(); + ui.getCopy().setEnabled(withDataSelected); + ui.getDelete().setEnabled(withDataSelected); + }); + } -} + +} \ No newline at end of file ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/DeleteFromRight.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/DataSelectionTreePaneActionSupport.java ===================================== @@ -1,4 +1,4 @@ -package fr.ird.observe.client.datasource.actions.synchronize.data.actions; +package fr.ird.observe.client.datasource.actions.synchronize.data.tree.actions; /*- * #%L @@ -24,35 +24,44 @@ package fr.ird.observe.client.datasource.actions.synchronize.data.actions; import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroModel; import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUI; -import fr.ird.observe.client.datasource.actions.synchronize.data.task.DeleteFromRightDataSynchronizeTask; +import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUIHandler; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane; import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreeModel; -import fr.ird.observe.client.util.ObserveKeyStrokesSupport; -import fr.ird.observe.dto.data.TripAware; -import fr.ird.observe.dto.referential.common.ProgramReference; +import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport; -import java.awt.event.ActionEvent; -import java.util.List; -import java.util.Map; +import javax.swing.KeyStroke; +import java.awt.event.KeyEvent; -import static io.ultreia.java4all.i18n.I18n.t; - -public class DeleteFromRight extends DataSynchroUIActionSupport { +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8.0 + */ +public abstract class DataSelectionTreePaneActionSupport extends JComponentActionSupport<DataSelectionTreePane> { - public DeleteFromRight() { - super("", t("observe.actions.synchro.data.deleteFromRight.tip"), "deleteFromRight", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_RIGHT); + DataSelectionTreePaneActionSupport(String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); } @Override - protected void doActionPerformed(ActionEvent e, DataSynchroUI ui) { - DataSynchroModel stepModel = ui.getStepModel(); - SelectionTreeModel selectionDataModel = stepModel.getRightSelectionDataModel(); - Map<ProgramReference, List<? extends TripAware>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); - selectionDataModel.removeAllSelectedData(); - for (Map.Entry<ProgramReference, List<? extends TripAware>> entry : selectedDataByProgram.entrySet()) { - ProgramReference program = entry.getKey(); - for (TripAware trip : entry.getValue()) { - stepModel.addTask(new DeleteFromRightDataSynchronizeTask(program, trip)); - } + public void init() { + if (ui.isRight()) { + KeyStroke acceleratorKey = getAcceleratorKey(); + setKeyStroke(KeyStroke.getKeyStroke(acceleratorKey.getKeyCode(), acceleratorKey.getModifiers() | KeyEvent.SHIFT_MASK)); } + super.init(); + } + + protected DataSynchroModel getDataSynchroModel() { + DataSynchroUI parent = ui.getContextValue(DataSynchroUI.class, DataSynchroUIHandler.SYNCHRO_PARENT); + return parent.getStepModel(); + } + + protected SelectionTreeModel getSelectionTreeModel() { + return ui.getTree().getTree().getTreeModel(); + } + + protected SelectionTreeModel getOppositeSelectionTreeModel() { + DataSynchroModel dataSynchroModel = getDataSynchroModel(); + return ui.isLeft()?dataSynchroModel.getRightSelectionDataModel():dataSynchroModel.getLeftSelectionDataModel(); } } ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/DataSourceInformation.java ===================================== @@ -0,0 +1,58 @@ +package fr.ird.observe.client.datasource.actions.synchronize.data.tree.actions; + +/*- + * #%L + * ObServe :: Client DataSource actions + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * 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% + */ + +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane; +import fr.ird.observe.client.datasource.api.ObserveSwingDataSourceTemplate; +import fr.ird.observe.client.datasource.editor.wizard.connexion.DataSourceSelectorModel; +import fr.ird.observe.client.util.ObserveKeyStrokesSupport; + +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8.0 + */ +public class DataSourceInformation extends DataSelectionTreePaneActionSupport { + + public DataSourceInformation() { + super("", t("observe.action.info.storage.tip"), "information", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SOURCE_INFORMATION); + } + + @Override + protected void doActionPerformed(ActionEvent e, DataSelectionTreePane ui) { + DataSourceSelectorModel dataSourceSelectorModel = ui.getContextValue(DataSourceSelectorModel.class); + + String text = ObserveSwingDataSourceTemplate.generate(dataSourceSelectorModel.getSource()); + JOptionPane.showMessageDialog( + ui, + new JLabel(text), + t("observe.title.storage.info"), + JOptionPane.INFORMATION_MESSAGE); + + } +} ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/CopyFromLeft.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/RegisterCopy.java ===================================== @@ -1,4 +1,4 @@ -package fr.ird.observe.client.datasource.actions.synchronize.data.actions; +package fr.ird.observe.client.datasource.actions.synchronize.data.tree.actions; /*- * #%L @@ -23,8 +23,10 @@ package fr.ird.observe.client.datasource.actions.synchronize.data.actions; */ import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroModel; -import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUI; +import fr.ird.observe.client.datasource.actions.synchronize.data.task.CopyToLeftDataSynchronizeTask; import fr.ird.observe.client.datasource.actions.synchronize.data.task.CopyToRightDataSynchronizeTask; +import fr.ird.observe.client.datasource.actions.synchronize.data.task.DataSynchronizeTaskSupport; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane; import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreeModel; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.dto.data.TripAware; @@ -36,28 +38,37 @@ import java.util.Map; import static io.ultreia.java4all.i18n.I18n.t; -public class CopyFromLeft extends DataSynchroUIActionSupport { +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8.0 + */ +public class RegisterCopy extends DataSelectionTreePaneActionSupport { - public CopyFromLeft() { - super("", t("observe.actions.synchro.data.copyToRight.tip"), "copyToRight", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_LEFT); + public RegisterCopy(boolean left) { + super("", left ? t("observe.actions.synchro.data.copyToRight.tip") : t("observe.actions.synchro.data.copyToLeft.tip"), left ? "copyToRight" : "copyToLeft", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY); } @Override - protected void doActionPerformed(ActionEvent e, DataSynchroUI ui) { - DataSynchroModel stepModel = ui.getStepModel(); - SelectionTreeModel leftSelectionDataModel = stepModel.getLeftSelectionDataModel(); - SelectionTreeModel rightSelectionDataModel = stepModel.getRightSelectionDataModel(); - Map<ProgramReference, List<? extends TripAware>> selectedDataByProgram = leftSelectionDataModel.getSelectedDataByProgram(); - leftSelectionDataModel.removeAllSelectedData(); + protected void doActionPerformed(ActionEvent e, DataSelectionTreePane ui) { + DataSynchroModel stepModel = getDataSynchroModel(); + SelectionTreeModel treeModel = getSelectionTreeModel(); + SelectionTreeModel oppositeTreeModel = getOppositeSelectionTreeModel(); + Map<ProgramReference, List<? extends TripAware>> selectedDataByProgram = treeModel.getSelectedDataByProgram(); + treeModel.removeAllSelectedData(); + boolean left = ui.isLeft(); for (Map.Entry<ProgramReference, List<? extends TripAware>> entry : selectedDataByProgram.entrySet()) { ProgramReference program = entry.getKey(); for (TripAware trip : entry.getValue()) { - boolean tripExistOnRight = rightSelectionDataModel.containsData(program, trip); - stepModel.addTask(new CopyToRightDataSynchronizeTask(program, trip, tripExistOnRight)); - if (tripExistOnRight) { - rightSelectionDataModel.removeTrip(program, trip); + boolean tripExistOnOpposite = oppositeTreeModel.containsData(program, trip); + stepModel.addTask(createTask(left, program, trip, tripExistOnOpposite)); + if (tripExistOnOpposite) { + oppositeTreeModel.removeTrip(program, trip); } } } } + + private DataSynchronizeTaskSupport createTask(boolean left, ProgramReference program, TripAware trip, boolean tripExistOnOpposite) { + return left ? new CopyToRightDataSynchronizeTask(program, trip, tripExistOnOpposite) : new CopyToLeftDataSynchronizeTask(program, trip, tripExistOnOpposite); + } } ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/DeleteFromLeft.java → client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/tree/actions/RegisterDelete.java ===================================== @@ -1,4 +1,4 @@ -package fr.ird.observe.client.datasource.actions.synchronize.data.actions; +package fr.ird.observe.client.datasource.actions.synchronize.data.tree.actions; /*- * #%L @@ -23,8 +23,10 @@ package fr.ird.observe.client.datasource.actions.synchronize.data.actions; */ import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroModel; -import fr.ird.observe.client.datasource.actions.synchronize.data.DataSynchroUI; +import fr.ird.observe.client.datasource.actions.synchronize.data.task.DataSynchronizeTaskSupport; import fr.ird.observe.client.datasource.actions.synchronize.data.task.DeleteFromLeftDataSynchronizeTask; +import fr.ird.observe.client.datasource.actions.synchronize.data.task.DeleteFromRightDataSynchronizeTask; +import fr.ird.observe.client.datasource.actions.synchronize.data.tree.DataSelectionTreePane; import fr.ird.observe.client.datasource.editor.tree.selection.SelectionTreeModel; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.dto.data.TripAware; @@ -36,23 +38,32 @@ import java.util.Map; import static io.ultreia.java4all.i18n.I18n.t; -public class DeleteFromLeft extends DataSynchroUIActionSupport { +/** + * @author Tony Chemit - dev@tchemit.fr + * @since 8.0 + */ +public class RegisterDelete extends DataSelectionTreePaneActionSupport { - public DeleteFromLeft() { - super("", t("observe.actions.synchro.data.deleteFromLeft.tip"), "deleteFromLeft", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_LEFT); + public RegisterDelete(boolean left) { + super("", left ? t("observe.actions.synchro.data.deleteFromLeft.tip") : t("observe.actions.synchro.data.deleteFromRight.tip"), left ? "deleteFromLeft" : "deleteFromRight", ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE); } @Override - protected void doActionPerformed(ActionEvent e, DataSynchroUI ui) { - DataSynchroModel stepModel = ui.getStepModel(); - SelectionTreeModel selectionDataModel = stepModel.getLeftSelectionDataModel(); + protected void doActionPerformed(ActionEvent e, DataSelectionTreePane ui) { + DataSynchroModel stepModel = getDataSynchroModel(); + SelectionTreeModel selectionDataModel = getSelectionTreeModel(); Map<ProgramReference, List<? extends TripAware>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); selectionDataModel.removeAllSelectedData(); + boolean left = ui.isLeft(); for (Map.Entry<ProgramReference, List<? extends TripAware>> entry : selectedDataByProgram.entrySet()) { ProgramReference program = entry.getKey(); for (TripAware trip : entry.getValue()) { - stepModel.addTask(new DeleteFromLeftDataSynchronizeTask(program, trip)); + stepModel.addTask(createTask(left, program, trip)); } } } + + private DataSynchronizeTaskSupport createTask(boolean left, ProgramReference program, TripAware trip) { + return left ? new DeleteFromLeftDataSynchronizeTask(program, trip) : new DeleteFromRightDataSynchronizeTask(program, trip); + } } ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/actions/SelectUnselect.java ===================================== @@ -68,10 +68,11 @@ public class SelectUnselect extends ReferentialSelectionTreePaneActionSupport { protected void defaultInit(ReferentialSelectionTreePane pane) { pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_SPACE, "none"); - pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_LEFT, "none"); - pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_LEFT, "none"); - pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_RIGHT, "none"); - pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_RIGHT, "none"); + //FIXME Remove any keystroke used in ui actions... +// pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_LEFT, "none"); +// pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_LEFT, "none"); +// pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_RIGHT, "none"); +// pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_RIGHT, "none"); defaultInit(getInputMap(pane, getInputMapCondition()), getActionMap(pane)); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/SelectionTree.java ===================================== @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.tree.selection; */ import fr.ird.observe.client.datasource.editor.tree.selection.actions.SelectUnselect; -import fr.ird.observe.client.datasource.editor.tree.selection.actions.SelectUnselectWithOpposite; import fr.ird.observe.client.util.UIHelper; import org.jdesktop.swingx.JXTree; @@ -52,48 +51,6 @@ public class SelectionTree extends JXTree { SelectUnselect.init(parent, null, SelectUnselect.class); } - public void installUI2(SelectionTreePane parent, SelectionTreePane oppositeTree) { - - SelectUnselectWithOpposite.init(parent, null, new SelectUnselectWithOpposite(oppositeTree)); - -// InputMap inputMap = getInputMap(WHEN_IN_FOCUSED_WINDOW); -// ActionMap actionMap = getActionMap(); -// getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_SPACE, "none"); -// oppositeTree.getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_SPACE, "none"); - -// getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_SELECT_ALL_TREE, "none"); -// getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_UNSELECT_ALL_TREE, "none"); - -// oppositeTree.getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_SELECT_ALL_TREE, "none"); -// oppositeTree.getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_UNSELECT_ALL_TREE, "none"); - -// inputMap.put(ObserveKeyStrokesSupport.KEY_STROKE_ENTER, "select/unselect"); -// inputMap.put(ObserveKeyStrokesSupport.KEY_STROKE_SPACE, "select/unselect"); -// actionMap.put("select/unselect", new AbstractAction() { -// -// @Override -// public void actionPerformed(ActionEvent e) { -// selectUnSelectWithOpposite(oppositeTree); -// } -// }); -// addMouseListener(new MouseAdapter() { -// @Override -// public void mouseClicked(MouseEvent e) { -// if (e.getClickCount() == 2) { -// selectUnSelectWithOpposite(oppositeTree); -// } -// } -// }); -// oppositeTree.addMouseListener(new MouseAdapter() { -// @Override -// public void mouseClicked(MouseEvent e) { -// if (e.getClickCount() == 2) { -// oppositeTree.selectUnSelectWithOpposite(SelectionTree.this); -// } -// } -// }); - } - public SelectionTreeModel getTreeModel() { return (SelectionTreeModel) getModel(); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/actions/SelectUnselect.java ===================================== @@ -59,8 +59,9 @@ public class SelectUnselect extends SelectionTreePaneActionSupport { protected void defaultInit(SelectionTreePane pane) { pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_SPACE, "none"); - pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_LEFT, "none"); - pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_LEFT, "none"); + //FIXME Remove any keystroke used in ui actions... + pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY, "none"); + pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE, "none"); pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_COPY_FROM_RIGHT, "none"); pane.getTree().getInputMap().put(ObserveKeyStrokesSupport.KEY_STROKE_DATA_SYNCHRO_DELETE_FROM_RIGHT, "none"); defaultInit(getInputMap(pane, getInputMapCondition()), getActionMap(pane)); ===================================== pom.xml ===================================== @@ -24,7 +24,7 @@ <parent> <groupId>io.ultreia.maven</groupId> <artifactId>pom</artifactId> - <version>2020.17</version> + <version>2020.18</version> </parent> <groupId>fr.ird.observe</groupId> @@ -162,7 +162,7 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <lib.version.toolkit>4.28</lib.version.toolkit> + <lib.version.toolkit>4.29</lib.version.toolkit> <lib.version.nuiton.validation>3.1</lib.version.nuiton.validation> <!--can't use 1.4.197 (date has changed + blob also)--> <lib.version.h2>1.4.196</lib.version.h2> ===================================== server-core/src/main/java/fr/ird/observe/server/injector/ObserveDtoInjector.java ===================================== @@ -86,18 +86,12 @@ public class ObserveDtoInjector extends AbstractConverter implements ExecutorPar throw new JsonParseException("Class not found: " + parameterizedTypeClassName, cnfe); } - if (log.isInfoEnabled()) { - log.info("find parameterized type " + typeVariable.getName() + " as " + parameterizedTypeClassName); - } - + log.debug("find parameterized type " + typeVariable.getName() + " as " + parameterizedTypeClassName); } observeDto = gson.fromJson(gsonContent, generic); - if (log.isInfoEnabled()) { - log.info("Inject observeDto: " + observeDto); - } - + log.debug("Inject observeDto: " + observeDto); } return observeDto; @@ -114,9 +108,7 @@ public class ObserveDtoInjector extends AbstractConverter implements ExecutorPar observeDto = gson.fromJson(gsonContent, type); - if (log.isInfoEnabled()) { - log.info("convert observeDto: " + observeDto); - } + log.debug("convert observeDto: " + observeDto); } else { throw conversionException(type, value); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/f201fbf721bd39f07b0c8183c... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/f201fbf721bd39f07b0c8183c... You're receiving this email because of your account on gitlab.com.