Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: e5fe0fab by Tony Chemit at 2021-01-07T14:51:31+01:00 Rechargement de la source de données - Closes #1738 - - - - - 3f58446c by Tony Chemit at 2021-01-07T15:41:56+01:00 Consultation du tableau des débarquements lorsque le formulaire est verrouillé - Closes #1739 Meilleure gestion des actions partagées - - - - - aceee7ee by Tony Chemit at 2021-01-07T16:26:19+01:00 On arrive à vider la sélection sur un tableau alors qu'on ne devrait pas - Closes #1741 - - - - - 84ea6b17 by Tony Chemit at 2021-01-07T16:27:22+01:00 Consultation du tableau des débarquements lorsque le formulaire est verrouillé - Closes #1739 Ne pas autoriser le tableau à déplacer les lignes (il reste d'autres raccourcis clavier qu'il faudrait supprimer) - - - - - ee081a5d by Tony Chemit at 2021-01-07T16:27:52+01:00 Consultation du tableau des débarquements lorsque le formulaire est verrouillé - Closes #1739 Utilisation de meilleurs raccourcis (de toute façon le shift + ... ne fonctionnait pas) - - - - - 7 changed files: - client/core/src/main/java/fr/ird/observe/client/util/init/UIInitHelper.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/open/ContentOpen.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIInitializer.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ui/table/popup/AutoSelectRowAndShowPopupActionSupport.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/actions/ReloadStorageAction.java Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/util/init/UIInitHelper.java ===================================== @@ -89,6 +89,16 @@ public class UIInitHelper { inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0), "none"); } + public static void init(JTable editor) { + InputMap inputMap = editor.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + inputMap.put(KeyStroke.getKeyStroke("pressed UP"), "none"); + inputMap.put(KeyStroke.getKeyStroke("pressed PAGE_UP"), "none"); + inputMap.put(KeyStroke.getKeyStroke("pressed DOWN"), "none"); + inputMap.put(KeyStroke.getKeyStroke("pressed PAGE_DOWN"), "none"); + inputMap.put(KeyStroke.getKeyStroke("pressed LEFT"), "none"); + inputMap.put(KeyStroke.getKeyStroke("pressed RIGHT"), "none"); + } + public static void init(JTree editor) { editor.getInputMap() .put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), "none"); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java ===================================== @@ -75,22 +75,23 @@ public class ObserveKeyStrokesEditorApi extends ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_TOGGLE_LOGBOOK_AVAILABILITY = KeyStroke.getKeyStroke("ctrl pressed F2"); public static final KeyStroke KEY_STROKE_COPY_TO_CLIPBOARD = KeyStroke.getKeyStroke("ctrl pressed C"); + public static final KeyStroke KEY_STROKE_BACK_TO_REFERENTIAL_LIST = KeyStroke.getKeyStroke("alt pressed BACK_SPACE"); + // Content Table public static final KeyStroke KEY_STROKE_SAVE_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed S"); public static final KeyStroke KEY_STROKE_SAVE_AND_NEW_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed N"); public static final KeyStroke KEY_STROKE_DELETE_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed E"); public static final KeyStroke KEY_STROKE_RESET_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed R"); - public static final KeyStroke KEY_STROKE_BACK_TO_REFERENTIAL_LIST = KeyStroke.getKeyStroke("alt pressed BACK_SPACE"); - public static final KeyStroke KEY_STROKE_SELECT_FIRST_TABLE_ENTRY = KeyStroke.getKeyStroke("shift alt pressed UP"); + public static final KeyStroke KEY_STROKE_SELECT_FIRST_TABLE_ENTRY = KeyStroke.getKeyStroke("alt pressed PAGE_UP"); public static final KeyStroke KEY_STROKE_SELECT_PREVIOUS_TABLE_ENTRY = KeyStroke.getKeyStroke("alt pressed UP"); public static final KeyStroke KEY_STROKE_SELECT_NEXT_TABLE_ENTRY = KeyStroke.getKeyStroke("alt pressed DOWN"); - public static final KeyStroke KEY_STROKE_SELECT_LAST_TABLE_ENTRY = KeyStroke.getKeyStroke("shift alt pressed DOWN"); + public static final KeyStroke KEY_STROKE_SELECT_LAST_TABLE_ENTRY = KeyStroke.getKeyStroke("alt pressed PAGE_DOWN"); public static final KeyStroke KEY_STROKE_MOVE_DOWN_TABLE_ENTRY = KeyStroke.getKeyStroke("altGraph pressed DOWN"); - public static final KeyStroke KEY_STROKE_MOVE_BOTTOM_TABLE_ENTRY = KeyStroke.getKeyStroke("shift altGraph pressed DOWN"); + public static final KeyStroke KEY_STROKE_MOVE_BOTTOM_TABLE_ENTRY = KeyStroke.getKeyStroke("altGraph pressed PAGE_DOWN"); public static final KeyStroke KEY_STROKE_MOVE_UP_TABLE_ENTRY = KeyStroke.getKeyStroke("altGraph pressed UP"); - public static final KeyStroke KEY_STROKE_MOVE_TOP_TABLE_ENTRY = KeyStroke.getKeyStroke("shift altGraph pressed UP"); + public static final KeyStroke KEY_STROKE_MOVE_TOP_TABLE_ENTRY = KeyStroke.getKeyStroke("altGraph pressed PAGE_UP"); public static final KeyStroke KEY_STROKE_ADD_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed INSERT"); public static final KeyStroke KEY_STROKE_DELETE_SELECTED_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed DELETE"); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java ===================================== @@ -478,7 +478,7 @@ public class ContentUIInitializer<UI extends ContentUI> extends UIInitializerSup private void init(JTable editor) { initializerContext.checkFirstPass(); -// UIInitHelper.init(editor); + UIInitHelper.init(editor); } @SuppressWarnings({"unchecked", "rawtypes"}) ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/open/ContentOpen.java ===================================== @@ -114,6 +114,7 @@ public class ContentOpen<U extends ContentUI> { private List<JTable> tables; private ActionMap newActionMap; private InputMap newInputMap; + private List<JaxxComboBox> comboBoxs; public ContentOpen(U ui, ContentOpenExecutor<U> contentOpenExecutor) { this(ui, contentOpenExecutor, null); @@ -140,6 +141,7 @@ public class ContentOpen<U extends ContentUI> { public DefaultUIInitializerResult init(ContentUIInitializer<U> initializer) { DefaultUIInitializerResult initializerResult = initializer.initUI(); tables = initializerResult.getComponentsList(JTable.class); + comboBoxs = initializerResult.getComponentsList(JaxxComboBox.class); tabbedPaneValidator = initializerResult.getTabbedPaneValidator(); subTabbedPaneValidator = initializerResult.getSubTabbedPaneValidator(); coordinateEditors = initializerResult.getCoordinateEditors(); @@ -153,14 +155,14 @@ public class ContentOpen<U extends ContentUI> { ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).setParent(null); ui.getActionMap().setParent(null); JComponent actionContainer = initializer.getActionContainer(); - initActions(actionContainer, initializerResult); + initActions(initializerResult); ContentUIModel model = ui.getModel(); @SuppressWarnings("unchecked") ContentUIHandler<U> handler = (ContentUIHandler<U>) ui.getHandler(); model.init(ui, initializerResult); handler.onInit(ui); - postInstallActions(actionContainer, newInputMap, newActionMap, initializerResult); + postInstallActions(actionContainer, initializerResult); model.getStates().addPropertyChangeListener(ContentUIModelStates.PROPERTY_MODE, evt -> { ContentMode newValue = (ContentMode) evt.getNewValue(); @@ -541,27 +543,31 @@ public class ContentOpen<U extends ContentUI> { return ui; } - public void initActions(JComponent actionContainer, DefaultUIInitializerResult initializerResult) { + public List<JaxxComboBox> getComboBoxs() { + return comboBoxs; + } + + public void initActions(DefaultUIInitializerResult initializerResult) { ContentUIHandler<?> handler = ui.getHandler(); handler.initActions(); handler.installChangeModeAction(); - InputMap inputMap = actionContainer.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + InputMap inputMap = ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); KeyStroke[] uiActionKeyStrokes = inputMap.allKeys(); log.info(String.format("%sFound %d actions to share", ui.getModel().getPrefix(), uiActionKeyStrokes.length)); - ActionMap actionMap = actionContainer.getActionMap(); + ActionMap actionMap = ui.getActionMap(); newActionMap = new ActionMapUIResource(); newInputMap = new InputMapUIResource(); for (KeyStroke actionKeyStroke : uiActionKeyStrokes) { Object actionMapKey = inputMap.get(actionKeyStroke); - newInputMap.put(actionKeyStroke, actionMapKey); Action action = actionMap.get(actionMapKey); if (action instanceof MenuAction) { log.info(String.format("Skip menu action %s → %s", actionKeyStroke, actionMapKey)); continue; } - newActionMap.put(actionMapKey, action); log.info(String.format("Register action %s → %s", actionKeyStroke, actionMapKey)); + newInputMap.put(actionKeyStroke, actionMapKey); + newActionMap.put(actionMapKey, action); } ContentUIModel model = ui.getModel(); @@ -582,17 +588,42 @@ public class ContentOpen<U extends ContentUI> { handler.updateToggleInsertVisibility(); } - protected void postInstallActions(JComponent actionContainer, InputMap newInputMap, ActionMap newActionMap, DefaultUIInitializerResult initializerResult) { + protected void postInstallActions(JComponent actionContainer, DefaultUIInitializerResult initializerResult) { KeyStroke[] keyStrokes = newInputMap.allKeys(); - initializerResult.getComponents(JaxxComboBox.class).forEach(editor -> UIInitHelper.cleanInputMapAndSet(editor, keyStrokes, newInputMap, newActionMap)); + initializerResult.getComponents(JaxxComboBox.class).forEach(editor -> UIInitHelper.cleanInputMapAndSet(editor.getCombobox(), keyStrokes, newInputMap, newActionMap)); initializerResult.getComponents(JTable.class).forEach(editor -> UIInitHelper.cleanInputMap(editor, keyStrokes)); for (Map.Entry<ContentTableUI<?, ?, ?>, JPanel> entry : subUiMap.entrySet()) { ContentTableUI<?, ?, ?> subUi = entry.getKey(); - subUi.getHandler().getContentOpen().getTables().forEach(editor -> UIInitHelper.cleanInputMap(editor, keyStrokes)); + InputMap newInputMapSubUi = subUi.getHandler().getContentOpen().getNewInputMap(); + ActionMap newActionMapSubUi = subUi.getHandler().getContentOpen().getNewActionMap(); + newInputMapSubUi.setParent(newInputMap); + newActionMapSubUi.setParent(newActionMap); + KeyStroke[] keyStrokesSubUi = newInputMapSubUi.allKeys(); + for (KeyStroke keyStroke : keyStrokesSubUi) { + if (newInputMap.get(keyStroke)!=null) { + Object o = newInputMapSubUi.get(keyStroke); + if (o!=null) { + newActionMapSubUi.remove(o); + newInputMapSubUi.remove(keyStroke); + } + } + } + subUi.getBody().setInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, newInputMapSubUi); + subUi.getBody().setActionMap(newActionMapSubUi); + subUi.getHandler().getContentOpen().getTables().forEach(editor -> UIInitHelper.cleanInputMap(editor, keyStrokesSubUi)); + subUi.getHandler().getContentOpen().getComboBoxs().forEach(editor -> UIInitHelper.cleanInputMapAndSet(editor.getCombobox(), keyStrokesSubUi, newInputMapSubUi, newActionMapSubUi)); //FIXME:Actions We should define some scope only for subUi ? } } + public ActionMap getNewActionMap() { + return newActionMap; + } + + public InputMap getNewInputMap() { + return newInputMap; + } + private void onToggleDateTimeEditorSliderChanged(boolean newValue) { if (!toggleDateTimeEditorSliderIsChanging) { toggleDateTimeEditorSliderIsChanging = true; ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIInitializer.java ===================================== @@ -93,11 +93,6 @@ public class ContentTableUIInitializer<D extends DataDto, C extends DataDto, U e ui.getSelectPreviousTableEntry().setEnabled(false); ui.getSelectNextTableEntry().setEnabled(false); ui.getSelectLastTableEntry().setEnabled(false); - InputMap inputMap = ui.getTable().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); - inputMap.put(KeyStroke.getKeyStroke("pressed UP"), "none"); - inputMap.put(KeyStroke.getKeyStroke("pressed DOWN"), "none"); - inputMap.put(KeyStroke.getKeyStroke("pressed LEFT"), "none"); - inputMap.put(KeyStroke.getKeyStroke("pressed RIGHT"), "none"); ui.getTitleRightToolBar().add(ui.getSelectToolbar(), 0); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ui/table/popup/AutoSelectRowAndShowPopupActionSupport.java ===================================== @@ -113,20 +113,16 @@ public abstract class AutoSelectRowAndShowPopupActionSupport { log.debug("At point [" + p + "] found Row " + rowIndex + ", Column " + columnIndex); boolean canContinue = stopEdit(); - if (canContinue) { + if (canContinue && rowIndex != -1 && columnIndex != -1) { // select row (could empty selection) - if (rowIndex == -1) { - table.clearSelection(); - } else if (!ArrayUtils.contains(selectedRows, rowIndex)) { + if (!ArrayUtils.contains(selectedRows, rowIndex)) { // set selection table.setRowSelectionInterval(rowIndex, rowIndex); } // select column (could empty selection) - if (columnIndex == -1) { - table.clearSelection(); - } else if (!ArrayUtils.contains(selectedColumns, columnIndex)) { + if (!ArrayUtils.contains(selectedColumns, columnIndex)) { table.setColumnSelectionInterval(columnIndex, columnIndex); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/actions/ReloadStorageAction.java ===================================== @@ -46,13 +46,9 @@ public class ReloadStorageAction extends DataSourceEditorMenuActionSupport imple super(t("observe.ui.action.reload.storage"), t("observe.ui.action.reload.storage.tip"), "db-reload", 'R'); } - public ReloadStorageAction(String actionName, char keyStroke) { - super(actionName, t("observe.ui.action.reload.storage"), t("observe.ui.action.reload.storage.tip"), "db-reload", keyStroke); - } - @Override protected void doActionPerformed(ActionEvent event, DataSourceEditorMenu ui) { - run(); + getClientUIContext().getActionExecutor().addAction(getText(), this); } @Override View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c03d89aa3be10d74aca153963... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c03d89aa3be10d74aca153963... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT