Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: cef03dd1 by Tony Chemit at 2021-10-25T21:30:21+02:00 Reconnexion - Closes #2067 - - - - - 4 changed files: - 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/DataSourceEditorHandler.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/actions/ReloadStorageAction.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationNode.java Changes: ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorBodyContent.java ===================================== @@ -40,6 +40,7 @@ import fr.ird.observe.client.datasource.editor.api.menu.actions.CloseStorageActi import fr.ird.observe.client.datasource.editor.api.menu.actions.ImportAvdthFileAction; import fr.ird.observe.client.datasource.editor.api.menu.actions.ReloadStorageAction; import fr.ird.observe.client.datasource.editor.api.menu.actions.ShowDataSourcePresetsAction; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; import fr.ird.observe.client.main.ObserveMainUI; import fr.ird.observe.client.main.body.HideBodyContentNotAcceptedException; import fr.ird.observe.client.main.body.MainUIBodyContent; @@ -79,6 +80,7 @@ public class DataSourceEditorBodyContent extends MainUIBodyContent<DataSourceEdi private DataSourceEditorMenu editorMenu; private DataSourceEditorNavigationMenu navigationMenu; private ObserveSwingDataSource dataSource; + private NavigationNode previousNode; public DataSourceEditorBodyContent() { super(1, DataSourceEditor.class); @@ -86,6 +88,10 @@ public class DataSourceEditorBodyContent extends MainUIBodyContent<DataSourceEdi this.reload = e -> reload(); } + public void setPreviousNode(NavigationNode previousNode) { + this.previousNode = previousNode; + } + private Supplier<DataSourceEditor> createSupplier() { return () -> { ObserveMainUI mainUI = getClientUIContext().getMainUI(); @@ -193,7 +199,10 @@ public class DataSourceEditorBodyContent extends MainUIBodyContent<DataSourceEdi focusModel.addZone(new ContentZone(focusModel, dataSourceEditor)); navigationMenu.getUiModel().setConfig(dataSourceEditor.getNavigationUI().getTree().getModel().getConfig()); - dataSourceEditor.getHandler().loadNavigationUI(progressModel); + NavigationNode previousNode = this.previousNode; + // remove it right now + setPreviousNode(null); + dataSourceEditor.getHandler().loadNavigationUI(progressModel, previousNode); progressModel.increments(); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorHandler.java ===================================== @@ -30,6 +30,7 @@ import fr.ird.observe.client.datasource.editor.api.content.ContentUIManager; import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree; import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTreeModel; import fr.ird.observe.client.datasource.editor.api.navigation.NavigationUI; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; import fr.ird.observe.client.util.ProgressModel; import fr.ird.observe.client.util.init.UIInitHelper; import fr.ird.observe.client.util.session.ObserveSwingSessionHelper; @@ -153,8 +154,9 @@ public class DataSourceEditorHandler implements UIHandler<DataSourceEditor>, Wit * <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de navigation. * * @param progressModel the progress model to interact with ui + * @param previousNode */ - public void loadNavigationUI(ProgressModel progressModel) { + public void loadNavigationUI(ProgressModel progressModel, NavigationNode previousNode) { boolean canReadData = getClientUIContext().getDataSourcesManager().getMainDataSource().canReadData(); NavigationUI navigationUI = ui.getNavigationUI(); NavigationTree tree = navigationUI.getTree(); @@ -163,10 +165,20 @@ public class DataSourceEditorHandler implements UIHandler<DataSourceEditor>, Wit treeModel.populate(null); progressModel.increments(); // select initial node - try { - tree.selectInitialNode(); - } catch (Exception e) { - log.error("Could not load initial node", e); + if (previousNode != null) { + try { + tree.reselectInitialNode(previousNode); + } catch (Exception e) { + log.error("Could not load previous node", e); + previousNode = null; + } + } + if (previousNode == null) { + try { + tree.selectInitialNode(); + } catch (Exception e) { + log.error("Could not load initial node", e); + } } progressModel.increments(); tree.setVisible(true); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/actions/ReloadStorageAction.java ===================================== @@ -23,8 +23,9 @@ package fr.ird.observe.client.datasource.editor.api.menu.actions; */ import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; +import fr.ird.observe.client.datasource.editor.api.DataSourceEditorBodyContent; import fr.ird.observe.client.datasource.editor.api.menu.DataSourceEditorMenu; -import fr.ird.observe.client.main.ObserveMainUI; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; import fr.ird.observe.client.util.ObserveSwingTechnicalException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -60,28 +61,24 @@ public class ReloadStorageAction extends DataSourceEditorMenuActionSupport imple log.info(String.format("Will close main data source: %s", dataSource)); - // Close - getDataSourceEditorBodyContent().doCloseStorage(); + DataSourceEditorBodyContent bodyContent = getDataSourceEditorBodyContent(); - ObserveMainUI mainUI = getClientUIContext().getMainUI(); + // keep selected node to select it on new navigation tree + NavigationNode selectedNode = bodyContent.get().getNavigationUI().getTree().getSelectedNode(); + bodyContent.setPreviousNode(selectedNode); - //FIXME:BodyContent reload previous selected node - getClientUIContext().getBusyModel().addTask("Reload storage"); - try { - - //FIXME:Datasource See why we do this? - dataSource.setCanMigrate(getClientConfig()); + // Close storage + bodyContent.doCloseStorage(); - log.info(String.format("Will load main data source: %s", dataSource)); + //FIXME:Datasource See why we do this? + dataSource.setCanMigrate(getClientConfig()); - try { - getDataSourceEditorBodyContent().loadStorage(mainUI, dataSource); - } catch (Exception e) { - throw new ObserveSwingTechnicalException(e); - } + log.info(String.format("Will load main data source: %s", dataSource)); - } finally { - getClientUIContext().getBusyModel().popTask(); + try { + bodyContent.loadStorage(getClientUIContext().getMainUI(), dataSource); + } catch (Exception e) { + throw new ObserveSwingTechnicalException(e); } } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationNode.java ===================================== @@ -141,7 +141,7 @@ public class RootNavigationNode extends NavigationNode { return result; } - public <N extends NavigationNode> N findChildByType0(Class<N> childType, String id) { + public <N extends NavigationNode> N findChildByTypeWithNoCreate(Class<N> childType, String id) { return super.findChildByType(childType, id); } @@ -173,7 +173,10 @@ public class RootNavigationNode extends NavigationNode { NavigationNode next; NavigationNode oldNode = (NavigationNode) treeNode; if (oldNode.getLevel() == 0) { - next = ((RootNavigationNode) result).findChildByType0(oldNode.getClass(), oldNode.getInitializer().getSelectNodeId()); + next = result; + } else if (oldNode.getLevel() == 1) { + // use the method which will not create node + next = ((RootNavigationNode) result).findChildByTypeWithNoCreate(oldNode.getClass(), oldNode.getInitializer().getSelectNodeId()); } else if (oldNode.getScope().isSelectNode()) { next = result.findChildByType(oldNode.getClass(), oldNode.getInitializer().getSelectNodeId()); } else { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/cef03dd12cb2956c5468dcd278... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/cef03dd12cb2956c5468dcd278... You're receiving this email because of your account on gitlab.com.