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;
}
}
});
}
}
}
}
|