Check box to be inserted for each node in the tree [message #1440288] |
Wed, 08 October 2014 07:00 |
Abhishek SA Messages: 7 Registered: September 2014 |
Junior Member |
|
|
Hi,
I have a treeView with nodes as in Image (current.png). I need to insert Check box for each node in the tree as in Image(required.png). I am slightly new to GEF . Kindly help . Here is the code:
protected Control createTreeContents(Composite parent) {
final Composite composite = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout(1, false);
composite.setLayout(layout);
Label label = new Label(composite, SWT.NONE);
//label.setBounds(new Rectangle(5, 5, 255, 16));
if (targetClasses.size() == 1) {
label.setText("Select the "
+ getTargetClassSimpleName((Class) targetClasses.get(0))
+ " by clicking on your selection:");
} else {
label.setText("Select the element by clicking on your selection:");
}
treeNode = new DiagramElementTreeNode(
(DiagramElement) model.getTopLevelPackages().get(0));
// Recursively creates the nodes of the tree, retaining only the list of
// target model classes.
treeNode.setTargetClasses(targetClasses);
final PageBook pageBook = new PageBook(composite, SWT.NULL);
GridData gd = new GridData();
gd.grabExcessHorizontalSpace = true;
gd.grabExcessVerticalSpace = true;
gd.horizontalSpan = GridData.FILL;
gd.verticalSpan = GridData.FILL;
pageBook.setLayoutData(gd);
treeViewer = new TreeViewer(pageBook, SWT.H_SCROLL | SWT.V_SCROLL
| SWT.FILL);
treeViewer.setContentProvider(new TreeContentProvider());
treeViewer.setLabelProvider(new TreeLabelProvider());
treeViewer.setAutoExpandLevel(2);
treeViewer.setInput(treeNode);
treeViewer.setSorter(new ViewerSorter());
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent arg0) {
IStructuredSelection selection = (IStructuredSelection) treeViewer
.getSelection();
DiagramElementTreeNode node = (DiagramElementTreeNode) selection
.getFirstElement();
if (!firstSelection) {
Iterator itTargetClasses = targetClasses.iterator();
while (itTargetClasses.hasNext()) {
Class targetClass = (Class) itTargetClasses.next();
if (targetClass.isInstance(node.getValue())) {
selectedElement = node.getValue();
close();
}
}
} else {
firstSelection = false;
}
}
});
return composite;
}
Contents of DiagramElementTreeNode.java
public class DiagramElementTreeNode implements ITreeNode {
private ITreeNode parent;
private List<ITreeNode> children = new ArrayList<ITreeNode>();
private DiagramElement element;
//private Class targetClass;
private List<Class> targetClasses = new ArrayList<Class>();
public DiagramElementTreeNode(DiagramElement element) {
this(null, element);
}
public DiagramElementTreeNode(ITreeNode parent, DiagramElement element) {
this.element = element;
this.parent = parent;
}
private void createChildren(DiagramElement diagramElement) {
try {
if (diagramElement instanceof UmlPackage) {
UmlPackage umlPackage = (UmlPackage) diagramElement;
Iterator<DiagramElement> iterator = umlPackage.getElements().iterator();
while (iterator.hasNext()) {
DiagramElement child = iterator.next();
if (child instanceof UmlPackage) {
DiagramElementTreeNode childTreeNode = new DiagramElementTreeNode(
this, child);
childTreeNode.setTargetClasses(targetClasses);
if (targetClasses.contains(UmlPackage.class) || childTreeNode.hasChildren()||child.hasDescribingDiagram()) {
children.add(childTreeNode);
}
} else {
Iterator<Class> itTargetClasses = targetClasses.iterator();
while (itTargetClasses.hasNext()) {
Class targetClass = itTargetClasses.next();
if (targetClass.isInstance(child)) {
DiagramElementTreeNode childTreeNode = new DiagramElementTreeNode(
this, child);
childTreeNode.setTargetClass(targetClass);
children.add(childTreeNode);
}
}
}
}
}
Collections.sort(children,ITreeNode.nodeComparator);
} catch (Exception e) {
LoggingUtil.logError(e);
}
}
-
Attachment: current.png
(Size: 9.90KB, Downloaded 125 times) -
Attachment: required.png
(Size: 33.16KB, Downloaded 131 times)
|
|
|
Powered by
FUDForum. Page generated in 0.01837 seconds