Class Tree

All Implemented Interfaces:
com.nomagic.awt.PopupOwner, com.nomagic.magicdraw.ui.Updatable, Cachable, Autoscroll, FocusListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible
Direct Known Subclasses:
BrowserTabTree

@OpenApi public class Tree extends AbstractTree implements Autoscroll, com.nomagic.awt.PopupOwner, com.nomagic.magicdraw.ui.Updatable, Cachable
The tree used in MagicDraw browser.
See Also:
  • Field Details

    • LOADING_DUMMY_NODE_DISTINCTION

      protected static final Node[] LOADING_DUMMY_NODE_DISTINCTION
  • Constructor Details

    • Tree

      public Tree(com.nomagic.magicdraw.ui.browser.TreeParams params)
  • Method Details

    • setIgnoreLock

      public void setIgnoreLock(boolean ignoreLock)
    • doubleClick

      protected void doubleClick(DefaultMutableTreeNode node, MouseEvent event)
      Description copied from class: AbstractTree
      called on mouse double click on nod.
      Overrides:
      doubleClick in class AbstractTree
      Parameters:
      node - node on which double click was called.
      event - double click event
    • doubleClickAction

      public void doubleClickAction(Node node, MouseEvent event)
      Edit action invoked if somebody did double click on some node
      Parameters:
      node - node
      event - event
    • editAction

      public void editAction(Node node, AWTEvent event)
      Edit action invoked if somebody pressed Enter on node
      Parameters:
      node - node
      event - action event
    • removeAction

      public void removeAction(Node[] node)
      Edit action invoked if somebody pressed DELETE on node
      Parameters:
      node - node
    • isShowOwner

      protected boolean isShowOwner()
    • updateUI

      public void updateUI()
      Overrides:
      updateUI in class JPanel
    • update

      public void update(boolean deepUpdate)
      Description copied from interface: com.nomagic.magicdraw.ui.Updatable
      Update component UI by model. If deep update component must assume that anything in the model could be changed and these changes were not fired (for example when reversing code, or doing teamwork update).
      Specified by:
      update in interface com.nomagic.magicdraw.ui.Updatable
      Parameters:
      deepUpdate - true if component must assume that anything in the model was changed.
    • addTreeSelectionParticipant

      public void addTreeSelectionParticipant(com.nomagic.magicdraw.ui.browser.Tree.TreeSelectionParticipant participant)
      Adds tree selection participant
      Parameters:
      participant - tree selection participant to execute additional methods before and after selection
    • init

      public void init()
    • init

      public void init(Node rootNode)
    • initAsync

      public <A> void initAsync(@CheckForNull A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)
      Type Parameters:
      A - The type of the object attached to the completion handler
      Parameters:
      attachment - the object for completion handler attached to this operation
      handler - the handler to consume completion of this operation, see initAsync(Node, Object, com.nomagic.magicdraw.utils.concurrent.CompletionHandler)
    • initAsync

      public <A> void initAsync(Node root, @CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)
      Parameters:
      root - root
      attachment - the object for completion handler attached to this operation
      handler - the handler to consume completion of this operation or null. The handler is always invoked on EventQueue dispatch thread
    • maybeInvokeChainedHandler

      protected static <A> void maybeInvokeChainedHandler(@CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, @CheckForNull Throwable exc)
    • maybeInvokeChainedCH

      protected static <A> void maybeInvokeChainedCH(@CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, @CheckForNull Throwable exc)
    • updateBrowser

      public final boolean updateBrowser()
      Updates dirty nodes in tree with the newest data and shows it. The current thread will be blocked until tree update is complete, but the event dispatcher is going to continue to process events.
      Returns:
      true if update was performed
    • delete

      public void delete(Node[] node)
    • delete

      public void delete(Node[] nodes, boolean useSpecificDeletion, @CheckForNull com.dassault_systemes.modeler.foundation.editing.MacroCommand macroCommand)
      Deletes nodes
      Parameters:
      nodes - nodes which will be deleted
      useSpecificDeletion - if true deletes nodes with specific remove command
      macroCommand - to add delete commands
    • canDelete

      public boolean canDelete(Node[] node)
      Test if all nodes can be deleted
      Parameters:
      node - array to check
      Returns:
      true if all elements can be deleted
    • updateBrowser

      public final boolean updateBrowser(boolean updateOnlyDirty)
      Updates tree with the newest data and shows it. The current thread will be blocked until tree update is complete, but the event dispatcher is going to continue to process events.
      Parameters:
      updateOnlyDirty - - if true updates only dirty expanded nodes, otherwise - updates all expanded tree nodes
      Returns:
      true if update was performed
    • updateBrowser

      public final boolean updateBrowser(boolean updateOnlyDirty, boolean updateNotShowing)
      Updates tree with the newest data and shows it. The current thread will be blocked until tree update is complete, but the event dispatcher is going to continue to process events.
      Parameters:
      updateOnlyDirty - if true updates only dirty expanded nodes, otherwise - updates all expanded tree nodes.
      updateNotShowing - forces update even if component is not showing.
      Returns:
      true if update was performed
    • browserUpdateDelayed

      protected void browserUpdateDelayed(boolean updateOnlyDirty)
      Called if browser lazy and update vas delayed
      Parameters:
      updateOnlyDirty - if true updates only dirty expanded nodes, otherwise - updates all expanded tree nodes
    • specificUpdateBrowser

      protected void specificUpdateBrowser(boolean updateOnlyDirty)
    • updateBrowserAsync

      public <A> void updateBrowserAsync(boolean updateOnlyDirty, @CheckForNull A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, ProgressStatus status)
    • updateOnlyDirtyNodes

      protected <A> boolean updateOnlyDirtyNodes(@CheckForNull A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, boolean updateAll)
    • maybeInvokeChainedHandler

      protected <A> void maybeInvokeChainedHandler(@CheckForNull A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, com.nomagic.magicdraw.ui.browser.TreeModel browserModel, @CheckForNull Throwable exc)
    • getSelectedNode

      @CheckForNull @OpenApi public Node getSelectedNode()
      Returns first selected node in the tree.
      Returns:
      first selected node.
    • getNode

      @CheckForNull @OpenApi public Node getNode(int row)
      Returns first selected node in the tree.
      Returns:
      first selected node.
    • getSelectedNodes

      @OpenApi public Node[] getSelectedNodes()
      Returns all selected nodes in the tree.
      Returns:
      all selected nodes in the tree.
    • toNodes

      public static Node[] toNodes(@CheckForNull TreePath[] paths)
      Utility method for converting array of paths to array of nodes
      Parameters:
      paths - tree paths
      Returns:
      nodes
    • toNodes

      protected static Node[] toNodes(@CheckForNull TreePath[] paths, boolean loadingDummyNodeDistinction)
    • setSelectedNodes

      public void setSelectedNodes(@CheckForNull Node[] nodes)
      Selects given nodes in the tree. Deselects everything if nodes are null.
      Parameters:
      nodes - nodes
    • toTreePaths

      @CheckForNull public static TreePath[] toTreePaths(@CheckForNull Node[] nodes)
      Utility method for converting array of nodes to array of paths
      Parameters:
      nodes - nodes
      Returns:
      tree paths
    • openNode

      @CheckForNull @OpenApi public final TreePath openNode(@CheckForNull BaseElement object)
      Opens(expands) node for a give Element.
      Parameters:
      object - the element to expand in the tree
      Returns:
      path of opened node
    • openNode

      @CheckForNull @OpenApi public final TreePath openNode(@CheckForNull BaseElement object, boolean requestFocus)
      Opens(expands) node for a give Element. May request focus for a tree.
      Parameters:
      object - the element to expand in the tree
      requestFocus - request focus for a tree.
      Returns:
      path of opened node
    • openNode

      @CheckForNull @OpenApi public final TreePath openNode(@CheckForNull BaseElement object, boolean select, boolean appendSelection, boolean requestFocus)
      Opens(expands) node for a give Element. May request focus for a tree.
      Parameters:
      object - the element to expand in the tree
      select - select node.
      appendSelection - append to old selection or clear old selection
      requestFocus - request focus for a tree.
      Returns:
      path of opened node
    • openNode

      @CheckForNull @OpenApi public final TreePath openNode(@CheckForNull BaseElement object, boolean select, boolean requestFocus)
      Opens(expands) node for a give Element. May request focus for a tree.
      Parameters:
      object - the element to expand in the tree
      select - select node.
      requestFocus - request focus for a tree.
      Returns:
      path of opened node
    • openNode

      @CheckForNull @OpenApi public final TreePath openNode(@CheckForNull BaseElement object, boolean select, boolean appendSelection, boolean requestFocus, boolean scrollToVisible)
      Opens(expands) node for a give Element. May request focus for a tree.
      Parameters:
      object - the element to expand in the tree.
      select - select node.
      appendSelection - append to old selection or clear old selection
      requestFocus - request focus for a tree.
      scrollToVisible - do we need to scroll to visible?
      Returns:
      path of opened node.
    • openNode

      @CheckForNull public final TreePath openNode(@CheckForNull BaseElement object, @CheckForNull com.dassault_systemes.modeler.magic.ui.ElementSelection selection, boolean appendSelection)
    • openNode

      @CheckForNull public final TreePath openNode(@CheckForNull BaseElement object, @CheckForNull com.dassault_systemes.modeler.magic.ui.ElementSelection selection, boolean select, boolean appendSelection, boolean requestFocus, boolean scrollToVisible)
    • waitForPreviousEventsOnOpeningNode

      protected boolean waitForPreviousEventsOnOpeningNode()
    • doBeforeOpenNode

      protected void doBeforeOpenNode()
    • openNode

      public void openNode(Collection<? extends BaseElement> elements)
    • openNode

      public <T extends BaseElement> void openNode(Collection<T> elements, Consumer<T> failedConsumer)
    • getAutoscrollInsets

      public Insets getAutoscrollInsets()
      Specified by:
      getAutoscrollInsets in interface Autoscroll
    • getActions

      protected ActionsManager getActions()
      Returns shortcuts action manager for this browser.
      Returns:
      ActionsManager with actions to register in this browser as KeyListeners
    • setBrowserForActions

      protected static void setBrowserForActions(@CheckForNull Tree tree, ActionsManager manager, @CheckForNull com.nomagic.magicdraw.ui.ElementSelectionProvider provider)
    • showPopupMenu

      public void showPopupMenu(@CheckForNull MouseEvent evt)
      Specified by:
      showPopupMenu in interface com.nomagic.awt.PopupOwner
    • decorateTree

      public void decorateTree()
    • getDefaultFocusable

      public Component getDefaultFocusable()
      Description copied from class: ExtendedPanel
      Request Focus for some component. Here it is empty.
      Overrides:
      getDefaultFocusable in class ExtendedPanel
    • editPath

      public void editPath(TreePath path)
    • autoscroll

      public void autoscroll(Point pt)
      Implementation of auto-scroll interface method auto-scroll(Point) Scrolls to specified point.
      Specified by:
      autoscroll in interface Autoscroll
      Parameters:
      pt - - Point
    • getRootNode

      @OpenApi public Node getRootNode()
      Returns root node of the tree.
      Overrides:
      getRootNode in class AbstractTree
      Returns:
      root node.
    • dispose

      public void dispose()
      Removes all nodes recursively.
      Overrides:
      dispose in class AbstractTree
    • disposeNodes

      public void disposeNodes()
      Dispose nodes added into the tree.
    • getTreeModel

      public com.nomagic.magicdraw.ui.browser.TreeModel getTreeModel()
      Overrides:
      getTreeModel in class AbstractTree
    • collectSelectedNodes

      public void collectSelectedNodes(com.nomagic.magicdraw.ui.browser.TreeModel treeModel, TreePath parentPath, com.nomagic.magicdraw.ui.browser.TreeSelectionTracker selectionTracker)
      Collects selected nodes.

      During event dispatching node state can change from Node <-> LoadingDummyNode If node was selected it must be selected when node state is changed. On treeStructureChanged event all selected tree paths are collected, on treeNodesChanged event they are selected.

      Parameters:
      treeModel - model
      parentPath - parent path
      selectionTracker - selection tracker
    • reset

      public void reset()
      Description copied from interface: Cachable
      Cache managers invokes this method to free resources. Usually this method must drop references to external objects in order to enable garbage collection of them.
      Specified by:
      reset in interface Cachable
    • getParams

      public com.nomagic.magicdraw.ui.browser.TreeParams getParams()
    • isUpdateIfShowing

      public boolean isUpdateIfShowing()
      Returns if tree only updates when showing
      Returns:
      true if tree only updates when showing
    • setUpdateIfShowing

      public void setUpdateIfShowing(boolean updateIfShowing)
      Allows setting tree to update only if showing
      Parameters:
      updateIfShowing - true if tree should only update when showing