Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: f4094436 by Tony Chemit at 2020-07-06T13:00:01+02:00 [LL] Appairement des activités : cosmétique - Closes #1537 - - - - - cba65bba by Tony Chemit at 2020-07-06T13:00:02+02:00 amélioration log - - - - - 080180d4 by Tony Chemit at 2020-07-06T13:00:02+02:00 Les actions de changement d'ordre sur les tableaux ordonné ne fonctionnent plus - Closes #1570 - - - - - 10 changed files: - client-core/src/main/java/fr/ird/observe/client/util/JMenuWithAccelerator.java - client-datasource-actions/src/main/i18n/getters/java.getter - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/longline/pairing/tree/ActivityLonglinePairingTreeTableModel.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/table/actions/ContentTableUIEntryActionSupport.java - + client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/table/actions/MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/table/popup/AutoSelectWithMoveUpAndDownShowPopupAction.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - pom.xml Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/util/JMenuWithAccelerator.java ===================================== @@ -58,7 +58,7 @@ public class JMenuWithAccelerator extends JMenu { public void setSelected(boolean b) { super.setSelected(b); if (b) { - log.info(String.format("Yo selected: up to %s", getName())); + log.debug(String.format("%s is now selected", getName())); SwingUtilities.invokeLater(() -> ((JMenuItem) getMenuComponent(0)).setSelected(true)); } } ===================================== client-datasource-actions/src/main/i18n/getters/java.getter ===================================== @@ -48,6 +48,8 @@ observe.actions.exportData.title observe.actions.exportData.title.tip observe.actions.longline.pairing observe.actions.longline.pairing.description +observe.actions.longline.pairing.table.logbook.activity +observe.actions.longline.pairing.table.observation.activity observe.actions.longline.pairing.table.selected observe.actions.longline.pairing.tip observe.actions.longline.pairing.title @@ -173,9 +175,7 @@ observe.admin.report.title.tip observe.choice.cancel observe.choice.confirm.insert observe.choice.replace -observe.common.data observe.common.none -observe.data.ll.logbook.Activity.relatedObservedActivity observe.message.no.report.selected observe.message.select.report observe.message.show.usage.for.missingReferentials2 ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/longline/pairing/tree/ActivityLonglinePairingTreeTableModel.java ===================================== @@ -48,8 +48,8 @@ public class ActivityLonglinePairingTreeTableModel extends DefaultTreeTableModel public ActivityLonglinePairingTreeTableModel(ActivityLonglinePairingModel uiModel, ActivityLonglinePairingRootNode rootNode) { super(Objects.requireNonNull(rootNode), Arrays.asList( - I18n.t("observe.common.data"), - I18n.t("observe.data.ll.logbook.Activity.relatedObservedActivity"), + I18n.t("observe.actions.longline.pairing.table.logbook.activity"), + I18n.t("observe.actions.longline.pairing.table.observation.activity"), I18n.t("observe.actions.longline.pairing.table.selected"))); this.uiModel = Objects.requireNonNull(uiModel); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/table/actions/ContentTableUIEntryActionSupport.java ===================================== @@ -27,9 +27,13 @@ import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableMo import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel; import fr.ird.observe.client.main.MainUIModel; +import io.ultreia.java4all.lang.Objects2; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.nuiton.jaxx.runtime.JAXXObject; +import org.nuiton.jaxx.runtime.swing.action.JAXXObjectActionSupport; +import javax.swing.AbstractButton; import javax.swing.KeyStroke; import java.awt.event.ActionEvent; import java.beans.PropertyChangeListener; @@ -45,6 +49,13 @@ public abstract class ContentTableUIEntryActionSupport extends ContentTableUIAct private final PropertyChangeListener propertyChangeListener; private boolean canExecuteFromRead; + public static <U extends JAXXObject, A extends JAXXObjectActionSupport<U>> A init(U ui, AbstractButton editor, Class<A> actionType) { + + A action = JAXXObjectActionSupport.init(ui, editor, actionType ); + editor.putClientProperty(ACTIVATE_FROM_POPUP, true); + return action; + } + protected ContentTableUIEntryActionSupport(String text, String tip, String icon, KeyStroke keyStroke) { super(text, tip, icon, keyStroke); propertyChangeListener = e -> { ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/table/actions/MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener.java ===================================== @@ -0,0 +1,93 @@ +package fr.ird.observe.client.datasource.editor.content.data.table.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor API + * %% + * 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 org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.nuiton.jaxx.runtime.swing.action.JAXXObjectActionSupport; + +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import java.awt.Component; +import java.util.Objects; + +/** + * Install this listener on menu to disable any accelerator in popup menu while menu is not displayed. + * + * @author Tony Chemit - dev@tchemit.fr + */ +public class MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener implements PopupMenuListener { + + private static final Logger log = LogManager.getLogger(MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener.class); + + private final JPopupMenu jMenu; + private boolean adjusting; + + public static void install(JPopupMenu menuBar) { + menuBar.addPopupMenuListener(new MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener(menuBar)); + } + + public MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener(JPopupMenu jMenu) { + this.jMenu = Objects.requireNonNull(jMenu); + } + + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + updateElements(true); + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + SwingUtilities.invokeLater(() -> updateElements(false)); + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + updateElements(false); + } + + public void updateElements(boolean activateFromPopup) { + if (adjusting) { + return; + } + adjusting = true; + + try { + String state = activateFromPopup ? "enabled" : "disabled"; + for (Component subElement : jMenu.getComponents()) { + if (subElement instanceof JMenuItem) { + JMenuItem component = (JMenuItem) subElement; + if (component.getAccelerator() != null && component.getAction() instanceof JAXXObjectActionSupport) { + log.info(String.format("Menu (%s) item (%s) will %s", jMenu.getName(), component.getName(), state)); + component.putClientProperty(JAXXObjectActionSupport.ACTIVATE_FROM_POPUP, activateFromPopup); + } + } + } + } finally { + adjusting = false; + } + } +} ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/table/popup/AutoSelectWithMoveUpAndDownShowPopupAction.java ===================================== @@ -23,6 +23,7 @@ package fr.ird.observe.client.datasource.editor.content.data.table.popup; */ import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI; +import fr.ird.observe.client.datasource.editor.content.data.table.actions.MakeActionsEnabledOnlyIfMenuItemParentIsOpenedPopupMenuListener; import fr.ird.observe.client.datasource.editor.content.data.table.actions.MoveBottom; import fr.ird.observe.client.datasource.editor.content.data.table.actions.MoveDown; import fr.ird.observe.client.datasource.editor.content.data.table.actions.MoveTop; @@ -42,13 +43,13 @@ import java.util.Objects; */ public class AutoSelectWithMoveUpAndDownShowPopupAction extends AutoSelectRowAndShowPopupActionSupport { - private final ContentTableUI ui; + private final ContentTableUI<?, ?, ?> ui; private final JMenuItem moveTop; private final JMenuItem moveUp; private final JMenuItem moveDown; private final JMenuItem moveBottom; - public AutoSelectWithMoveUpAndDownShowPopupAction(ContentTableUI ui) { + public AutoSelectWithMoveUpAndDownShowPopupAction(ContentTableUI<?, ?, ?> ui) { super(Objects.requireNonNull(ui).getTableScrollPane(), ui.getTable()); this.ui = ui; JPopupMenu popup = getPopup(); @@ -71,15 +72,6 @@ public class AutoSelectWithMoveUpAndDownShowPopupAction extends AutoSelectRowAnd moveUp.setEnabled(false); moveDown.setEnabled(false); } -// TableModel model = ui.getTable().getModel(); -// ContentTableUIModel model1 = ui.getModel(); -// boolean notEdit = !model1.isCanSaveRow(); -// boolean canMoveUp = !model1.isCanSaveRow() && modelRowIndex > 0; -// boolean canMoveDown = ; -// moveTop.setEnabled(canMoveUp); -// moveUp.setEnabled(canMoveUp); -// moveDown.setEnabled(canMoveDown); -// moveBottom.setEnabled(canMoveDown); } } ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -224,7 +224,9 @@ observe.actions.longline.pairing=Longline activities pairing observe.actions.longline.pairing.config=Pairing configuration observe.actions.longline.pairing.description=Longline activities pairing observe.actions.longline.pairing.message.operation.done=Pairing operation done in %1$s. -observe.actions.longline.pairing.table.selected=To be processed +observe.actions.longline.pairing.table.logbook.activity=Observation activities +observe.actions.longline.pairing.table.observation.activity=Logbook activities +observe.actions.longline.pairing.table.selected=To be saved observe.actions.longline.pairing.tip=Longline activities pairing observe.actions.longline.pairing.title=Longline activities pairing observe.actions.longline.pairing.title.tip=Longline activities pairing ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -224,7 +224,9 @@ observe.actions.longline.pairing=Longline activities pairing \#TODO observe.actions.longline.pairing.config=Pairing configuration \#TODO observe.actions.longline.pairing.description=Longline activities pairing \#TODO observe.actions.longline.pairing.message.operation.done=Pairing operation done in %1$s. \#TODO -observe.actions.longline.pairing.table.selected=Debe tratarse +observe.actions.longline.pairing.table.logbook.activity=Observation activities \#TODO +observe.actions.longline.pairing.table.observation.activity=Logbook activities \#TODO +observe.actions.longline.pairing.table.selected=Debe grabar \#TODO observe.actions.longline.pairing.tip=Longline activities pairing \#TODO observe.actions.longline.pairing.title=Longline activities pairing \#TODO observe.actions.longline.pairing.title.tip=Longline activities pairing \#TODO ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -224,7 +224,9 @@ observe.actions.longline.pairing=Appairement des activités palangre observe.actions.longline.pairing.config=Configuration de l'appairement observe.actions.longline.pairing.description=Appairement des activités palangre observe.actions.longline.pairing.message.operation.done=Opération terminées en %1$s. -observe.actions.longline.pairing.table.selected=À traiter +observe.actions.longline.pairing.table.logbook.activity=Activités Observation +observe.actions.longline.pairing.table.observation.activity=Activités Livre de Bord +observe.actions.longline.pairing.table.selected=À enregistrer observe.actions.longline.pairing.tip=Appairement des activités palangre observe.actions.longline.pairing.title=Appairement des activités palangre observe.actions.longline.pairing.title.tip=Appairement des activités palangre ===================================== pom.xml ===================================== @@ -176,7 +176,7 @@ <!-- <lib.version.java4all.topia>1.17</lib.version.java4all.topia>--> <!-- <lib.version.java4all.eugene>3.0-alpha-34-SNAPSHOT</lib.version.java4all.eugene>--> - <lib.version.java4all.jaxx>3.0-alpha-74</lib.version.java4all.jaxx> + <lib.version.java4all.jaxx>3.0-alpha-75</lib.version.java4all.jaxx> <!--<lib.version.java4all.application-context>1.0.3-SNAPSHOT</lib.version.java4all.application-context>--> <!--<lib.version.java4all.application-template>1.0.2-SNAPSHOT</lib.version.java4all.application-template>--> <!--<lib.version.java4all.i18n>4.0-beta-3-SNAPSHOT</lib.version.java4all.i18n>--> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/7fb3d456ec3de07fbc2302d85... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/7fb3d456ec3de07fbc2302d85... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT