Package com.nomagic.magicdraw.ui.browser
Class Tree
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- com.nomagic.ui.ExtendedPanel
-
- com.nomagic.magicdraw.ui.browser.AbstractTree
-
- com.nomagic.magicdraw.ui.browser.Tree
-
- All Implemented Interfaces:
com.nomagic.awt.PopupOwner,com.nomagic.magicdraw.ui.Updatable,Cachable,java.awt.dnd.Autoscroll,java.awt.event.FocusListener,java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,java.util.EventListener,javax.accessibility.Accessible
- Direct Known Subclasses:
BrowserTabTree
@OpenApi public class Tree extends AbstractTree implements java.awt.dnd.Autoscroll, com.nomagic.awt.PopupOwner, com.nomagic.magicdraw.ui.Updatable, Cachable
The tree used in MagicDraw browser.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classcom.nomagic.magicdraw.ui.browser.Tree.BrowserTreeNodeEditorprivate static classcom.nomagic.magicdraw.ui.browser.Tree.DirtyNodeComparatorprivate static classcom.nomagic.magicdraw.ui.browser.Tree.EnabledDeleteActionprivate static interfacecom.nomagic.magicdraw.ui.browser.Tree.Interruptibleprivate classcom.nomagic.magicdraw.ui.browser.Tree.TreeModelListenerprivate static classcom.nomagic.magicdraw.ui.browser.Tree.TreePatchForMacPatching two problems but related with multiple selection on Mac: Invoking popup for multi selection with traditional Mac style Ctrl+left mouse button (NOT right click) D&D multiple selectionstatic interfacecom.nomagic.magicdraw.ui.browser.Tree.TreeSelectionParticipantInterface to execute additional actions before tree selection listener updates actions-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.concurrent.atomic.AtomicBooleancanRemoveWaitCursorprivate com.nomagic.actions.ComponentShortcutsManagercomponentShortcutsManagerprivate static javax.swing.TimerdelayedRemoveWaitCursorTimerprivate static Node[]EMPTY_NODESprivate booleanignoreLockprotected static Node[]LOADING_DUMMY_NODE_DISTINCTIONprivate static org.apache.log4j.LoggerLOG_SCALABILITYprivate java.util.List<javax.swing.tree.TreePath>nodeSelectionPathsprivate static ProgressWaitCursorprogressWaitCursorprivate java.lang.RunnableselectSelectedNodesFor selecting paths.private com.nomagic.magicdraw.ui.browser.Tree.TreePatchForMactreePatchForMacprivate java.util.Collection<com.nomagic.magicdraw.ui.browser.Tree.TreeSelectionParticipant>treeSelectionParticipantsprivate java.util.concurrent.ExecutortreeUpdateExecutorprivate com.nomagic.magicdraw.ui.browser.Tree.InterruptibletreeUpdateTaskprivate static intUPDATE_DIRTY_LIMITA limit of dirty nodes to update individually.-
Fields inherited from class com.nomagic.magicdraw.ui.browser.AbstractTree
MAX_AUTO_EXPAND_DEPTH
-
Fields inherited from class com.nomagic.ui.ExtendedPanel
DEFAULT_FOCUSABLE
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddTreeSelectionParticipant(com.nomagic.magicdraw.ui.browser.Tree.TreeSelectionParticipant participant)Adds tree selection participantprivate <A> booleanareDirtyNodesPresent(boolean updateOnlyDirty, A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)voidautoscroll(java.awt.Point pt)Implementation of auto-scroll interface method auto-scroll(Point) Scrolls to specified point.booleancanDelete(Node[] node)Test if all nodes can be deletedvoidcollectSelectedNodes(com.nomagic.magicdraw.ui.browser.TreeModel treeModel, javax.swing.tree.TreePath parentPath, com.nomagic.magicdraw.ui.browser.TreeSelectionTracker selectionTracker)Collects selected nodes.private static com.nomagic.magicdraw.ui.browser.ChildrenOwnercreateChildrenOwner()protected com.nomagic.magicdraw.ui.browser.NodeCreatorcreateNodeCreator()voiddecorateTree()voiddelete(Node[] node)voiddelete(Node[] nodes, boolean useSpecificDeletion, com.nomagic.magicdraw.commands.MacroCommand macroCommand)Deletes nodesvoiddispose()Removes all nodes recursively.voiddisposeNodes()Dispose nodes added into the tree.private static voiddoSetBrowserForAction(Tree tree, NMAction action, com.nomagic.magicdraw.ui.ElementSelectionProvider provider)protected voiddoubleClick(javax.swing.tree.DefaultMutableTreeNode node, java.awt.event.MouseEvent event)called on mouse double click on nod.voiddoubleClickAction(Node node, java.awt.event.MouseEvent event)Edit action invoked if somebody did double click on some nodevoideditAction(Node node, java.awt.AWTEvent event)Edit action invoked if somebody pressed Enter on nodevoideditPath(javax.swing.tree.TreePath path)protected ActionsManagergetActions()Returns shortcuts action manager for this browser.java.awt.InsetsgetAutoscrollInsets()java.awt.ComponentgetDefaultFocusable()Request Focus for some component.NodegetNode(int row)Returns first selected node in the tree.NodegetRootNode()Returns root node of the tree.NodegetSelectedNode()Returns first selected node in the tree.Node[]getSelectedNodes()Returns all selected nodes in the tree.com.nomagic.magicdraw.ui.browser.TreeModelgetTreeModel()com.nomagic.magicdraw.ui.browser.TreeRootgetTreeRoot()voidinit()voidinit(com.nomagic.magicdraw.ui.browser.TreeRoot treeRoot)<A> voidinitAsync(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)<A> voidinitAsync(com.nomagic.magicdraw.ui.browser.TreeRoot treeRoot, A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)private voidinitCellRendererEditor(javax.swing.JTree tree)protected booleanisShowOwner()protected static <A> voidmaybeInvokeChainedCH(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, java.lang.Throwable exc)protected <A> voidmaybeInvokeChainedHandler(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, com.nomagic.magicdraw.ui.browser.TreeModel browserModel, java.lang.Throwable exc)protected static <A> voidmaybeInvokeChainedHandler(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, java.lang.Throwable exc)javax.swing.tree.TreePathopenNode(BaseElement object)Opens(expands) node for a give Element.javax.swing.tree.TreePathopenNode(BaseElement object, boolean requestFocus)Opens(expands) node for a give Element.javax.swing.tree.TreePathopenNode(BaseElement object, boolean select, boolean requestFocus)Opens(expands) node for a give Element.javax.swing.tree.TreePathopenNode(BaseElement object, boolean select, boolean appendSelection, boolean requestFocus)Opens(expands) node for a give Element.javax.swing.tree.TreePathopenNode(BaseElement object, boolean select, boolean appendSelection, boolean requestFocus, boolean scrollToVisible)Opens(expands) node for a give Element.javax.swing.tree.TreePathopenNode(BaseElement object, com.nomagic.magicdraw.ui.ElementSelection selection, boolean appendSelection)javax.swing.tree.TreePathopenNode(BaseElement object, com.nomagic.magicdraw.ui.ElementSelection selection, boolean select, boolean appendSelection, boolean requestFocus, boolean scrollToVisible)voidopenNode(java.util.Collection<? extends BaseElement> elements)<T extends BaseElement>
voidopenNode(java.util.Collection<T> elements, java.util.function.Consumer<T> failedConsumer)private static <A> voidprivateMaybeInvokeChainedHandler(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, java.lang.Throwable exc)private voidregisterShortcutActions()Register all shortcut actions to the browser.voidremoveAction(Node[] node)Edit action invoked if somebody pressed DELETE on nodeprivate voidremoveUIListener()Remove default swing listener which scrolls item to some prefix on key event.voidreset()Cache managers invokes this method to free resources.protected static voidsetBrowserForActions(Tree tree, ActionsManager manager, com.nomagic.magicdraw.ui.ElementSelectionProvider provider)voidsetIgnoreLock(boolean ignoreLock)voidsetSelectedNodes(Node[] nodes)Selects given nodes in the tree.voidshowPopupMenu(java.awt.event.MouseEvent evt)static Node[]toNodes(javax.swing.tree.TreePath[] paths)Utility method for converting array of paths to array of nodesprotected static Node[]toNodes(javax.swing.tree.TreePath[] paths, boolean loadingDummyNodeDistinction)static javax.swing.tree.TreePath[]toTreePaths(Node[] nodes)Utility method for converting array of nodes to array of pathsvoidupdate(boolean deepUpdate)private <A> voidupdateAllNodes(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, ProgressStatus status)voidupdateBrowser()voidupdateBrowser(boolean updateOnlyDirty)Updates tree with the newest data and shows it.<A> voidupdateBrowserAsync(boolean updateOnlyDirty, A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, ProgressStatus status)protected <A> booleanupdateOnlyDirtyNodes(A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, boolean updateAll)voidupdateUI()private static voidwaitForPreviousEvents()-
Methods inherited from class com.nomagic.magicdraw.ui.browser.AbstractTree
close, getCookies, getScrollPane, getTree, isAutoExpandMode, open, openPath, openPath, openPath, setAutoExpandMode, setTree
-
Methods inherited from class com.nomagic.ui.ExtendedPanel
addActionListenerFor, addEnterOKListener, addFocusListenerFor, addKeyListenerFor, cancel, clear, enableComponent, focusGained, focusLost, getEditingState, getErrorString, getParentWindow, initialize, isDataValid, ok, removeFocusListenerFor, removeKeyListenerFor, setEditingState, setEnabled, setEnabledAll, updateByStateRecursively, updatePanelByEditingState, updatePanelByEditingState
-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
UPDATE_DIRTY_LIMIT
private static final int UPDATE_DIRTY_LIMIT
A limit of dirty nodes to update individually. If this limit is exceeded, whole browser is updated, because this is more efficient way.- See Also:
- Constant Field Values
-
LOADING_DUMMY_NODE_DISTINCTION
protected static final Node[] LOADING_DUMMY_NODE_DISTINCTION
-
EMPTY_NODES
private static final Node[] EMPTY_NODES
-
LOG_SCALABILITY
private static final org.apache.log4j.Logger LOG_SCALABILITY
-
ignoreLock
private volatile boolean ignoreLock
-
treePatchForMac
private com.nomagic.magicdraw.ui.browser.Tree.TreePatchForMac treePatchForMac
-
treeUpdateTask
@CheckForNull private com.nomagic.magicdraw.ui.browser.Tree.Interruptible treeUpdateTask
-
treeUpdateExecutor
private final java.util.concurrent.Executor treeUpdateExecutor
-
treeSelectionParticipants
private final java.util.Collection<com.nomagic.magicdraw.ui.browser.Tree.TreeSelectionParticipant> treeSelectionParticipants
-
componentShortcutsManager
@CheckForNull private com.nomagic.actions.ComponentShortcutsManager componentShortcutsManager
-
progressWaitCursor
private static ProgressWaitCursor progressWaitCursor
-
canRemoveWaitCursor
private static final java.util.concurrent.atomic.AtomicBoolean canRemoveWaitCursor
-
delayedRemoveWaitCursorTimer
private static final javax.swing.Timer delayedRemoveWaitCursorTimer
-
nodeSelectionPaths
private final java.util.List<javax.swing.tree.TreePath> nodeSelectionPaths
-
selectSelectedNodes
private final java.lang.Runnable selectSelectedNodes
For selecting paths. Selection should be done when treeNodesChanged event is fired.
-
-
Constructor Detail
-
Tree
public Tree()
Constructs new tree.
-
Tree
public Tree(com.nomagic.magicdraw.ui.browser.ChildrenOwner childrenOwner)
-
Tree
public Tree(boolean ignoreEnvironmentLock)
Constructor.- Parameters:
ignoreEnvironmentLock- true if want to ignore environment lock.- See Also:
EnvironmentLockManager
-
Tree
public Tree(javax.swing.JTree tree, com.nomagic.magicdraw.ui.browser.ChildrenOwner childrenOwner)
-
-
Method Detail
-
createChildrenOwner
private static com.nomagic.magicdraw.ui.browser.ChildrenOwner createChildrenOwner()
-
createNodeCreator
protected com.nomagic.magicdraw.ui.browser.NodeCreator createNodeCreator()
-
setIgnoreLock
public void setIgnoreLock(boolean ignoreLock)
-
doubleClick
protected void doubleClick(javax.swing.tree.DefaultMutableTreeNode node, java.awt.event.MouseEvent event)Description copied from class:AbstractTreecalled on mouse double click on nod.- Parameters:
node- node on which double click was called.event- double click event
-
doubleClickAction
public void doubleClickAction(Node node, java.awt.event.MouseEvent event)
Edit action invoked if somebody did double click on some node- Parameters:
node- nodeevent- event
-
editAction
public void editAction(Node node, java.awt.AWTEvent event)
Edit action invoked if somebody pressed Enter on node- Parameters:
node- nodeevent- 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:
updateUIin classjavax.swing.JPanel
-
removeUIListener
private void removeUIListener()
Remove default swing listener which scrolls item to some prefix on key event.
-
update
public void update(boolean deepUpdate)
- Specified by:
updatein interfacecom.nomagic.magicdraw.ui.Updatable
-
registerShortcutActions
private void registerShortcutActions()
Register all shortcut actions to the browser.
-
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()
-
getTreeRoot
public com.nomagic.magicdraw.ui.browser.TreeRoot getTreeRoot()
-
init
public void init(com.nomagic.magicdraw.ui.browser.TreeRoot treeRoot)
-
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 operationhandler- the handler to consume completion of this operation, seeinitAsync(TreeRoot, Object, com.nomagic.magicdraw.utils.concurrent.CompletionHandler)
-
initAsync
public <A> void initAsync(com.nomagic.magicdraw.ui.browser.TreeRoot treeRoot, @CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)- Parameters:
treeRoot- rootattachment- the object for completion handler attached to this operationhandler- the handler to consume completion of this operation ornull. The handler is always invoked onEventQueuedispatch thread
-
maybeInvokeChainedHandler
protected static <A> void maybeInvokeChainedHandler(@CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, @CheckForNull java.lang.Throwable exc)
-
privateMaybeInvokeChainedHandler
private static <A> void privateMaybeInvokeChainedHandler(@CheckForNull A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, @CheckForNull java.lang.Throwable exc)
-
maybeInvokeChainedCH
protected static <A> void maybeInvokeChainedCH(@CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, @CheckForNull java.lang.Throwable exc)
-
updateBrowser
public void updateBrowser()
-
delete
public void delete(Node[] node)
-
delete
public void delete(Node[] nodes, boolean useSpecificDeletion, @CheckForNull com.nomagic.magicdraw.commands.MacroCommand macroCommand)
Deletes nodes- Parameters:
nodes- nodes which will be deleteduseSpecificDeletion- if true deletes nodes with specific remove commandmacroCommand- 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 void 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- - iftrueupdates only dirty expanded nodes, otherwise - updates all expanded tree nodes.
-
updateBrowserAsync
public <A> void updateBrowserAsync(boolean updateOnlyDirty, @CheckForNull A attachment, com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler, ProgressStatus status)
-
areDirtyNodesPresent
private <A> boolean areDirtyNodesPresent(boolean updateOnlyDirty, @CheckForNull A attachment, @CheckForNull com.nomagic.magicdraw.utils.concurrent.CompletionHandler<?,? super A> handler)
-
updateAllNodes
private <A> void updateAllNodes(@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 java.lang.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 javax.swing.tree.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 javax.swing.tree.TreePath[] paths, boolean loadingDummyNodeDistinction)
-
setSelectedNodes
public void setSelectedNodes(Node[] nodes)
Selects given nodes in the tree. Deselects everything if nodes are null.- Parameters:
nodes- nodes
-
toTreePaths
@CheckForNull public static javax.swing.tree.TreePath[] toTreePaths(Node[] nodes)
Utility method for converting array of nodes to array of paths- Parameters:
nodes- nodes- Returns:
- tree paths
-
openNode
@CheckForNull @OpenApi public javax.swing.tree.TreePath openNode(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 javax.swing.tree.TreePath openNode(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 treerequestFocus- request focus for a tree.- Returns:
- path of opened node
-
openNode
@CheckForNull @OpenApi public javax.swing.tree.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 treeselect- select node.appendSelection- append to old selection or clear old selectionrequestFocus- request focus for a tree.- Returns:
- path of opened node
-
openNode
@CheckForNull @OpenApi public javax.swing.tree.TreePath openNode(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 treeselect- select node.requestFocus- request focus for a tree.- Returns:
- path of opened node
-
openNode
@CheckForNull @OpenApi public javax.swing.tree.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 selectionrequestFocus- request focus for a tree.scrollToVisible- do we need to scroll to visible?- Returns:
- path of opened node.
-
openNode
@CheckForNull public javax.swing.tree.TreePath openNode(@CheckForNull BaseElement object, @CheckForNull com.nomagic.magicdraw.ui.ElementSelection selection, boolean appendSelection)
-
openNode
@CheckForNull public javax.swing.tree.TreePath openNode(@CheckForNull BaseElement object, @CheckForNull com.nomagic.magicdraw.ui.ElementSelection selection, boolean select, boolean appendSelection, boolean requestFocus, boolean scrollToVisible)
-
openNode
public void openNode(java.util.Collection<? extends BaseElement> elements)
-
openNode
public <T extends BaseElement> void openNode(java.util.Collection<T> elements, java.util.function.Consumer<T> failedConsumer)
-
waitForPreviousEvents
private static void waitForPreviousEvents()
-
getAutoscrollInsets
public java.awt.Insets getAutoscrollInsets()
- Specified by:
getAutoscrollInsetsin interfacejava.awt.dnd.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)
-
doSetBrowserForAction
private static void doSetBrowserForAction(@CheckForNull Tree tree, NMAction action, @CheckForNull com.nomagic.magicdraw.ui.ElementSelectionProvider provider)
-
showPopupMenu
public void showPopupMenu(java.awt.event.MouseEvent evt)
- Specified by:
showPopupMenuin interfacecom.nomagic.awt.PopupOwner
-
decorateTree
public void decorateTree()
-
getDefaultFocusable
public java.awt.Component getDefaultFocusable()
Description copied from class:ExtendedPanelRequest Focus for some component. Here it is empty.
-
editPath
public void editPath(javax.swing.tree.TreePath path)
-
autoscroll
public void autoscroll(java.awt.Point pt)
Implementation of auto-scroll interface method auto-scroll(Point) Scrolls to specified point.- Specified by:
autoscrollin interfacejava.awt.dnd.Autoscroll- Parameters:
pt- - Point
-
getRootNode
@OpenApi public Node getRootNode()
Returns root node of the tree.- Overrides:
getRootNodein classAbstractTree- Returns:
- root node.
-
dispose
public void dispose()
Removes all nodes recursively.
-
disposeNodes
public void disposeNodes()
Dispose nodes added into the tree.
-
getTreeModel
public com.nomagic.magicdraw.ui.browser.TreeModel getTreeModel()
-
collectSelectedNodes
public void collectSelectedNodes(com.nomagic.magicdraw.ui.browser.TreeModel treeModel, javax.swing.tree.TreePath parentPath, com.nomagic.magicdraw.ui.browser.TreeSelectionTracker selectionTracker)Collects selected nodes.During event dispatching node state can change from
Node<->LoadingDummyNodeIf 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- modelparentPath- parent pathselectionTracker- selection tracker
-
reset
public void reset()
Description copied from interface:CachableCache managers invokes this method to free resources. Usually this method must drop references to external objects in order to enable garbage collection of them.
-
initCellRendererEditor
private void initCellRendererEditor(javax.swing.JTree tree)
-
-