Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 87d00a11 by Tony Chemit at 2020-06-26T10:57:11+02:00 Réouverture simplifiée d'item : l'arbre de navigation est mal rafraîchit - Closes #1500 - - - - - 3 changed files: - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/open/actions/Close.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/open/actions/Open.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTree.java Changes: ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/open/actions/Close.java ===================================== @@ -29,10 +29,10 @@ import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSu import fr.ird.observe.client.datasource.editor.content.data.open.ContentOpenableUI; import fr.ird.observe.client.datasource.editor.content.data.open.ContentOpenableUIModel; import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationTree; +import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.dto.data.DataDto; import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.navigation.model.edit.CloseEditNodeRequest; import fr.ird.observe.navigation.model.edit.CloseEditNodeVetoException; import fr.ird.observe.navigation.model.edit.ObserveEditModelManager; @@ -54,12 +54,12 @@ import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** - * Action pour fermer l'objet sous-jacent à l'écran. + * To close selected node. * * @author Tony Chemit - dev@tchemit.fr * @since 1.4 */ -public class Close extends ContentUIActionSupport<ContentOpenableUI> { +public class Close extends ContentUIActionSupport<ContentOpenableUI<?, ?, ?>> { private static final Logger log = LogManager.getLogger(Close.class); @@ -88,16 +88,17 @@ public class Close extends ContentUIActionSupport<ContentOpenableUI> { @Override protected void defaultInit(InputMap inputMap, ActionMap actionMap) { - Class dtoType = getUi().getModel().getBeanType(); + Class<?> dtoType = getUi().getModel().getBeanType(); setTooltipText(t("observe.action.close.open.tip", ObserveI18nDecoratorHelper.getTypeI18nKey(dtoType))); super.defaultInit(inputMap, actionMap); } @Override - protected void doActionPerformed(ActionEvent event, ContentOpenableUI ui) { + protected void doActionPerformed(ActionEvent event, ContentOpenableUI<?,?,?> ui) { try { - closeData(getDataSourceEditor(), ui.getModel().getEditNode()); + ObserveEditNode<?> editNode = ui.getModel().getEditNode(); + closeData(getDataSourceEditor(), editNode); if (ui.getModel().isUpdatingMode()) { ui.stopEdit(); } @@ -110,9 +111,9 @@ public class Close extends ContentUIActionSupport<ContentOpenableUI> { } } - private <D extends DataDto, R extends DataDtoReference<D, R>, U extends ContentOpenableUI<D, R, U>> void afterClose(U ui) { + private void afterClose(ContentOpenableUI<?, ?, ?> ui) { - ContentOpenableUIModel<D, R> model = ui.getModel(); + ContentOpenableUIModel<?, ?> model = ui.getModel(); DataDto bean = model.getBean(); @@ -122,8 +123,12 @@ public class Close extends ContentUIActionSupport<ContentOpenableUI> { removeAllMessages(ui); ContentUIHandler.addMessage(ui, NuitonValidatorScope.INFO, getTypeI18nKey(bean.getClass()), t(model.getCloseMessage())); -// NavigationTree treeHelper = getNavigationTree(); -// treeHelper.reloadSelectedNode(bean instanceof TripDto || bean instanceof TripDto, true); + NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree(); + + NavigationTreeNodeSupport<?> node = tree.getSelectedNode(); + tree.reloadSelectedNode(true, true); + tree.refreshToRoot(node.getParent()); + ui.getHandler().updateActions(); ui.getHandler().grabFocusOnForm(); ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/content/data/open/actions/Open.java ===================================== @@ -27,6 +27,7 @@ import fr.ird.observe.client.datasource.editor.content.ContentUIHandler; import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; import fr.ird.observe.client.datasource.editor.content.data.open.ContentOpenableUI; import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationTree; +import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.navigation.model.edit.CloseEditNodeVetoException; @@ -41,13 +42,13 @@ import org.apache.logging.log4j.Logger; import javax.swing.ActionMap; import javax.swing.InputMap; import java.awt.event.ActionEvent; +import java.util.Objects; import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** - * Action pour sélectionner un noeud (attaché à l'éditeur) dans l'arbre de - * navigation. + * To open selected node. * * @author Tony Chemit - dev@tchemit.fr * @since 1.4 @@ -79,22 +80,23 @@ public class Open extends ContentUIActionSupport<ContentOpenableUI<?, ?, ?>> { } @Override - protected void doActionPerformed(ActionEvent event, ContentOpenableUI openUI) { + protected void doActionPerformed(ActionEvent event, ContentOpenableUI<?, ?, ?> openUI) { ObserveSelectNode<?> selectedNode = openUI.getModel().getSelectedNode(); ObserveEditNode<?> editNode = openUI.getModel().getEditNode(); String id = selectedNode.getId(); - + NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree(); + NavigationTreeNodeSupport<?> previousOpenedNode = editNode.isEnabled() ? tree.getEditNode(editNode) : null; try { openData(editNode, selectedNode, id); - afterOpen(openUI); + afterOpen(openUI, previousOpenedNode); } catch (CloseEditNodeVetoException e1) { log.error("Could not close data from callback", e1); //UIHelper.handlingError(e1); } } - private void afterOpen(ContentOpenableUI<?, ?, ?> ui) { + private void afterOpen(ContentOpenableUI<?, ?, ?> ui, NavigationTreeNodeSupport<?> previousOpenedNode) { ui.getModel().setMode(ContentMode.UPDATE); @@ -103,7 +105,15 @@ public class Open extends ContentUIActionSupport<ContentOpenableUI<?, ?, ?>> { // on repaint le parent (le program devient alors ouvert) NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree(); + + if (previousOpenedNode != null) { + tree.refreshToRoot(previousOpenedNode); + } + NavigationTreeNodeSupport<?> selectedNode = tree.getSelectedNode(); tree.reloadSelectedNode(true, true); + if (previousOpenedNode == null || !Objects.equals(previousOpenedNode.getParent(), selectedNode.getParent())) { + tree.refreshToRoot(selectedNode.getParent()); + } ContentUIHandler.removeAllMessages(ui); ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTree.java ===================================== @@ -261,7 +261,7 @@ public class NavigationTree extends JXTree { afterAddUnsavedNode(parentNode, result); } - private void afterAddUnsavedNode(MutableTreeNode parentNode, ReferenceNode<?,?> result) { + private void afterAddUnsavedNode(MutableTreeNode parentNode, ReferenceNode<?, ?> result) { // refresh parent node (render of parent can have changed) reloadNode(parentNode, true); @@ -328,6 +328,14 @@ public class NavigationTree extends JXTree { return ReferenceNode.downToReferenceNode(referenceType, editNode.getId(), containerNode); } + public void refreshToRoot(NavigationTreeNodeSupport<?> node) { + if (!node.isRoot()) { + log.info(String.format("Refresh node: %s", node)); + reloadNode(node, false); + refreshToRoot(node.getParent()); + } + } + interface SelectNodeStrategy extends Supplier<Optional<NavigationTreeNodeSupport<?>>> { } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/87d00a119f321f6fa89a7b5d47... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/87d00a119f321f6fa89a7b5d47... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT