Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
87d00a11
by Tony Chemit at 2020-06-26T10:57:11+02:00
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:
| ... | ... | @@ -29,10 +29,10 @@ import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSu |
| 29 | 29 |
import fr.ird.observe.client.datasource.editor.content.data.open.ContentOpenableUI;
|
| 30 | 30 |
import fr.ird.observe.client.datasource.editor.content.data.open.ContentOpenableUIModel;
|
| 31 | 31 |
import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationTree;
|
| 32 |
+import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeNodeSupport;
|
|
| 32 | 33 |
import fr.ird.observe.client.util.ObserveKeyStrokesSupport;
|
| 33 | 34 |
import fr.ird.observe.dto.data.DataDto;
|
| 34 | 35 |
import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper;
|
| 35 |
-import fr.ird.observe.dto.reference.DataDtoReference;
|
|
| 36 | 36 |
import fr.ird.observe.navigation.model.edit.CloseEditNodeRequest;
|
| 37 | 37 |
import fr.ird.observe.navigation.model.edit.CloseEditNodeVetoException;
|
| 38 | 38 |
import fr.ird.observe.navigation.model.edit.ObserveEditModelManager;
|
| ... | ... | @@ -54,12 +54,12 @@ import static io.ultreia.java4all.i18n.I18n.n; |
| 54 | 54 |
import static io.ultreia.java4all.i18n.I18n.t;
|
| 55 | 55 |
|
| 56 | 56 |
/**
|
| 57 |
- * Action pour fermer l'objet sous-jacent à l'écran.
|
|
| 57 |
+ * To close selected node.
|
|
| 58 | 58 |
*
|
| 59 | 59 |
* @author Tony Chemit - dev@tchemit.fr
|
| 60 | 60 |
* @since 1.4
|
| 61 | 61 |
*/
|
| 62 |
-public class Close extends ContentUIActionSupport<ContentOpenableUI> {
|
|
| 62 |
+public class Close extends ContentUIActionSupport<ContentOpenableUI<?, ?, ?>> {
|
|
| 63 | 63 |
|
| 64 | 64 |
private static final Logger log = LogManager.getLogger(Close.class);
|
| 65 | 65 |
|
| ... | ... | @@ -88,16 +88,17 @@ public class Close extends ContentUIActionSupport<ContentOpenableUI> { |
| 88 | 88 |
|
| 89 | 89 |
@Override
|
| 90 | 90 |
protected void defaultInit(InputMap inputMap, ActionMap actionMap) {
|
| 91 |
- Class dtoType = getUi().getModel().getBeanType();
|
|
| 91 |
+ Class<?> dtoType = getUi().getModel().getBeanType();
|
|
| 92 | 92 |
setTooltipText(t("observe.action.close.open.tip", ObserveI18nDecoratorHelper.getTypeI18nKey(dtoType)));
|
| 93 | 93 |
super.defaultInit(inputMap, actionMap);
|
| 94 | 94 |
}
|
| 95 | 95 |
|
| 96 | 96 |
@Override
|
| 97 |
- protected void doActionPerformed(ActionEvent event, ContentOpenableUI ui) {
|
|
| 97 |
+ protected void doActionPerformed(ActionEvent event, ContentOpenableUI<?,?,?> ui) {
|
|
| 98 | 98 |
|
| 99 | 99 |
try {
|
| 100 |
- closeData(getDataSourceEditor(), ui.getModel().getEditNode());
|
|
| 100 |
+ ObserveEditNode<?> editNode = ui.getModel().getEditNode();
|
|
| 101 |
+ closeData(getDataSourceEditor(), editNode);
|
|
| 101 | 102 |
if (ui.getModel().isUpdatingMode()) {
|
| 102 | 103 |
ui.stopEdit();
|
| 103 | 104 |
}
|
| ... | ... | @@ -110,9 +111,9 @@ public class Close extends ContentUIActionSupport<ContentOpenableUI> { |
| 110 | 111 |
}
|
| 111 | 112 |
}
|
| 112 | 113 |
|
| 113 |
- private <D extends DataDto, R extends DataDtoReference<D, R>, U extends ContentOpenableUI<D, R, U>> void afterClose(U ui) {
|
|
| 114 |
+ private void afterClose(ContentOpenableUI<?, ?, ?> ui) {
|
|
| 114 | 115 |
|
| 115 |
- ContentOpenableUIModel<D, R> model = ui.getModel();
|
|
| 116 |
+ ContentOpenableUIModel<?, ?> model = ui.getModel();
|
|
| 116 | 117 |
|
| 117 | 118 |
DataDto bean = model.getBean();
|
| 118 | 119 |
|
| ... | ... | @@ -122,8 +123,12 @@ public class Close extends ContentUIActionSupport<ContentOpenableUI> { |
| 122 | 123 |
removeAllMessages(ui);
|
| 123 | 124 |
ContentUIHandler.addMessage(ui, NuitonValidatorScope.INFO, getTypeI18nKey(bean.getClass()), t(model.getCloseMessage()));
|
| 124 | 125 |
|
| 125 |
-// NavigationTree treeHelper = getNavigationTree();
|
|
| 126 |
-// treeHelper.reloadSelectedNode(bean instanceof TripDto || bean instanceof TripDto, true);
|
|
| 126 |
+ NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
|
|
| 127 |
+ |
|
| 128 |
+ NavigationTreeNodeSupport<?> node = tree.getSelectedNode();
|
|
| 129 |
+ tree.reloadSelectedNode(true, true);
|
|
| 130 |
+ tree.refreshToRoot(node.getParent());
|
|
| 131 |
+ |
|
| 127 | 132 |
ui.getHandler().updateActions();
|
| 128 | 133 |
|
| 129 | 134 |
ui.getHandler().grabFocusOnForm();
|
| ... | ... | @@ -27,6 +27,7 @@ import fr.ird.observe.client.datasource.editor.content.ContentUIHandler; |
| 27 | 27 |
import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport;
|
| 28 | 28 |
import fr.ird.observe.client.datasource.editor.content.data.open.ContentOpenableUI;
|
| 29 | 29 |
import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationTree;
|
| 30 |
+import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeNodeSupport;
|
|
| 30 | 31 |
import fr.ird.observe.client.util.ObserveKeyStrokesSupport;
|
| 31 | 32 |
import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper;
|
| 32 | 33 |
import fr.ird.observe.navigation.model.edit.CloseEditNodeVetoException;
|
| ... | ... | @@ -41,13 +42,13 @@ import org.apache.logging.log4j.Logger; |
| 41 | 42 |
import javax.swing.ActionMap;
|
| 42 | 43 |
import javax.swing.InputMap;
|
| 43 | 44 |
import java.awt.event.ActionEvent;
|
| 45 |
+import java.util.Objects;
|
|
| 44 | 46 |
|
| 45 | 47 |
import static io.ultreia.java4all.i18n.I18n.n;
|
| 46 | 48 |
import static io.ultreia.java4all.i18n.I18n.t;
|
| 47 | 49 |
|
| 48 | 50 |
/**
|
| 49 |
- * Action pour sélectionner un noeud (attaché à l'éditeur) dans l'arbre de
|
|
| 50 |
- * navigation.
|
|
| 51 |
+ * To open selected node.
|
|
| 51 | 52 |
*
|
| 52 | 53 |
* @author Tony Chemit - dev@tchemit.fr
|
| 53 | 54 |
* @since 1.4
|
| ... | ... | @@ -79,22 +80,23 @@ public class Open extends ContentUIActionSupport<ContentOpenableUI<?, ?, ?>> { |
| 79 | 80 |
}
|
| 80 | 81 |
|
| 81 | 82 |
@Override
|
| 82 |
- protected void doActionPerformed(ActionEvent event, ContentOpenableUI openUI) {
|
|
| 83 |
+ protected void doActionPerformed(ActionEvent event, ContentOpenableUI<?, ?, ?> openUI) {
|
|
| 83 | 84 |
|
| 84 | 85 |
ObserveSelectNode<?> selectedNode = openUI.getModel().getSelectedNode();
|
| 85 | 86 |
ObserveEditNode<?> editNode = openUI.getModel().getEditNode();
|
| 86 | 87 |
String id = selectedNode.getId();
|
| 87 |
- |
|
| 88 |
+ NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
|
|
| 89 |
+ NavigationTreeNodeSupport<?> previousOpenedNode = editNode.isEnabled() ? tree.getEditNode(editNode) : null;
|
|
| 88 | 90 |
try {
|
| 89 | 91 |
openData(editNode, selectedNode, id);
|
| 90 |
- afterOpen(openUI);
|
|
| 92 |
+ afterOpen(openUI, previousOpenedNode);
|
|
| 91 | 93 |
} catch (CloseEditNodeVetoException e1) {
|
| 92 | 94 |
log.error("Could not close data from callback", e1);
|
| 93 | 95 |
//UIHelper.handlingError(e1);
|
| 94 | 96 |
}
|
| 95 | 97 |
}
|
| 96 | 98 |
|
| 97 |
- private void afterOpen(ContentOpenableUI<?, ?, ?> ui) {
|
|
| 99 |
+ private void afterOpen(ContentOpenableUI<?, ?, ?> ui, NavigationTreeNodeSupport<?> previousOpenedNode) {
|
|
| 98 | 100 |
|
| 99 | 101 |
ui.getModel().setMode(ContentMode.UPDATE);
|
| 100 | 102 |
|
| ... | ... | @@ -103,7 +105,15 @@ public class Open extends ContentUIActionSupport<ContentOpenableUI<?, ?, ?>> { |
| 103 | 105 |
|
| 104 | 106 |
// on repaint le parent (le program devient alors ouvert)
|
| 105 | 107 |
NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree();
|
| 108 |
+ |
|
| 109 |
+ if (previousOpenedNode != null) {
|
|
| 110 |
+ tree.refreshToRoot(previousOpenedNode);
|
|
| 111 |
+ }
|
|
| 112 |
+ NavigationTreeNodeSupport<?> selectedNode = tree.getSelectedNode();
|
|
| 106 | 113 |
tree.reloadSelectedNode(true, true);
|
| 114 |
+ if (previousOpenedNode == null || !Objects.equals(previousOpenedNode.getParent(), selectedNode.getParent())) {
|
|
| 115 |
+ tree.refreshToRoot(selectedNode.getParent());
|
|
| 116 |
+ }
|
|
| 107 | 117 |
|
| 108 | 118 |
ContentUIHandler.removeAllMessages(ui);
|
| 109 | 119 |
|
| ... | ... | @@ -261,7 +261,7 @@ public class NavigationTree extends JXTree { |
| 261 | 261 |
afterAddUnsavedNode(parentNode, result);
|
| 262 | 262 |
}
|
| 263 | 263 |
|
| 264 |
- private void afterAddUnsavedNode(MutableTreeNode parentNode, ReferenceNode<?,?> result) {
|
|
| 264 |
+ private void afterAddUnsavedNode(MutableTreeNode parentNode, ReferenceNode<?, ?> result) {
|
|
| 265 | 265 |
|
| 266 | 266 |
// refresh parent node (render of parent can have changed)
|
| 267 | 267 |
reloadNode(parentNode, true);
|
| ... | ... | @@ -328,6 +328,14 @@ public class NavigationTree extends JXTree { |
| 328 | 328 |
return ReferenceNode.downToReferenceNode(referenceType, editNode.getId(), containerNode);
|
| 329 | 329 |
}
|
| 330 | 330 |
|
| 331 |
+ public void refreshToRoot(NavigationTreeNodeSupport<?> node) {
|
|
| 332 |
+ if (!node.isRoot()) {
|
|
| 333 |
+ log.info(String.format("Refresh node: %s", node));
|
|
| 334 |
+ reloadNode(node, false);
|
|
| 335 |
+ refreshToRoot(node.getParent());
|
|
| 336 |
+ }
|
|
| 337 |
+ }
|
|
| 338 |
+ |
|
| 331 | 339 |
interface SelectNodeStrategy extends Supplier<Optional<NavigationTreeNodeSupport<?>>> {
|
| 332 | 340 |
}
|
| 333 | 341 |
|