Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 43642 Details for
Bug 145624
[Viewers] TreeViewer#expandAll is very slow due to intermediate repainting
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Snippet demonstrating the expand and collapse issues
TreeSnippet.java (text/plain), 6.03 KB, created by
Micah Hainline
on 2006-06-06 16:15:55 EDT
(
hide
)
Description:
Snippet demonstrating the expand and collapse issues
Filename:
MIME Type:
Creator:
Micah Hainline
Created:
2006-06-06 16:15:55 EDT
Size:
6.03 KB
patch
obsolete
>import java.util.ArrayList; >import java.util.Collection; >import java.util.List; > >import org.eclipse.jface.viewers.ITreeContentProvider; >import org.eclipse.jface.viewers.LabelProvider; >import org.eclipse.jface.viewers.TreeViewer; >import org.eclipse.jface.viewers.Viewer; >import org.eclipse.swt.SWT; >import org.eclipse.swt.events.SelectionAdapter; >import org.eclipse.swt.events.SelectionEvent; >import org.eclipse.swt.layout.GridData; >import org.eclipse.swt.layout.GridLayout; >import org.eclipse.swt.widgets.Button; >import org.eclipse.swt.widgets.Composite; >import org.eclipse.swt.widgets.Display; >import org.eclipse.swt.widgets.Label; >import org.eclipse.swt.widgets.Shell; >import org.eclipse.swt.widgets.Tree; > >public class TreeSnippet >{ > private static final int PARENTS = 100; > private static final int CHILDREN = 10; > > void run() > { > Display display = new Display(); > Shell shell = new Shell(display); > shell.setLayout(new GridLayout()); > shell.setText("Tree Expand Snippet"); > > createVisuals(shell); > > shell.open(); > > while (!shell.isDisposed()) > { > if (!display.readAndDispatch()) > display.sleep(); > } > > display.dispose(); > } > > /** > * Creates the tree and buttons. > * > * @param composite a composite > */ > private void createVisuals(Composite composite) > { > composite.setLayout(new GridLayout()); > Label header = new Label(composite, SWT.WRAP); > header.setText("Test the Tree expand functionality"); //$NON-NLS-1$ > header.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false)); > > // Create the tree viewer > final TreeViewer viewer = createTreeViewer(composite); > > // Create the control buttons to expand and collapse the tree > createButtons(composite, viewer); > > // Create and set the list of input TreeNodes > viewer.setInput(createInputList()); > } > > /** > * Creates a new <code>TreeViewer</code> that handles a <code>List</code> of > * <code>TreeNodes</code> as input. > * > * @param composite a composite > * @return the tree viewer > */ > private TreeViewer createTreeViewer(Composite composite) > { > final Tree tree = new Tree(composite, SWT.SINGLE); > final TreeViewer viewer = new TreeViewer(tree); > > viewer.setContentProvider(new ITreeContentProvider() > { > public void inputChanged(Viewer p_viewer, Object p_oldInput, Object p_newInput) > { > // do nothing. > } > > public void dispose() > { > // do nothing. > } > > public Object[] getElements(Object p_inputElement) > { > if (p_inputElement instanceof Collection) > { > Collection list = (Collection) p_inputElement; > return list.toArray(); > } > return new Object[] {}; > } > > public boolean hasChildren(Object p_element) > { > return !((TreeNode) p_element).children.isEmpty(); > } > > public Object getParent(Object p_element) > { > return ((TreeNode) p_element).parent; > } > > public Object[] getChildren(Object p_parentElement) > { > return ((TreeNode) p_parentElement).children.toArray(); > } > > }); > viewer.setLabelProvider(new LabelProvider() > { > public String getText(Object element) > { > return ((TreeNode) element).name; > } > }); > tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); > return viewer; > } > > /** > * Creates the expand and collapse buttons. > * > * @param composite a composite > * @param viewer the tree viewer > */ > private void createButtons(Composite composite, final TreeViewer viewer) > { > Button expandButton = new Button(composite, SWT.PUSH); > expandButton.setText("Expand the tree"); > expandButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false)); > expandButton.addSelectionListener(new SelectionAdapter() > { > public void widgetSelected(SelectionEvent e) > { > viewer.expandAll(); > } > }); > > Button expandFastButton = new Button(composite, SWT.PUSH); > expandFastButton.setText("Defer redraw and expand the tree"); > expandFastButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false)); > expandFastButton.addSelectionListener(new SelectionAdapter() > { > public void widgetSelected(SelectionEvent e) > { > viewer.getTree().setRedraw(false); > viewer.expandAll(); > viewer.getTree().setRedraw(true); > } > }); > > Button collapseButton = new Button(composite, SWT.PUSH); > collapseButton.setText("Collapse the tree"); > collapseButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false)); > collapseButton.addSelectionListener(new SelectionAdapter() > { > public void widgetSelected(SelectionEvent e) > { > viewer.collapseAll(); > } > }); > > Button collapseFastButton = new Button(composite, SWT.PUSH); > collapseFastButton.setText("Defer redraw and collapse the tree"); > collapseFastButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false)); > collapseFastButton.addSelectionListener(new SelectionAdapter() > { > public void widgetSelected(SelectionEvent e) > { > viewer.getTree().setRedraw(false); > viewer.collapseAll(); > viewer.getTree().setRedraw(true); > } > }); > } > > /** > * @return a <code>List</code> of <code>TreeNodes</code>. > */ > private List createInputList() > { > List input = new ArrayList(); > for (int i = 0; i < PARENTS; i++) > { > String parentName = "Parent " + new Integer(i).toString(); > TreeNode parent = new TreeNode(null, parentName); > for (int j = 0; j < CHILDREN; j++) > { > String childName = "Child " + new Integer(j).toString() + " of " + parentName; > TreeNode child = new TreeNode(parent, childName); > parent.children.add(child); > } > input.add(parent); > } > return input; > } > > public static void main(String[] args) > { > new TreeSnippet().run(); > } > > /** > * Quick and dirty tree node class to use as input for the tree viewer. > */ > private class TreeNode > { > public final TreeNode parent; > public final List children; > public final String name; > > public TreeNode(TreeNode parent, String name) > { > this.parent = parent; > this.name = name; > children = new ArrayList(); > } > } >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 145624
: 43642 |
44093