Replacing SpecificationEditor with ISpecificationEditor.
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java
index 95dfaed..cfd6a66 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.Specification;
 import org.eclipse.ui.IEditorPart;
 
 /**
@@ -29,4 +30,6 @@
 	public AdapterFactory getAdapterFactory();
 	
 	public EditingDomainActionBarContributor getActionBarContributor();
+
+	public ISpecificationEditor openSpecEditor(Specification spec);
 }
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java
index 1239ad0..ce387c9 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java
@@ -10,11 +10,22 @@
  ******************************************************************************/
 package org.eclipse.rmf.reqif10.pror.editor;
 
+import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter;
+
 /**
  * This interface must be implemented by all editors for ReqIF Specifications.
  * 
  * @author jastram
  */
-public interface ISpecificationEditor /* extends IReqifEditor */ {
+public interface ISpecificationEditor extends IReqifEditor {
 
+	/**
+	 * Forward requests to show or hide SpecRelations.
+	 */
+	public void setShowSpecRelations(boolean checked);
+	
+	public void setFilter(ReqifFilter filter);
+
+	public Specification getSpecification();
 }
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java
index 6ae603f..7564eed 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java
@@ -26,7 +26,7 @@
 import org.eclipse.rmf.reqif10.SpecObject;

 import org.eclipse.rmf.reqif10.SpecType;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.swt.widgets.Shell;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

@@ -62,9 +62,9 @@
 		SpecType type = specHierarchy.getObject().getType();

 		if (type == null)

 			return;

-		if (!(editor instanceof SpecificationEditor))

+		if (!(editor instanceof ISpecificationEditor))

 			return;

-		SpecificationEditor specificationEditor = (SpecificationEditor) editor;

+		ISpecificationEditor specificationEditor = (ISpecificationEditor) editor;

 

 		Shell shell = window != null ? window.getShell() : editor.getSite()

 				.getShell();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java
index 0166e92..896cbd4 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java
@@ -31,8 +31,8 @@
 import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

 import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.ReqifSpecificationEditorInput;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

@@ -40,14 +40,14 @@
 

 public class ColumnConfigurationActionDelegate implements IEditorActionDelegate {

 

-	private SpecificationEditor editor;

+	private ISpecificationEditor editor;

 

 	/**

 	 * Retrieves the {@link EditingDomain} from the Editor if present.

 	 */

 	public void setActiveEditor(IAction action, IEditorPart editor) {

-		if (editor instanceof SpecificationEditor) {

-			this.editor = (SpecificationEditor) editor;

+		if (editor instanceof ISpecificationEditor) {

+			this.editor = (ISpecificationEditor) editor;

 		} else {

 			this.editor = null;

 		}

@@ -88,11 +88,11 @@
 	}

 

 	private void launchColumnDialog(final ProrSpecViewConfiguration config) {

-		SubtreeDialog dialog = new SubtreeDialog(editor.getReqifEditor(),

+		SubtreeDialog dialog = new SubtreeDialog(editor,

 				config, "Configure columns for "

 						+ ConfigurationUtil.getSpecElementLabel(

 								config.getSpecification(),

-								editor.getReqifEditor().getAdapterFactory()),

+								editor.getAdapterFactory()),

 				"org.eclipse.rmf.reqif10.pror.editor.columnConfiguration");

 		dialog.setActions(new IAction[] { buildAddColumnAction(config), buildUnifiedColumnAction(config) }, false);

 		dialog.open();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java
index 5182504..b828ff9 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java
@@ -18,7 +18,6 @@
 import org.eclipse.rmf.reqif10.ReqIF;

 import org.eclipse.rmf.reqif10.ReqIFToolExtension;

 import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecObjectItemProvider;

 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecRelationGroupItemProvider;

 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecRelationsItemProvider;

@@ -37,8 +36,6 @@
 	public void setActiveEditor(IAction action, IEditorPart editor) {

 		if (editor instanceof IReqifEditor) {

 			this.editor = (IReqifEditor) editor;

-		} else if (editor instanceof SpecificationEditor) {

-			this.editor = ((SpecificationEditor) editor).getReqifEditor();

 		} else {

 			this.editor = null;

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java
index 9517ad3..9b4c71c 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java
@@ -21,7 +21,6 @@
 import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

 import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

@@ -37,8 +36,6 @@
 	public void setActiveEditor(IAction action, IEditorPart editor) {

 		if (editor instanceof IReqifEditor) {

 			this.editor = (IReqifEditor) editor;

-		} else if (editor instanceof SpecificationEditor) {

-			this.editor = ((SpecificationEditor) editor).getReqifEditor();

 		} else {

 			this.editor = null;

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java
index c0f4c66..7af8165 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java
@@ -28,7 +28,6 @@
 import org.eclipse.rmf.reqif10.pror.configuration.provider.ProrPresentationConfigurationsItemProvider;

 import org.eclipse.rmf.reqif10.pror.edit.presentation.service.PresentationInterface;

 import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationServiceManager;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

@@ -46,8 +45,6 @@
 	public void setActiveEditor(IAction action, IEditorPart editor) {

 		if (editor instanceof IReqifEditor) {

 			this.editor = (IReqifEditor) editor;

-		} else if (editor instanceof SpecificationEditor) {

-			this.editor = ((SpecificationEditor) editor).getReqifEditor();

 		} else {

 			this.editor = null;

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java
index 7d98aea..43a8786 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java
@@ -21,7 +21,7 @@
 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.SpecHierarchy;

 import org.eclipse.rmf.reqif10.Specification;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IWorkbenchWindow;

@@ -58,9 +58,9 @@
 			return;

 		// SpecType type = specHierarchy.getObject().getType();

 

-		if (!(editor instanceof SpecificationEditor))

+		if (!(editor instanceof ISpecificationEditor))

 			return;

-		SpecificationEditor specificationEditor = (SpecificationEditor) editor;

+		ISpecificationEditor specificationEditor = (ISpecificationEditor) editor;

 

 		// Shell shell = window != null ? window.getShell() : editor.getSite()

 		// .getShell();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java
index 15e5db4..6092d7d 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java
@@ -23,7 +23,7 @@
 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.SpecHierarchy;

 import org.eclipse.rmf.reqif10.Specification;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IWorkbenchWindow;

@@ -61,9 +61,9 @@
 			return;

 		// SpecType type = specHierarchy.getObject().getType();

 	

-		if (!(editor instanceof SpecificationEditor))

+		if (!(editor instanceof ISpecificationEditor))

 			return;

-		SpecificationEditor specificationEditor = (SpecificationEditor) editor;

+		ISpecificationEditor specificationEditor = (ISpecificationEditor) editor;

 

 		// Shell shell = window != null ? window.getShell() : editor.getSite()

 		// .getShell();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java
index f4e6339..5c85cb8 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java
@@ -12,7 +12,7 @@
 

 import org.eclipse.jface.action.IAction;

 import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IWorkbenchWindow;

@@ -34,8 +34,8 @@
 	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)

 	 */

 	public void run(IAction action) {

-		if (editor != null && editor instanceof SpecificationEditor) {

-			((SpecificationEditor) editor).setShowSpecRelations(action

+		if (editor != null && editor instanceof ISpecificationEditor) {

+			((ISpecificationEditor) editor).setShowSpecRelations(action

 					.isChecked());

 		}

 	}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java
index c10ab41..50a6bc7 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java
@@ -53,6 +53,7 @@
 import org.eclipse.rmf.reqif10.SpecRelationType;

 import org.eclipse.rmf.reqif10.SpecType;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.agilegrid.AgileCellEditorActionHandler;

 import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter;

 import org.eclipse.rmf.reqif10.pror.filter.SimpleStringFilter;

@@ -273,13 +274,13 @@
 		quicksearch = new Text(parent, SWT.SEARCH | SWT.ICON_CANCEL

 				| SWT.ICON_SEARCH);

 		quicksearch.setSize(500, 0);

-		quicksearch.setEnabled(activeEditorPart instanceof SpecificationEditor);

+		quicksearch.setEnabled(activeEditorPart instanceof ISpecificationEditor);

 		quicksearch.addModifyListener(new ModifyListener() {

 

 			public void modifyText(ModifyEvent e) {

-				if (activeEditorPart instanceof SpecificationEditor) {

+				if (activeEditorPart instanceof ISpecificationEditor) {

 					quicksearch.setEnabled(true);

-					SpecificationEditor specEditor = (SpecificationEditor) activeEditor;

+					ISpecificationEditor specEditor = (ISpecificationEditor) activeEditor;

 					final String text = quicksearch.getText();

 					if (text == null || "".equals(text)) {

 						specEditor.setFilter(null);

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java
index 1f25350..8b5de4d 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java
@@ -106,6 +106,7 @@
 import org.eclipse.rmf.reqif10.XhtmlContent;

 import org.eclipse.rmf.reqif10.pror.configuration.provider.ConfigurationItemProviderAdapterFactory;

 import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationServiceManager;

 import org.eclipse.rmf.reqif10.pror.editor.propertiesview.ProrPropertySheetPage;

 import org.eclipse.rmf.reqif10.pror.provider.ReqIF10ItemProviderAdapterFactory;

@@ -150,7 +151,7 @@
  * This is an example of a Reqif10 model editor. <!-- begin-user-doc --> We

  * modified the generated Editor as little as possible to keep the benefits of

  * working Code. Note that this Editor doesn't do that much. The

- * {@link SpecificationEditor} is much more important and powerful. It uses some

+ * {@link ISpecificationEditor} is much more important and powerful. It uses some

  * elements from this Editor, however (PropertyView, OutlineView...) <!--

  * end-user-doc -->

  * 

@@ -1888,4 +1889,16 @@
 		}

 	}

 

+	public ISpecificationEditor openSpecEditor(Specification spec) {

+		ReqifSpecificationEditorInput editorInput = new ReqifSpecificationEditorInput(

+				this, spec);

+		try {

+			return (ISpecificationEditor) IDE.openEditor(getSite().getPage(),

+					editorInput, SpecificationEditor.EDITOR_ID, false);

+		} catch (PartInitException e) {

+			throw new RuntimeException(e);

+		}

+	}

+	

+

 }

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java
index a207273..d47a09a 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java
@@ -25,8 +25,6 @@
 import java.util.StringTokenizer;

 import java.util.UUID;

 

-import javax.xml.datatype.XMLGregorianCalendar;

-

 import org.eclipse.core.resources.IContainer;

 import org.eclipse.core.resources.IFile;

 import org.eclipse.core.resources.IFolder;

@@ -73,7 +71,6 @@
 import org.eclipse.rmf.reqif10.pror.provider.Reqif10EditPlugin;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;

 import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.events.ModifyEvent;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java
index 2aaddd2..9b83ae6 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java
@@ -41,9 +41,6 @@
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.forms.events.ExpansionAdapter;
 import org.eclipse.ui.forms.events.ExpansionEvent;
 import org.eclipse.ui.forms.widgets.FormToolkit;
@@ -51,7 +48,6 @@
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
-import org.eclipse.ui.ide.IDE;
 
 /**
  * 
@@ -179,7 +175,7 @@
 				Object element = ((IStructuredSelection) event.getSelection())
 						.getFirstElement();
 				if (element instanceof Specification) {
-					openSpec((Specification) element);
+					reqifEditor.openSpecEditor((Specification) element);
 				}
 			}
 		});
@@ -306,18 +302,6 @@
 		return form;
 	}
 
-	private void openSpec(Specification spec) {
-		try {
-			IWorkbenchPage page = PlatformUI.getWorkbench()
-					.getActiveWorkbenchWindow().getActivePage();
-			ReqifSpecificationEditorInput editorInput = new ReqifSpecificationEditorInput(
-					reqifEditor, spec);
-			IDE.openEditor(page, editorInput, SpecificationEditor.EDITOR_ID);
-		} catch (PartInitException e) {
-			e.printStackTrace();
-		}
-	}
-
 	private String getString(String key) {
 		return Reqif10EditorPlugin.INSTANCE.getString(key);
 	}
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java
index 4e851b3..3164089 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java
@@ -19,11 +19,13 @@
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
 import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
@@ -34,6 +36,7 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.rmf.reqif10.ReqIF;
 import org.eclipse.rmf.reqif10.ReqIF10Package;
 import org.eclipse.rmf.reqif10.SpecHierarchy;
 import org.eclipse.rmf.reqif10.SpecRelation;
@@ -463,4 +466,37 @@
 		prorAgileGridViewer.setFilter(filter);
 	}
 
+	public ReqIF getReqif() {
+		return reqifEditor.getReqif();
+	}
+
+	public AdapterFactory getAdapterFactory() {
+		return reqifEditor.getAdapterFactory();
+	}
+
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return reqifEditor.getActionBarContributor();
+	}
+
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		reqifEditor.addSelectionChangedListener(listener);
+	}
+
+	public ISelection getSelection() {
+		return reqifEditor.getSelection();
+	}
+
+	public void removeSelectionChangedListener(
+			ISelectionChangedListener listener) {
+		reqifEditor.removeSelectionChangedListener(listener);
+	}
+
+	public void setSelection(ISelection selection) {
+		reqifEditor.setSelection(selection);
+	}
+
+	public ISpecificationEditor openSpecEditor(Specification spec) {
+		return reqifEditor.openSpecEditor(spec);
+	}
+
 }
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java
index 60f39eb..96d8fd8 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java
@@ -35,8 +35,8 @@
 import org.eclipse.jface.viewers.StructuredSelection;

 import org.eclipse.rmf.reqif10.AttributeValue;

 import org.eclipse.rmf.reqif10.Identifiable;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10EditorPlugin;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Control;

@@ -184,7 +184,7 @@
 

 	/**

 	 * This method is called if a selection was changed in the

-	 * {@link SpecificationEditor}.

+	 * {@link ISpecificationEditor}.

 	 */

 	public void selectionChanged(IWorkbenchPart part, ISelection selection) {

 		EditingDomain newEditingDomain = null;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java
index 6ade6bb..0e8ea48 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java
@@ -39,8 +39,7 @@
 import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;

 import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.ReqifSpecificationEditorInput;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.IProrCellRenderer;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationEditorInterface;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

@@ -48,9 +47,7 @@
 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IEditorReference;

 import org.eclipse.ui.IWorkbenchPage;

-import org.eclipse.ui.PartInitException;

 import org.eclipse.ui.PlatformUI;

-import org.eclipse.ui.ide.IDE;

 

 public class ProrEditorUtil {

 

@@ -220,7 +217,7 @@
 	}

 	

 	/**

-	 * Attempts to find the {@link IReqifEditor} or {@link SpecificationEditor}

+	 * Attempts to find the {@link IReqifEditor} or {@link ISpecificationEditor}

 	 * for the given EObject by walking up the parent hierarchy to the enclosing

 	 * {@link ReqIF} or {@link Specification}. If the {@link IReqifEditor} is

 	 * found for a Specification, the corresponding editor will be opened.

@@ -249,8 +246,8 @@
 		IEditorReference[] eRefs = activePage.getEditorReferences();

 		for (IEditorReference eRef : eRefs) {

 			IEditorPart editor = eRef.getEditor(false);

-			if (editor instanceof SpecificationEditor) {

-				SpecificationEditor specEditor = (SpecificationEditor) editor;

+			if (editor instanceof ISpecificationEditor) {

+				ISpecificationEditor specEditor = (ISpecificationEditor) editor;

 

 				// Case 1: We found the right SpecificationEditor

 				if (specEditor.getSpecification().equals(spec)) {

@@ -265,14 +262,7 @@
 					if (spec == null) return reqifEditor;

 					

 					// Case 3: We found the Reqif10Editor, but need the SpecificationEditor

-					ReqifSpecificationEditorInput editorInput = new ReqifSpecificationEditorInput(

-							reqifEditor, spec);

-					try {

-						return IDE.openEditor(activePage, editorInput,

-								SpecificationEditor.EDITOR_ID, false);

-					} catch (PartInitException e) {

-						e.printStackTrace();

-					}

+					return reqifEditor.openSpecEditor(spec);

 				}

 			}

 		}

diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java
index 33ba457..56ab863 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java
@@ -20,7 +20,6 @@
 import org.eclipse.jface.dialogs.ProgressMonitorDialog;
 import org.eclipse.rmf.reqif10.ReqIF;
 import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;
-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;
 import org.eclipse.rmf.reqif10.search.filter.IFilter;
 import org.eclipse.rmf.reqif10.search.filter.SimpleCompoundFilter;
 import org.eclipse.rmf.reqif10.search.ui.ReqIFSearchUIPlugin;
@@ -212,9 +211,6 @@
 		if (editor instanceof IReqifEditor) {
 			return (IReqifEditor) editor;
 		}
-		if (editor instanceof SpecificationEditor) {
-			return ((SpecificationEditor) editor).getReqifEditor();
-		}
 		return null;
 	}
 
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
index c42aa8b..c724f00 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
@@ -16,7 +16,7 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.rmf.reqif10.SpecHierarchy;
 import org.eclipse.rmf.reqif10.Specification;
-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;
+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;
 import org.eclipse.search.ui.ISearchResultViewPart;
 import org.eclipse.search.ui.NewSearchUI;
 import org.eclipse.ui.IEditorActionDelegate;
@@ -29,7 +29,7 @@
 
 	private Specification spec;
 	private SpecHierarchy selectedSpecHierarchy;
-	private SpecificationEditor editor;
+	private ISpecificationEditor editor;
 
 	@Override
 	public void run(IAction action) {
@@ -69,9 +69,9 @@
 
 	@Override
 	public void setActiveEditor(IAction action, IEditorPart targetEditor) {
-		if (targetEditor instanceof SpecificationEditor) {
-			this.editor = (SpecificationEditor)targetEditor;
-			this.spec = ((SpecificationEditor)targetEditor).getSpecification();
+		if (targetEditor instanceof ISpecificationEditor) {
+			this.editor = (ISpecificationEditor)targetEditor;
+			this.spec = ((ISpecificationEditor)targetEditor).getSpecification();
 		} else {
 			this.spec = null;
 			this.editor = null;