]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/StandardSCLModuleEditorInput.java
Preventing unnecessary ModuleSource compilation in SCL-editor
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / editor2 / StandardSCLModuleEditorInput.java
1 package org.simantics.scl.ui.editor2;
2
3 import org.eclipse.jface.resource.ImageDescriptor;
4 import org.eclipse.ui.IMemento;
5 import org.eclipse.ui.IPersistableElement;
6 import org.simantics.scl.compiler.source.ModuleSource;
7 import org.simantics.scl.osgi.SCLOsgi;
8
9 public class StandardSCLModuleEditorInput implements SCLModuleEditorInput, IPersistableElement {
10
11     private final String moduleName;
12     
13     public StandardSCLModuleEditorInput(String moduleName) {
14         this.moduleName = moduleName;
15     }
16
17     @Override
18     public boolean exists() {
19         return SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null) != null;
20     }
21
22     @Override
23     public ImageDescriptor getImageDescriptor() {
24         return null;
25     }
26     
27     @Override
28     public String getModuleName() {
29         return moduleName;
30     }
31
32     @Override
33     public String getName() {
34         int p = moduleName.lastIndexOf('/');
35         if(p >= 0)
36             return moduleName.substring(p+1);
37         else
38             return moduleName;
39     }
40
41     @Override
42     public IPersistableElement getPersistable() {
43         return this;
44     }
45
46     @Override
47     public String getToolTipText() {
48         return moduleName;
49     }
50
51     @SuppressWarnings("unchecked")
52     @Override
53     public <T> T getAdapter(Class<T> adapter) {
54         if(adapter.equals(ModuleSource.class))
55             return (T)SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null);
56         if(adapter.equals(IPersistableElement.class))
57             return (T)this;
58         return null;
59     }
60
61     @Override
62     public int hashCode() {
63         final int prime = 31;
64         int result = 1;
65         result = prime * result + ((moduleName == null) ? 0 : moduleName.hashCode());
66         return result;
67     }
68
69     @Override
70     public boolean equals(Object obj) {
71         if (this == obj)
72             return true;
73         if (obj == null || getClass() != obj.getClass())
74             return false;
75         StandardSCLModuleEditorInput other = (StandardSCLModuleEditorInput) obj;
76         return moduleName.equals(other.moduleName);
77     }
78
79     @Override
80     public void saveState(IMemento memento) {
81         memento.putTextData(moduleName);
82     }
83
84     @Override
85     public String getFactoryId() {
86         return "org.simantics.scl.ui.editor.inputFactory";
87     }
88
89 }