Skip to main content
summaryrefslogtreecommitdiffstats
blob: 7e3482a80e26be681fed821b6942697e380b75d0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package org.eclipse.jpt.jpadiagrameditor.ui.internal.util;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditorPlugin;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.util.ModelIntegrationUtil;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;

public class ResourceChangeListener implements IResourceChangeListener {

	public void resourceChanged(IResourceChangeEvent event) {
		IMarkerDelta[] markerDeltas = event.findMarkerDeltas(null, true);

		for (IMarkerDelta delta : markerDeltas) {
			if (delta.getResource().getType() != IResource.FILE)
				continue;
			if (delta.getKind() != IResourceDelta.REMOVED) 
				continue;
			final IFile file = (IFile) delta.getResource();
			if (file.exists())
				continue;
			final IProject project = file.getProject();
			final String name = project.getName();
			if (file.getFullPath().equals(ModelIntegrationUtil.getDiagramXMLFullPath(name))) {
				PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
					public void run() {
						IWorkbenchPage workbenchPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
						IEditorReference[] editorRefs = workbenchPage.getEditorReferences();
						for (IEditorReference editorRef : editorRefs) {
							if(!JPADiagramEditorPlugin.PLUGIN_ID.equals(editorRef.getId())) 
								continue;
							if (name.equals(editorRef.getName())) 
								continue;							
							IEditorPart editor = editorRef.getEditor(false);
							if (editor == null)
								continue;
							workbenchPage.closeEditor(editor, false);
							break;
						}
					}
				});
				
			}
		}		
	}
		
}

Back to the top