From 8cf465a5e9796d295667dddb1d4652dc36775b6a Mon Sep 17 00:00:00 2001
From: Lukas Ladenberger <lukas.ladenberger@googlemail.com>
Date: Thu, 13 Dec 2012 17:16:58 +0100
Subject: [PATCH] working on multiple view feature

---
 de.bmotionstudio.gef.editor/plugin.xml        |  30 ++
 .../gef/editor/BMSPaletteView.java            |  99 ++++
 .../gef/editor/BMotionStudioContributor.java  | 127 ++---
 .../gef/editor/BMotionStudioEditor.java       | 507 +++++++++++-------
 .../gef/editor/BMotionStudioEditorPage.java   |  46 +-
 .../gef/editor/VisualizationView.java         | 109 ++++
 .../gef/editor/figure/ShapeFigure.java        |   9 +-
 .../StartVisualizationEditorHandler.java      |  57 +-
 .../internal/VisualizationProgressBar.java    |   3 +-
 .../gef/editor/library/DeleteItemsAction.java |  18 +-
 .../editor/library/ImportImagesAction.java    |  96 ++--
 .../editor/library/LibraryImageObject.java    |  47 +-
 .../gef/editor/library/LibraryPage.java       |  62 ++-
 .../gef/editor/property/ImageDialog.java      | 135 +++--
 14 files changed, 838 insertions(+), 507 deletions(-)
 create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSPaletteView.java
 create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/VisualizationView.java

diff --git a/de.bmotionstudio.gef.editor/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml
index f7e7118b..b477d525 100644
--- a/de.bmotionstudio.gef.editor/plugin.xml
+++ b/de.bmotionstudio.gef.editor/plugin.xml
@@ -61,6 +61,21 @@
             name="Observer"
             restorable="true">
       </view>
+      <view
+            allowMultiple="true"
+            category="de.bmotionstudio.views"
+            class="de.bmotionstudio.gef.editor.VisualizationView"
+            id="de.bmotionstudio.gef.editor.VisualizationView"
+            name="Visualization"
+            restorable="true">
+      </view>
+      <view
+            category="de.bmotionstudio.views"
+            class="de.bmotionstudio.gef.editor.BMSPaletteView"
+            id="de.bmotionstudio.gef.editor.PaletteView"
+            name="Palette"
+            restorable="true">
+      </view>
    </extension>
    <extension
          point="org.eclipse.ui.menus">
@@ -651,6 +666,21 @@
                   id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
             </observer>
          </control>
+      </include>
+      <include
+            language="CSP">
+         <control
+               id="de.bmotionstudio.gef.editor.rectangle">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.CSPEventObserver">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.tank">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.CSPEventObserver">
+            </observer>
+         </control>
       </include>   
    </extension>   
 </plugin>
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSPaletteView.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSPaletteView.java
new file mode 100644
index 00000000..e5acfee7
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSPaletteView.java
@@ -0,0 +1,99 @@
+package de.bmotionstudio.gef.editor;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.gef.EditDomain;
+import org.eclipse.gef.ui.palette.PaletteViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.Page;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageBookView;
+
+public class BMSPaletteView extends PageBookView {
+
+	// private PaletteViewer paletteViewer;
+
+	@Override
+	protected IWorkbenchPart getBootstrapPart() {
+		IWorkbenchPage page = getSite().getPage();
+		IViewPart view = page.findView(VisualizationView.ID);
+		if (view != null)
+			return view;
+		return null;
+	}
+
+	@Override
+	protected PageRec doCreatePage(IWorkbenchPart part) {
+		if (part instanceof VisualizationView) {
+			BMSPaletteViewPage page = new BMSPaletteViewPage();
+			initPage(page);
+			page.createControl(getPageBook());
+			return new PageRec(part, page);
+		}
+		return null;
+	}
+
+	@Override
+	public void partActivated(IWorkbenchPart part) {
+		super.partActivated(part);
+	}
+
+	@Override
+	protected boolean isImportant(IWorkbenchPart part) {
+		return part instanceof VisualizationView;
+	}
+
+	private class BMSPaletteViewPage extends Page {
+
+		private Composite container;
+
+		protected void createPaletteViewer(Composite parent) {
+			PaletteViewer viewer = new PaletteViewer();
+			viewer.createControl(parent);
+			viewer.getControl().setBackground(ColorConstants.green);
+			EditDomain domain = new EditDomain();
+			domain.setPaletteViewer(viewer);
+		}
+
+		@Override
+		public void createControl(Composite parent) {
+			container = new Composite(parent, SWT.NONE);
+			container.setBackground(ColorConstants.red);
+			container.setLayout(new FillLayout());
+			createPaletteViewer(container);
+		}
+
+		@Override
+		public Control getControl() {
+			return container;
+		}
+
+		@Override
+		public void setFocus() {
+		}
+
+	}
+
+	@Override
+	protected IPage createDefaultPage(PageBook book) {
+		MessagePage page = new MessagePage();
+		initPage(page);
+		page.createControl(book);
+		page.setMessage("NA");
+		return page;
+	}
+
+	@Override
+	protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java
index 5ad06980..1dd07823 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java
@@ -7,63 +7,48 @@
 package de.bmotionstudio.gef.editor;
 
 import org.eclipse.gef.ui.actions.ActionBarContributor;
-import org.eclipse.gef.ui.actions.DeleteRetargetAction;
-import org.eclipse.gef.ui.actions.GEFActionConstants;
-import org.eclipse.gef.ui.actions.RedoRetargetAction;
-import org.eclipse.gef.ui.actions.UndoRetargetAction;
-import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
-import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
-import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.RetargetAction;
 
 public class BMotionStudioContributor extends ActionBarContributor {
 
 	@Override
 	protected void buildActions() {
-		IWorkbenchWindow iww = getPage().getWorkbenchWindow();
-
-		addRetargetAction(new UndoRetargetAction());
-		addRetargetAction(new RedoRetargetAction());
-
-		addRetargetAction(new DeleteRetargetAction());
-
-		addRetargetAction((RetargetAction) ActionFactory.COPY.create(iww));
-		addRetargetAction((RetargetAction) ActionFactory.PASTE.create(iww));
-
-		addRetargetAction(new ZoomInRetargetAction());
-		addRetargetAction(new ZoomOutRetargetAction());
-
-		addRetargetAction(new RetargetAction(
-				GEFActionConstants.TOGGLE_RULER_VISIBILITY, "Ruler",
-				IAction.AS_CHECK_BOX));
-
-		addRetargetAction(new RetargetAction(
-				GEFActionConstants.TOGGLE_GRID_VISIBILITY, "Grid",
-				IAction.AS_CHECK_BOX));
-
-		addRetargetAction(new RetargetAction(
-				GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY, "Snap to Geometry",
-				IAction.AS_CHECK_BOX));
+		// IWorkbenchWindow iww = getPage().getWorkbenchWindow();
+		//
+		// addRetargetAction(new UndoRetargetAction());
+		// addRetargetAction(new RedoRetargetAction());
+		//
+		// addRetargetAction(new DeleteRetargetAction());
+		//
+		// addRetargetAction((RetargetAction) ActionFactory.COPY.create(iww));
+		// addRetargetAction((RetargetAction) ActionFactory.PASTE.create(iww));
+		//
+		// addRetargetAction(new ZoomInRetargetAction());
+		// addRetargetAction(new ZoomOutRetargetAction());
+		//
+		// addRetargetAction(new RetargetAction(
+		// GEFActionConstants.TOGGLE_RULER_VISIBILITY, "Ruler",
+		// IAction.AS_CHECK_BOX));
+		//
+		// addRetargetAction(new RetargetAction(
+		// GEFActionConstants.TOGGLE_GRID_VISIBILITY, "Grid",
+		// IAction.AS_CHECK_BOX));
+		//
+		// addRetargetAction(new RetargetAction(
+		// GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY, "Snap to Geometry",
+		// IAction.AS_CHECK_BOX));
 	}
 
 	@Override
 	public void contributeToToolBar(IToolBarManager toolBarManager) {
-		toolBarManager.add(getAction(ActionFactory.DELETE.getId()));
-		toolBarManager.add(getAction(ActionFactory.COPY.getId()));
-		toolBarManager.add(getAction(ActionFactory.PASTE.getId()));
-		toolBarManager.add(new Separator());
-		toolBarManager.add(getAction(GEFActionConstants.ZOOM_IN));
-		toolBarManager.add(getAction(GEFActionConstants.ZOOM_OUT));
-		toolBarManager.add(new ZoomComboContributionItem(getPage()));
+//		toolBarManager.add(getAction(ActionFactory.DELETE.getId()));
+//		toolBarManager.add(getAction(ActionFactory.COPY.getId()));
+//		toolBarManager.add(getAction(ActionFactory.PASTE.getId()));
+//		toolBarManager.add(new Separator());
+//		toolBarManager.add(getAction(GEFActionConstants.ZOOM_IN));
+//		toolBarManager.add(getAction(GEFActionConstants.ZOOM_OUT));
+//		toolBarManager.add(new ZoomComboContributionItem(getPage()));
 	}
 
 	@Override
@@ -75,33 +60,33 @@ public class BMotionStudioContributor extends ActionBarContributor {
 
 		super.contributeToMenu(menuManager);
 
-		IContributionItem bMenu = menuManager
-				.find("de.bmotionstudio.gef.editor.menu");
-		if (bMenu != null) {
-
-			IMenuManager bmotionMenu = (IMenuManager) bMenu;
-			MenuManager viewMenu = new MenuManager("Editor");
-			viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));
-			viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));
-			viewMenu.add(new Separator());
-			viewMenu.add(getAction(GEFActionConstants.TOGGLE_RULER_VISIBILITY));
-			viewMenu.add(getAction(GEFActionConstants.TOGGLE_GRID_VISIBILITY));
-			viewMenu.add(getAction(GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY));
-			bmotionMenu
-					.insertAfter(
-							"de.bmotionstudio.gef.editor.command.openBMotionStudioWebsite",
-							viewMenu);
-
-		}
+		// IContributionItem bMenu = menuManager
+		// .find("de.bmotionstudio.gef.editor.menu");
+		// if (bMenu != null) {
+		//
+		// IMenuManager bmotionMenu = (IMenuManager) bMenu;
+		// MenuManager viewMenu = new MenuManager("Editor");
+		// viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));
+		// viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));
+		// viewMenu.add(new Separator());
+		// viewMenu.add(getAction(GEFActionConstants.TOGGLE_RULER_VISIBILITY));
+		// viewMenu.add(getAction(GEFActionConstants.TOGGLE_GRID_VISIBILITY));
+		// viewMenu.add(getAction(GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY));
+		// bmotionMenu
+		// .insertAfter(
+		// "de.bmotionstudio.gef.editor.command.openBMotionStudioWebsite",
+		// viewMenu);
+
+		// }
 
 	}
 
-	public void setActiveEditor(IEditorPart editor) {
-		if (editor instanceof BMotionStudioEditor) {
-			super.setActiveEditor(((BMotionStudioEditor) editor).getEditPage());
-		} else {
-			super.setActiveEditor(editor);
-		}
-	}
+	// public void setActiveEditor(IEditorPart editor) {
+	// if (editor instanceof BMotionStudioEditor) {
+	// super.setActiveEditor(((BMotionStudioEditor) editor).getEditPage());
+	// } else {
+	// super.setActiveEditor(editor);
+	// }
+	// }
 
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java
index dd472559..734b7d0d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java
@@ -6,155 +6,143 @@
 
 package de.bmotionstudio.gef.editor;
 
-import java.io.IOException;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.InputStream;
-import java.util.ArrayList;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.widgets.Display;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.core.runtime.preferences.IPreferencesService;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.core.runtime.preferences.PreferenceFilterEntry;
+import org.eclipse.gef.EditDomain;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPerspectiveDescriptor;
+import org.eclipse.ui.IPerspectiveRegistry;
 import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.part.MultiPageEditorPart;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
+import org.eclipse.ui.part.EditorPart;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.mapper.MapperWrapper;
 
-import de.bmotionstudio.gef.editor.internal.BMSConverter512;
 import de.bmotionstudio.gef.editor.model.Visualization;
-import de.prob.core.ILifecycleListener;
 import de.prob.logging.Logger;
 
-public class BMotionStudioEditor extends MultiPageEditorPart implements
-		ILifecycleListener {
+public class BMotionStudioEditor extends EditorPart {
 
-	private BMotionStudioEditorPage editPage;
+	// private BMotionStudioEditorPage editPage;
 
-	private BMotionStudioRunPage runPage;
+	// private BMotionStudioRunPage runPage;
 
 	private Visualization visualization;
 
-	private Animation animation;
-
-	private ArrayList<IRunPageListener> runPageListener = new ArrayList<IRunPageListener>();
-
-	@Override
-	protected void createPages() {
-		createEditPage();
-	}
-
-	private void createEditPage() {
-		editPage = new BMotionStudioEditorPage(getVisualization(), this);
-		try {
-			int index = addPage(editPage, getEditorInput());
-			setPageText(index, "Edit");
-		} catch (PartInitException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void createRunPage(Visualization visualization, Animation animation) {
-		StaticListenerRegistry.registerListener(this);
-		this.animation = animation;
-
-		if (runPage != null)
-			runPage.dispose();
-
-		runPage = new BMotionStudioRunPage(visualization);
-		try {
-			int index = addPage(runPage, getEditorInput());
-			setPageText(index, "Run");
-			setActivePage(index);
-			fireRunPageCreatedListener();
-		} catch (PartInitException e) {
-		}
-	}
-
-	public void removeRunPage() {
-		fireRunPageRemovedListener();
-		if (runPage != null) {
-			Display.getDefault().asyncExec(new Runnable() {
-				public void run() {
-					removePage(1);
-				}
-			});
-		}
-		unregister();
-	}
-
-	private void fireRunPageCreatedListener() {
-		for (IRunPageListener listener : runPageListener) {
-			listener.runPageCreated(runPage);
-		}
-	}
-
-	private void fireRunPageRemovedListener() {
-		for (IRunPageListener listener : runPageListener) {
-			listener.runPageRemoved(runPage);
-		}
-	}
+	private EditDomain editDomain;
+
+	private Composite container;
+
+	private IFile file;
+
+	// private Animation animation;
+
+	// private ArrayList<IRunPageListener> runPageListener = new
+	// ArrayList<IRunPageListener>();
+
+	// @Override
+	// protected void createPages() {
+	// createEditPage();
+	// }
+
+	// private void createEditPage() {
+	// editPage = new BMotionStudioEditorPage(getVisualization(), this);
+	// try {
+	// int index = addPage(editPage, getEditorInput());
+	// setPageText(index, "Edit");
+	// } catch (PartInitException e) {
+	// e.printStackTrace();
+	// }
+	// }
+
+	// public void createRunPage(Visualization visualization, Animation
+	// animation) {
+	// StaticListenerRegistry.registerListener(this);
+	// this.animation = animation;
+	//
+	// if (runPage != null)
+	// runPage.dispose();
+	//
+	// runPage = new BMotionStudioRunPage(visualization);
+	// try {
+	// int index = addPage(runPage, getEditorInput());
+	// setPageText(index, "Run");
+	// setActivePage(index);
+	// fireRunPageCreatedListener();
+	// } catch (PartInitException e) {
+	// }
+	// }
+
+	// public void removeRunPage() {
+	// fireRunPageRemovedListener();
+	// if (runPage != null) {
+	// Display.getDefault().asyncExec(new Runnable() {
+	// public void run() {
+	// removePage(1);
+	// }
+	// });
+	// }
+	// unregister();
+	// }
+
+	// private void fireRunPageCreatedListener() {
+	// for (IRunPageListener listener : runPageListener) {
+	// listener.runPageCreated(runPage);
+	// }
+	// }
+
+	// private void fireRunPageRemovedListener() {
+	// for (IRunPageListener listener : runPageListener) {
+	// listener.runPageRemoved(runPage);
+	// }
+	// }
 
 	@Override
 	public void dispose() {
-		unregister();
+		// unregister();
 		super.dispose();
 	}
 
-	public Visualization getVisualization() {
-		return visualization;
-	}
+	// public Visualization getVisualization() {
+	// return visualization;
+	// }
 
-	public void setDirty(boolean dirty) {
-		editPage.setDirty(dirty);
-	}
+	// public void setDirty(boolean dirty) {
+	// editPage.setDirty(dirty);
+	// }
 
-	/**
-	 * @see org.eclipse.ui.IEditorPart#init(IEditorSite, IEditorInput)
-	 **/
 	@Override
-	public void init(IEditorSite iSite, IEditorInput iInput)
+	public void init(IEditorSite site, IEditorInput input)
 			throws PartInitException {
 
-		super.init(iSite, iInput);
-
-		IFile file = ((IFileEditorInput) iInput).getFile();
+		file = ((IFileEditorInput) input).getFile();
 
 		try {
 
-			// -------------------------------------------------------
-
-			DocumentBuilderFactory dbFactory = DocumentBuilderFactory
-					.newInstance();
-			DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
-			Document doc = dBuilder.parse(file.getContents());
-			NodeList nList = doc.getElementsByTagName("version");
-			if (nList.item(0) != null) {
-				Element versionElement = (Element) nList.item(0);
-				String version = versionElement.getTextContent();
-				if (version.equals("5.1.2")) {
-					new BMSConverter512(file);
-				}
-			} else {
-				new BMSConverter512(file);
-			}
-
-			// -------------------------------------------------------
-
 			InputStream inputStream = file.getContents();
 
 			XStream xstream = new XStream() {
@@ -177,53 +165,92 @@ public class BMotionStudioEditor extends MultiPageEditorPart implements
 			BMotionEditorPlugin.setAliases(xstream);
 
 			visualization = (Visualization) xstream.fromXML(inputStream);
-			visualization.setProjectFile(((IFileEditorInput) getEditorInput())
-					.getFile());
-			// initLanguage(visualization);
+			visualization.setProjectFile(file);
 
-		} catch (SAXException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		} catch (CoreException e) {
-			e.printStackTrace();
-		} catch (ParserConfigurationException e) {
-			e.printStackTrace();
-		}
+			editDomain = new EditDomain();
 
-	}
+			// Check if a perspective for this visualization exists
+			IPerspectiveRegistry perspectiveRegistry = PlatformUI
+					.getWorkbench().getPerspectiveRegistry();
 
-	@Override
-	public String getPartName() {
-		return visualization.getProjectFile().getName().replace(".bmso", "")
-				+ " (" + getVisualization().getMachineName() + " - "
-				+ getVisualization().getLanguage() + ")";
-	}
+			String perspectiveId = "BMS_" + file.getName().replace(".bmso", "");
+			IPerspectiveDescriptor perspective = perspectiveRegistry
+					.findPerspectiveWithId(perspectiveId);
 
-	@Override
-	public void doSave(final IProgressMonitor monitor) {
-		editPage.doSave(monitor);
-	}
+			// Yes --> switch to this perspective
+			if (perspective != null) {
+				switchPerspective(perspectiveId);
+			} else {
 
-	@Override
-	public void doSaveAs() {
-		// Nothing to do here, this is never allowed
-		throw new IllegalAccessError("No way to enter this method.");
-	}
+				// No --> create one
+				IWorkbenchWindow window = PlatformUI.getWorkbench()
+						.getActiveWorkbenchWindow();
+				IWorkbenchPage page = window.getActivePage();
+				if (page != null) {
+					IPerspectiveDescriptor personalPerspectiveDescriptor = perspectiveRegistry
+							.findPerspectiveWithId(perspectiveId);
+					if (personalPerspectiveDescriptor == null) {
+						IPerspectiveDescriptor originalPerspectiveDescriptor = perspectiveRegistry
+								.findPerspectiveWithId("de.bmotionstudio.perspective.run");
+						switchPerspective(originalPerspectiveDescriptor.getId());
+						personalPerspectiveDescriptor = perspectiveRegistry
+								.clonePerspective(perspectiveId, perspectiveId,
+										originalPerspectiveDescriptor);
+						// save the perspective
+						page.savePerspectiveAs(personalPerspectiveDescriptor);
+						exportPerspective(perspectiveId);
+					}
+				}
 
-	@Override
-	public boolean isSaveAsAllowed() {
-		return false;
-	}
+			}
 
-	@Override
-	protected void pageChange(int newPageIndex) {
-		String newPageString = getPageText(newPageIndex);
-		if (newPageString.equals("Run")) {
-			switchPerspective("de.bmotionstudio.perspective.run");
-		} else {
-			switchPerspective("de.bmotionstudio.perspective.edit");
+			// System.out.println("===> "
+			// + service.getRootNode().nodeExists(
+			// "/instance/org.eclipse.ui.workbench"));
+			//
+			// Preferences node = node;
+			//
+			// System.out.println(service.getRootNode().node("instance")
+			// .node("org.eclipse.ui.workbench").childrenNames().length);
+			//
+			// for (String s1 : service.getRootNode().childrenNames()) {
+			//
+			// Preferences node2 = service.getRootNode().node(s1);
+			// for (String s2 : node2.childrenNames())
+			// for (String s3 : node2.node(s2)
+			// .childrenNames())
+			// System.out.println(s3);
+			// }
+
+			IWorkbenchWindow window = PlatformUI.getWorkbench()
+					.getActiveWorkbenchWindow();
+			IWorkbenchPage activePage = window.getActivePage();
+			VisualizationView visualizationView1 = (VisualizationView) activePage
+					.showView(VisualizationView.ID, "1",
+							IWorkbenchPage.VIEW_VISIBLE);
+			visualizationView1.initGraphicalViewer(editDomain, visualization);
+			//
+			// VisualizationView visualizationView2 = (VisualizationView)
+			// activePage
+			// .showView(VisualizationView.ID, "2",
+			// IWorkbenchPage.VIEW_VISIBLE);
+			// visualizationView2.initGraphicalViewer(editDomain,
+			// visualization);
+			//
+			// VisualizationView visualizationView3 = (VisualizationView)
+			// activePage
+			// .showView(VisualizationView.ID, "3",
+			// IWorkbenchPage.VIEW_VISIBLE);
+			// visualizationView3.initGraphicalViewer(editDomain,
+			// visualization);
+
+		} catch (CoreException e) {
+			e.printStackTrace();
 		}
+
+		setSite(site);
+		setInput(input);
+
 	}
 
 	private void switchPerspective(String id) {
@@ -237,55 +264,167 @@ public class BMotionStudioEditor extends MultiPageEditorPart implements
 		}
 	}
 
-	public BMotionStudioEditorPage getEditPage() {
-		return this.editPage;
-	}
+	// @Override
+	// public String getPartName() {
+	// return file.getName().replace(".bmso", "")
+	// + " (" + file.getMachineName() + " - "
+	// + getVisualization().getLanguage() + ")";
+	// }
 
-	public BMotionStudioRunPage getRunPage() {
-		return this.runPage;
-	}
+	private void exportPerspective(final String perspectiveName) {
 
-	public void reset() {
-		removeRunPage();
-	}
+		try {
+
+			IPreferenceFilter[] transfers = null;
+
+			// export all
+			transfers = new IPreferenceFilter[1];
+
+			// For export all create a preference filter that can export
+			// all nodes of the Instance and Configuration scopes
+			transfers[0] = new IPreferenceFilter() {
+				public String[] getScopes() {
+					return new String[] { InstanceScope.SCOPE };
+				}
+
+				public Map<String, PreferenceFilterEntry[]> getMapping(
+						String scope) {
+					Map<String, PreferenceFilterEntry[]> map = new HashMap<String, PreferenceFilterEntry[]>();
+					map.put("org.eclipse.ui.workbench",
+							new PreferenceFilterEntry[] { new PreferenceFilterEntry(
+									perspectiveName + "_persp") });
+					return map;
+				}
+			};
 
-	private void unregister() {
-		getVisualization().setIsRunning(false);
-		StaticListenerRegistry.unregisterListener(this);
-		if (animation != null) {
-			animation.unregister();
+			IFile pFile = file.getProject().getFile(
+					file.getName().replace(".bmso", ".bmsop"));
+
+			String content = "";
+
+			if (!pFile.exists())
+				pFile.create(new ByteArrayInputStream(content.getBytes()),
+						true,
+						new NullProgressMonitor());
+
+			File exportFile = new File(pFile.getLocationURI());
+			FileOutputStream fos = new FileOutputStream(exportFile);
+			IPreferencesService service = Platform.getPreferencesService();
+			service.exportPreferences(service.getRootNode(), transfers, fos);
+
+		} catch (FileNotFoundException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
 		}
+
 	}
 
-	public IEditorPart getCurrentPage() {
-		return getActiveEditor();
+	@Override
+	public void doSave(final IProgressMonitor monitor) {
+		// editPage.doSave(monitor);
 	}
 
-	public void addRunPageListener(IRunPageListener listener) {
-		this.runPageListener.add(listener);
+	@Override
+	public void doSaveAs() {
+		// Nothing to do here, this is never allowed
+		throw new IllegalAccessError("No way to enter this method.");
 	}
 
-	public void removeRunPageListener(IRunPageListener listener) {
-		this.runPageListener.remove(listener);
+	@Override
+	public boolean isSaveAsAllowed() {
+		return false;
 	}
 
-	public double getZoomFactor() {
-		switch (getActivePage()) {
-		case 0:
-			return editPage.getRootEditPart().getZoomManager().getZoom();
-		case 1:
-			return runPage.getRootEditPart().getZoomManager().getZoom();
-		default:
-			return 1;
-		}
+	@Override
+	public boolean isDirty() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+		container = new Composite(parent, SWT.NONE);
 	}
 
 	@Override
-	protected void setActivePage(int pageIndex) {
-		super.setActivePage(pageIndex);
-		// TODO: This is a hack for fixing the selection bug in the editor!
-		getSite().setSelectionProvider(
-				editPage.getSite().getSelectionProvider());
+	public void setFocus() {
+		// TODO Auto-generated method stub
+
 	}
 
+	// @Override
+	// protected void pageChange(int newPageIndex) {
+	// String newPageString = getPageText(newPageIndex);
+	// if (newPageString.equals("Run")) {
+	// switchPerspective("de.bmotionstudio.perspective.run");
+	// } else {
+	// switchPerspective("de.bmotionstudio.perspective.edit");
+	// }
+	// }
+
+	// private void switchPerspective(String id) {
+	// IWorkbench workbench = PlatformUI.getWorkbench();
+	// try {
+	// workbench.showPerspective(id, workbench.getActiveWorkbenchWindow());
+	// } catch (WorkbenchException e) {
+	// Logger.notifyUser(
+	// "An error occured while trying to switch the perspective.",
+	// e);
+	// }
+	// }
+
+	// public BMotionStudioEditorPage getEditPage() {
+	// return this.editPage;
+	// }
+	//
+	// public BMotionStudioRunPage getRunPage() {
+	// return this.runPage;
+	// }
+
+	// public void reset() {
+	// removeRunPage();
+	// }
+	//
+	// private void unregister() {
+	// getVisualization().setIsRunning(false);
+	// StaticListenerRegistry.unregisterListener(this);
+	// if (animation != null) {
+	// animation.unregister();
+	// }
+	// }
+
+	// public IEditorPart getCurrentPage() {
+	// return getActiveEditor();
+	// }
+	//
+	// public void addRunPageListener(IRunPageListener listener) {
+	// this.runPageListener.add(listener);
+	// }
+	//
+	// public void removeRunPageListener(IRunPageListener listener) {
+	// this.runPageListener.remove(listener);
+	// }
+
+	// public double getZoomFactor() {
+	// switch (getActivePage()) {
+	// case 0:
+	// return editPage.getRootEditPart().getZoomManager().getZoom();
+	// case 1:
+	// return runPage.getRootEditPart().getZoomManager().getZoom();
+	// default:
+	// return 1;
+	// }
+	// }
+
+	// @Override
+	// protected void setActivePage(int pageIndex) {
+	// super.setActivePage(pageIndex);
+	// // TODO: This is a hack for fixing the selection bug in the editor!
+	// getSite().setSelectionProvider(
+	// editPage.getSite().getSelectionProvider());
+	// }
+
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java
index 38ddeb19..dadbd30d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java
@@ -43,7 +43,6 @@ import org.eclipse.gef.SnapToGeometry;
 import org.eclipse.gef.SnapToGrid;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.gef.commands.CommandStackListener;
-import org.eclipse.gef.dnd.TemplateTransferDragSourceListener;
 import org.eclipse.gef.editparts.GridLayer;
 import org.eclipse.gef.editparts.ScalableRootEditPart;
 import org.eclipse.gef.editparts.ZoomManager;
@@ -57,11 +56,8 @@ import org.eclipse.gef.ui.actions.ToggleRulerVisibilityAction;
 import org.eclipse.gef.ui.actions.ToggleSnapToGeometryAction;
 import org.eclipse.gef.ui.actions.ZoomInAction;
 import org.eclipse.gef.ui.actions.ZoomOutAction;
-import org.eclipse.gef.ui.palette.FlyoutPaletteComposite;
-import org.eclipse.gef.ui.palette.PaletteViewer;
-import org.eclipse.gef.ui.palette.PaletteViewerProvider;
 import org.eclipse.gef.ui.parts.ContentOutlinePage;
-import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette;
+import org.eclipse.gef.ui.parts.GraphicalEditor;
 import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
 import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
 import org.eclipse.gef.ui.parts.SelectionSynchronizer;
@@ -110,7 +106,7 @@ import de.bmotionstudio.gef.editor.part.BMSAbstractTreeEditPart;
 import de.bmotionstudio.gef.editor.part.BMSEditPartFactory;
 import de.bmotionstudio.gef.editor.part.BMSTreeEditPartFactory;
 
-public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette {
+public class BMotionStudioEditorPage extends GraphicalEditor {
 
 	public final static String ID = "de.bmotionstudio.gef.editor";
 
@@ -185,7 +181,7 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette {
 	 **/
 	protected void initializeGraphicalViewer() {
 
-		super.initializeGraphicalViewer();
+		// super.initializeGraphicalViewer();
 
 		getGraphicalViewer().setContents(getVisualization());
 
@@ -196,25 +192,25 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette {
 				new AttributeTransferDropTargetListener(getGraphicalViewer(),
 						getSite().getPart()));
 
-		getPalettePreferences().setPaletteState(
-				FlyoutPaletteComposite.STATE_PINNED_OPEN);
+		// getPalettePreferences().setPaletteState(
+		// FlyoutPaletteComposite.STATE_PINNED_OPEN);
 
 	}
 
-	@Override
-	protected PaletteViewerProvider createPaletteViewerProvider() {
-		return new PaletteViewerProvider(getEditDomain()) {
-			protected void configurePaletteViewer(PaletteViewer viewer) {
-				super.configurePaletteViewer(viewer);
-				viewer.addDragSourceListener(new TemplateTransferDragSourceListener(
-						viewer));
-			}
-
-			protected void hookPaletteViewer(PaletteViewer viewer) {
-				super.hookPaletteViewer(viewer);
-			}
-		};
-	}
+	// @Override
+	// protected PaletteViewerProvider createPaletteViewerProvider() {
+	// return new PaletteViewerProvider(getEditDomain()) {
+	// protected void configurePaletteViewer(PaletteViewer viewer) {
+	// super.configurePaletteViewer(viewer);
+	// viewer.addDragSourceListener(new TemplateTransferDragSourceListener(
+	// viewer));
+	// }
+	//
+	// protected void hookPaletteViewer(PaletteViewer viewer) {
+	// super.hookPaletteViewer(viewer);
+	// }
+	// };
+	// }
 
 	/**
 	 * @see org.eclipse.ui.IEditorPart#isSaveAsAllowed()
@@ -580,8 +576,8 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette {
 		getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE,
 				getVisualization().isGridEnabled());
 
-		getPalettePreferences().setPaletteState(
-				FlyoutPaletteComposite.STATE_PINNED_OPEN);
+		// getPalettePreferences().setPaletteState(
+		// FlyoutPaletteComposite.STATE_PINNED_OPEN);
 
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/VisualizationView.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/VisualizationView.java
new file mode 100644
index 00000000..3841d93c
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/VisualizationView.java
@@ -0,0 +1,109 @@
+package de.bmotionstudio.gef.editor;
+
+import org.eclipse.gef.EditDomain;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.editparts.ScalableRootEditPart;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+
+import de.bmotionstudio.gef.editor.model.Visualization;
+import de.bmotionstudio.gef.editor.part.BMSEditPartFactory;
+
+public class VisualizationView extends ViewPart {
+
+	public static String ID = "de.bmotionstudio.gef.editor.VisualizationView";
+	
+	private EditDomain editDomain;
+
+	private GraphicalViewer graphicalViewer;
+
+	private Visualization visualization;
+
+	public VisualizationView() {
+	}
+
+	// public VisualizationView(EditDomain editDomain, Visualization
+	// visualization) {
+	// this.editDomain = editDomain;
+	// this.visualization = visualization;
+	// }
+
+	public void initGraphicalViewer(EditDomain editDomain,
+			Visualization visualization) {
+		this.editDomain = editDomain;
+		this.visualization = visualization;
+		graphicalViewer.setEditDomain(editDomain);
+		graphicalViewer.setContents(visualization);
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+		graphicalViewer = new ScrollingGraphicalViewer();
+		graphicalViewer.createControl(parent);
+		ScalableRootEditPart rootEditPart = new ScalableRootEditPart();
+		rootEditPart.setViewer(graphicalViewer);
+		graphicalViewer.setRootEditPart(rootEditPart);
+		graphicalViewer.setEditPartFactory(new BMSEditPartFactory());
+	}
+
+	@Override
+	public Object getAdapter(@SuppressWarnings("rawtypes") Class type) {
+
+		// Adapter for zoom manager
+		if (type == ZoomManager.class)
+			return ((ScalableRootEditPart) getGraphicalViewer()
+					.getRootEditPart()).getZoomManager();
+//		if (type == IContentOutlinePage.class)
+//			return new BMotionOutlinePage();
+
+		// Adapter for property page
+		if (type == IPropertySheetPage.class) {
+			BMotionStudioPropertySheet page = new BMotionStudioPropertySheet();
+			page.setRootEntry(new CustomSortPropertySheetEntry(
+					getCommandStack()));
+			return page;
+		}
+
+		return super.getAdapter(type);
+
+	}
+	
+	/**
+	 * Returns the <code>CommandStack</code> of this editor's
+	 * <code>EditDomain</code>.
+	 * 
+	 * @return the <code>CommandStack</code>
+	 */
+	public CommandStack getCommandStack() {
+		return getEditDomain().getCommandStack();
+	}
+	
+	/**
+	 * Returns the edit domain.
+	 * 
+	 * @return the edit domain
+	 */
+	protected EditDomain getEditDomain() {
+		return editDomain;
+	}
+
+	/**
+	 * Returns the graphical viewer.
+	 * 
+	 * @return the graphical viewer
+	 */
+	protected GraphicalViewer getGraphicalViewer() {
+		return graphicalViewer;
+	}
+	
+	@Override
+	public void setFocus() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java
index 9ddf860f..1a98824c 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java
@@ -25,8 +25,6 @@ import org.eclipse.swt.graphics.Pattern;
 import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.widgets.Display;
 
-import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
-
 public class ShapeFigure extends AbstractBMotionFigure {
 
 	private int alpha;
@@ -123,9 +121,10 @@ public class ShapeFigure extends AbstractBMotionFigure {
 				} else if (fillType == FILL_TYPE_FILLED && img != null) {
 
 					double zoom = 1;
-					if (BMotionEditorPlugin.getActiveEditor() != null)
-						zoom = BMotionEditorPlugin.getActiveEditor()
-								.getZoomFactor();
+					// TODO Reimplement me!
+					// if (BMotionEditorPlugin.getActiveEditor() != null)
+					// zoom = BMotionEditorPlugin.getActiveEditor()
+					// .getZoomFactor();
 
 					ImageData d = img.getImageData().scaledTo(
 							(int) (img.getBounds().width * zoom),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.java
index ebd89b02..9862dd8e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.java
@@ -10,18 +10,12 @@ import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
 
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
 import de.bmotionstudio.gef.editor.internal.VisualizationProgressBar;
-import de.prob.core.Animator;
-import de.prob.logging.Logger;
 
 public class StartVisualizationEditorHandler extends AbstractHandler implements
 		IHandler {
@@ -41,31 +35,32 @@ public class StartVisualizationEditorHandler extends AbstractHandler implements
 			}
 		}
 
-		IFile projectFile = BMotionEditorPlugin.getActiveEditor()
-				.getVisualization().getProjectFile();
-
-		// Get ProB Animator
-		Animator animator = Animator.getAnimator();
-
-		// Open Run Perspective
-		IWorkbench workbench = PlatformUI.getWorkbench();
-		try {
-			workbench.showPerspective("de.bmotionstudio.perspective.run",
-					workbench.getActiveWorkbenchWindow());
-		} catch (WorkbenchException e) {
-			Logger.notifyUser("Error opening BMotion Studio Run perspective.",
-					e);
-		}
-
-		// First, kill old visualization (only if exists)
-		if (dpb != null)
-			dpb.kill();
-		// Create a new visualization
-		dpb = new VisualizationProgressBar(Display.getDefault()
-				.getActiveShell(), animator,
-				BMotionEditorPlugin.getActiveEditor(), projectFile);
-		dpb.initGuage();
-		dpb.open();
+		// TODO Reimplement me!
+		// IFile projectFile = BMotionEditorPlugin.getActiveEditor()
+		// .getVisualization().getProjectFile();
+		//
+		// // Get ProB Animator
+		// Animator animator = Animator.getAnimator();
+		//
+		// // Open Run Perspective
+		// IWorkbench workbench = PlatformUI.getWorkbench();
+		// try {
+		// workbench.showPerspective("de.bmotionstudio.perspective.run",
+		// workbench.getActiveWorkbenchWindow());
+		// } catch (WorkbenchException e) {
+		// Logger.notifyUser("Error opening BMotion Studio Run perspective.",
+		// e);
+		// }
+		//
+		// // First, kill old visualization (only if exists)
+		// if (dpb != null)
+		// dpb.kill();
+		// // Create a new visualization
+		// dpb = new VisualizationProgressBar(Display.getDefault()
+		// .getActiveShell(), animator,
+		// BMotionEditorPlugin.getActiveEditor(), projectFile);
+		// dpb.initGuage();
+		// dpb.open();
 
 		return null;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java
index 70ee9ce5..057a97d7 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java
@@ -229,7 +229,8 @@ public class VisualizationProgressBar extends ProgressBarDialog {
 	}
 
 	private void createShell() {
-		activeEditor.createRunPage(visualization, animation);
+		// TODO Reimplement me!
+		// activeEditor.createRunPage(visualization, animation);
 	}
 
 	private ILanguageService getGenericLoadMachine(String language) {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/DeleteItemsAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/DeleteItemsAction.java
index 5ccb2146..fc65bc9e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/DeleteItemsAction.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/DeleteItemsAction.java
@@ -6,9 +6,6 @@
 
 package de.bmotionstudio.gef.editor.library;
 
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Display;
@@ -40,13 +37,14 @@ public class DeleteItemsAction extends AbstractLibraryAction {
 
 			getPage().refresh();
 
-			try {
-				getPage().getEditor().getVisualization().getProjectFile()
-						.getProject().getProject().refreshLocal(
-								IResource.DEPTH_ONE, new NullProgressMonitor());
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
+			// TODO Reimplement me!
+			// try {
+			// getPage().getEditor().getVisualization().getProjectFile()
+			// .getProject().getProject().refreshLocal(
+			// IResource.DEPTH_ONE, new NullProgressMonitor());
+			// } catch (CoreException e) {
+			// e.printStackTrace();
+			// }
 
 		}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/ImportImagesAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/ImportImagesAction.java
index 24be5c85..2fc84ffe 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/ImportImagesAction.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/ImportImagesAction.java
@@ -6,19 +6,9 @@
 
 package de.bmotionstudio.gef.editor.library;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.MessageBox;
 
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 
@@ -50,49 +40,51 @@ public class ImportImagesAction extends AbstractLibraryAction {
 		// Selected items
 		String[] selectedFiles = fd.getFileNames();
 
+		// TODO Reimplement me!
 		// The project file
-		IFile pFile = getPage().getEditor().getVisualization().getProjectFile();
-
-		try {
-
-			IProject project = pFile.getProject();
-			IFolder folder = project.getFolder("images");
-			NullProgressMonitor monitor = new NullProgressMonitor();
-
-			if (!folder.exists())
-				folder.create(true, true, monitor);
-
-			// Iterate the selected files
-			for (String fileName : selectedFiles) {
-
-				File inputFile = new File(folderPath + File.separator
-						+ fileName);
-				IFile newFile = folder.getFile(fileName);
-				FileInputStream fileInputStream = new FileInputStream(inputFile);
-				
-				if (!newFile.exists()) {
-					newFile.create(fileInputStream, true,
-							monitor);
-				} else {
-					// The file already exists; asks for confirmation
-					MessageBox mb = new MessageBox(fd.getParent(),
-							SWT.ICON_WARNING | SWT.YES | SWT.NO);
-					mb.setMessage(fileName
-							+ " already exists. Do you want to replace it?");
-					// If they click Yes, we're done and we drop out. If
-					// they click No, we redisplay the File Dialog
-					if (mb.open() == SWT.YES)
-						newFile.setContents(fileInputStream, true, false,
-								monitor);
-				}
-
-			}
-
-		} catch (CoreException e1) {
-			e1.printStackTrace();
-		} catch (FileNotFoundException e) {
-			e.printStackTrace();
-		}
+		// IFile pFile =
+		// getPage().getEditor().getVisualization().getProjectFile();
+		//
+		// try {
+		//
+		// IProject project = pFile.getProject();
+		// IFolder folder = project.getFolder("images");
+		// NullProgressMonitor monitor = new NullProgressMonitor();
+		//
+		// if (!folder.exists())
+		// folder.create(true, true, monitor);
+		//
+		// // Iterate the selected files
+		// for (String fileName : selectedFiles) {
+		//
+		// File inputFile = new File(folderPath + File.separator
+		// + fileName);
+		// IFile newFile = folder.getFile(fileName);
+		// FileInputStream fileInputStream = new FileInputStream(inputFile);
+		//
+		// if (!newFile.exists()) {
+		// newFile.create(fileInputStream, true,
+		// monitor);
+		// } else {
+		// // The file already exists; asks for confirmation
+		// MessageBox mb = new MessageBox(fd.getParent(),
+		// SWT.ICON_WARNING | SWT.YES | SWT.NO);
+		// mb.setMessage(fileName
+		// + " already exists. Do you want to replace it?");
+		// // If they click Yes, we're done and we drop out. If
+		// // they click No, we redisplay the File Dialog
+		// if (mb.open() == SWT.YES)
+		// newFile.setContents(fileInputStream, true, false,
+		// monitor);
+		// }
+		//
+		// }
+		//
+		// } catch (CoreException e1) {
+		// e1.printStackTrace();
+		// } catch (FileNotFoundException e) {
+		// e.printStackTrace();
+		// }
 
 		getPage().refresh();
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryImageObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryImageObject.java
index 3931e467..011683e0 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryImageObject.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryImageObject.java
@@ -6,12 +6,7 @@
 
 package de.bmotionstudio.gef.editor.library;
 
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
 
 public class LibraryImageObject extends LibraryObject {
 
@@ -22,30 +17,34 @@ public class LibraryImageObject extends LibraryObject {
 	@Override
 	public void delete(LibraryPage page) {
 
-		try {
-			IFolder imageFolder = page.getEditor().getVisualization()
-					.getProjectFile().getProject().getFolder("images");
-			if (imageFolder.exists()) {
-				IFile file = imageFolder.getFile(getName());
-				if (file.exists())
-					file.delete(true, new NullProgressMonitor());
-			}
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
+		// TODO Reimplement me!
+		// try {
+		// IFolder imageFolder = page.getEditor().getVisualization()
+		// .getProjectFile().getProject().getFolder("images");
+		// if (imageFolder.exists()) {
+		// IFile file = imageFolder.getFile(getName());
+		// if (file.exists())
+		// file.delete(true, new NullProgressMonitor());
+		// }
+		// } catch (CoreException e) {
+		// e.printStackTrace();
+		// }
 
 	}
 
 	@Override
 	public Image getPreview(LibraryPage page) {
-		IFile pFile = page.getEditor().getVisualization().getProjectFile();
-		if (pFile != null) {
-			String myPath = (pFile.getProject().getLocation() + "/images/" + getName())
-					.replace("file:", "");
-			return new Image(Display.getDefault(), myPath);
-		} else {
-			return null;
-		}
+		// TODO Reimplement me!
+		// IFile pFile = page.getEditor().getVisualization().getProjectFile();
+		// if (pFile != null) {
+		// String myPath = (pFile.getProject().getLocation() + "/images/" +
+		// getName())
+		// .replace("file:", "");
+		// return new Image(Display.getDefault(), myPath);
+		// } else {
+		// return null;
+		// }
+		return null;
 	}
 
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java
index 77752772..18fa72be 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java
@@ -6,8 +6,6 @@
 
 package de.bmotionstudio.gef.editor.library;
 
-import java.io.File;
-import java.io.FilenameFilter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,8 +41,6 @@ import org.eclipse.ui.part.IPageSite;
 import org.eclipse.ui.part.Page;
 
 import de.bmotionstudio.gef.editor.BMotionStudioEditor;
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.EditorImageRegistry;
 
 public class LibraryPage extends Page {
 
@@ -222,34 +218,36 @@ public class LibraryPage extends Page {
 
 		if (editor != null) {
 
-			String basePath = (editor.getVisualization().getProjectFile()
-					.getProject().getLocation().toString())
-					.replace("file:", "");
-			File dir = new File(basePath + "/images");
-			File[] fileList = dir.listFiles(new FilenameFilter() {
-				public boolean accept(final File dir, final String name) {
-					if (name.toLowerCase().endsWith(".jpg")
-							|| name.toLowerCase().endsWith(".gif")
-							|| name.toLowerCase().endsWith(".png")) {
-						return true;
-					}
-					return false;
-				}
-			});
-			if (fileList != null) {
-				for (File f : fileList) {
-					Image img = null;
-					if (f.getName().toLowerCase().endsWith(".jpg")) {
-						img = BMotionStudioImage
-								.getImage(EditorImageRegistry.IMG_ICON_JPG);
-					} else {
-						img = BMotionStudioImage
-								.getImage(EditorImageRegistry.IMG_ICON_GIF);
-					}
-					tmpList.add(new LibraryImageObject(f.getName(), "image",
-							img));
-				}
-			}
+			// TODO Reimplement me!
+
+			// String basePath = (editor.getVisualization().getProjectFile()
+			// .getProject().getLocation().toString())
+			// .replace("file:", "");
+			// File dir = new File(basePath + "/images");
+			// File[] fileList = dir.listFiles(new FilenameFilter() {
+			// public boolean accept(final File dir, final String name) {
+			// if (name.toLowerCase().endsWith(".jpg")
+			// || name.toLowerCase().endsWith(".gif")
+			// || name.toLowerCase().endsWith(".png")) {
+			// return true;
+			// }
+			// return false;
+			// }
+			// });
+			// if (fileList != null) {
+			// for (File f : fileList) {
+			// Image img = null;
+			// if (f.getName().toLowerCase().endsWith(".jpg")) {
+			// img = BMotionStudioImage
+			// .getImage(EditorImageRegistry.IMG_ICON_JPG);
+			// } else {
+			// img = BMotionStudioImage
+			// .getImage(EditorImageRegistry.IMG_ICON_GIF);
+			// }
+			// tmpList.add(new LibraryImageObject(f.getName(), "image",
+			// img));
+			// }
+			// }
 
 			// TODO: Reimplement me!!!
 			// Visualization vis = this.editor.getVisualization();
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java
index 5fc1c992..7e3acaf3 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java
@@ -6,13 +6,6 @@
 
 package de.bmotionstudio.gef.editor.property;
 
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.viewers.CellLabelProvider;
@@ -33,13 +26,8 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Canvas;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 
-import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.EditorImageRegistry;
-import de.bmotionstudio.gef.editor.library.LibraryImageObject;
 import de.bmotionstudio.gef.editor.library.LibraryObject;
 
 public class ImageDialog extends Dialog {
@@ -105,19 +93,20 @@ public class ImageDialog extends Dialog {
 
 				previewImage = null;
 
-				if (obj != null) {
-					if (!obj.getName().equals("noimage")) {
-						IFile pFile = BMotionEditorPlugin.getActiveEditor()
-								.getVisualization().getProjectFile();
-						if (pFile != null) {
-							String myPath = (pFile.getProject()
-									.getLocationURI() + "/images/" + obj
-									.getName()).replace("file:", "");
-							previewImage = new Image(Display.getDefault(),
-									myPath);
-						}
-					}
-				}
+				// TODO Reimplement me!
+				// if (obj != null) {
+				// if (!obj.getName().equals("noimage")) {
+				// IFile pFile = BMotionEditorPlugin.getActiveEditor()
+				// .getVisualization().getProjectFile();
+				// if (pFile != null) {
+				// String myPath = (pFile.getProject()
+				// .getLocationURI() + "/images/" + obj
+				// .getName()).replace("file:", "");
+				// previewImage = new Image(Display.getDefault(),
+				// myPath);
+				// }
+				// }
+				// }
 
 				previewCanvas.redraw();
 
@@ -154,58 +143,60 @@ public class ImageDialog extends Dialog {
 			}
 		});
 
-		WritableList input = new WritableList(getLibraryObjects(),
-				LibraryObject.class);
-		tvLibrary.setInput(input);
+		// TODO Reimplement me!
+		// WritableList input = new WritableList(getLibraryObjects(),
+		// LibraryObject.class);
+		// tvLibrary.setInput(input);
 
 		return container;
 
 	}
 
-	private List<LibraryObject> getLibraryObjects() {
-
-		List<LibraryObject> tmpList = new ArrayList<LibraryObject>();
-		tmpList.add(new LibraryObject("noimage", "", BMotionStudioImage
-				.getImageDescriptor("org.eclipse.ui",
-						"$nl$/icons/full/etool16/delete_edit.gif")
-				.createImage()));
-
-		if (BMotionEditorPlugin.getActiveEditor() != null) {
-
-			String basePath = (BMotionEditorPlugin.getActiveEditor()
-					.getVisualization().getProjectFile().getProject()
-					.getLocation().toString()).replace("file:", "");
-			File dir = new File(basePath + "/images");
-			File[] fileList = dir.listFiles(new FilenameFilter() {
-				public boolean accept(final File dir, final String name) {
-					if (name.toLowerCase().endsWith(".jpg")
-							|| name.toLowerCase().endsWith(".gif")
-							|| name.toLowerCase().endsWith(".png")) {
-						return true;
-					}
-					return false;
-				}
-			});
-			if (fileList != null) {
-				for (File f : fileList) {
-					Image img = null;
-					if (f.getName().toLowerCase().endsWith(".jpg")) {
-						img = BMotionStudioImage
-								.getImage(EditorImageRegistry.IMG_ICON_JPG);
-					} else {
-						img = BMotionStudioImage
-								.getImage(EditorImageRegistry.IMG_ICON_GIF);
-					}
-					tmpList.add(new LibraryImageObject(f.getName(), "image",
-							img));
-				}
-			}
-
-		}
-
-		return tmpList;
-
-	}
+	// TODO Reimplement me!
+	// private List<LibraryObject> getLibraryObjects() {
+	//
+	// List<LibraryObject> tmpList = new ArrayList<LibraryObject>();
+	// tmpList.add(new LibraryObject("noimage", "", BMotionStudioImage
+	// .getImageDescriptor("org.eclipse.ui",
+	// "$nl$/icons/full/etool16/delete_edit.gif")
+	// .createImage()));
+	//
+	// if (BMotionEditorPlugin.getActiveEditor() != null) {
+	//
+	// String basePath = (BMotionEditorPlugin.getActiveEditor()
+	// .getVisualization().getProjectFile().getProject()
+	// .getLocation().toString()).replace("file:", "");
+	// File dir = new File(basePath + "/images");
+	// File[] fileList = dir.listFiles(new FilenameFilter() {
+	// public boolean accept(final File dir, final String name) {
+	// if (name.toLowerCase().endsWith(".jpg")
+	// || name.toLowerCase().endsWith(".gif")
+	// || name.toLowerCase().endsWith(".png")) {
+	// return true;
+	// }
+	// return false;
+	// }
+	// });
+	// if (fileList != null) {
+	// for (File f : fileList) {
+	// Image img = null;
+	// if (f.getName().toLowerCase().endsWith(".jpg")) {
+	// img = BMotionStudioImage
+	// .getImage(EditorImageRegistry.IMG_ICON_JPG);
+	// } else {
+	// img = BMotionStudioImage
+	// .getImage(EditorImageRegistry.IMG_ICON_GIF);
+	// }
+	// tmpList.add(new LibraryImageObject(f.getName(), "image",
+	// img));
+	// }
+	// }
+	//
+	// }
+	//
+	// return tmpList;
+	//
+	// }
 
 	LibraryObject getSelectedObject() {
 		IStructuredSelection sel = (IStructuredSelection) tvLibrary
-- 
GitLab