]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graphfile/src/org/simantics/graphfile/hack/GraphFileEditorInput.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graphfile / src / org / simantics / graphfile / hack / GraphFileEditorInput.java
diff --git a/bundles/org.simantics.graphfile/src/org/simantics/graphfile/hack/GraphFileEditorInput.java b/bundles/org.simantics.graphfile/src/org/simantics/graphfile/hack/GraphFileEditorInput.java
new file mode 100644 (file)
index 0000000..2673f3a
--- /dev/null
@@ -0,0 +1,209 @@
+/*******************************************************************************\r
+ * Copyright (c) 2013 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.graphfile.hack;\r
+\r
+import java.net.URI;\r
+\r
+import org.eclipse.core.resources.IFile;\r
+import org.eclipse.core.resources.IStorage;\r
+import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.PlatformObject;\r
+import org.eclipse.core.runtime.content.IContentType;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.ui.IFileEditorInput;\r
+import org.eclipse.ui.IMemento;\r
+import org.eclipse.ui.IPathEditorInput;\r
+import org.eclipse.ui.IPersistableElement;\r
+import org.eclipse.ui.IURIEditorInput;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.ide.IDE;\r
+import org.eclipse.ui.model.IWorkbenchAdapter;\r
+\r
+\r
+/**\r
+ * Editor input for files stored in the graph.\r
+ * \r
+ * Note: this class is required, since FileEditorInput is not able to load/save GraphFile references.\r
+ * Contents of this class are mostly copy-pasted from FileEditorInput.\r
+ * \r
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
+ *\r
+ */\r
+public class GraphFileEditorInput  extends PlatformObject implements IFileEditorInput, IPathEditorInput, IURIEditorInput,\r
+ IPersistableElement {\r
+private GraphFile file;\r
+       \r
+\r
+       /**\r
+        * Creates an editor input based of the given file resource.\r
+        *\r
+        * @param file the file resource\r
+        */\r
+       public GraphFileEditorInput(GraphFile file) {\r
+               if (file == null)\r
+                       throw new IllegalArgumentException();\r
+               this.file = file;\r
+       \r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on Object.\r
+        */\r
+       public int hashCode() {\r
+               return file.hashCode();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on Object.\r
+        *\r
+        * The <code>FileEditorInput</code> implementation of this <code>Object</code>\r
+        * method bases the equality of two <code>FileEditorInput</code> objects on the\r
+        * equality of their underlying <code>IFile</code> resources.\r
+        */\r
+       public boolean equals(Object obj) {\r
+               if (this == obj) {\r
+                       return true;\r
+               }\r
+               if (!(obj instanceof IFileEditorInput)) {\r
+                       return false;\r
+               }\r
+               IFileEditorInput other = (IFileEditorInput) obj;\r
+               return file.equals(other.getFile());\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IEditorInput.\r
+        */\r
+       public boolean exists() {\r
+               return file.exists();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IPersistableElement.\r
+        */\r
+       public String getFactoryId() {\r
+               return GraphFileEditorInputFactory.getFactoryId();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IFileEditorInput.\r
+        */\r
+       public IFile getFile() {\r
+               return file;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IEditorInput.\r
+        */\r
+       public ImageDescriptor getImageDescriptor() {\r
+               IContentType contentType = IDE.getContentType(file);\r
+               return PlatformUI.getWorkbench().getEditorRegistry()\r
+                               .getImageDescriptor(file.getName(), contentType);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IEditorInput.\r
+        */\r
+       public String getName() {\r
+               return file.getName();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IEditorInput.\r
+        */\r
+       public IPersistableElement getPersistable() {\r
+               return this;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IStorageEditorInput.\r
+        */\r
+       public IStorage getStorage() {\r
+               return file;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IEditorInput.\r
+        */\r
+       public String getToolTipText() {\r
+               return file.getFullPath().makeRelative().toString();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * Method declared on IPersistableElement.\r
+        */\r
+       public void saveState(IMemento memento) {\r
+               GraphFileEditorInputFactory.saveState(memento, this);\r
+       }\r
+\r
+       \r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IURIEditorInput#getURI()\r
+        */\r
+       public URI getURI() {\r
+               return file.getLocationURI();\r
+       }\r
+       \r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IPathEditorInput#getPath()\r
+        */\r
+       public IPath getPath() {\r
+               IPath location = file.getLocation();\r
+               if (location != null)\r
+                       return location;\r
+\r
+               throw new IllegalArgumentException();\r
+       }\r
+\r
+\r
+       /* (non-Javadoc)\r
+        * @see java.lang.Object#toString()\r
+        */\r
+       public String toString() {\r
+               return getClass().getName() + "(" + getFile().getFullPath() + ")"; //$NON-NLS-1$ //$NON-NLS-2$\r
+       }\r
+       \r
+       /*\r
+        * Allows for the return of an {@link IWorkbenchAdapter} adapter.\r
+        * \r
+        * @since 3.5\r
+        * \r
+        * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)\r
+        */\r
+       @SuppressWarnings("rawtypes")\r
+       public Object getAdapter(Class adapter) {\r
+               if (IWorkbenchAdapter.class.equals(adapter)) {\r
+                       return new IWorkbenchAdapter() {\r
+\r
+                               public Object[] getChildren(Object o) {\r
+                                       return new Object[0];\r
+                               }\r
+\r
+                               public ImageDescriptor getImageDescriptor(Object object) {\r
+                                       return GraphFileEditorInput.this.getImageDescriptor();\r
+                               }\r
+\r
+                               public String getLabel(Object o) {\r
+                                       return GraphFileEditorInput.this.getName();\r
+                               }\r
+\r
+                               public Object getParent(Object o) {\r
+                                       return GraphFileEditorInput.this.getFile().getParent();\r
+                               }\r
+                       };\r
+               }\r
+\r
+               return super.getAdapter(adapter);\r
+       }\r
+}\r