+package org.simantics.scl.ui.editor2;\r
+\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.ui.IMemento;\r
+import org.eclipse.ui.IPersistableElement;\r
+import org.simantics.scl.compiler.source.ModuleSource;\r
+import org.simantics.scl.osgi.SCLOsgi;\r
+\r
+public class StandardSCLModuleEditorInput implements SCLModuleEditorInput, IPersistableElement {\r
+\r
+ private final String moduleName;\r
+ \r
+ public StandardSCLModuleEditorInput(String moduleName) {\r
+ this.moduleName = moduleName;\r
+ }\r
+\r
+ @Override\r
+ public boolean exists() {\r
+ return SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null) != null;\r
+ }\r
+\r
+ @Override\r
+ public ImageDescriptor getImageDescriptor() {\r
+ return null;\r
+ }\r
+ \r
+ @Override\r
+ public String getModuleName() {\r
+ return moduleName;\r
+ }\r
+\r
+ @Override\r
+ public String getName() {\r
+ int p = moduleName.lastIndexOf('/');\r
+ if(p >= 0)\r
+ return moduleName.substring(p+1);\r
+ else\r
+ return moduleName;\r
+ }\r
+\r
+ @Override\r
+ public IPersistableElement getPersistable() {\r
+ return this;\r
+ }\r
+\r
+ @Override\r
+ public String getToolTipText() {\r
+ return moduleName;\r
+ }\r
+\r
+ @SuppressWarnings("unchecked")\r
+ @Override\r
+ public <T> T getAdapter(Class<T> adapter) {\r
+ if(adapter.equals(ModuleSource.class))\r
+ return (T)SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null);\r
+ if(adapter.equals(IPersistableElement.class))\r
+ return (T)this;\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ result = prime * result + ((moduleName == null) ? 0 : moduleName.hashCode());\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (this == obj)\r
+ return true;\r
+ if (obj == null || getClass() != obj.getClass())\r
+ return false;\r
+ StandardSCLModuleEditorInput other = (StandardSCLModuleEditorInput) obj;\r
+ return moduleName.equals(other.moduleName);\r
+ }\r
+\r
+ @Override\r
+ public void saveState(IMemento memento) {\r
+ memento.putTextData(moduleName);\r
+ }\r
+\r
+ @Override\r
+ public String getFactoryId() {\r
+ return "org.simantics.scl.ui.editor.inputFactory";\r
+ }\r
+\r
+}\r