From e440821352d9928c274fecd6a8d9d10c415db0e5 Mon Sep 17 00:00:00 2001
From: Lukas Ladenberger <lukas.ladenberger@googlemail.com>
Date: Fri, 4 Jan 2013 17:54:37 +0100
Subject: [PATCH] implemented remove view action

---
 .../gef/editor/BMotionStudioEditor.java       |  8 +--
 .../gef/editor/BMotionStudioLauncher.java     |  6 +-
 .../AddVisualizationViewAction.java           |  2 +-
 .../gef/editor/controlpanel/ControlPanel.java |  4 ++
 .../RemoveVisualizationViewAction.java        | 67 +++++++++++++++++++
 .../gef/editor/model/VisualizationView.java   | 15 ++++-
 6 files changed, 92 insertions(+), 10 deletions(-)
 create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/RemoveVisualizationViewAction.java

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 8dd24ca4..c4f84899 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
@@ -288,11 +288,11 @@ public class BMotionStudioEditor extends EditorPart implements
 				Visualization visualization = (Visualization) obj;
 				visualization.setProjectFile(file);
 
-				VisualizationView visualizationView = new VisualizationView(
-						"New Visualization View", visualization);
-
 				String secId = UUID.randomUUID().toString();
 
+				VisualizationView visualizationView = new VisualizationView(
+						"New Visualization View", visualization, secId);
+
 				simulation.getVisualizationViews()
 						.put(secId, visualizationView);
 
@@ -462,7 +462,7 @@ public class BMotionStudioEditor extends EditorPart implements
 							"EventB", version);
 
 					VisualizationView visualizationView = new VisualizationView(
-							"New Visulization View", visualization);
+							"New Visulization View", visualization, secId);
 					simulation.getVisualizationViews().put(secId,
 							visualizationView);
 					
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioLauncher.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioLauncher.java
index 5f3e0016..91029f22 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioLauncher.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioLauncher.java
@@ -102,11 +102,11 @@ public class BMotionStudioLauncher implements IEditorLauncher {
 				Visualization visualization = (Visualization) obj;
 				visualization.setProjectFile(file);
 
-				VisualizationView visualizationView = new VisualizationView(
-						"New Visualization View", visualization);
-
 				String secId = UUID.randomUUID().toString();
 
+				VisualizationView visualizationView = new VisualizationView(
+						"New Visualization View", visualization, secId);
+
 				simulation.getVisualizationViews()
 						.put(secId, visualizationView);
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/AddVisualizationViewAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/AddVisualizationViewAction.java
index 17663ecf..f18fdae9 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/AddVisualizationViewAction.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/AddVisualizationViewAction.java
@@ -55,7 +55,7 @@ public class AddVisualizationViewAction extends Action {
 						.getProjectFile().getName(), "EventB", version);
 
 				VisualizationView visualizationView = new VisualizationView(
-						"New Visualization View", visualization);
+						"New Visualization View", visualization, secId);
 				simulation.getVisualizationViews()
 						.put(secId, visualizationView);
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/ControlPanel.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/ControlPanel.java
index 188ce206..9d7e45ab 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/ControlPanel.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/ControlPanel.java
@@ -176,6 +176,8 @@ public class ControlPanel extends ViewPart implements ISimulationListener,
 				treeViewer);
 		final AddVisualizationViewAction addVisualizationViewAction = new AddVisualizationViewAction(
 				treeViewer);
+		final RemoveVisualizationViewAction deleteVisualizationViewAction = new RemoveVisualizationViewAction(
+				treeViewer);
 		final Separator separator = new Separator();
 
 		MenuManager manager = new MenuManager();
@@ -190,6 +192,8 @@ public class ControlPanel extends ViewPart implements ISimulationListener,
 					manager.add(saveSimulationAction);
 					manager.add(separator);
 					manager.add(addVisualizationViewAction);
+				} else if (firstElement instanceof VisualizationView) {
+					manager.add(deleteVisualizationViewAction);
 				}
 			}
 		});
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/RemoveVisualizationViewAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/RemoveVisualizationViewAction.java
new file mode 100644
index 00000000..6fe19456
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/controlpanel/RemoveVisualizationViewAction.java
@@ -0,0 +1,67 @@
+/** 
+ * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, 
+ * Heinrich Heine Universitaet Duesseldorf
+ * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
+ * */
+
+package de.bmotionstudio.gef.editor.controlpanel;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+
+import de.bmotionstudio.gef.editor.BMotionStudioImage;
+import de.bmotionstudio.gef.editor.VisualizationViewPart;
+import de.bmotionstudio.gef.editor.model.Simulation;
+import de.bmotionstudio.gef.editor.model.VisualizationView;
+
+public class RemoveVisualizationViewAction extends Action {
+
+	private TreeViewer viewer;
+
+	public RemoveVisualizationViewAction(TreeViewer viewer) {
+		this.viewer = viewer;
+		setText("Remove View");
+		setImageDescriptor(BMotionStudioImage.getImageDescriptor(
+				"org.eclipse.ui", "$nl$/icons/full/etool16/delete_edit.gif"));
+	}
+
+	@Override
+	public void run() {
+
+		IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
+		Object firstElement = sel.getFirstElement();
+
+		if (firstElement instanceof VisualizationView) {
+
+			VisualizationView visView = (VisualizationView) firstElement;
+
+			ITreeSelection selection = ((ITreeSelection) viewer.getSelection());
+			Object parent = selection.getPaths()[0].getParentPath()
+					.getLastSegment();
+
+			if (parent != null && parent instanceof Simulation) {
+
+				Simulation simulation = (Simulation) parent;
+				simulation.getVisualizationViews().remove(visView.getViewId());
+				viewer.refresh();
+
+				IWorkbenchPage page = PlatformUI.getWorkbench()
+						.getActiveWorkbenchWindow().getActivePage();
+
+				IViewReference viewReference = page.findViewReference(
+						VisualizationViewPart.ID, visView.getViewId());
+
+				page.hideView(viewReference);
+
+			}
+
+		}
+
+	}
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/VisualizationView.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/VisualizationView.java
index 040b9c12..71cc9707 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/VisualizationView.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/VisualizationView.java
@@ -4,10 +4,13 @@ public class VisualizationView {
 
 	private String name;
 	private Visualization visualization;
-
-	public VisualizationView(String name, Visualization visualization) {
+	private String viewId;
+	
+	public VisualizationView(String name, Visualization visualization,
+			String viewId) {
 		this.name = name;
 		this.visualization = visualization;
+		this.viewId = viewId;
 	}
 
 	public String getName() {
@@ -26,4 +29,12 @@ public class VisualizationView {
 		this.visualization = visualization;
 	}
 
+	public String getViewId() {
+		return viewId;
+	}
+
+	public void setViewId(String viewId) {
+		this.viewId = viewId;
+	}
+
 }
-- 
GitLab