Fix2 for Bug 465654
Change-Id: I95415c5ca798f3baf803cf542b9e7454fe4d4071
Signed-off-by: Sounak Basu <sounak.basu@sap.com>
diff --git a/org.eclipse.ogee.core/META-INF/MANIFEST.MF b/org.eclipse.ogee.core/META-INF/MANIFEST.MF
index 6a218cd..53961cd 100644
--- a/org.eclipse.ogee.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.ogee.core/META-INF/MANIFEST.MF
@@ -22,7 +22,8 @@
org.eclipse.ogee.exploration.tree,
org.eclipse.ogee.client,
org.eclipse.emf.transaction,
- org.eclipse.emf.ecore.xmi
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.graphiti.ui
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.ogee.core,
diff --git a/org.eclipse.ogee.core/src/org/eclipse/ogee/core/UninstallAction.java b/org.eclipse.ogee.core/src/org/eclipse/ogee/core/UninstallAction.java
index 739c7be..32a3958 100644
--- a/org.eclipse.ogee.core/src/org/eclipse/ogee/core/UninstallAction.java
+++ b/org.eclipse.ogee.core/src/org/eclipse/ogee/core/UninstallAction.java
@@ -14,19 +14,31 @@
import java.util.Map;
import org.eclipse.core.internal.registry.ExtensionRegistry;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
+import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
import org.eclipse.ogee.core.nls.messages.FrameworkMessages;
+import org.eclipse.ogee.designer.ODataEditorInput;
import org.eclipse.ogee.utils.logger.Logger;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+@SuppressWarnings("restriction")
public class UninstallAction extends ProvisioningAction
{
private static Logger logger = Logger.getUtilsLogger();
@@ -48,6 +60,14 @@
public void run()
{
logger.log("Closing OData Perspective"); //$NON-NLS-1$
+ try
+ {
+ closeODataEditors();
+ }
+ catch (PartInitException e)
+ {
+ logger.logError(e);
+ }
closeODataPerspective();
}
});
@@ -67,6 +87,58 @@
return Status.OK_STATUS;
}
+ protected void closeODataEditors() throws PartInitException
+ {
+ boolean odataEditor = false;
+ IWorkbenchWindow w = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (w != null)
+ {
+ IWorkbenchPage[] pages = w.getPages();
+ for (IWorkbenchPage page : pages)
+ {
+ IEditorReference[] editorReferences = page.getEditorReferences();
+ for (IEditorReference editorReference : editorReferences)
+ {
+ IEditorInput editorInput = editorReference.getEditorInput();
+ if (editorInput instanceof ODataEditorInput)
+ {
+ final URI uri = ((ODataEditorInput) editorInput).getUri();
+ final String uriString = uri.trimFragment().toPlatformString(true);
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uriString));
+ if (file.getFileExtension().equals("odata"))
+ {
+ odataEditor = true;
+ }
+ }
+ else if (editorInput instanceof IFileEditorInput)
+ {
+ IFile file = ((IFileEditorInput) editorInput).getFile();
+ if (file.getFileExtension().equals("odata"))
+ {
+ odataEditor = true;
+ }
+ }
+ else if (editorInput instanceof DiagramEditorInput)
+ {
+ final URI uri = ((DiagramEditorInput) editorInput).getUri();
+ final String uriString = uri.trimFragment().toPlatformString(true);
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uriString));
+ if (file.getFileExtension().equals("odata"))
+ {
+ odataEditor = true;
+ }
+ }
+ if (odataEditor)
+ {
+ IEditorPart editorPart = page.findEditor(editorInput);
+ page.closeEditor(editorPart, true);
+ }
+ }
+ }
+ }
+
+ }
+
@Override
public IStatus undo(Map<String, Object> parameters)
{