Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

3 changed files:

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
    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();
    

  • 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;
    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
     
    

  • 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 {
    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