Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java')
-rw-r--r--bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java
new file mode 100644
index 00000000..605ffb81
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Manumitting Technologies, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Brian de Alwis (MT) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.e4.tools.css.spy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.css.core.dom.CSSStylableElement;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Control;
+import org.w3c.dom.NodeList;
+
+public class WidgetTreeProvider implements ITreeContentProvider {
+ private static final Object[] EMPTY_ARRAY = new Object[0];
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof Object[]) {
+ return (Object[]) inputElement;
+ } else if (inputElement instanceof Collection< ? >) {
+ return ((Collection< ? >) inputElement).toArray();
+ }
+ return getChildren(inputElement);
+ }
+
+
+ public Object[] getChildren(Object parentElement) {
+ CSSStylableElement element = CssSpyDialog.getCSSElement(parentElement);
+ if (element == null) {
+ return new Object[0];
+ }
+ NodeList kids = element.getChildNodes();
+ ArrayList<Object> children = new ArrayList<Object>(kids.getLength());
+ for (int i = 0; i < kids.getLength(); i++) {
+ children.add(((CSSStylableElement) kids.item(i)).getNativeWidget());
+ }
+ // if (parentElement instanceof Shell) {
+ // // ToolBar is part of the children
+ // //Collections.addAll(children, ((Shell) parentElement).getToolBar());
+ // Collections.addAll(children, ((Shell) parentElement).getMenuBar());
+ // }
+ // if (parentElement instanceof Menu) {
+ // Collections.addAll(children, ((Menu) parentElement).getItems());
+ // }
+ // if (parentElement instanceof ToolBar) {
+ // Collections.addAll(children, ((ToolBar) parentElement).getItems());
+ // }
+ // if (parentElement instanceof Composite) {
+ // Collections.addAll(children, ((Composite) parentElement).getChildren());
+ // }
+ return children.toArray();
+ }
+
+ public Object getParent(Object element) {
+ // if(element instanceof Item) {
+ // return ((Item)element).get???
+ // }
+ return ((Control) element).getParent();
+ }
+
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0;
+ }
+
+ public void dispose() {
+ }
+
+}

Back to the top