Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 6dd42c94 by Tony Chemit at 2020-12-22T15:48:45+01:00 La 1ère liste déroulante de chaque form s'ouvre toute seule à l'affichage d'un onglet - Closes #1684 - - - - - fdc62d8b by Tony Chemit at 2020-12-22T15:51:41+01:00 Open API - - - - - bdf480bd by Tony Chemit at 2020-12-22T15:52:00+01:00 Open API - - - - - cedaee45 by Tony Chemit at 2020-12-22T16:13:31+01:00 À la sortie de la configuration (avec un appel de rechargement d'interface graphique), la base est masquée et innacessible - Closes #1690 - - - - - 9 changed files: - client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java - client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContent.java - client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContentManager.java - client/core/src/main/java/fr/ird/observe/client/main/callback/ReloadUiCallback.java - client/core/src/main/java/fr/ird/observe/client/util/init/DefaultUIInitializer.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorBodyContent.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java - pom.xml Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java ===================================== @@ -443,7 +443,7 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple listenerList.remove(ObserveSwingDataSourceListener.class, listener); } - private ObserveSwingDataSourceListener[] getObserveSwingDataSourceListener() { + public ObserveSwingDataSourceListener[] getObserveSwingDataSourceListener() { return listenerList.getListeners(ObserveSwingDataSourceListener.class); } ===================================== client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContent.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.client.main.body; * #L% */ +import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.main.ObserveMainUI; import io.ultreia.java4all.util.SingletonSupplier; @@ -120,6 +121,15 @@ public abstract class MainUIBodyContent<B extends JComponent> implements Supplie supplier.clear(); } + /** + * when ui was recreated, make what you can to reload this content. + * @param clientUIContext new client context + * @param mainUI new main ui + */ + public void reloadContent(ClientUIContext clientUIContext, ObserveMainUI mainUI) { + + } + public void setSupplier(SingletonSupplier<B> supplier) { this.supplier = Objects.requireNonNull(supplier); } ===================================== client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContentManager.java ===================================== @@ -195,4 +195,8 @@ public class MainUIBodyContentManager extends AbstractJavaBean { changeCurrentBody(previousBody); } } + + public MainUIBodyContent<?> getPreviousBody() { + return previousBody; + } } ===================================== client/core/src/main/java/fr/ird/observe/client/main/callback/ReloadUiCallback.java ===================================== @@ -26,15 +26,19 @@ import com.google.auto.service.AutoService; import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.configuration.ClientConfig; import fr.ird.observe.client.configuration.WithClientConfig; +import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.main.ObserveMainUI; import fr.ird.observe.client.main.body.ClientConfigUI; +import fr.ird.observe.client.main.body.MainUIBodyContent; import fr.ird.observe.client.main.body.NoBodyContentComponent; +import fr.ird.observe.client.util.UIHelper; import io.ultreia.java4all.application.context.ApplicationContext; import org.nuiton.jaxx.runtime.swing.SwingUtil; import javax.swing.Icon; import javax.swing.JComponent; import java.util.Objects; +import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -74,21 +78,33 @@ public class ReloadUiCallback implements ObserveUICallback, WithClientConfig { //FIXME:BodyContent, cela doit être délégué au body content concerné Class<? extends JComponent> bodyContent = NoBodyContentComponent.class; + MainUIBodyContent<?> previousBody = null; if (ui != null) { // Keep a reference on ui instance since it will be reset in close method // FIXME Should use a closing state in application to improve this ObserveMainUI ui = this.ui; - bodyContent = ui.getMainUIBodyContentManager().getCurrentBodyType(); - if (ClientConfigUI.class.equals(bodyContent)) { - bodyContent = NoBodyContentComponent.class; + previousBody = ui.getMainUIBodyContentManager().getPreviousBody(); + Optional<ObserveSwingDataSource> mainDataSource = clientUIContext.getDataSourcesManager().getOptionalMainDataSource(); + if (mainDataSource.isPresent() && previousBody != null) { + bodyContent = previousBody.type(); + } else { + previousBody = null; + bodyContent = ui.getMainUIBodyContentManager().getCurrentBodyType(); + if (ClientConfigUI.class.equals(bodyContent)) { + bodyContent = NoBodyContentComponent.class; + } } ui.dispose(); System.runFinalization(); } ui = clientUIContext.initUI(rootContext, config); - - ui.changeBodyContent(bodyContent); + if (previousBody != null) { + MainUIBodyContent<? extends JComponent> body = ui.getMainUIBodyContentManager().getBody(bodyContent); + body.reloadContent(clientUIContext, ui); + } else { + ui.changeBodyContent(bodyContent); + } // show ui clientUIContext.setMainUIVisible(ui, true); ===================================== client/core/src/main/java/fr/ird/observe/client/util/init/DefaultUIInitializer.java ===================================== @@ -166,6 +166,7 @@ public class DefaultUIInitializer<UI extends JComponent & JAXXObject> extends UI initializerContext.checkFirstPass(); editor.getCombobox().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0), "none"); editor.setI18nPrefix("observe.common."); + editor.setAutoSelectContent(true); editor.setMinimumSize(new Dimension(0, 24)); if (StringUtils.isEmpty(editor.getConfig().getProperty())) { editor.setProperty(editor.getName()); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorBodyContent.java ===================================== @@ -23,11 +23,13 @@ package fr.ird.observe.client.datasource.editor.api; */ import com.google.auto.service.AutoService; +import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.WithClientUIContext; import fr.ird.observe.client.configuration.ClientConfig; import fr.ird.observe.client.configuration.WithClientConfig; import fr.ird.observe.client.constants.DbMode; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; +import fr.ird.observe.client.datasource.api.event.ObserveSwingDataSourceListener; import fr.ird.observe.client.datasource.editor.api.menu.DataSourceEditorMenu; import fr.ird.observe.client.datasource.editor.api.menu.DataSourceEditorNavigationMenu; import fr.ird.observe.client.datasource.editor.api.menu.actions.ChangeStorageAction; @@ -177,6 +179,28 @@ public class DataSourceEditorBodyContent extends MainUIBodyContent<DataSourceEdi } } + @Override + public void reloadContent(ClientUIContext clientUIContext, ObserveMainUI mainUI) { + ObserveSwingDataSource mainDataSource = clientUIContext.getDataSourcesManager().getMainDataSource(); + if (mainDataSource.isOpen()) { + // need to remove any old listeners + for (ObserveSwingDataSourceListener listener : mainDataSource.getObserveSwingDataSourceListener()) { + if (listener instanceof MainDataSourceListener) { + log.info("Remove obsolete listener: "+listener); + mainDataSource.removeObserveSwingDataSourceListener(listener); + } + } + } + prepareMainStorage(mainDataSource); + try { + setDataSource(mainDataSource); + mainUI.changeBodyContent(DataSourceEditor.class); + } catch (Exception e) { + UIHelper.handlingError(e); + mainUI.removeBodyContent(); + } + } + public void doChangeStorage(Set<DbMode> dbModes, String title) { ChangeStorageAction action = new ChangeStorageAction(dbModes, title); action.run(); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java ===================================== @@ -48,7 +48,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.service.ObserveService; -import io.ultreia.java4all.jaxx.widgets.combobox.JaxxComboBox; import io.ultreia.java4all.util.SingletonSupplier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -61,10 +60,8 @@ import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JMenuItem; -import javax.swing.JTextField; import javax.swing.SwingUtilities; import java.awt.Component; -import java.awt.Container; import java.awt.FocusTraversalPolicy; import java.awt.KeyboardFocusManager; import java.beans.PropertyChangeListener; @@ -445,30 +442,14 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe focusAdjusting = true; try { getModel().setFormFocusOwner(newValue); - //FIXME on contentTable should also check we are in entry form if (getDataSourceEditor().getModel().isFocusOnNavigation()) { - return; - } - if ("ComboBox.textField".equals(newValue.getName())) { - if (!getModel().getStates().isReadingMode()) { - // we are on jaxx combo box, let's open popup - Container parent = newValue.getParent(); - if (parent!=null) { - parent = parent.getParent(); - if (parent!=null) { - JaxxComboBox<?> combo = (JaxxComboBox<?>) parent; - log.debug(String.format("On a JaxxComboBox: %s on edit mode, will open popup", combo.getName())); - ((JTextField)newValue).setCaretPosition(0); - combo.getCombobox().setPopupVisible(true); - } - } - } + //FIXME on contentTable should also check we are in entry form } } finally { focusAdjusting = false; } } else { - log.debug(String.format("%sCan't set focus owner: %s", prefix,newValue)); + log.debug(String.format("%sCan't set focus owner: %s", prefix, newValue)); } } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java ===================================== @@ -309,6 +309,7 @@ public class ContentUIInitializer<UI extends ContentUI> extends UIInitializerSup editor.getCombobox().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0), "none"); @SuppressWarnings({"RawTypeCanBeGeneric", "rawtypes"}) Class referenceType = editor.getBeanType(); editor.setI18nPrefix("observe.common."); + editor.setAutoSelectContent(true); editor.setMinimumSize(new Dimension(0, 24)); editor.setShowReset(true); if (StringUtils.isEmpty(editor.getConfig().getProperty())) { ===================================== pom.xml ===================================== @@ -155,7 +155,7 @@ <!-- <lib.version.java4all.topia>1.35</lib.version.java4all.topia>--> <!-- <lib.version.java4all.eugene>3.0-alpha-38</lib.version.java4all.eugene>--> -<!-- <lib.version.java4all.jaxx>3.0-alpha-85</lib.version.java4all.jaxx>--> + <lib.version.java4all.jaxx>3.0-alpha-86</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/c15bb44901049f5e7c1f3f467... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c15bb44901049f5e7c1f3f467... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT