001 package nl.cwi.sen1.gui.plugin;
002
003 import nl.cwi.sen1.gui.CloseAbortedException;
004 import nl.cwi.sen1.gui.Studio;
005 import nl.cwi.sen1.gui.StudioImplWithPredefinedLayout;
006 import nl.cwi.sen1.gui.StudioWithPredefinedLayout;
007 import nl.cwi.sen1.gui.component.StudioComponent;
008 import nl.cwi.sen1.gui.component.StudioComponentImpl;
009 import nl.cwi.sen1.moduleapi.Factory;
010 import nl.cwi.sen1.moduleapi.types.Attribute;
011 import nl.cwi.sen1.moduleapi.types.AttributeStore;
012 import nl.cwi.sen1.moduleapi.types.TableEntry;
013 import nl.cwi.sen1.moduleapi.types.TableEntryTable;
014 import aterm.ATerm;
015 import aterm.pure.PureFactory;
016
017 public class Moduledetails extends DefaultStudioPlugin implements ModuledetailsTif {
018 private static final String TOOL_NAME = "moduledetails";
019
020 private ModuledetailsBridge bridge;
021
022 private Factory factory;
023
024 private ModuledetailsPanel panel;
025
026 public String getName() {
027 return TOOL_NAME;
028 }
029
030 public Moduledetails() {
031 }
032
033 public void initStudioPlugin(Studio studio) {
034 factory = Factory.getInstance((PureFactory) studio
035 .getATermFactory());
036
037 panel = new ModuledetailsPanel();
038
039 bridge = new ModuledetailsBridge(studio.getATermFactory(), this);
040 bridge.setLockObject(this);
041
042 StudioComponent comp = new StudioComponentImpl("Moduledetails", panel) {
043 public void requestClose() throws CloseAbortedException {
044 throw new CloseAbortedException();
045 }
046 };
047 studio.connect(getName(), bridge);
048 ((StudioWithPredefinedLayout) studio).addComponent(comp,
049 StudioImplWithPredefinedLayout.BOTTOM_LEFT);
050 }
051
052 public void recTerminate(ATerm t0) {
053 fireStudioPluginClosed();
054 }
055
056 public void setDetails(ATerm details) {
057 AttributeStore store = factory.AttributeStoreFromTerm(details);
058
059 while (!store.isEmpty()) {
060 Attribute attribute = (Attribute) store.getFirst();
061
062 ATerm namespace = attribute.getNamespace();
063 TableEntryTable table = attribute.getTable();
064
065 while (!table.isEmpty()) {
066 TableEntry entry = (TableEntry) table.getFirst();
067
068 ATerm key = entry.getKey();
069 ATerm value = entry.getValue();
070 panel.setDetails(namespace.toString(), key.toString(), value.toString());
071
072 table = (TableEntryTable) table.getNext();
073 }
074
075 store = (AttributeStore) store.getNext();
076 }
077 }
078 }