// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.ui.swt; 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.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; import org.eclipse.swt.widgets.Label; /** *

* TODO comment *

* * @author Patrick Harms */ public class ShowTaskTreeDialog extends Dialog { /** */ protected Shell shell; /** */ private Tree tree; /** */ protected ITaskTree taskTree; /** * */ public ShowTaskTreeDialog(Shell parent, int style, ITaskTree taskTree, String taskTreeName) { super(parent, style); setText("Task Tree " + taskTreeName); this.taskTree = taskTree; } /** * */ public void open() { createContents(); shell.open(); shell.layout(); Display display = getParent().getDisplay(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } /** * */ private void createContents() { shell = new Shell(getParent(), SWT.SHELL_TRIM | SWT.BORDER | SWT.APPLICATION_MODAL); shell.setSize(450, 300); shell.setText(getText()); shell.setLayout(new GridLayout(4, false)); tree = new Tree(shell, SWT.BORDER | SWT.MULTI); tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1)); buildTree(); Button btnExpandAll = new Button(shell, SWT.NONE); btnExpandAll.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { expandAll(tree, true); } }); btnExpandAll.setText("Expand all"); Button btnCollapseAll = new Button(shell, SWT.NONE); btnCollapseAll.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { expandAll(tree, false); } }); btnCollapseAll.setText("Collapse all"); //new Label(shell, SWT.NONE); new Label(shell, SWT.NONE); new Label(shell, SWT.NONE); new Label(shell, SWT.NONE); } /** * */ private void buildTree() { ITaskTreeNode root = taskTree.getRoot(); TreeItem child = new TreeItem(tree, SWT.NULL); child.setText(root.getName() + " (" + root.getDescription() + ")"); child.setData(root); buildGuiTree(child, root); } /** * */ private void buildGuiTree(TreeItem currentParent, ITaskTreeNode node) { if (node.getChildren() != null) { for (ITaskTreeNode childTask : node.getChildren()) { TreeItem child = new TreeItem(currentParent, SWT.NULL); child.setText(childTask.getName() + " (" + childTask.getDescription() + ")"); child.setData(childTask); buildGuiTree(child, childTask); } } } /** * */ private void expandAll(Tree tree, boolean expanded) { for (TreeItem item : tree.getItems()) { expandAll(item, expanded); } } /** * */ private void expandAll(TreeItem item, boolean expanded) { item.setExpanded(expanded); for (TreeItem childItem : item.getItems()) { expandAll(childItem, expanded); } } }