Class AbstractTreeViewer
- java.lang.Object
-
- org.eclipse.jface.viewers.Viewer
-
- org.eclipse.jface.viewers.ContentViewer
-
- org.eclipse.jface.viewers.StructuredViewer
-
- org.eclipse.jface.viewers.ColumnViewer
-
- org.eclipse.jface.viewers.AbstractTreeViewer
-
- All Implemented Interfaces:
IInputProvider
,IInputSelectionProvider
,IPostSelectionProvider
,ISelectionProvider
- Direct Known Subclasses:
TreeViewer
public abstract class AbstractTreeViewer extends ColumnViewer
Abstract base implementation for tree-structure-oriented viewers (trees and table trees).Nodes in the tree can be in either an expanded or a collapsed state, depending on whether the children on a node are visible. This class introduces public methods for controlling the expanding and collapsing of nodes.
As of 3.2, AbstractTreeViewer supports multiple equal elements (each with a different parent chain) in the tree. This support requires that clients enable the element map by calling
setUseHashlookup(true)
.Content providers for abstract tree viewers must implement one of the interfaces
ITreeContentProvider
or (as of 3.2, to support multiple equal elements)ITreePathContentProvider
.This class is not intended to be subclassed outside of the JFace viewers framework.
- See Also:
TreeViewer
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.jface.viewers.StructuredViewer
StructuredViewer.ColorAndFontCollector, StructuredViewer.ColorAndFontCollectorWithProviders
-
-
Field Summary
Fields Modifier and Type Field Description static int
ALL_LEVELS
Constant indicating that all levels of the tree should be expanded or collapsed.-
Fields inherited from class org.eclipse.jface.viewers.Viewer
WIDGET_DATA_KEY
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractTreeViewer()
Creates an abstract tree viewer.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
add(Object parentElementOrTreePath, Object childElement)
Adds the given child element to this viewer as a child of the given parent element.void
add(Object parentElementOrTreePath, Object... childElements)
Adds the given child elements to this viewer as children of the given parent element.protected void
addSelectionListener(Control control, SelectionListener listener)
Deprecated.void
addTreeListener(ITreeViewerListener listener)
Adds a listener for expand and collapse events in this viewer.protected abstract void
addTreeListener(Control control, TreeListener listener)
Adds the given SWT tree listener to the given SWT control.protected void
assertContentProviderType(IContentProvider provider)
Assert that the content provider is of one of the supported types.protected void
associate(Object element, Item item)
Associates the given element with the given widget.protected void
buildLabel(ViewerLabel updateLabel, Object elementOrPath)
This implementation of buildLabel handles tree paths as well as elements.void
collapseAll()
Collapses all nodes of the viewer's tree, starting with the root.void
collapseToLevel(Object elementOrTreePath, int level)
Collapses the subtree rooted at the given element or tree path to the given level.protected void
createChildren(Widget widget)
Creates all children for the given widget.protected void
createTreeItem(Widget parent, Object element, int index)
Creates a single item for the given parent and synchronizes it with the given element.protected ColumnViewerEditor
createViewerEditor()
This implementation ofcreateViewerEditor()
returns null to ensure API backwards compatibility.protected void
disassociate(Item item)
TheAbstractTreeViewer
implementation of this method also recurses over children of the corresponding element.protected Widget
doFindInputItem(Object element)
Returns the widget in this viewer's control which represents the given element if it is the viewer's input.protected Widget
doFindItem(Object element)
Returns the widget in this viewer's control which represent the given element.protected int
doGetColumnCount()
Returns the number of columns of this viewer.protected void
doUpdateItem(Item item, Object element)
Copies the attributes of the given element into the given SWT item.protected void
doUpdateItem(Widget widget, Object element, boolean fullMap)
Copies the attributes of the given element into the given SWT item.void
expandAll()
Expands all nodes of the viewer's tree, starting with the root.void
expandAll(boolean disableRedraw)
Expands all nodes of the viewer's tree, starting with the root.void
expandToLevel(int level)
Expands the root of the viewer's tree to the given level.void
expandToLevel(int level, boolean disableRedraw)
Expands the root of the viewer's tree to the given level.void
expandToLevel(Object elementOrTreePath, int level)
Expands all ancestors of the given element or tree path so that the given element becomes visible in this viewer's tree control, and then expands the subtree rooted at the given element to the given level.void
expandToLevel(Object elementOrTreePath, int level, boolean disableRedraw)
Expands all ancestors of the given element or tree path so that the given element becomes visible in this viewer's tree control, and then expands the subtree rooted at the given element to the given level.protected void
fireTreeCollapsed(TreeExpansionEvent event)
Fires a tree collapsed event.protected void
fireTreeExpanded(TreeExpansionEvent event)
Fires a tree expanded event.int
getAutoExpandLevel()
Returns the auto-expand level.protected Item
getChild(Widget widget, int index)
Get the child for the widget at index.protected abstract Item[]
getChildren(Widget widget)
Returns the SWT child items for the given SWT widget.Item[]
getChildren(Widget widget, Object[] elementChildren)
Deprecated.This method was inadvertently released as API but is not intended to be called by clients.protected Widget
getColumnViewerOwner(int columnIndex)
Returns the column widget at the given column index.protected abstract boolean
getExpanded(Item item)
Returns whether the given SWT item is expanded or collapsed.Object[]
getExpandedElements()
Returns a list of elements corresponding to expanded nodes in this viewer's tree, including currently hidden ones that are marked as expanded but are under a collapsed ancestor.boolean
getExpandedState(Object elementOrTreePath)
Returns whether the node corresponding to the given element or tree path is expanded or collapsed.TreePath[]
getExpandedTreePaths()
Returns a list of tree paths corresponding to expanded nodes in this viewer's tree, including currently hidden ones that are marked as expanded but are under a collapsed ancestor.protected Item
getItemAt(Point point)
This implementation ofgetItemAt(Point)
returns null to ensure API backwards compatibility.protected abstract int
getItemCount(Control control)
Returns the number of child items of the given SWT control.protected abstract int
getItemCount(Item item)
Returns the number of child items of the given SWT item.protected abstract Item[]
getItems(Item item)
Returns the child items of the given SWT item.protected Item
getNextItem(Item item, boolean includeChildren)
Returns the item after the given item in the tree, ornull
if there is no next item.protected Object
getParentElement(Object elementOrTreePath)
This method takes a tree path or an element.protected abstract Item
getParentItem(Item item)
Returns the parent item of the given item in the tree, ornull
if there is no parent item.protected Item
getPreviousItem(Item item)
Returns the item before the given item in the tree, ornull
if there is no previous item.protected Object[]
getRawChildren(Object parentElementOrTreePath)
Returns the children of the given parent without sorting and filtering them.ISelection
getSelection()
TheAbstractTreeViewer
implementation of this method returns the result as anITreeSelection
.protected abstract Item[]
getSelection(Control control)
Returns all selected items for the given SWT control.protected List
getSelectionFromWidget()
Retrieves the selection, as aList
, from the underlying widget.protected Object[]
getSortedChildren(Object parentElementOrTreePath)
Returns the sorted and filtered set of children of the given element.ITreeSelection
getStructuredSelection()
Returns theITreeSelection
of this viewer.protected TreePath
getTreePathFromItem(Item item)
Returns the tree path for the given item.protected ViewerRow
getViewerRowFromItem(Widget item)
Returns aViewerRow
associated with the given row widget.Object[]
getVisibleExpandedElements()
Gets the expanded elements that are visible to the user.protected void
handleDoubleSelect(SelectionEvent event)
Handles a double-click select event from the widget.protected void
handleTreeCollapse(TreeEvent event)
Handles a tree collapse event from the SWT widget.protected void
handleTreeExpand(TreeEvent event)
Handles a tree expand event from the SWT widget.protected void
hookControl(Control control)
Adds event listener hooks to the given control.protected int
indexForElement(Widget parent, Object element)
Returns the index where the item should be inserted.protected void
inputChanged(Object input, Object oldInput)
Internal hook method called when the input to this viewer is initially set or subsequently changed.void
insert(Object parentElementOrTreePath, Object element, int position)
Inserts the given element as a new child element of the given parent element at the given position.protected void
internalAdd(Widget widget, Object parentElementOrTreePath, Object[] childElements)
Adds the given child elements to this viewer as children of the given parent element.protected void
internalCollapseToLevel(Widget widget, int level)
Recursively collapses the subtree rooted at the given widget to the given level.protected Widget
internalExpand(Object elementOrPath, boolean expand)
Tries to create a path of tree items for the given element or tree path.protected void
internalExpandToLevel(Widget widget, int level)
Recursively expands the subtree rooted at the given widget to the given level.protected Widget[]
internalFindItems(Object parentElementOrTreePath)
Find the items for the given element of tree pathprotected Widget
internalGetWidgetToSelect(Object elementOrTreePath)
Returns the widget to be selected for the given element or tree path.protected void
internalInitializeTree(Control tree)
Initializes the tree with root items, expanding to the appropriate level if necessary.protected boolean
internalIsInputOrEmptyPath(Object elementOrTreePath)
Returns true if the given object is either the input or an empty tree path.protected void
internalRefresh(Object element)
Refreshes this viewer starting at the given element.protected void
internalRefresh(Object element, boolean updateLabels)
Refreshes this viewer starting at the given element.protected void
internalRefresh(Widget widget, Object element, boolean doStruct, boolean updateLabels)
Refreshes the tree starting at the given widget.protected void
internalRemove(Object[] elementsOrPaths)
Removes the given elements from this viewer.protected void
internalRemove(Object parent, Object[] elements)
Removes the given elements from this viewer, whenever those elements appear as children of the given parent.boolean
isExpandable(Object elementOrTreePath)
Return whether the tree node representing the given element or path can be expanded.protected boolean
isSameSelection(List<Item> items, Item[] current)
Returnstrue
if the given list and array of items refer to the same model elements.protected void
labelProviderChanged()
Notifies that the label provider has changed.protected abstract Item
newItem(Widget parent, int style, int index)
Creates a new item.void
remove(Object elementsOrTreePaths)
Removes the given element from the viewer.void
remove(Object... elementsOrTreePaths)
Removes the given elements from this viewer.void
remove(Object parent, Object... elements)
Removes the given elements from this viewer whenever they appear as children of the given parent element.protected abstract void
removeAll(Control control)
Removes all items from the given control.void
removeTreeListener(ITreeViewerListener listener)
Removes a listener for expand and collapse events in this viewer.void
reveal(Object elementOrTreePath)
This implementation of reveal() reveals the given element or tree path.Item
scrollDown(int x, int y)
Scrolls the viewer's control down by one item from the given display-relative coordinates.Item
scrollUp(int x, int y)
Scrolls the viewer's control up by one item from the given display-relative coordinates.void
setAutoExpandLevel(int level)
Sets the auto-expand level to be used when the input of the viewer is set usingStructuredViewer.setInput(Object)
.void
setContentProvider(IContentProvider provider)
Sets the content provider used by thisAbstractTreeViewer
.protected abstract void
setExpanded(Item item, boolean expand)
Sets the expand state of the given item.void
setExpandedElements(Object... elements)
Sets which nodes are expanded in this viewer's tree.void
setExpandedState(Object elementOrTreePath, boolean expanded)
Sets whether the node corresponding to the given element or tree path is expanded or collapsed.void
setExpandedTreePaths(TreePath... treePaths)
Sets which nodes are expanded in this viewer's tree.void
setExpandPreCheckFilters(boolean checkFilters)
InstructsisExpandable(Object)
to consult filters to more accurately determine if an item can be expanded.protected abstract void
setSelection(List<Item> items)
Sets the selection to the given list of items.protected void
setSelectionToWidget(List v, boolean reveal)
This implementation of setSelectionToWidget accepts a list of elements or a list of tree paths.protected void
setSelectionToWidget(ISelection selection, boolean reveal)
Converts the selection to aList
and callssetSelectionToWidget(List, boolean)
.protected abstract void
showItem(Item item)
Shows the given item.protected void
updateChildren(Widget widget, Object parent, Object[] elementChildren)
Deprecated.this is no longer called by the frameworkprotected void
updatePlus(Item item, Object element)
Updates the "+"/"-" icon of the tree node from the given element.-
Methods inherited from class org.eclipse.jface.viewers.ColumnViewer
applyEditorValue, cancelEditing, checkBusy, editElement, getCell, getCellEditors, getCellModifier, getColumnProperties, getColumnViewerEditor, getItem, getLabelProvider, getViewerRow, handleDispose, hookEditingSupport, isBusy, isCellEditorActive, refresh, refresh, setBusy, setCellEditors, setCellModifier, setColumnProperties, setColumnViewerEditor, setLabelProvider, triggerEditorActivationEvent, update
-
Methods inherited from class org.eclipse.jface.viewers.StructuredViewer
addDoubleClickListener, addDragSupport, addDropSupport, addFilter, addOpenListener, addPostSelectionChangedListener, assertElementsNotNull, equals, filter, findItem, findItems, fireDoubleClick, fireOpen, firePostSelectionChanged, getColorAndFontCollector, getComparator, getComparer, getFilteredChildren, getFilters, getRoot, getSorter, handleInvalidSelection, handleLabelProviderChanged, handleOpen, handlePostSelect, handleSelect, hasFilters, internalUpdate, mapElement, needsRefilter, preservingSelection, refresh, refresh, refreshItem, removeDoubleClickListener, removeFilter, removeOpenListener, removePostSelectionChangedListener, resetFilters, setComparator, setComparer, setFilters, setInput, setSelection, setSorter, setUseHashlookup, testFindItem, testFindItems, unmapAllElements, unmapElement, unmapElement, update, updateItem, updateSelection, usingElementMap
-
Methods inherited from class org.eclipse.jface.viewers.ContentViewer
getContentProvider, getInput, getLabelProvider
-
Methods inherited from class org.eclipse.jface.viewers.Viewer
addHelpListener, addSelectionChangedListener, fireHelpRequested, fireSelectionChanged, getControl, getData, handleHelpRequest, removeHelpListener, removeSelectionChangedListener, setData, setSelection
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.jface.viewers.ISelectionProvider
addSelectionChangedListener, removeSelectionChangedListener, setSelection
-
-
-
-
Method Detail
-
add
public void add(Object parentElementOrTreePath, Object... childElements)
Adds the given child elements to this viewer as children of the given parent element. If this viewer does not have a sorter, the elements are added at the end of the parent's list of children in the order given; otherwise, the elements are inserted at the appropriate positions. If a child already exists under the given parent, the child gets refreshed and not added twice.This method should be called (by the content provider) when elements have been added to the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model.
- Parameters:
parentElementOrTreePath
- the parent elementchildElements
- the child elements to add
-
internalFindItems
protected final Widget[] internalFindItems(Object parentElementOrTreePath)
Find the items for the given element of tree path- Parameters:
parentElementOrTreePath
- the element or tree path- Returns:
- the items for that element
- Since:
- 3.3
-
internalAdd
protected void internalAdd(Widget widget, Object parentElementOrTreePath, Object[] childElements)
Adds the given child elements to this viewer as children of the given parent element.EXPERIMENTAL. Not to be used except by JDT. This method was added to support JDT's explorations into grouping by working sets. This method cannot be removed without breaking binary backwards compatibility, but should not be called by clients.
- Parameters:
widget
- the widget for the parent elementparentElementOrTreePath
- the parent elementchildElements
- the child elements to add- Since:
- 3.1
-
indexForElement
protected int indexForElement(Widget parent, Object element)
Returns the index where the item should be inserted.- Parameters:
parent
- The parent widget the element will be inserted into.element
- The element to insert.- Returns:
- the index of the element
-
getSortedChildren
protected Object[] getSortedChildren(Object parentElementOrTreePath)
Description copied from class:StructuredViewer
Returns the sorted and filtered set of children of the given element. The resulting array must not be modified, as it may come directly from the model's internal state.- Overrides:
getSortedChildren
in classStructuredViewer
- Parameters:
parentElementOrTreePath
- the parent element- Returns:
- a sorted and filtered array of child elements
-
add
public void add(Object parentElementOrTreePath, Object childElement)
Adds the given child element to this viewer as a child of the given parent element. If this viewer does not have a sorter, the element is added at the end of the parent's list of children; otherwise, the element is inserted at the appropriate position. If the child already exists under the given parent, the child gets refreshed and not added twice.This method should be called (by the content provider) when a single element has been added to the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model. Note that there is another method for efficiently processing the simultaneous addition of multiple elements.
- Parameters:
parentElementOrTreePath
- the parent element or pathchildElement
- the child element
-
addSelectionListener
@Deprecated protected void addSelectionListener(Control control, SelectionListener listener)
Deprecated.Adds the given SWT selection listener to the given SWT control.- Parameters:
control
- the SWT controllistener
- the SWT selection listener
-
addTreeListener
public void addTreeListener(ITreeViewerListener listener)
Adds a listener for expand and collapse events in this viewer. Has no effect if an identical listener is already registered.- Parameters:
listener
- a tree viewer listener
-
addTreeListener
protected abstract void addTreeListener(Control control, TreeListener listener)
Adds the given SWT tree listener to the given SWT control.- Parameters:
control
- the SWT controllistener
- the SWT tree listener
-
associate
protected void associate(Object element, Item item)
Description copied from class:StructuredViewer
Associates the given element with the given widget. Sets the given item's data to be the element, and maps the element to the item in the element map (if enabled).- Overrides:
associate
in classStructuredViewer
- Parameters:
element
- the elementitem
- the widget
-
collapseAll
public void collapseAll()
Collapses all nodes of the viewer's tree, starting with the root. This method is equivalent tocollapseToLevel(ALL_LEVELS)
.
-
collapseToLevel
public void collapseToLevel(Object elementOrTreePath, int level)
Collapses the subtree rooted at the given element or tree path to the given level.Note that the default implementation of this method does turn redraw off via this operation via a call to
setRedraw
- Parameters:
elementOrTreePath
- the element or tree pathlevel
- non-negative level, orALL_LEVELS
to collapse all levels of the tree
-
createChildren
protected void createChildren(Widget widget)
Creates all children for the given widget.The default implementation of this framework method assumes that
widget.getData()
returns the element corresponding to the node. Note: the node is not visually expanded! You may have to callparent.setExpanded(true)
.- Parameters:
widget
- the widget
-
createTreeItem
protected void createTreeItem(Widget parent, Object element, int index)
Creates a single item for the given parent and synchronizes it with the given element.- Parameters:
parent
- the parent widgetelement
- the elementindex
- if non-negative, indicates the position to insert the item into its parent
-
disassociate
protected void disassociate(Item item)
TheAbstractTreeViewer
implementation of this method also recurses over children of the corresponding element.- Overrides:
disassociate
in classStructuredViewer
- Parameters:
item
- the widget
-
doFindInputItem
protected Widget doFindInputItem(Object element)
Description copied from class:StructuredViewer
Returns the widget in this viewer's control which represents the given element if it is the viewer's input.This method is internal to the framework; subclassers should not call this method.
- Specified by:
doFindInputItem
in classStructuredViewer
- Parameters:
element
- the element to find the representing widget for- Returns:
- the corresponding widget, or
null
if none
-
doFindItem
protected Widget doFindItem(Object element)
Description copied from class:StructuredViewer
Returns the widget in this viewer's control which represent the given element. This method searches all the children of the input element.This method is internal to the framework; subclassers should not call this method.
- Specified by:
doFindItem
in classStructuredViewer
- Parameters:
element
- the element to find the representing widget for- Returns:
- the corresponding widget, or
null
if none
-
doUpdateItem
protected void doUpdateItem(Item item, Object element)
Copies the attributes of the given element into the given SWT item.- Parameters:
item
- the SWT itemelement
- the element
-
isSameSelection
protected boolean isSameSelection(List<Item> items, Item[] current)
Returnstrue
if the given list and array of items refer to the same model elements. Order is unimportant.This method is not intended to be overridden by subclasses.
- Parameters:
items
- the list of itemscurrent
- the array of items- Returns:
true
if the refer to the same elements,false
otherwise- Since:
- 3.1 in TreeViewer, moved to AbstractTreeViewer in 3.3
-
doUpdateItem
protected void doUpdateItem(Widget widget, Object element, boolean fullMap)
Description copied from class:StructuredViewer
Copies the attributes of the given element into the given SWT item. The element map is updated according to the value offullMap
. IffullMap
istrue
then the current mapping from element to widgets is removed and the new mapping is added. If full map isfalse
then only the new map gets installed. Installing only the new map is necessary in cases where only the order of elements changes but not the set of elements.This method is internal to the framework; subclassers should not call this method.
- Specified by:
doUpdateItem
in classStructuredViewer
- Parameters:
widget
- widget item to updateelement
- the element to representfullMap
-true
if mappings are added and removed, andfalse
if only the new map gets installed
-
expandAll
public void expandAll()
Expands all nodes of the viewer's tree, starting with the root. This method is equivalent toexpandToLevel(ALL_LEVELS)
.
-
expandAll
public void expandAll(boolean disableRedraw)
Expands all nodes of the viewer's tree, starting with the root. This method is equivalent toexpandToLevel(ALL_LEVELS)
.- Parameters:
disableRedraw
-true
when drawing operations should be disabled during expansion.- Since:
- 3.14
-
expandToLevel
public void expandToLevel(int level)
Expands the root of the viewer's tree to the given level.- Parameters:
level
- non-negative level, orALL_LEVELS
to expand all levels of the tree
-
expandToLevel
public void expandToLevel(int level, boolean disableRedraw)
Expands the root of the viewer's tree to the given level.- Parameters:
level
- non-negative level, orALL_LEVELS
to expand all levels of the treedisableRedraw
-true
when drawing operations should be disabled during expansion.true
when drawing operations should be enabled during expansion. Prefer using true as this results in a faster UI- Since:
- 3.14
-
expandToLevel
public void expandToLevel(Object elementOrTreePath, int level)
Expands all ancestors of the given element or tree path so that the given element becomes visible in this viewer's tree control, and then expands the subtree rooted at the given element to the given level.- Parameters:
elementOrTreePath
- the elementlevel
- non-negative level, orALL_LEVELS
to expand all levels of the tree
-
expandToLevel
public void expandToLevel(Object elementOrTreePath, int level, boolean disableRedraw)
Expands all ancestors of the given element or tree path so that the given element becomes visible in this viewer's tree control, and then expands the subtree rooted at the given element to the given level.- Parameters:
elementOrTreePath
- the elementlevel
- non-negative level, orALL_LEVELS
to expand all levels of the treedisableRedraw
-true
when drawing operations should be disabled during expansion.false
when drawing operations should be enabled during expansion. Prefer true as this results in a faster UI.- Since:
- 3.14
-
fireTreeCollapsed
protected void fireTreeCollapsed(TreeExpansionEvent event)
Fires a tree collapsed event. Only listeners registered at the time this method is called are notified.- Parameters:
event
- the tree expansion event- See Also:
ITreeViewerListener.treeCollapsed(org.eclipse.jface.viewers.TreeExpansionEvent)
-
fireTreeExpanded
protected void fireTreeExpanded(TreeExpansionEvent event)
Fires a tree expanded event. Only listeners registered at the time this method is called are notified.- Parameters:
event
- the tree expansion event- See Also:
ITreeViewerListener.treeExpanded(org.eclipse.jface.viewers.TreeExpansionEvent)
-
getAutoExpandLevel
public int getAutoExpandLevel()
Returns the auto-expand level.- Returns:
- non-negative level, or
ALL_LEVELS
if all levels of the tree are expanded automatically - See Also:
setAutoExpandLevel(int)
-
getChildren
protected abstract Item[] getChildren(Widget widget)
Returns the SWT child items for the given SWT widget.- Parameters:
widget
- the widget- Returns:
- the child items
-
getChild
protected Item getChild(Widget widget, int index)
Get the child for the widget at index. Note that the default implementation is not very efficient and should be overridden if this class is implemented.- Parameters:
widget
- the widget to checkindex
- the index of the widget- Returns:
- Item or
null
if widget is not a type that can contain items. - Throws:
ArrayIndexOutOfBoundsException
- if the index is not valid.- Since:
- 3.1
-
getExpanded
protected abstract boolean getExpanded(Item item)
Returns whether the given SWT item is expanded or collapsed.- Parameters:
item
- the item- Returns:
true
if the item is considered expanded andfalse
if collapsed
-
getExpandedElements
public Object[] getExpandedElements()
Returns a list of elements corresponding to expanded nodes in this viewer's tree, including currently hidden ones that are marked as expanded but are under a collapsed ancestor.This method is typically used when preserving the interesting state of a viewer;
setExpandedElements
is used during the restore.- Returns:
- the array of expanded elements
- See Also:
setExpandedElements(java.lang.Object...)
-
getExpandedState
public boolean getExpandedState(Object elementOrTreePath)
Returns whether the node corresponding to the given element or tree path is expanded or collapsed.- Parameters:
elementOrTreePath
- the element- Returns:
true
if the node is expanded, andfalse
if collapsed
-
getItemCount
protected abstract int getItemCount(Control control)
Returns the number of child items of the given SWT control.- Parameters:
control
- the control- Returns:
- the number of children
-
getItemCount
protected abstract int getItemCount(Item item)
Returns the number of child items of the given SWT item.- Parameters:
item
- the item- Returns:
- the number of children
-
getItems
protected abstract Item[] getItems(Item item)
Returns the child items of the given SWT item.- Parameters:
item
- the item- Returns:
- the child items
-
getNextItem
protected Item getNextItem(Item item, boolean includeChildren)
Returns the item after the given item in the tree, ornull
if there is no next item.- Parameters:
item
- the itemincludeChildren
-true
if the children are considered in determining which item is next, andfalse
if subtrees are ignored- Returns:
- the next item, or
null
if none
-
getParentItem
protected abstract Item getParentItem(Item item)
Returns the parent item of the given item in the tree, ornull
if there is no parent item.- Parameters:
item
- the item- Returns:
- the parent item, or
null
if none
-
getPreviousItem
protected Item getPreviousItem(Item item)
Returns the item before the given item in the tree, ornull
if there is no previous item.- Parameters:
item
- the item- Returns:
- the previous item, or
null
if none
-
getRawChildren
protected Object[] getRawChildren(Object parentElementOrTreePath)
Description copied from class:StructuredViewer
Returns the children of the given parent without sorting and filtering them. The resulting array must not be modified, as it may come directly from the model's internal state.Returns an empty array if the given parent is
null
.- Overrides:
getRawChildren
in classColumnViewer
- Parameters:
parentElementOrTreePath
- the parent element- Returns:
- the child elements
-
getSelection
protected abstract Item[] getSelection(Control control)
Returns all selected items for the given SWT control.- Parameters:
control
- the control- Returns:
- the list of selected items
-
getSelectionFromWidget
protected List getSelectionFromWidget()
Description copied from class:StructuredViewer
Retrieves the selection, as aList
, from the underlying widget.- Specified by:
getSelectionFromWidget
in classStructuredViewer
- Returns:
- the list of selected elements
-
handleDoubleSelect
protected void handleDoubleSelect(SelectionEvent event)
Description copied from class:StructuredViewer
Handles a double-click select event from the widget.This method is internal to the framework; subclassers should not call this method.
- Overrides:
handleDoubleSelect
in classStructuredViewer
- Parameters:
event
- the SWT selection event
-
handleTreeCollapse
protected void handleTreeCollapse(TreeEvent event)
Handles a tree collapse event from the SWT widget.- Parameters:
event
- the SWT tree event
-
handleTreeExpand
protected void handleTreeExpand(TreeEvent event)
Handles a tree expand event from the SWT widget.- Parameters:
event
- the SWT tree event
-
hookControl
protected void hookControl(Control control)
Description copied from class:ContentViewer
Adds event listener hooks to the given control.All subclasses must call this method when their control is first established.
The
ContentViewer
implementation of this method hooks dispose events for the given control. Subclasses may override if they need to add other control hooks; however,super.hookControl
must be invoked.- Overrides:
hookControl
in classColumnViewer
- Parameters:
control
- the control
-
inputChanged
protected void inputChanged(Object input, Object oldInput)
Description copied from class:Viewer
Internal hook method called when the input to this viewer is initially set or subsequently changed.The default implementation does nothing. Subclassers may override this method to do something when a viewer's input is set. A typical use is populate the viewer.
- Overrides:
inputChanged
in classViewer
- Parameters:
input
- the new input of this viewer, ornull
if noneoldInput
- the old input element ornull
if there was previously no input
-
internalInitializeTree
protected void internalInitializeTree(Control tree)
Initializes the tree with root items, expanding to the appropriate level if necessary.- Parameters:
tree
- the tree control- Since:
- 3.3
-
internalCollapseToLevel
protected void internalCollapseToLevel(Widget widget, int level)
Recursively collapses the subtree rooted at the given widget to the given level.- Parameters:
widget
- the widgetlevel
- non-negative level, orALL_LEVELS
to collapse all levels of the tree
-
internalExpand
protected Widget internalExpand(Object elementOrPath, boolean expand)
Tries to create a path of tree items for the given element or tree path. This method recursively walks up towards the root of the tree and in the case of an element (rather than a tree path) assumes thatgetParent
returns the correct parent of an element.- Parameters:
elementOrPath
- the elementexpand
-true
if all nodes on the path should be expanded, andfalse
otherwise- Returns:
- Widget
-
getParentElement
protected Object getParentElement(Object elementOrTreePath)
This method takes a tree path or an element. If the argument is not a tree path, returns the parent of the given element ornull
if the parent is not known. If the argument is a tree path with more than one segment, returns its parent tree path, otherwise returnsnull
.- Parameters:
elementOrTreePath
- the element or path to find parent for- Returns:
- the parent element, or parent path, or
null
- Since:
- 3.2
-
internalGetWidgetToSelect
protected Widget internalGetWidgetToSelect(Object elementOrTreePath)
Returns the widget to be selected for the given element or tree path.- Parameters:
elementOrTreePath
- the element or tree path to select- Returns:
- the widget to be selected, or
null
if not found - Since:
- 3.1
-
internalExpandToLevel
protected void internalExpandToLevel(Widget widget, int level)
Recursively expands the subtree rooted at the given widget to the given level.Note that the default implementation of this method does not call
setRedraw
.- Parameters:
widget
- the widgetlevel
- non-negative level, orALL_LEVELS
to collapse all levels of the tree
-
internalRefresh
protected void internalRefresh(Object element)
Description copied from class:StructuredViewer
Refreshes this viewer starting at the given element.- Specified by:
internalRefresh
in classStructuredViewer
- Parameters:
element
- the element
-
internalRefresh
protected void internalRefresh(Object element, boolean updateLabels)
Description copied from class:StructuredViewer
Refreshes this viewer starting at the given element. Labels are updated as described inrefresh(boolean updateLabels)
.The default implementation simply calls
internalRefresh(element)
, ignoringupdateLabels
.If this method is overridden to do the actual refresh, then
internalRefresh(Object element)
should simply callinternalRefresh(element, true)
.- Overrides:
internalRefresh
in classStructuredViewer
- Parameters:
element
- the elementupdateLabels
-true
to update labels for existing elements,false
to only update labels as needed, assuming that labels for existing elements are unchanged.
-
internalRefresh
protected void internalRefresh(Widget widget, Object element, boolean doStruct, boolean updateLabels)
Refreshes the tree starting at the given widget.EXPERIMENTAL. Not to be used except by JDT. This method was added to support JDT's explorations into grouping by working sets. This method cannot be removed without breaking binary backwards compatibility, but should not be called by clients.
- Parameters:
widget
- the widgetelement
- the elementdoStruct
-true
if structural changes are to be picked up, andfalse
if only label provider changes are of interestupdateLabels
-true
to update labels for existing elements,false
to only update labels as needed, assuming that labels for existing elements are unchanged.- Since:
- 3.1
-
internalRemove
protected void internalRemove(Object[] elementsOrPaths)
Removes the given elements from this viewer.EXPERIMENTAL. Not to be used except by JDT. This method was added to support JDT's explorations into grouping by working sets. This method cannot be removed without breaking binary backwards compatibility, but should not be called by clients.
- Parameters:
elementsOrPaths
- the elements or element paths to remove- Since:
- 3.1
-
internalRemove
protected void internalRemove(Object parent, Object[] elements)
Removes the given elements from this viewer, whenever those elements appear as children of the given parent.- Parameters:
parent
- the parent elementelements
- the elements to remove- Since:
- 3.1
-
isExpandable
public boolean isExpandable(Object elementOrTreePath)
Return whether the tree node representing the given element or path can be expanded. Clients should query expandability by path if the viewer's content provider is anITreePathContentProvider
.The default implementation of this framework method calls
hasChildren
on this viewer's content provider. It may be overridden if necessary.- Parameters:
elementOrTreePath
- the element or path- Returns:
true
if the tree node representing the given element can be expanded, orfalse
if not- See Also:
setExpandPreCheckFilters(boolean)
-
labelProviderChanged
protected void labelProviderChanged()
Description copied from class:ContentViewer
Notifies that the label provider has changed.The
ContentViewer
implementation of this method callsrefresh()
. Subclasses may reimplement or extend.- Overrides:
labelProviderChanged
in classContentViewer
-
newItem
protected abstract Item newItem(Widget parent, int style, int index)
Creates a new item.- Parameters:
parent
- the parent widgetstyle
- SWT style bitsindex
- if non-negative, indicates the position to insert the item into its parent- Returns:
- the newly-created item
-
remove
public void remove(Object... elementsOrTreePaths)
Removes the given elements from this viewer. The selection is updated if required.This method should be called (by the content provider) when elements have been removed from the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model.
- Parameters:
elementsOrTreePaths
- the elements to remove
-
remove
public void remove(Object parent, Object... elements)
Removes the given elements from this viewer whenever they appear as children of the given parent element. If the given elements also appear as children of some other parent, the other parent will remain unchanged. The selection is updated if required.This method should be called (by the content provider) when elements have been removed from the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model.
- Parameters:
parent
- the parent of the elements to removeelements
- the elements to remove- Since:
- 3.2
-
remove
public void remove(Object elementsOrTreePaths)
Removes the given element from the viewer. The selection is updated if necessary.This method should be called (by the content provider) when a single element has been removed from the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model. Note that there is another method for efficiently processing the simultaneous removal of multiple elements.
- Parameters:
elementsOrTreePaths
- the element
-
removeAll
protected abstract void removeAll(Control control)
Removes all items from the given control.- Parameters:
control
- the control
-
removeTreeListener
public void removeTreeListener(ITreeViewerListener listener)
Removes a listener for expand and collapse events in this viewer. Has no effect if an identical listener is not registered.- Parameters:
listener
- a tree viewer listener
-
reveal
public void reveal(Object elementOrTreePath)
This implementation of reveal() reveals the given element or tree path.- Specified by:
reveal
in classStructuredViewer
- Parameters:
elementOrTreePath
- the element to reveal
-
scrollDown
public Item scrollDown(int x, int y)
Description copied from class:Viewer
Scrolls the viewer's control down by one item from the given display-relative coordinates. Returns the newly revealed Item, ornull
if no scrolling occurred or if the viewer doesn't represent an item-based widget.- Overrides:
scrollDown
in classViewer
- Parameters:
x
- horizontal coordinatey
- vertical coordinate- Returns:
- the item scrolled down to
-
scrollUp
public Item scrollUp(int x, int y)
Description copied from class:Viewer
Scrolls the viewer's control up by one item from the given display-relative coordinates. Returns the newly revealed Item, ornull
if no scrolling occurred or if the viewer doesn't represent an item-based widget.
-
setAutoExpandLevel
public void setAutoExpandLevel(int level)
Sets the auto-expand level to be used when the input of the viewer is set usingStructuredViewer.setInput(Object)
. The value 0 means that there is no auto-expand; 1 means that the invisible root element is expanded (since most concrete subclasses do not show the root element, there is usually no practical difference between using the values 0 and 1); 2 means that top-level elements are expanded, but not their children; 3 means that top-level elements are expanded, and their children, but not grandchildren; and so on.The value
ALL_LEVELS
means that all subtrees should be expanded.Note that in previous releases, the Javadoc for this method had an off-by one error. See bug 177669 for details.
- Parameters:
level
- non-negative level, orALL_LEVELS
to expand all levels of the tree
-
setContentProvider
public void setContentProvider(IContentProvider provider)
Sets the content provider used by thisAbstractTreeViewer
.Content providers for abstract tree viewers must implement either
ITreeContentProvider
orITreePathContentProvider
.- Overrides:
setContentProvider
in classStructuredViewer
- Parameters:
provider
- the content provider- See Also:
ContentViewer.getContentProvider()
-
assertContentProviderType
protected void assertContentProviderType(IContentProvider provider)
Description copied from class:StructuredViewer
Assert that the content provider is of one of the supported types.- Overrides:
assertContentProviderType
in classStructuredViewer
- Parameters:
provider
- content provider to check
-
setExpanded
protected abstract void setExpanded(Item item, boolean expand)
Sets the expand state of the given item.- Parameters:
item
- the itemexpand
- the expand state of the item
-
setExpandedElements
public void setExpandedElements(Object... elements)
Sets which nodes are expanded in this viewer's tree. The given list contains the elements that are to be expanded; all other nodes are to be collapsed.This method is typically used when restoring the interesting state of a viewer captured by an earlier call to
getExpandedElements
.- Parameters:
elements
- the array of expanded elements- See Also:
getExpandedElements()
-
setExpandedTreePaths
public void setExpandedTreePaths(TreePath... treePaths)
Sets which nodes are expanded in this viewer's tree. The given list contains the tree paths that are to be expanded; all other nodes are to be collapsed.This method is typically used when restoring the interesting state of a viewer captured by an earlier call to
getExpandedTreePaths
.- Parameters:
treePaths
- the array of expanded tree paths- Since:
- 3.2
- See Also:
getExpandedTreePaths()
-
setExpandedState
public void setExpandedState(Object elementOrTreePath, boolean expanded)
Sets whether the node corresponding to the given element or tree path is expanded or collapsed.- Parameters:
elementOrTreePath
- the elementexpanded
-true
if the node is expanded, andfalse
if collapsed
-
setSelection
protected abstract void setSelection(List<Item> items)
Sets the selection to the given list of items.- Parameters:
items
- list of items (element type:org.eclipse.swt.widgets.Item
)
-
setSelectionToWidget
protected void setSelectionToWidget(List v, boolean reveal)
This implementation of setSelectionToWidget accepts a list of elements or a list of tree paths.- Specified by:
setSelectionToWidget
in classStructuredViewer
- Parameters:
v
- list of selected elements (element type:Object
) ornull
if the selection is to be clearedreveal
-true
if the selection is to be made visible, andfalse
otherwise
-
showItem
protected abstract void showItem(Item item)
Shows the given item.- Parameters:
item
- the item
-
updateChildren
@Deprecated protected void updateChildren(Widget widget, Object parent, Object[] elementChildren)
Deprecated.this is no longer called by the frameworkUpdates the tree items to correspond to the child elements of the given parent element. If null is passed for the children, this method obtains them (only if needed).- Parameters:
widget
- the widgetparent
- the parent elementelementChildren
- the child elements, or null
-
getChildren
@Deprecated public Item[] getChildren(Widget widget, Object[] elementChildren)
Deprecated.This method was inadvertently released as API but is not intended to be called by clients.Not to be called by clients. Return the items to be refreshed as part of an update. elementChildren are the new elements.- Parameters:
widget
- widget to get children forelementChildren
- unused- Returns:
- Item[]
- Since:
- 3.4
-
updatePlus
protected void updatePlus(Item item, Object element)
Updates the "+"/"-" icon of the tree node from the given element. It callsisExpandable
to determine whether an element is expandable.- Parameters:
item
- the itemelement
- the element
-
getVisibleExpandedElements
public Object[] getVisibleExpandedElements()
Gets the expanded elements that are visible to the user. An expanded element is only visible if the parent is expanded.- Returns:
- the visible expanded elements
- Since:
- 2.0
-
getTreePathFromItem
protected TreePath getTreePathFromItem(Item item)
Returns the tree path for the given item.- Parameters:
item
- item to get path for- Returns:
TreePath
- Since:
- 3.2
-
getSelection
public ISelection getSelection()
TheAbstractTreeViewer
implementation of this method returns the result as anITreeSelection
.Call
Subclasses do not typically override this method, but implementgetStructuredSelection()
instead to get an instance ofITreeSelection
directly.getSelectionFromWidget(List)
instead. If they override this method, they should return anITreeSelection
as well.- Specified by:
getSelection
in interfaceISelectionProvider
- Overrides:
getSelection
in classStructuredViewer
- Returns:
- ISelection
- Since:
- 3.2
-
getStructuredSelection
public ITreeSelection getStructuredSelection() throws ClassCastException
Returns theITreeSelection
of this viewer.Subclasses whose
getSelection()
specifies to return a more specific type should also override this method and return that type.- Overrides:
getStructuredSelection
in classStructuredViewer
- Returns:
- ITreeSelection
- Throws:
ClassCastException
- if the selection of the viewer is not an instance of ITreeSelection- Since:
- 3.11
-
setSelectionToWidget
protected void setSelectionToWidget(ISelection selection, boolean reveal)
Description copied from class:StructuredViewer
Converts the selection to aList
and callssetSelectionToWidget(List, boolean)
. The selection is expected to be anIStructuredSelection
of elements. If not, the selection is cleared.Subclasses do not typically override this method, but implement
setSelectionToWidget(List, boolean)
instead.- Overrides:
setSelectionToWidget
in classStructuredViewer
- Parameters:
selection
- an IStructuredSelection of elementsreveal
-true
to reveal the first element in the selection, orfalse
otherwise
-
getExpandedTreePaths
public TreePath[] getExpandedTreePaths()
Returns a list of tree paths corresponding to expanded nodes in this viewer's tree, including currently hidden ones that are marked as expanded but are under a collapsed ancestor.This method is typically used when preserving the interesting state of a viewer;
setExpandedElements
is used during the restore.- Returns:
- the array of expanded tree paths
- Since:
- 3.2
- See Also:
setExpandedElements(java.lang.Object...)
-
insert
public void insert(Object parentElementOrTreePath, Object element, int position)
Inserts the given element as a new child element of the given parent element at the given position. If this viewer has a sorter, the position is ignored and the element is inserted at the correct position in the sort order.This method should be called (by the content provider) when elements have been added to the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model.
- Parameters:
parentElementOrTreePath
- the parent element, or the tree path to the parentelement
- the elementposition
- a 0-based position relative to the model, or -1 to indicate the last position- Since:
- 3.2
-
getColumnViewerOwner
protected Widget getColumnViewerOwner(int columnIndex)
Description copied from class:ColumnViewer
Returns the column widget at the given column index.- Specified by:
getColumnViewerOwner
in classColumnViewer
- Parameters:
columnIndex
- the column index- Returns:
- Widget the column widget
-
getItemAt
protected Item getItemAt(Point point)
This implementation ofgetItemAt(Point)
returns null to ensure API backwards compatibility. Subclasses should override.- Specified by:
getItemAt
in classColumnViewer
- Parameters:
point
- the widget-relative coordinates- Returns:
- the
Item
at the coordinates ornull
if there is no item at the given coordinates - Since:
- 3.3
-
createViewerEditor
protected ColumnViewerEditor createViewerEditor()
This implementation ofcreateViewerEditor()
returns null to ensure API backwards compatibility. Subclasses should override.- Specified by:
createViewerEditor
in classColumnViewer
- Returns:
- the editor, or
null
if this viewer does not support editing cell contents. - Since:
- 3.3
-
doGetColumnCount
protected int doGetColumnCount()
Returns the number of columns of this viewer.Subclasses should overwrite this method, which has a default implementation (returning 0) for API backwards compatility reasons
- Specified by:
doGetColumnCount
in classColumnViewer
- Returns:
- the number of columns
- Since:
- 3.3
-
buildLabel
protected void buildLabel(ViewerLabel updateLabel, Object elementOrPath)
This implementation of buildLabel handles tree paths as well as elements.- Overrides:
buildLabel
in classStructuredViewer
- Parameters:
updateLabel
- the ViewerLabel to collect the result inelementOrPath
- the element or tree path for which a label should be built- See Also:
StructuredViewer.buildLabel(org.eclipse.jface.viewers.ViewerLabel, java.lang.Object)
-
internalIsInputOrEmptyPath
protected final boolean internalIsInputOrEmptyPath(Object elementOrTreePath)
Returns true if the given object is either the input or an empty tree path.- Parameters:
elementOrTreePath
- an element which could either be the viewer's input, or a tree path- Returns:
true
if the given object is either the input or an empty tree path,false
otherwise.- Since:
- 3.3
-
getViewerRowFromItem
protected ViewerRow getViewerRowFromItem(Widget item)
Description copied from class:ColumnViewer
Returns aViewerRow
associated with the given row widget. Implementations may re-use the same instance for different row widgets; callers can only use the viewer row locally and until the next call to this method.- Specified by:
getViewerRowFromItem
in classColumnViewer
- Parameters:
item
- the row widget- Returns:
- ViewerRow a viewer row object
-
setExpandPreCheckFilters
public void setExpandPreCheckFilters(boolean checkFilters)
InstructsisExpandable(Object)
to consult filters to more accurately determine if an item can be expanded.Setting this value to
true
will affect performance of the tree viewer.To improve performance, by default the tree viewer does not consult filters when determining if a tree node could be expanded.
- Parameters:
checkFilters
-true
to instruct tree viewer to consult filters- Since:
- 3.8
- See Also:
isExpandable(Object)
-
-