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.gui.plugin.console.ConsolePanel;
010    import aterm.ATerm;
011    
012    public class Console extends DefaultStudioPlugin implements ConsoleTif {
013            private static final String TOOL_NAME = "console";
014    
015            private ConsoleBridge bridge;
016    
017            private ConsolePanel panel;
018    
019            public Console() {
020            }
021    
022            public void initStudioPlugin(Studio studio) {
023                    panel = new ConsolePanel();
024    
025                    bridge = new ConsoleBridge(studio.getATermFactory(), this);
026                    bridge.setLockObject(this);
027    
028                    StudioComponent comp = new StudioComponentImpl("Console", panel) {
029                            public void requestClose() throws CloseAbortedException {
030                                    throw new CloseAbortedException();
031                            }
032                    };
033                    studio.connect(getName(), bridge);
034                    ((StudioWithPredefinedLayout) studio).addComponent(comp,
035                                    StudioImplWithPredefinedLayout.BOTTOM_RIGHT);
036            }
037    
038            public void addMessage(String message) {
039                    panel.addMessage(message);
040            }
041    
042            public String getName() {
043                    return TOOL_NAME;
044            }
045    
046            public void recTerminate(ATerm t0) {
047                    fireStudioPluginClosed();
048            }
049    }