Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [bpel-dev] patch4=patch3+moving-fileChangeListener-and-postBuildRefListener

Hi Vitaly,

I also looked at Patch no4, and it looks, good, too.
So I will release everything in the DOM_FACADE branch ...

It seems to be that you had some issues with the EditModelClient, the
ResourceListeners etc. (I assume in order to guarantee synchronisation)
 ....Maybe we should have a chat on this in the next week ... also to
discuss the next steps (but your proposal is fine, anyway)

Cheers
Simon

Simon Moser, M.Eng.


                                                                          
 Websphere Integration       Mail:           IBM Deutschland Entwicklung  
 Developer Development       smoser@xxxxxx.  GmbH                         
 Team Lead BPEL Editor       com             Vorsitzender des             
 Dept. 4722, Bldg.           Phone:          Aufsichtsrats: Martin Jetter 
 71032-01, Room 086          +49-7031-16-43  Geschäftsführung: Herbert    
 Websphere Solutions and     04              Kircher                      
 Services                    Fax:            Sitz der Gesellschaft:       
 IBM Deutschland             +49-7031-16-48  Böblingen                    
 Entwicklung GmbH            90              Registergericht: Amtsgericht 
 Schönaicherstr. 220, D –                    Stuttgart, HRB 243294        
 71032 Boeblingen                                                         
                                                                          








                                                                           
             "Tishkov, Vitaly                                              
             V"                                                            
             <vitaly.v.tishkov                                          To 
             @intel.com>               "BPEL Designer project developer    
             Sent by:                  discussions."                       
             bpel-dev-bounces@         <bpel-dev@xxxxxxxxxxx>              
             eclipse.org                                                cc 
                                                                           
                                                                   Subject 
             07/06/2007 03:20          [bpel-dev]                          
             PM                        patch4=patch3+moving-fileChangeList 
                                       ener-and-postBuildRefListener       
                                                                           
             Please respond to                                             
              "BPEL Designer                                               
             project developer                                             
               discussions."                                               
             <bpel-dev@eclipse                                             
                   .org>                                                   
                                                                           
                                                                           




Hello Simon,

Please find the 4th patch for MultiTab-DomFacade branch attached.
It contains:
- the 3rd patch (
http://dev.eclipse.org/mhonarc/lists/bpel-dev/msg00462.html);
- code related to fileChangeListener and postBuildReferenceListener is
moved from BPELEditor to BPELMultipageEditorPart.

I assume that the work of separating “core” and “view” functionality is
mostly done. There will be later changes during synchronization of EMF and
DOM trees but the changes will be minor in comparison to what is done
already.

The next step I’m going to work on is eliminating BPELReader by creating
EMF model from the DOM model previously read by the source tab
(=StructuredTextEditor).
After this next step is completed it becomes possible to work on
synchronization of EMF and DOM models in order to have a fully functional
read-write source tab.

Thanks,
            Vitaly.(See attached file:
patch4=patch3+moving-fileChangeListener-and-postBuildRefListener.txt)
_______________________________________________
bpel-dev mailing list
bpel-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/bpel-dev
### Eclipse Workspace Patch 1.0
#P org.eclipse.bpel.ui
Index: src/org/eclipse/bpel/ui/ProcessContextMenuProvider.java
===================================================================
RCS file: /cvsroot/technology/org.eclipse.bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/ProcessContextMenuProvider.java,v
retrieving revision 1.3
diff -u -r1.3 ProcessContextMenuProvider.java
--- src/org/eclipse/bpel/ui/ProcessContextMenuProvider.java	16 Aug 2006 23:10:32 -0000	1.3
+++ src/org/eclipse/bpel/ui/ProcessContextMenuProvider.java	6 Jul 2007 12:34:56 -0000
@@ -119,7 +119,7 @@
 		MenuManager insertMenu = new MenuManager(Messages.ProcessContextMenuProvider_Insert_Before_2); 
 
 		// TODO: There should be a better way to do this
-		BPELEditor bpelEditor = (BPELEditor)(((DefaultEditDomain)getViewer().getEditDomain()).getEditorPart());
+		BPELEditor bpelEditor = ((BPELMultipageEditorPart)(((DefaultEditDomain)getViewer().getEditDomain()).getEditorPart())).getDesignEditor();
 		
 		// add all the possible actions
 		// TODO: need to be more selective here!  Only add actions that make sense for this
Index: src/org/eclipse/bpel/ui/BPELEditor.java
===================================================================
RCS file: /cvsroot/technology/org.eclipse.bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELEditor.java,v
retrieving revision 1.16.2.1
diff -u -r1.16.2.1 BPELEditor.java
--- src/org/eclipse/bpel/ui/BPELEditor.java	8 Jun 2007 08:58:50 -0000	1.16.2.1
+++ src/org/eclipse/bpel/ui/BPELEditor.java	6 Jul 2007 12:34:56 -0000
@@ -151,6 +151,7 @@
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.ActionFactory;
@@ -160,6 +161,7 @@
 import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyViewer;
 import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.MultiPageEditorSite;
 import org.eclipse.ui.part.PageBook;
 import org.eclipse.ui.views.properties.IPropertySheetPage;
 import org.eclipse.ui.views.properties.tabbed.ISection;
@@ -172,30 +174,20 @@
 /**
  * BPELEditor is the Eclipse editor part for editing BPEL files.
  */
-public class BPELEditor extends GraphicalEditorWithPaletteAndTray implements IEditModelListener/*, IGotoMarker */{
-
-	// The process that we are editing
-	private Process process;
+public class BPELEditor extends GraphicalEditorWithPaletteAndTray /*, IGotoMarker */{
 
+	//FIXME can't move it to MultiPageEditor because of chicken and egg problem
 	// TODO: comment
 	protected BPELEditModelClient editModelClient;
 
-	protected ModelListenerAdapter modelListenerAdapter; 
-	
 	protected BPELEditorAdapter editorAdapter;
 	
 	// transfer buffer (clipboard) for graph copies
 	private TransferBuffer transferBuffer;
 
-	private Resource extensionsResource;
-	private ExtensionMap extensionMap;
-	
 	// This records all model changes for automatic undo/redo purposes.
 	private ModelAutoUndoRecorder modelAutoUndoRecorder;
 
-	// reacts to changes on the BPEL file (e.g. move, rename)
-	private IFileChangeListener fileChangeListener;
-	
 	// Cached key handler used by both the graphical editor and outline view
 	private KeyHandler keyHandler;	
 	
@@ -217,9 +209,6 @@
 	// JM
 	private BPELDropTargetListener dropTargetListener;
 
-	// refactoring listeners;
-	protected IResourceChangeListener postBuildRefactoringListener;
-	
 	// Palette entries that will appear and disappear depending on editor mode
 	BPELCreationToolEntry switchEntry, flowEntry, sequenceEntry;
 	PaletteCategory controlCategory;
@@ -233,9 +222,9 @@
 	
 	protected ICommandFramework commandFramework;
 	
-	public BPELEditor() {
+	public BPELEditor(DefaultEditDomain ed) {
 		super();
-		setEditDomain(new BPELEditDomain(this));
+		setEditDomain(ed);
 
 		transferBuffer = new TransferBuffer();
 
@@ -264,19 +253,21 @@
 	    return null;
 	}
 
-	//increasing visibility
-	public DefaultEditDomain getEditDomain() {
-		return super.getEditDomain();
+	public BPELEditModelClient getEditModelClient() {	
+		return editModelClient;
 	}
 	
-	public BPELEditModelClient getEditModelClient() {	return editModelClient; }
-	
+	public void setEditModelClient(BPELEditModelClient cl) {	
+		this.editModelClient = cl;
+	}
+
 	public ResourceSet getResourceSet() {
-		return editModelClient.getEditModel().getResourceSet();
+		return getEditModelClient().getEditModel().getResourceSet();
 	}
 
-	public Resource getResource() { return process.eResource(); }
+	public Resource getResource() { return getProcess().eResource(); }
 	public ModelAutoUndoRecorder getModelAutoUndoRecorder() { return modelAutoUndoRecorder; }
+	
 	public TransferBuffer getTransferBuffer() { return transferBuffer; }
 
 	public Set getAppendNewActions() { return appendNewActions; }
@@ -434,11 +425,13 @@
 	 * @see org.eclipse.ui.IWorkbenchPart#dispose()
 	 */
 	public void dispose() {
+		
 		if (editModelClient != null) {
-			editModelClient.getEditModel().getResourceSet().eAdapters().remove(editorAdapter);
+			editModelClient.getEditModel().getResourceSet().eAdapters().remove(getEditorAdapter());
 			editModelClient.dispose();
 			editModelClient = null;
 		}
+
 		if (getGraphicalViewer() != null) {
 			if (selectionChangeListener != null) {
 				getGraphicalViewer().removeSelectionChangedListener(selectionChangeListener);
@@ -457,6 +450,7 @@
 		if (getEditDomain() != null) {
 			getEditDomain().setPaletteViewer(null);
 		}
+		
 		if (getPaletteViewer() != null) {
 			getPaletteViewer().setContents(null);
 		}
@@ -465,9 +459,6 @@
 
 		super.dispose();
 		
-		if (fileChangeListener != null) {
-			BPELUIPlugin.getPlugin().getResourceChangeListener().removeListener(fileChangeListener);
-		}
 		if (dropTarget != null) {
 			dropTarget.dispose();
 			dropTarget = null;
@@ -480,12 +471,6 @@
 			adaptingSelectionProvider = null;
 		}
 		
-		// remove refactoring listeners
-		if (postBuildRefactoringListener != null) {
-			IWorkspace workspace = ResourcesPlugin.getWorkspace();
-			workspace.removeResourceChangeListener(postBuildRefactoringListener);
-		}
-		
 		// TODO unhook BPELEditorAdapter from the resource set to avoid unnecessary cyclic garbage.
 		//BPELEditorAdapter bpelEditorAdapter = (BPELEditorAdapter)BPELUtil.adapt(
 		//	resourceSet, BPELEditorAdapter.class);
@@ -494,7 +479,7 @@
 		// Hacks to work around memory leaks: break references to large structures.
 		// Various objects are holding onto a BPELEditor or ResourceSet and that's hard to fix.
 		transferBuffer.setContents(null);
-		process = null;
+
 		if (getEditDomain() != null) {
 			((BPELEditDomain)getEditDomain()).setProcess(null);
 		}
@@ -555,65 +540,6 @@
 //		}
 //	}
 
-	public void doRevertToSaved(IProgressMonitor monitor) {
-		// Do the work within an operation because this is a long running activity that modifies the workbench.
-//		WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
-//			protected void execute(IProgressMonitor monitor) throws CoreException {
-//				try {
-//					getCommandFramework().abortCurrentChange();
-//					getCommandStack().flush();
-//					
-//					// de-select anything selected on the canvas!  Otherwise removing things
-//					// will trigger a bunch of behaviour when the selected object(s) are
-//					// removed..
-//					adaptingSelectionProvider.setSelection(StructuredSelection.EMPTY);
-//					
-//					process = null;
-//					extensionMap = null;
-//					extensionsResource = null;
-//					lastSelectedEditPart = null;
-//					// unload all resources (otherwise they stay around taking up space..?)
-//					for (Iterator it = getResourceSet().getResources().iterator(); it.hasNext(); ) {
-//						Resource res = (Resource)it.next();
-//						res.unload();
-//					}
-//					loadModel();
-//					getGraphicalViewer().setContents(process);
-//					getTrayViewer().setContents(process);
-//					if (outlinePage != null && outlinePage.getViewer() != null) {
-//                      // hack!
-//						if (Platform.getWS().equals(Platform.WS_GTK)) {
-//							Tree tree = (Tree) outlinePage.getViewer().getControl();
-//							if (tree != null) {
-//								tree.setRedraw(false);
-//								TreeItem[] items = tree.getItems();
-//								for (int i = 0; i < items.length; i++) {
-//									items[i].dispose();
-//								}
-//								tree.setRedraw(true);
-//							}
-//						}
-//						outlinePage.getViewer().setContents(process);
-//					}
-//					selectModelObject(getProcess());
-//				}
-//				catch (Exception e) {
-//					BPELUIPlugin.log(e);
-//				}
-//			}
-//		};
-//
-//		try {
-//			// This runs the options, and shows progress.
-//			// (It appears to be a bad thing to fork this onto another thread.)
-//			new ProgressMonitorDialog(getSite().getShell()).run(false, false, operation);
-//
-//			// Refresh the necessary state.
-//			firePropertyChange(IEditorPart.PROP_DIRTY);
-//		} catch (Exception e) {
-//			BPELUIPlugin.log(e);
-//		}
-	}
 
 	/**
 	 * @see org.eclipse.ui.IEditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
@@ -623,8 +549,8 @@
 
 		removeUnusedExtensions();
 		// Add all imports and namespaces to the artifacts file before saving.
-		if (editModelClient.getArtifactsResourceInfo() != null) {
-			Resource artifactsResource = editModelClient.getArtifactsResourceInfo().getResource();
+		if (getEditModelClient().getArtifactsResourceInfo() != null) {
+			Resource artifactsResource = getEditModelClient().getArtifactsResourceInfo().getResource();
 			
 			if (artifactsResource instanceof WSDLResourceImpl) {
 				// Add any missing imports/namespaces before saving!
@@ -654,8 +580,8 @@
 			}
 		}
 		try {
-			extensionsResource.setModified(false);			
-			editModelClient.saveAll(progressMonitor);					
+			getExtensionsResource().setModified(false);			
+			getEditModelClient().saveAll(progressMonitor);					
 			
 			//getModelDirtyTracker().markSaveLocation();
 
@@ -663,12 +589,12 @@
 			updateTitle();
 		}
 		// Put the timestamp of the bpel file into the bpelex file.
-		IFile bpelFile = BPELUtil.getBPELFile(process);
+		IFile bpelFile = BPELUtil.getBPELFile(getProcess());
 		long modificationStamp = bpelFile.getLocalTimeStamp();
-		ProcessExtension processExtension = (ProcessExtension)ModelHelper.getExtension(process);
+		ProcessExtension processExtension = (ProcessExtension)ModelHelper.getExtension(getProcess());
    		processExtension.setModificationStamp(modificationStamp);
-	    extensionsResource.setModified(true);
-	    editModelClient.saveAll(progressMonitor); 
+   		getExtensionsResource().setModified(true);
+   		getEditModelClient().saveAll(progressMonitor); 
 	}
 
 	// Disable our Save As functionality.
@@ -692,7 +618,7 @@
 		
 		IPath path = saveAsDialog.getResult();
 		if (path != null) {
-			return editModelClient.savePrimaryResourceAs(
+			return getEditModelClient().savePrimaryResourceAs(
 				ResourcesPlugin.getWorkspace().getRoot().getFile(path), 
 				getEditorSite().getActionBars().getStatusLineManager().getProgressMonitor());	
 		}
@@ -712,25 +638,24 @@
 	/**
 	 * @see org.eclipse.ui.IEditorPart#isDirty()
 	 */
-	public boolean isDirty() {
+	/*public boolean isDirty() {
 		return getCommandStack().isDirty();
-	}
+	}*/
 
-	public ExtensionMap getExtensionMap() {
-		return extensionMap;
-	}
-	
 	/**
 	 * @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer()
 	 */
 	protected void initializeGraphicalViewer() {
-		initializeFileChangeListener();
-		initializeRefactoringListeners();
+		///FIXME moved to multi
+		//initializeFileChangeListener();
+		//initializeRefactoringListeners();
+		
 		getGraphicalViewer().setEditPartFactory(new BPELEditPartFactory());
 		
 		BPELUIPlugin.getPlugin().getPreferenceStore().setValue(IBPELUIConstants.PREF_SHOW_FREEFORM_FLOW, true);
 		
-		getGraphicalViewer().setContents(process);
+		getGraphicalViewer().setContents(getProcess());
+
 		this.selectionChangeListener = new ISelectionChangedListener() {
 			public void selectionChanged(SelectionChangedEvent event) {
 				StructuredSelection selection = (StructuredSelection)event.getSelection();
@@ -782,7 +707,7 @@
 		// Make a list of all FlowEditParts whose children all have no positional metadata
 		List flowsToArrange = new ArrayList();
 
-		for (TreeIterator it = process.eAllContents(); it.hasNext(); ) {
+		for (TreeIterator it = getProcess().eAllContents(); it.hasNext(); ) {
 			Object model = it.next();
 			if (model instanceof Flow) {
 				boolean missingLoc = false;
@@ -808,60 +733,6 @@
 		}
 	}
 	
-	protected void initializeFileChangeListener() {
-		fileChangeListener = new IFileChangeListener() {
-			public void deleted(IFile file) {
-				IFile current = ((IFileEditorInput)getEditorInput()).getFile();
-				if (current.equals(file)) {
-					// Close the editor.
-					Display display = getSite().getShell().getDisplay();
-					display.asyncExec(new Runnable() {
-						public void run() {
-							getSite().getPage().closeEditor(BPELEditor.this, false);
-						}
-					});
-				}
-			}
-			public void moved(IFile source, final IFile destination) {
-//				IFile current = ((IFileEditorInput) getEditorInput()).getFile();
-//				if (!current.equals(source)) {
-//					return;
-//				}
-//				// update editors input
-//				final IFileEditorInput input = new FileEditorInput(destination);
-//				Display display = getDetailsEditor().getSite().getShell().getDisplay();
-//				display.syncExec(new Runnable() {
-//					public void run() {
-//						getBPELDetailsEditor().setInput(input);
-//						setInput(input);
-//					}
-//				});
-//				// update resources
-//				IPath path = destination.getFullPath();
-//				URI uri = URI.createPlatformResourceURI(path.toString());
-//				processResource.setURI(uri);
-//				// JM: Comment out. We don't want to re-name the process just because
-//				// the file name has changed
-////				display.syncExec(new Runnable() {
-////					public void run() {
-////						BPELUtil.updateNameAndNamespace(destination, process);
-////					}
-////				});
-//				path = path.removeFileExtension().addFileExtension(IBPELUIConstants.EXTENSION_MODEL_EXTENSIONS);
-//				URI extensionsUri = URI.createPlatformResourceURI(path.toString());
-//				extensionsResource = resourceSet.createResource(extensionsUri);
-//				extensionsResource.setURI(extensionsUri);
-//				try {
-//					// JM: Comment out for now. We should re-test this
-////					processResource.save(Collections.EMPTY_MAP);
-////					destination.refreshLocal(IResource.DEPTH_ZERO, null);
-//				} catch (Exception e) {
-//					BPELUIPlugin.log(e);
-//				}
-			}
-		};
-		BPELUIPlugin.getPlugin().getResourceChangeListener().addListener(fileChangeListener);
-	}
 
 	public void commandStackChanged(EventObject event) {
 		firePropertyChange(IEditorPart.PROP_DIRTY);
@@ -1109,18 +980,48 @@
 	}
 	
 	public Process getProcess() {
-		return process;
+		IWorkbenchPartSite editorSite = getSite();
+		if (editorSite instanceof MultiPageEditorSite) {
+			return (Process)((org.eclipse.ui.part.MultiPageEditorSite)getSite()).getMultiPageEditor().getAdapter(Process.class);
+		}
+		return null;
+	}
+
+	public Resource getExtensionsResource (){
+		IWorkbenchPartSite editorSite = getSite();
+		if (editorSite instanceof MultiPageEditorSite) {
+			return (Resource)((org.eclipse.ui.part.MultiPageEditorSite)getSite()).getMultiPageEditor().getAdapter(Resource.class);
+		}
+		return null;
+	}
+
+	public ExtensionMap getExtensionMap (){
+		IWorkbenchPartSite editorSite = getSite();
+		if (editorSite instanceof MultiPageEditorSite) {
+			return (ExtensionMap)((org.eclipse.ui.part.MultiPageEditorSite)getSite()).getMultiPageEditor().getAdapter(ExtensionMap.class);
+		}
+		return null;
+	}
+
+	//FIXME should we kill it and move all the model listener adapter related
+	//things to BPELMultipageEditorPart?
+	public ModelListenerAdapter getModelListenerAdapter() { 
+		IWorkbenchPartSite editorSite = getSite();
+		if (editorSite instanceof MultiPageEditorSite) {
+			return (ModelListenerAdapter)((org.eclipse.ui.part.MultiPageEditorSite)getSite()).getMultiPageEditor().getAdapter(ModelListenerAdapter.class);
+		}
+		return null;
 	}
 	
 	/**
-	 * Increase the visibility of getCommandStack() so that the details area
-	 * can see it.
-	 * 
-	 * NOTE: This code is equivalent to GraphicalEditor.getCommandStack().
-	 * We explicitly use getEditDomain() to ensure consistency with replaceCommandStack().
+	 * Overriding to use BPELMultipageEditorPart command stack
 	 */
 	public CommandStack getCommandStack() {
-		return getEditDomain().getCommandStack();
+		IWorkbenchPartSite editorSite = getSite();
+		if (editorSite instanceof MultiPageEditorSite) {
+			return (CommandStack)((org.eclipse.ui.part.MultiPageEditorSite)getSite()).getMultiPageEditor().getAdapter(CommandStack.class);
+		}
+		return null;
 	}
 
 	public void setAutoFlowLayout(boolean autoLayout) {
@@ -1249,6 +1150,10 @@
 		return filteredEditPartSelectionProvider;
 	}
 
+	protected BPELEditorAdapter getEditorAdapter() {
+		return editorAdapter;
+	}
+
 	/**
 	 * Override getGraphicalViewer() to make the method public
 	 */
@@ -1282,28 +1187,6 @@
 		});
 	}
 	
-	/**
-	 * Installs the refactoring listeners.
-	 */
-	protected void initializeRefactoringListeners() {
-		final IWorkspace workspace = ResourcesPlugin.getWorkspace();
-		postBuildRefactoringListener = new IResourceChangeListener() {
-			public void resourceChanged(IResourceChangeEvent event) {
-				IFile newFile = ((FileEditorInput)getEditorInput()).getFile();
-				final IResourceDelta bpelFileDelta = event.getDelta().findMember(newFile.getFullPath());
-				// we only care about the change if it is a move or a rename
-				if (bpelFileDelta != null && (bpelFileDelta.getFlags() & IResourceDelta.MOVED_FROM) != 0) {
-					getSite().getShell().getDisplay().syncExec(new Runnable() {
-						public void run() {
-							doRevertToSaved(null);
-						}
-					});
-				}
-			}
-		};
-		workspace.addResourceChangeListener(postBuildRefactoringListener, IResourceChangeEvent.POST_BUILD);
-	}
-
 	public void createPartControl(Composite parent) {
 		super.createPartControl(parent);
 		getTrayComposite().setState(TrayComposite.STATE_EXPANDED);
@@ -1320,6 +1203,7 @@
 	 * This is called during startup.
 	 */
 	public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException {
+		
 		if (editorInput instanceof IFileEditorInput) {
 			try {
 				super.init(site, editorInput);
@@ -1327,22 +1211,15 @@
 				// remove the listener on the command stack created by the graphical editor
 				getCommandStack().removeCommandStackListener(this);
 
-				editModelClient = new BPELEditModelClient(this, getFileInput(), this, null);
-				getEditDomain().setCommandStack(editModelClient.getCommandStack());
-				
-				ResourceSet resourceSet = editModelClient.getEditModel().getResourceSet();
+				ResourceSet resourceSet = getEditModelClient().getEditModel().getResourceSet();
 
 				// TODO: does this stuff have to go?  it won't work with shared models..
-				modelListenerAdapter = new ModelListenerAdapter();
-				resourceSet.eAdapters().add(modelListenerAdapter);
+				resourceSet.eAdapters().add(getModelListenerAdapter());
 				resourceSet.eAdapters().add(editorAdapter = new BPELEditorAdapter());
-				this.modelListenerAdapter.setLinkNotificationAdapter(new LinkNotificationAdapter(this));
-				getCommandStack().addCommandStackListener(modelListenerAdapter);
+				getModelListenerAdapter().setLinkNotificationAdapter(new LinkNotificationAdapter(this));
+				getCommandStack().addCommandStackListener(getModelListenerAdapter());
 				
-				loadModel();
-				updateTitle();
-
-				commandFramework = new EditModelCommandFramework(editModelClient.getCommandStack());
+				commandFramework = new EditModelCommandFramework(getEditModelClient().getCommandStack());
 
 				// add a listener to the shared command stack
 				getCommandStack().addCommandStackListener(this);
@@ -1380,12 +1257,12 @@
 	// This is for loading the model within the editor
 	// REMINDER: Any changes to this method, consider corresponding changes to
 	// the loadModelWithoutEditModel() method!
-	protected void loadModel() {
+	/*protected void loadModel() {
 		// TODO: This two lines are a workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=72565
 		EcorePackage instance = EcorePackage.eINSTANCE;
-		instance.eAdapters();
+		instance.eAdapters();*/
 
-		Resource bpelResource = editModelClient.getPrimaryResourceInfo().getResource();
+		/*Resource bpelResource = editModelClient.getPrimaryResourceInfo().getResource();
 
 		IFile file = getFileInput();
 		BPELReader reader = new BPELReader();
@@ -1398,7 +1275,7 @@
 	    this.extensionsResource = reader.getExtensionsResource();
 	    this.extensionMap = reader.getExtensionMap();
 	    
-		this.modelListenerAdapter.setExtensionMap(extensionMap);
+		this.modelListenerAdapter.setExtensionMap(extensionMap);*/
 
 //		ProcessExtension processExtension = (ProcessExtension)ModelHelper.getExtension(process);
 //		long stamp = processExtension.getModificationStamp();
@@ -1420,59 +1297,7 @@
 //  		        //extensionMap = null;
 //   		    }
 //   		}
-	}
-	
-	// This is a hack for the report generator.
-	// REMINDER: Any changes to this method, consider corresponding changes to
-	// the loadModel() method!
-	public void loadModelWithoutEditModel() {
-		// TODO: This two lines are a workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=72565
-		EcorePackage instance = EcorePackage.eINSTANCE;
-		instance.eAdapters();
-
-		ResourceSet resourceSet = new ResourceSetImpl();
-		IFile file = getFileInput();
-		URI uri = URI.createPlatformResourceURI(file.getFullPath().toString());
-		Resource bpelResource = resourceSet.getResource(uri, true);
-
-		BPELReader reader = new BPELReader();
-	    reader.read(bpelResource, file, resourceSet);
-	    
-	    this.process = reader.getProcess();
-	    if (getEditDomain() != null) {
-	    	((BPELEditDomain)getEditDomain()).setProcess(process);
-	    }
-	    this.extensionsResource = reader.getExtensionsResource();
-	    this.extensionMap = reader.getExtensionMap();
-	    
-		modelListenerAdapter = new ModelListenerAdapter();
-		resourceSet.eAdapters().add(modelListenerAdapter);
-		resourceSet.eAdapters().add(new BPELEditorAdapter());
-	    
-		this.modelListenerAdapter.setExtensionMap(extensionMap);
-
-//		ProcessExtension processExtension = (ProcessExtension)ModelHelper.getExtension(process);
-//		long stamp = processExtension.getModificationStamp();
-//   		// Be nice if the file is old or doesn't yet have a stamp.
-//   		if (stamp != 0) {
-//   		    long actualStamp = file.getLocalTimeStamp();
-//   		    if (stamp != actualStamp) {
-//   		        // Inform the user that visual information will be discarded,
-//   		        // and null out the extension map. 
-//   		        // Only inform the user if we actually have a shell; headless clients
-//   		        // will not be informed.
-//   		        if (getSite() != null) {
-//   		            MessageDialog.openWarning(getSite().getShell(), "Process Out Of Sync", "The Process has been modified outside the editor and does not match the layout information stored for it.");
-//   		        }
-//   		        // TODO: Null out and recreate the extension map. Perhaps we need
-//   		        // to preserve some interesting bits of info about spec compliance
-//   		        // and implicit sequences. Don't null it out yet until we understand
-//   		        // all the cases in which this could occur.
-//  		        //extensionMap = null;
-//   		    }
-//   		}
-	    
-	}
+	/*}*/
 	
 	public ICommandFramework getCommandFramework() { return commandFramework; }
 
@@ -1489,7 +1314,7 @@
 		getTrayViewer().setContextMenu(provider);
 		getSite().registerContextMenu("org.eclipse.bpel.editor.tray.contextmenu", //$NON-NLS-1$
 			provider, getSite().getSelectionProvider());
-		getTrayViewer().setContents(process);
+		getTrayViewer().setContents(getProcess());
 
 		// Setup the drop target and add our listener to it.
 		// This will allow us to accept drops from the navigator.
@@ -1517,49 +1342,14 @@
 		getMultiViewerSelectionProvider().addViewer(viewer);		
 	}
 	
-
-	public void modelDeleted(ResourceInfo resourceInfo) {
-		if (!isDirty()) {
-			getSite().getPage().closeEditor(this, false);
-		}
-	}
-	
-	public void modelDirtyStateChanged(ResourceInfo resourceInfo) {
-		firePropertyChange(PROP_DIRTY);
-	}
-	
-	public void modelLocationChanged(ResourceInfo resourceInfo, IFile movedToFile) {
-		// TODO!
-		//updateInputFile(movedToFile.getFullPath());
+	/**
+	 * The editor part name should be the same as the one appearing in the logical view.
+	 */
+	//FIXME should be moved to multi or even removed at all
+	protected void updateTitle() {
+		setPartName(getProcess().getName());
 	}
 
-	public void modelReloaded(ResourceInfo resourceInfo) {
-		Resource bpelResource = editModelClient.getPrimaryResourceInfo().getResource();
-
-		IFile file = getFileInput();
-		BPELReader reader = new BPELReader();
-	    reader.read(bpelResource, file, getResourceSet());
-		 
-	    this.process = reader.getProcess();
-	    if (getEditDomain() != null) {
-	    	((BPELEditDomain)getEditDomain()).setProcess(process);
-	    }
-	    this.extensionMap = reader.getExtensionMap();
-	    
-		this.modelListenerAdapter.setExtensionMap(extensionMap);
-	
-		getGraphicalViewer().setContents(process);
-
-		// The ProcessTrayEditPart tries to remove its selection listener on deactivate.
-		// In this case, it will fail because the edit part can't find the editor because
-		// the process no longer belongs to a resource. Help it out and remove the
-		// listener manually.
-		ProcessTrayEditPart processTrayEditPart = (ProcessTrayEditPart)getTrayViewer().getContents();
-		getGraphicalViewer().removeSelectionChangedListener(processTrayEditPart.getSelectionChangedListener());
-		
-		getTrayViewer().setContents(process);
-	}
-	
 	protected boolean updateInputFile(IPath filePath) {
 		if (filePath == null) {
 			return false;
@@ -1576,13 +1366,6 @@
 		return true;
 	}
 	
-	/**
-	 * The editor part name should be the same as the one appearing in the logical view.
-	 */
-	protected void updateTitle() {
-		setPartName(process.getName());
-	}
-	
 	/** 
 	 * because our extensions are managed independently of the model and stored in a separate map, we have to make sure
 	 * that any extensions that are not used are removed before we serialize
Index: src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java
===================================================================
RCS file: /cvsroot/technology/org.eclipse.bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Attic/BPELMultipageEditorPart.java,v
retrieving revision 1.1.2.2
diff -u -r1.1.2.2 BPELMultipageEditorPart.java
--- src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java	8 Jun 2007 08:58:50 -0000	1.1.2.2
+++ src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java	6 Jul 2007 12:34:56 -0000
@@ -12,17 +12,31 @@
 
 package org.eclipse.bpel.ui;
 
+import org.eclipse.bpel.common.extension.model.ExtensionMap;
+import org.eclipse.bpel.common.ui.editmodel.IEditModelListener;
+import org.eclipse.bpel.common.ui.editmodel.ResourceInfo;
 import org.eclipse.bpel.model.Activity;
 import org.eclipse.bpel.model.CorrelationSet;
 import org.eclipse.bpel.model.ExtensibleElement;
 import org.eclipse.bpel.model.PartnerLink;
+import org.eclipse.bpel.model.Process;
 import org.eclipse.bpel.model.Variable;
+import org.eclipse.bpel.ui.BPELEditor.BPELEditorAdapter;
+import org.eclipse.bpel.ui.editparts.ProcessTrayEditPart;
 import org.eclipse.bpel.ui.editparts.util.OutlineTreePartFactory;
 import org.eclipse.bpel.ui.properties.BPELPropertySection;
 import org.eclipse.bpel.ui.uiextensionmodel.StartNode;
+import org.eclipse.bpel.ui.util.BPELEditModelClient;
+import org.eclipse.bpel.ui.util.BPELReader;
 import org.eclipse.bpel.ui.util.ModelHelper;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.draw2d.IFigure;
@@ -31,13 +45,17 @@
 import org.eclipse.draw2d.parts.ScrollableThumbnail;
 import org.eclipse.draw2d.parts.Thumbnail;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.gef.ContextMenuProvider;
+import org.eclipse.gef.DefaultEditDomain;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPartViewer;
 import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.GraphicalViewer;
 import org.eclipse.gef.LayerConstants;
 import org.eclipse.gef.RootEditPart;
+import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.gef.editparts.ZoomManager;
 import org.eclipse.gef.ui.actions.ActionRegistry;
 import org.eclipse.gef.ui.parts.ContentOutlinePage;
@@ -60,11 +78,14 @@
 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.ui.IActionBars;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.ActionFactory;
@@ -72,8 +93,10 @@
 import org.eclipse.ui.internal.views.properties.tabbed.view.Tab;
 import org.eclipse.ui.internal.views.properties.tabbed.view.TabDescriptor;
 import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyViewer;
+import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.ui.part.IPageSite;
 import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.MultiPageEditorSite;
 import org.eclipse.ui.part.PageBook;
 import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
 import org.eclipse.ui.views.properties.IPropertySheetPage;
@@ -85,7 +108,8 @@
 import org.w3c.dom.Element;
 
 public class BPELMultipageEditorPart extends MultiPageEditorPart 
-										implements IGotoMarker {
+										implements IEditModelListener, 
+										           IGotoMarker {
 
 	class OutlinePage extends ContentOutlinePage {
 		private PageBook pageBook;
@@ -106,7 +130,7 @@
 		}
 
 		private void configureOutlineViewer() {
-			getViewer().setEditDomain(fDesignViewer.getEditDomain());
+			getViewer().setEditDomain(getEditDomain());
 			getViewer().setEditPartFactory(new OutlineTreePartFactory());
 
 			fDesignViewer.registerViewer(getViewer());
@@ -160,8 +184,7 @@
 			// TODO: Add to the adapting selection provider
 			//getSelectionSynchronizer().addViewer(getViewer());
 
-			//FIXME move process to this class
-			getViewer().setContents(fDesignViewer.getProcess());
+			getViewer().setContents(getProcess());
 		}
 
 		private void initializeOverview() {
@@ -212,16 +235,37 @@
 		}
 	}
 
+	private Process process;
+	
+	private DefaultEditDomain editDomain;
+	
+	protected ModelListenerAdapter modelListenerAdapter;
+	
+	private Resource extensionsResource;
+	
+	private ExtensionMap extensionMap;
 	
 	private StructuredTextEditor fTextEditor = null;
 	private BPELEditor fDesignViewer = null;
 	
+	// reacts to changes on the BPEL file (e.g. move, rename)
+	private IFileChangeListener fileChangeListener;
+	
+	// refactoring listeners
+	protected IResourceChangeListener postBuildRefactoringListener;
+
+	
 	private OutlinePage outlinePage;
 	protected BPELTabbedPropertySheetPage currentPropertySheetPage;
 	
 	private static int DESIGN_PAGE_INDEX = 0;
 	private static int SOURCE_PAGE_INDEX = 1;
+
 	
+	public BPELMultipageEditorPart() {
+		super();
+		setEditDomain(new BPELEditDomain(this));
+	}
 	/**
 	 * Adds the source page of the multi-page editor.
 	 */
@@ -290,8 +334,9 @@
 	}
 
 	private void createAndAddDesignPage() {
-		fDesignViewer = new BPELEditor();
-
+		fDesignViewer = new BPELEditor(getEditDomain());
+		loadModel();
+		
 		try
 	    {
 			addPage(DESIGN_PAGE_INDEX, fDesignViewer, getEditorInput());
@@ -319,22 +364,100 @@
 			createAndAddDesignPage();
 			addSourcePage();
 			connectDesignPage();
+			initializeFileChangeListener();
+			initializeRefactoringListener();
 		} catch (PartInitException e) {
 			//Logger.logException(e);
 			throw new RuntimeException(e);
 		} 
+		
+		//updateTitle();
 	}
 
 
 	public void dispose() {
-		if (outlinePage != null && outlinePage.getViewer() != null) {
+		/*if (outlinePage != null && outlinePage.getViewer() != null) {
 			outlinePage.getViewer().setContents(null);
-		}
+		}*/
 		outlinePage = null;
-		fDesignViewer.dispose();
-		fTextEditor.dispose();
+ 		process = null;
+ 		
+		if (fileChangeListener != null) {
+			BPELUIPlugin.getPlugin().getResourceChangeListener().removeListener(fileChangeListener);
+		}
+
+		if (postBuildRefactoringListener != null) {
+			IWorkspace workspace = ResourcesPlugin.getWorkspace();
+			workspace.removeResourceChangeListener(postBuildRefactoringListener);
+		}
+
+		//FIXME should we call them? Looks like no.
+		//fDesignViewer.dispose();
+		//fTextEditor.dispose();
+
+		super.dispose();
+	}
+	
+	public void doRevertToSaved(IProgressMonitor monitor) {
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+//		WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
+//			protected void execute(IProgressMonitor monitor) throws CoreException {
+//				try {
+//					getCommandFramework().abortCurrentChange();
+//					getCommandStack().flush();
+//					
+//					// de-select anything selected on the canvas!  Otherwise removing things
+//					// will trigger a bunch of behaviour when the selected object(s) are
+//					// removed..
+//					adaptingSelectionProvider.setSelection(StructuredSelection.EMPTY);
+//					
+//					process = null;
+//					extensionMap = null;
+//					extensionsResource = null;
+//					lastSelectedEditPart = null;
+//					// unload all resources (otherwise they stay around taking up space..?)
+//					for (Iterator it = getResourceSet().getResources().iterator(); it.hasNext(); ) {
+//						Resource res = (Resource)it.next();
+//						res.unload();
+//					}
+//					loadModel();
+//					getGraphicalViewer().setContents(process);
+//					getTrayViewer().setContents(process);
+//					if (outlinePage != null && outlinePage.getViewer() != null) {
+//                      // hack!
+//						if (Platform.getWS().equals(Platform.WS_GTK)) {
+//							Tree tree = (Tree) outlinePage.getViewer().getControl();
+//							if (tree != null) {
+//								tree.setRedraw(false);
+//								TreeItem[] items = tree.getItems();
+//								for (int i = 0; i < items.length; i++) {
+//									items[i].dispose();
+//								}
+//								tree.setRedraw(true);
+//							}
+//						}
+//						outlinePage.getViewer().setContents(process);
+//					}
+//					selectModelObject(getProcess());
+//				}
+//				catch (Exception e) {
+//					BPELUIPlugin.log(e);
+//				}
+//			}
+//		};
+//
+//		try {
+//			// This runs the options, and shows progress.
+//			// (It appears to be a bad thing to fork this onto another thread.)
+//			new ProgressMonitorDialog(getSite().getShell()).run(false, false, operation);
+//
+//			// Refresh the necessary state.
+//			firePropertyChange(IEditorPart.PROP_DIRTY);
+//		} catch (Exception e) {
+//			BPELUIPlugin.log(e);
+//		}
 	}
-	
+
 	/**
 	 * @see org.eclipse.ui.IEditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
 	 */
@@ -365,6 +488,34 @@
 
 	
 	public Object getAdapter(Class type) {
+		if (type == Process.class) {
+			return process;
+		}
+		
+		if (type == BPELEditModelClient.class) {
+			return process;
+		}
+
+		//FIXME should we kill it?
+		if (type == ModelListenerAdapter.class) {
+			return modelListenerAdapter;
+		}
+
+		//FIXME should we kill it?
+		if (type == Resource.class) {
+			return extensionsResource;
+		}
+
+		//FIXME should we kill it?
+		if (type == ExtensionMap.class) {
+			return extensionMap;
+		}
+
+		//FIXME should we kill it?
+		if (type == CommandStack.class) {
+			return getCommandStack();
+		}
+
 		if (type == IContentOutlinePage.class) {
 			if (outlinePage == null) {
 				outlinePage = new OutlinePage(new TreeViewer());
@@ -382,6 +533,42 @@
 	    return super.getAdapter(type);
 	  }
 
+	public CommandStack getCommandStack() {
+		return getEditDomain().getCommandStack();
+	}
+	
+	/**
+	 * Returns the design viewer
+	 * @return the design viewer
+	 */
+	protected BPELEditor getDesignEditor() {
+		return fDesignViewer;
+	}
+
+	/**
+	 * Returns the edit domain.
+	 * @return the edit domain
+	 */
+	protected DefaultEditDomain getEditDomain() {
+		return editDomain;
+	}
+
+	protected IFile getFileInput() {
+		return ((IFileEditorInput) getEditorInput()).getFile();
+	}
+
+	public Process getProcess() {
+		return process;
+	}
+
+	/**
+	 * Returns the design viewer
+	 * @return the design viewer
+	 */
+	protected StructuredTextEditor getSourceViewer() {
+		return fTextEditor;
+	}
+
 	StructuredTextEditor getTextEditor() {
 		return fTextEditor;
 	}
@@ -539,16 +726,6 @@
 		}
 	}
 	
-	protected void showPropertiesView() {
-		IWorkbench workbench = PlatformUI.getWorkbench();
-		IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
-		try {
-			page.showView(IBPELUIConstants.PROPERTY_VIEW_ID);
-		} catch (PartInitException e) {
-			BPELUIPlugin.log(e);
-		}
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -564,6 +741,84 @@
 		setPartName(input.getName());
 	}
 	
+	protected void initializeFileChangeListener() {
+		fileChangeListener = new IFileChangeListener() {
+			public void deleted(IFile file) {
+				IFile current = ((IFileEditorInput)getEditorInput()).getFile();
+				if (current.equals(file)) {
+					// Close the editor.
+					Display display = getSite().getShell().getDisplay();
+					display.asyncExec(new Runnable() {
+						public void run() {
+							getSite().getPage().closeEditor(BPELMultipageEditorPart.this, false);
+						}
+					});
+				}
+			}
+			public void moved(IFile source, final IFile destination) {
+//				IFile current = ((IFileEditorInput) getEditorInput()).getFile();
+//				if (!current.equals(source)) {
+//					return;
+//				}
+//				// update editors input
+//				final IFileEditorInput input = new FileEditorInput(destination);
+//				Display display = getDetailsEditor().getSite().getShell().getDisplay();
+//				display.syncExec(new Runnable() {
+//					public void run() {
+//						getBPELDetailsEditor().setInput(input);
+//						setInput(input);
+//					}
+//				});
+//				// update resources
+//				IPath path = destination.getFullPath();
+//				URI uri = URI.createPlatformResourceURI(path.toString());
+//				processResource.setURI(uri);
+//				// JM: Comment out. We don't want to re-name the process just because
+//				// the file name has changed
+////				display.syncExec(new Runnable() {
+////					public void run() {
+////						BPELUtil.updateNameAndNamespace(destination, process);
+////					}
+////				});
+//				path = path.removeFileExtension().addFileExtension(IBPELUIConstants.EXTENSION_MODEL_EXTENSIONS);
+//				URI extensionsUri = URI.createPlatformResourceURI(path.toString());
+//				extensionsResource = resourceSet.createResource(extensionsUri);
+//				extensionsResource.setURI(extensionsUri);
+//				try {
+//					// JM: Comment out for now. We should re-test this
+////					processResource.save(Collections.EMPTY_MAP);
+////					destination.refreshLocal(IResource.DEPTH_ZERO, null);
+//				} catch (Exception e) {
+//					BPELUIPlugin.log(e);
+//				}
+			}
+		};
+		BPELUIPlugin.getPlugin().getResourceChangeListener().addListener(fileChangeListener);
+	}
+
+	
+	/**
+	 * Installs the refactoring listener
+	 */
+	protected void initializeRefactoringListener() {
+		final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		postBuildRefactoringListener = new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IFile newFile = ((FileEditorInput)getEditorInput()).getFile();
+				final IResourceDelta bpelFileDelta = event.getDelta().findMember(newFile.getFullPath());
+				// we only care about the change if it is a move or a rename
+				if (bpelFileDelta != null && (bpelFileDelta.getFlags() & IResourceDelta.MOVED_FROM) != 0) {
+					getSite().getShell().getDisplay().syncExec(new Runnable() {
+						public void run() {
+							doRevertToSaved(null);
+						}
+					});
+				}
+			}
+		};
+		workspace.addResourceChangeListener(postBuildRefactoringListener, IResourceChangeEvent.POST_BUILD);
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -572,5 +827,96 @@
 	public boolean isSaveAsAllowed() {
 		return false;
 	}
-}
 
+	private void loadModel() {
+		//FIXME WSDLEditor has gef command stack; in order to have gef command stack we need to add design page first 
+		BPELEditModelClient editModelClient = new BPELEditModelClient(this, ((IFileEditorInput) getEditorInput()).getFile(), this, null);
+		fDesignViewer.setEditModelClient(editModelClient);
+		getEditDomain().setCommandStack(editModelClient.getCommandStack());
+
+		Resource bpelResource = editModelClient.getPrimaryResourceInfo().getResource();
+		IFile file = getFileInput();
+		BPELReader reader = new BPELReader();
+	    reader.read(bpelResource, file, fDesignViewer.getResourceSet());
+	    process = reader.getProcess();
+	    
+	    if (getEditDomain() != null) {
+	    	((BPELEditDomain)getEditDomain()).setProcess(getProcess());
+	    }
+	    extensionsResource = reader.getExtensionsResource();
+	    extensionMap = reader.getExtensionMap();
+
+	    modelListenerAdapter = new ModelListenerAdapter();
+	    modelListenerAdapter.setExtensionMap(extensionMap);
+		
+	}
+
+	public void modelDeleted(ResourceInfo resourceInfo) {
+		if (!isDirty()) {
+			getSite().getPage().closeEditor(this, false);
+		}
+	}
+	
+	public void modelDirtyStateChanged(ResourceInfo resourceInfo) {
+		firePropertyChange(PROP_DIRTY);
+	}
+	
+	public void modelLocationChanged(ResourceInfo resourceInfo, IFile movedToFile) {
+		// TODO!
+		//updateInputFile(movedToFile.getFullPath());
+	}
+
+	public void modelReloaded(ResourceInfo resourceInfo) {
+		Resource bpelResource = fDesignViewer.getEditModelClient().getPrimaryResourceInfo().getResource();
+
+		IFile file = getFileInput();
+		BPELReader reader = new BPELReader();
+	    reader.read(bpelResource, file, fDesignViewer.getResourceSet());
+		 
+	    process = reader.getProcess();
+	    if (getEditDomain() != null) {
+	    	((BPELEditDomain)getEditDomain()).setProcess(getProcess());
+	    }
+	    extensionMap = reader.getExtensionMap();
+	    
+		modelListenerAdapter.setExtensionMap(fDesignViewer.getExtensionMap());
+	
+		fDesignViewer.getGraphicalViewer().setContents(getProcess());
+
+		// The ProcessTrayEditPart tries to remove its selection listener on deactivate.
+		// In this case, it will fail because the edit part can't find the editor because
+		// the process no longer belongs to a resource. Help it out and remove the
+		// listener manually.
+		ProcessTrayEditPart processTrayEditPart = (ProcessTrayEditPart)fDesignViewer.getTrayViewer().getContents();
+		fDesignViewer.getGraphicalViewer().removeSelectionChangedListener(processTrayEditPart.getSelectionChangedListener());
+		
+		fDesignViewer.getTrayViewer().setContents(getProcess());
+	}
+	
+
+	/**
+	 * Sets the EditDomain for this EditorPart.
+	 * @param ed the domain
+	 */
+	protected void setEditDomain(DefaultEditDomain ed) {
+		this.editDomain = ed;
+	}
+
+	protected void showPropertiesView() {
+		IWorkbench workbench = PlatformUI.getWorkbench();
+		IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
+		try {
+			page.showView(IBPELUIConstants.PROPERTY_VIEW_ID);
+		} catch (PartInitException e) {
+			BPELUIPlugin.log(e);
+		}
+	}
+	
+	/**
+	 * The editor part name should be the same as the one appearing in the logical view.
+	 */
+	protected void updateTitle() {
+		setPartName(getProcess().getName());
+	}
+
+}
Index: src/org/eclipse/bpel/ui/actions/RevertAction.java
===================================================================
RCS file: /cvsroot/technology/org.eclipse.bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/actions/RevertAction.java,v
retrieving revision 1.1
diff -u -r1.1 RevertAction.java
--- src/org/eclipse/bpel/ui/actions/RevertAction.java	29 Nov 2005 18:51:00 -0000	1.1
+++ src/org/eclipse/bpel/ui/actions/RevertAction.java	6 Jul 2007 12:34:56 -0000
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.bpel.ui.actions;
 
-import org.eclipse.bpel.ui.BPELEditor;
+import org.eclipse.bpel.ui.BPELMultipageEditorPart;
 import org.eclipse.bpel.ui.Messages;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.gef.ui.actions.EditorPartAction;
@@ -36,7 +36,7 @@
 	}
 	
 	public void run() {
-		((BPELEditor)getEditorPart()).doRevertToSaved(new NullProgressMonitor());
+		((BPELMultipageEditorPart)getEditorPart()).doRevertToSaved(new NullProgressMonitor());
 		getEditorPart().setFocus();
 	}
 }
\ No newline at end of file

Back to the top