001    // Java tool interface class GuiTool
002    // This file is generated automatically, please do not edit!
003    // generation time: Mar 14, 2007 10:20:35 AM
004    
005    package nl.cwi.sen1.gui;
006    
007    import java.util.HashSet;
008    import java.util.List;
009    import java.util.Set;
010    
011    import toolbus.SwingTool;
012    
013    import aterm.ATerm;
014    import aterm.ATermAppl;
015    import aterm.ATermFactory;
016    import aterm.ATermList;
017    
018    abstract public class GuiTool
019      extends SwingTool
020      implements GuiTif
021    {
022      // This table will hold the complete input signature
023      private Set<ATerm> sigTable = new HashSet<ATerm>();
024    
025      // Patterns that are used to match against incoming terms
026      private ATerm PloadJarUrls0;
027      private ATerm PloadJar0;
028      private ATerm PaddMenuEvents0;
029      private ATerm PloadJarClasspath0;
030      private ATerm PjobDone0;
031      private ATerm PaddJob0;
032      private ATerm PsetStatus0;
033      private ATerm PsetTitle0;
034      private ATerm PrecAckEvent0;
035      private ATerm PrecTerminate0;
036    
037      // Mimic the constructor from the AbstractTool class
038      protected GuiTool(ATermFactory factory)
039      {
040        super(factory);
041        initSigTable();
042        initPatterns();
043      }
044    
045      // This method initializes the table with input signatures
046      private void initSigTable()
047      {
048        sigTable.add(factory.parse("rec-do(<gui>,set-title(<str>))"));
049        sigTable.add(factory.parse("rec-do(<gui>,load-jar(<str>))"));
050        sigTable.add(factory.parse("rec-do(<gui>,load-jar-classpath(<str>,<str>))"));
051        sigTable.add(factory.parse("rec-do(<gui>,load-jar-urls(<str>,<list>))"));
052        sigTable.add(factory.parse("rec-do(<gui>,set-status(<str>))"));
053        sigTable.add(factory.parse("rec-do(<gui>,add-job(<str>))"));
054        sigTable.add(factory.parse("rec-do(<gui>,job-done(<str>))"));
055        sigTable.add(factory.parse("rec-do(<gui>,add-menu-events(<list>))"));
056        sigTable.add(factory.parse("rec-ack-event(<gui>,<term>)"));
057        sigTable.add(factory.parse("rec-terminate(<gui>,<term>)"));
058      }
059    
060      // Initialize the patterns that are used to match against incoming terms
061      private void initPatterns()
062      {
063        PloadJarUrls0 = factory.parse("rec-do(load-jar-urls(<str>,<term>))");
064        PloadJar0 = factory.parse("rec-do(load-jar(<str>))");
065        PaddMenuEvents0 = factory.parse("rec-do(add-menu-events(<term>))");
066        PloadJarClasspath0 = factory.parse("rec-do(load-jar-classpath(<str>,<str>))");
067        PjobDone0 = factory.parse("rec-do(job-done(<str>))");
068        PaddJob0 = factory.parse("rec-do(add-job(<str>))");
069        PsetStatus0 = factory.parse("rec-do(set-status(<str>))");
070        PsetTitle0 = factory.parse("rec-do(set-title(<str>))");
071        PrecAckEvent0 = factory.parse("rec-ack-event(<term>)");
072        PrecTerminate0 = factory.parse("rec-terminate(<term>)");
073      }
074    
075      // The generic handler calls the specific handlers
076      public ATerm handler(ATerm term)
077      {
078        List<?> result;
079    
080        result = term.match(PloadJarUrls0);
081        if (result != null) {
082          loadJarUrls((String)result.get(0), (ATerm)result.get(1));
083          return null;
084        }
085        result = term.match(PloadJar0);
086        if (result != null) {
087          loadJar((String)result.get(0));
088          return null;
089        }
090        result = term.match(PaddMenuEvents0);
091        if (result != null) {
092          addMenuEvents((ATerm)result.get(0));
093          return null;
094        }
095        result = term.match(PloadJarClasspath0);
096        if (result != null) {
097          loadJarClasspath((String)result.get(0), (String)result.get(1));
098          return null;
099        }
100        result = term.match(PjobDone0);
101        if (result != null) {
102          jobDone((String)result.get(0));
103          return null;
104        }
105        result = term.match(PaddJob0);
106        if (result != null) {
107          addJob((String)result.get(0));
108          return null;
109        }
110        result = term.match(PsetStatus0);
111        if (result != null) {
112          setStatus((String)result.get(0));
113          return null;
114        }
115        result = term.match(PsetTitle0);
116        if (result != null) {
117          setTitle((String)result.get(0));
118          return null;
119        }
120        result = term.match(PrecAckEvent0);
121        if (result != null) {
122          recAckEvent((ATerm)result.get(0));
123          return null;
124        }
125        result = term.match(PrecTerminate0);
126        if (result != null) {
127          recTerminate((ATerm)result.get(0));
128          return null;
129        }
130    
131        notInInputSignature(term);
132        return null;
133      }
134    
135      // Check the input signature
136      public void checkInputSignature(ATermList sigs)
137      {
138        while(!sigs.isEmpty()) {
139          ATermAppl sig = (ATermAppl)sigs.getFirst();
140          sigs = sigs.getNext();
141          if (!sigTable.contains(sig)) {
142            // Sorry, but the term is not in the input signature!
143            notInInputSignature(sig);
144          }
145        }
146      }
147    
148      // This function is called when an input term
149      // was not in the input signature.
150      void notInInputSignature(ATerm t)
151      {
152        throw new RuntimeException("term not in input signature: " + t);
153      }
154    }