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/tree/navigation/NavigationTree.java
    ... ... @@ -67,11 +67,6 @@ public class NavigationTree extends JXTree {
    67 67
         private static final Logger log = LogManager.getLogger(NavigationTree.class);
    
    68 68
         private final ImmutableList<SelectNodeStrategy> selectNodeStrategies;
    
    69 69
     
    
    70
    -    /**
    
    71
    -     * To block node expand.
    
    72
    -     */
    
    73
    -    private boolean skipExpand;
    
    74
    -
    
    75 70
         public NavigationTree() {
    
    76 71
             super(new NavigationTreeModel(NavigationTreeModelInitializerApplicationComponent.value()));
    
    77 72
     
    
    ... ... @@ -88,29 +83,8 @@ public class NavigationTree extends JXTree {
    88 83
     
    
    89 84
                 @Override
    
    90 85
                 public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException {
    
    86
    +                //FIXME check this is working ?
    
    91 87
                     getSelectionModel().fireTreeWillCollapseEvent(event);
    
    92
    -//                if (!(getModel() instanceof NavigationTreeModel)) {
    
    93
    -//                    return;
    
    94
    -//                }
    
    95
    -//                NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) event.getPath().getLastPathComponent();
    
    96
    -//
    
    97
    -//                // le seul posant problème est la fermeture d'un noeud parent
    
    98
    -//                // du noeud courant : cela va changer la selection
    
    99
    -//                NavigationTreeNodeSupport selectedNode = getSelectedNode();
    
    100
    -//                if (selectedNode == null) {
    
    101
    -//                    // pas de noeud selectionne
    
    102
    -//                    return;
    
    103
    -//                }
    
    104
    -//
    
    105
    -//                if (selectedNode.equals(node) || !selectedNode.isNodeAncestor(node)) {
    
    106
    -//                    return;
    
    107
    -//                }
    
    108
    -                //FIXME Move this in a listener
    
    109
    -//                boolean canChange = contentUIManager.closeSelectedContentUI();
    
    110
    -//                if (!canChange) {
    
    111
    -//                    throw new ExpandVetoException(event, "Can not collapse node " + event.getPath());
    
    112
    -//                }
    
    113
    -
    
    114 88
                 }
    
    115 89
             });
    
    116 90
             addTreeSelectionListener(e -> {
    
    ... ... @@ -142,16 +116,7 @@ public class NavigationTree extends JXTree {
    142 116
         }
    
    143 117
     
    
    144 118
         private void openNode(TreePath path) {
    
    145
    -//        TreePath path = e.getPath();
    
    146
    -        NavigationTreeNodeSupport selectedNode = (NavigationTreeNodeSupport) path.getLastPathComponent();
    
    147
    -        try {
    
    148
    -            getModel().open((NavigationTreeNodeSupport) path.getLastPathComponent());
    
    149
    -        } finally {
    
    150
    -            if (!isSkipExpand() && !selectedNode.isLeaf()) {
    
    151
    -                log.info(String.format("will expand node: %s from selection.", path));
    
    152
    -                SwingUtilities.invokeLater(() -> expandPath(path));
    
    153
    -            }
    
    154
    -        }
    
    119
    +        getModel().open((NavigationTreeNodeSupport<?>) path.getLastPathComponent());
    
    155 120
         }
    
    156 121
     
    
    157 122
         @Override
    
    ... ... @@ -164,24 +129,17 @@ public class NavigationTree extends JXTree {
    164 129
             return (NavigationTreeSelectionModel) super.getSelectionModel();
    
    165 130
         }
    
    166 131
     
    
    167
    -    public boolean isSkipExpand() {
    
    168
    -        return skipExpand;
    
    169
    -    }
    
    170
    -
    
    171
    -    public void setSkipExpand(boolean skipExpand) {
    
    172
    -        this.skipExpand = skipExpand;
    
    173
    -    }
    
    174
    -
    
    175 132
         public void addNavigationTreeSelectionListener(NavigationTreeSelectionListener x) {
    
    176 133
             getSelectionModel().addNavigationTreeSelectionListener(x);
    
    177 134
         }
    
    178 135
     
    
    136
    +    @SuppressWarnings("unused")
    
    179 137
         public void removeNavigationTreeSelectionListener(NavigationTreeSelectionListener x) {
    
    180 138
             getSelectionModel().removeNavigationTreeSelectionListener(x);
    
    181 139
         }
    
    182 140
     
    
    183
    -    public NavigationTreeNodeSupport getSelectedNode() {
    
    184
    -        return isSelectionEmpty() ? null : (NavigationTreeNodeSupport) getSelectionPath().getLastPathComponent();
    
    141
    +    public NavigationTreeNodeSupport<?> getSelectedNode() {
    
    142
    +        return isSelectionEmpty() || getSelectionPath() == null ? null : (NavigationTreeNodeSupport<?>) getSelectionPath().getLastPathComponent();
    
    185 143
         }
    
    186 144
     
    
    187 145
         /**
    
    ... ... @@ -204,18 +162,18 @@ public class NavigationTree extends JXTree {
    204 162
         }
    
    205 163
     
    
    206 164
         /**
    
    207
    -     * Selects the given {@code node} in the registred tree.
    
    165
    +     * Selects the given {@code node} in the registered tree.
    
    208 166
          *
    
    209 167
          * @param node the node to select
    
    210 168
          */
    
    211
    -    public void selectNode(NavigationTreeNodeSupport node) {
    
    169
    +    public void selectNode(NavigationTreeNodeSupport<?> node) {
    
    212 170
             log.info("try to select node [" + node + "]");
    
    213 171
             TreePath path = new TreePath(getModel().getPathToRoot(node));
    
    214 172
             setSelectionPath(path);
    
    215 173
             SwingUtilities.invokeLater(() -> scrollPathToVisible(path));
    
    216 174
         }
    
    217 175
     
    
    218
    -    public NavigationTreeNodeSupport getChild(NavigationTreeNodeSupport node, String id) {
    
    176
    +    public NavigationTreeNodeSupport<?> getChild(NavigationTreeNodeSupport<?> node, String id) {
    
    219 177
             return node.findChildById(id);
    
    220 178
         }
    
    221 179
     
    
    ... ... @@ -239,20 +197,13 @@ public class NavigationTree extends JXTree {
    239 197
             insertNode(parentNode, node, position);
    
    240 198
         }
    
    241 199
     
    
    242
    -    public void clearModel() {
    
    243
    -        getModel().clear();
    
    244
    -    }
    
    245
    -
    
    246 200
         /**
    
    247
    -     * Sélectionne le noeud dans l'arbre de navigation.
    
    248
    -     *
    
    249
    -     * <b>Note:</b> cette méthode doit être appelée après un rechargement du
    
    250
    -     * modèle de navigation.
    
    201
    +     * Select initial node when data source just opened.
    
    251 202
          */
    
    252 203
         public void selectInitialNode() {
    
    253 204
     
    
    254 205
             log.debug("Will select initial node...");
    
    255
    -        NavigationTreeNodeSupport selectedNode = null;
    
    206
    +        NavigationTreeNodeSupport<?> selectedNode = null;
    
    256 207
             for (SelectNodeStrategy selectNodeStrategy : selectNodeStrategies) {
    
    257 208
                 Optional<NavigationTreeNodeSupport<?>> optionalSelectedNode = selectNodeStrategy.get();
    
    258 209
                 if (optionalSelectedNode.isPresent()) {
    
    ... ... @@ -267,28 +218,12 @@ public class NavigationTree extends JXTree {
    267 218
             SwingUtilities.invokeLater(this::grabFocus);
    
    268 219
         }
    
    269 220
     
    
    270
    -//    public void reloadNodeSubTree(NavigationTreeNodeSupport node) {
    
    271
    -//        Objects.requireNonNull(node, "node is null, we can not reload its structure");
    
    272
    -//
    
    273
    -//        // 1. Let's clear node structure
    
    274
    -//        while (node.getChildCount() > 0) {
    
    275
    -//            removeNode((NavigationTreeNodeSupport) node.getFirstChild());
    
    276
    -//        }
    
    277
    -//
    
    278
    -//        // 3. Let's re-generate node's value by populating the node : this will call the child loaders.
    
    279
    -//        node.updateNode();
    
    280
    -//
    
    281
    -//        // Fix bug (if no child in parent node, it will not expand...)
    
    282
    -//        fireTreeExpanded(new TreePath(node.getPath()));
    
    283
    -//
    
    284
    -//    }
    
    285
    -
    
    286 221
         public void reloadNode(MutableTreeNode node, boolean deep) {
    
    287 222
     
    
    288
    -        log.debug("Will refresh (deep ? " + deep + ") node " + node);
    
    223
    +        log.debug(String.format("Will refresh (deep ? %s) node %s", deep, node));
    
    289 224
             getModel().nodeChanged(node);
    
    290 225
             if (deep) {
    
    291
    -            // repaint childs nodes
    
    226
    +            // repaint children nodes
    
    292 227
                 @SuppressWarnings("unchecked")
    
    293 228
                 Enumeration<NavigationTreeNodeSupport<?>> e = (Enumeration<NavigationTreeNodeSupport<?>>) node.children();
    
    294 229
                 while (e.hasMoreElements()) {
    
    ... ... @@ -299,24 +234,24 @@ public class NavigationTree extends JXTree {
    299 234
     
    
    300 235
         }
    
    301 236
     
    
    302
    -    public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChilds) {
    
    303
    -        NavigationTreeNodeSupport node = getSelectedNode();
    
    237
    +    public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChildren) {
    
    238
    +        NavigationTreeNodeSupport<?> node = getSelectedNode();
    
    304 239
             node.setLoaded(false);
    
    305 240
     
    
    306 241
             if (refreshFromParent) {
    
    307 242
                 node = node.getParent();
    
    308 243
             }
    
    309
    -        reloadNode(node, refreshChilds);
    
    244
    +        reloadNode(node, refreshChildren);
    
    310 245
         }
    
    311 246
     
    
    312 247
         public <D extends IdDto, R extends DtoReference<D, R>> void addUnsavedNode(MultipleReferenceContainerNode<D, R> parentNode) {
    
    313
    -        ReferenceNode<D, R> result = parentNode.newChildNode(((NavigationTreeNodeSupport) parentNode).getId());
    
    248
    +        ReferenceNode<D, R> result = parentNode.newChildNode(((NavigationTreeNodeSupport<?>) parentNode).getId());
    
    314 249
             insertNode(parentNode, result);
    
    315 250
             afterAddUnsavedNode(parentNode, result);
    
    316 251
         }
    
    317 252
     
    
    318 253
         public void addUnsavedNode(SingleReferenceContainerNode<?, ?> parentNode) {
    
    319
    -        ReferenceNode<?, ?> result = parentNode.newSingleChildNode(((NavigationTreeNodeSupport) parentNode).getId());
    
    254
    +        ReferenceNode<?, ?> result = parentNode.newSingleChildNode(((NavigationTreeNodeSupport<?>) parentNode).getId());
    
    320 255
             insertNode(parentNode, result, parentNode.getChildCount());
    
    321 256
             afterAddUnsavedNode(parentNode, result);
    
    322 257
         }
    
    ... ... @@ -326,7 +261,7 @@ public class NavigationTree extends JXTree {
    326 261
             afterAddUnsavedNode(parentNode, result);
    
    327 262
         }
    
    328 263
     
    
    329
    -    private void afterAddUnsavedNode(MutableTreeNode parentNode, ReferenceNode result) {
    
    264
    +    private void afterAddUnsavedNode(MutableTreeNode parentNode, ReferenceNode<?,?> result) {
    
    330 265
     
    
    331 266
             // refresh parent node (render of parent can have changed)
    
    332 267
             reloadNode(parentNode, true);
    
    ... ... @@ -342,7 +277,7 @@ public class NavigationTree extends JXTree {
    342 277
             return getModel().getRoot();
    
    343 278
         }
    
    344 279
     
    
    345
    -    public void updateNode(NavigationTreeNodeSupport node) {
    
    280
    +    public void updateNode(NavigationTreeNodeSupport<?> node) {
    
    346 281
             node.updateNode();
    
    347 282
             getModel().nodeStructureChanged(node);
    
    348 283
         }
    
    ... ... @@ -360,12 +295,12 @@ public class NavigationTree extends JXTree {
    360 295
             getModel().nodeStructureChanged(parentNode);
    
    361 296
         }
    
    362 297
     
    
    363
    -    public NavigationTreeNodeSupport getReferentialNode(String name) {
    
    298
    +    public NavigationTreeNodeSupport<?> getReferentialNode(String name) {
    
    364 299
             RootNavigationTreeNode root = getModel().getRoot();
    
    365 300
             return getModel().findNode(root, name);
    
    366 301
         }
    
    367 302
     
    
    368
    -    public NavigationTreeNodeSupport getEditNode(ObserveNavigationNode<?> editNode) {
    
    303
    +    public NavigationTreeNodeSupport<?> getEditNode(ObserveNavigationNode<?> editNode) {
    
    369 304
             ImmutableList<ObserveNavigationNode<?>> nodesFromRoot = editNode.getNodesFromRoot();
    
    370 305
             NavigationTreeNodeSupport<?> result = getModel().getRoot();
    
    371 306
             for (ObserveNavigationNode<?> currentEditNode : nodesFromRoot) {
    
    ... ... @@ -386,20 +321,13 @@ public class NavigationTree extends JXTree {
    386 321
             Class<R> referenceType = DtoModelHelper.getReferenceType(editNode.getType());
    
    387 322
             // got to container
    
    388 323
             MultipleReferenceContainerNode<D, R> containerNode = MultipleReferenceContainerNode.downToReferenceContainerNode(referenceType, selectedNode);
    
    389
    -        if (!((NavigationTreeNodeSupport) containerNode).isLoaded()) {
    
    390
    -            ((NavigationTreeNodeSupport) containerNode).populateChildren();
    
    324
    +        if (!((NavigationTreeNodeSupport<?>) containerNode).isLoaded()) {
    
    325
    +            ((NavigationTreeNodeSupport<?>) containerNode).populateChildren();
    
    391 326
             }
    
    392 327
             // got to reference
    
    393 328
             return ReferenceNode.downToReferenceNode(referenceType, editNode.getId(), containerNode);
    
    394 329
         }
    
    395 330
     
    
    396
    -
    
    397
    -//    public void refreshSelectedNode() {
    
    398
    -//        NavigationTreeNodeSupport selectedNode = getSelectedNode();
    
    399
    -//        selectedNode.reload();
    
    400
    -//        getTreeModel().nodeChanged(selectedNode);
    
    401
    -//    }
    
    402
    -
    
    403 331
         interface SelectNodeStrategy extends Supplier<Optional<NavigationTreeNodeSupport<?>>> {
    
    404 332
         }
    
    405 333
     
    
    ... ... @@ -409,7 +337,7 @@ public class NavigationTree extends JXTree {
    409 337
             public Optional<NavigationTreeNodeSupport<?>> get() {
    
    410 338
                 NavigationTreeNodeSupport<?> selectedNode = getModel().getRoot();
    
    411 339
                 if (!selectedNode.isLeaf()) {
    
    412
    -                selectedNode = (NavigationTreeNodeSupport) selectedNode.getFirstChild();
    
    340
    +                selectedNode = (NavigationTreeNodeSupport<?>) selectedNode.getFirstChild();
    
    413 341
                 }
    
    414 342
                 return Optional.ofNullable(selectedNode);
    
    415 343
             }
    

  • client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/actions/NavigationConfigUIActionSupport.java
    ... ... @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.tree.navigation.actions;
    23 23
      */
    
    24 24
     
    
    25 25
     import fr.ird.observe.client.configuration.WithClientConfig;
    
    26
    -import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationTree;
    
    27 26
     import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationUI;
    
    28 27
     import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport;
    
    29 28
     
    
    ... ... @@ -61,12 +60,6 @@ abstract class NavigationConfigUIActionSupport extends JComponentActionSupport<N
    61 60
         }
    
    62 61
     
    
    63 62
         void selectFirstNode() {
    
    64
    -        NavigationTree tree = ui.getTree();
    
    65
    -        tree.setSkipExpand(true);
    
    66
    -        try {
    
    67
    -            tree.setSelectionRow(0);
    
    68
    -        } finally {
    
    69
    -            tree.setSkipExpand(false);
    
    70
    -        }
    
    63
    +        ui.getTree().setSelectionRow(0);
    
    71 64
         }
    
    72 65
     }

  • client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/actions/NavigationConfigUIToggleShowActionSupport.java
    ... ... @@ -66,7 +66,7 @@ public abstract class NavigationConfigUIToggleShowActionSupport extends Navigati
    66 66
     
    
    67 67
             if (!tree.isSelectionEmpty()) {
    
    68 68
                 // Could not clear selection, means can't accept this action
    
    69
    -            log.info("Reject action: " + this + " since could not clear navigation selection.");
    
    69
    +            log.info(String.format("Reject action: %s since could not clear navigation selection.", this));
    
    70 70
                 return;
    
    71 71
             }
    
    72 72