From dc9e512ae162eb77a6a7b56f97fcb93f28cb2d23 Mon Sep 17 00:00:00 2001
From: Johannes Eder <eder@fortiss.org>
Date: Mon, 28 Mar 2011 11:46:52 +0000
Subject: [PATCH] added views

---
 .../views/EObjectDragSourceListener.java      |  69 ++++++++
 .../IBindingEditorPageChangeListener.java     |  31 ++++
 .../kernel/internal/views/LibraryView.java    | 164 ++++++++++++++++++
 3 files changed, 264 insertions(+)
 create mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/EObjectDragSourceListener.java
 create mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/IBindingEditorPageChangeListener.java
 create mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/LibraryView.java

diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/EObjectDragSourceListener.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/EObjectDragSourceListener.java
new file mode 100644
index 000000000..e76aaf54e
--- /dev/null
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/EObjectDragSourceListener.java
@@ -0,0 +1,69 @@
+/*--------------------------------------------------------------------------+
+$Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| 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 org.fortiss.tooling.kernel.internal.views;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.dnd.DragSourceAdapter;
+import org.eclipse.swt.dnd.DragSourceEvent;
+
+/**
+ * 
+ * @author Eder
+ * @author $Author: hoelzl $
+ * @version $Rev: 18709 $
+ * @levd.rating RED Rev:
+ */
+public class EObjectDragSourceListener extends DragSourceAdapter {
+
+	/** Library tree viewer */
+	private final TreeViewer libraryViewer;
+
+	/** Constructor */
+	public EObjectDragSourceListener(TreeViewer libraryViewer) {
+		this.libraryViewer = libraryViewer;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void dragStart(DragSourceEvent event) {
+		if (libraryViewer.getSelection() == null) {
+			event.doit = false;
+		} else {
+			IStructuredSelection sel = (IStructuredSelection) libraryViewer
+					.getSelection();
+			if (sel.size() != 1) {
+				event.doit = false;
+			} else {
+				event.doit = true;
+				event.data = ((IStructuredSelection) libraryViewer
+						.getSelection()).getFirstElement();
+			}
+			LocalSelectionTransfer.getTransfer().setSelection(sel);
+		}
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void dragSetData(DragSourceEvent event) {
+		event.data = ((IStructuredSelection) libraryViewer.getSelection())
+				.getFirstElement();
+	}
+
+}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/IBindingEditorPageChangeListener.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/IBindingEditorPageChangeListener.java
new file mode 100644
index 000000000..e94f418f5
--- /dev/null
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/IBindingEditorPageChangeListener.java
@@ -0,0 +1,31 @@
+/*--------------------------------------------------------------------------+
+$Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| 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 org.fortiss.tooling.kernel.internal.views;
+
+/**
+ * 
+ * @author Eder
+ * @author $Author: hoelzl $
+ * @version $Rev: 18709 $
+ * @levd.rating RED Rev:
+ */
+public interface IBindingEditorPageChangeListener {
+
+	/** Indicates a page change. */
+	void pageChanged();
+}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/LibraryView.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/LibraryView.java
new file mode 100644
index 000000000..0ac4d7d1b
--- /dev/null
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/views/LibraryView.java
@@ -0,0 +1,164 @@
+/*--------------------------------------------------------------------------+
+$Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| 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 org.fortiss.tooling.kernel.internal.views;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.dnd.TemplateTransfer;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+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.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.part.ViewPart;
+import org.fortiss.tooling.kernel.internal.editor.BindingEditor;
+import org.fortiss.tooling.kernel.services.IPrototypeService;
+
+/**
+ * 
+ * @author Eder
+ * @author $Author: hoelzl $
+ * @version $Rev: 18709 $
+ * @levd.rating RED Rev:
+ */
+public class LibraryView extends ViewPart {
+
+	/** Used to show the filter box */
+	private FilteredTree filteredTree;
+
+	/** Library Viewer */
+	private TreeViewer viewer;
+
+	/** Listens to Editor Activations */
+	// TODO (JE): implement EditorActivationListener
+	// private final EditorActivationListener editorActivationListener = new
+	// EditorActivationListener();
+
+	/** Current active {@link BindingEditor}. */
+	private BindingEditor activeBindingEditor;
+
+	/** The container object used. */
+	private EObject containerObject = null;
+
+	/** {@inheritDoc} */
+	@Override
+	public void createPartControl(Composite parent) {
+		viewer = new TreeViewer(parent);
+
+		IWorkbenchPage page = getViewSite().getWorkbenchWindow()
+				.getActivePage();
+
+		// if (page != null) { switchWorkbenchEditor(page.getActiveEditor()); }
+
+		getViewSite().setSelectionProvider(viewer);
+		// getSite().getWorkbenchWindow().getPartService()
+		// .addPartListener(editorActivationListener);
+
+	}
+
+	/** creates the viewer */
+	public void createViewer(Composite parent) {
+
+		PatternFilter patternFilter = new PatternFilter();
+		patternFilter.setIncludeLeadingWildcard(true);
+
+		filteredTree = new FilteredTree(parent, SWT.SINGLE | SWT.H_SCROLL
+				| SWT.V_SCROLL, patternFilter, false);
+		viewer = filteredTree.getViewer();
+
+		viewer.setContentProvider(new ITreeContentProvider() {
+
+			@Override
+			public void inputChanged(Viewer viewer, Object oldInput,
+					Object newInput) {
+				// TODO Auto-generated method stub
+
+			}
+
+			@Override
+			public void dispose() {
+				// TODO Auto-generated method stub
+
+			}
+
+			@Override
+			public boolean hasChildren(Object element) {
+				// TODO Auto-generated method stub
+				return false;
+			}
+
+			@Override
+			public Object getParent(Object element) {
+				// TODO Auto-generated method stub
+				return null;
+			}
+
+			@Override
+			public Object[] getElements(Object inputElement) {
+				if (inputElement instanceof Object[]) {
+					return (Object[]) inputElement;
+				}
+				return new Object[0];
+			}
+
+			@Override
+			public Object[] getChildren(Object parentElement) {
+				// TODO Auto-generated method stub
+				return null;
+			}
+		});
+
+		viewer.setLabelProvider(new LabelProvider());
+
+		viewer.addDragSupport(DND.DROP_COPY,
+				new Transfer[] { TemplateTransfer.getInstance(),
+						LocalSelectionTransfer.getTransfer() },
+				new EObjectDragSourceListener(viewer));
+
+		// viewer.setInput(PrototypeMananger.getInstance().getPrototypes()
+		// .toArray());
+
+		viewer.setInput(IPrototypeService.INSTANCE.getPrototypeProviders()
+				.toArray());
+
+		/*
+		 * viewer.addFilter(new ViewerFilter() {
+		 * 
+		 * @Override public boolean select(Viewer viewer, Object parentElement,
+		 * Object element) { if (element instanceof Prototype) { EObject
+		 * prototypeObject = ((Prototype) element) .getPrototype(); //
+		 * CompositorManager // return
+		 * CompositionManager.getInstance().canCompose( // containerObject,
+		 * prototypeObject, null); } return false; } });
+		 */
+
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setFocus() {
+		viewer.getControl().setFocus();
+	}
+
+}
-- 
GitLab