X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Feditor2%2FStandardSCLModuleEditorInput.java;fp=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Feditor2%2FStandardSCLModuleEditorInput.java;h=c55fe97f1a417345e1b045fd6e022da4c8e60d83;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/StandardSCLModuleEditorInput.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/StandardSCLModuleEditorInput.java new file mode 100644 index 000000000..c55fe97f1 --- /dev/null +++ b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/StandardSCLModuleEditorInput.java @@ -0,0 +1,89 @@ +package org.simantics.scl.ui.editor2; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IPersistableElement; +import org.simantics.scl.compiler.source.ModuleSource; +import org.simantics.scl.osgi.SCLOsgi; + +public class StandardSCLModuleEditorInput implements SCLModuleEditorInput, IPersistableElement { + + private final String moduleName; + + public StandardSCLModuleEditorInput(String moduleName) { + this.moduleName = moduleName; + } + + @Override + public boolean exists() { + return SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null) != null; + } + + @Override + public ImageDescriptor getImageDescriptor() { + return null; + } + + @Override + public String getModuleName() { + return moduleName; + } + + @Override + public String getName() { + int p = moduleName.lastIndexOf('/'); + if(p >= 0) + return moduleName.substring(p+1); + else + return moduleName; + } + + @Override + public IPersistableElement getPersistable() { + return this; + } + + @Override + public String getToolTipText() { + return moduleName; + } + + @SuppressWarnings("unchecked") + @Override + public T getAdapter(Class adapter) { + if(adapter.equals(ModuleSource.class)) + return (T)SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null); + if(adapter.equals(IPersistableElement.class)) + return (T)this; + return null; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((moduleName == null) ? 0 : moduleName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + StandardSCLModuleEditorInput other = (StandardSCLModuleEditorInput) obj; + return moduleName.equals(other.moduleName); + } + + @Override + public void saveState(IMemento memento) { + memento.putTextData(moduleName); + } + + @Override + public String getFactoryId() { + return "org.simantics.scl.ui.editor.inputFactory"; + } + +}