001    // Java tool interface class ErrorViewerTool
002    // This file is generated automatically, please do not edit!
003    // generation time: Jan 30, 2007 7:11:53 AM
004    
005    package nl.cwi.sen1.error.viewer;
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 ErrorViewerTool
019      extends SwingTool
020      implements ErrorViewerTif
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 PshowFeedbackSummary0;
027      private ATerm PrefreshFeedbackSummary0;
028      private ATerm PremoveFeedbackSummary0;
029      private ATerm PremoveFeedbackSummary1;
030      private ATerm PrecAckEvent0;
031      private ATerm PrecTerminate0;
032    
033      // Mimic the constructor from the AbstractTool class
034      protected ErrorViewerTool(ATermFactory factory)
035      {
036        super(factory);
037        initSigTable();
038        initPatterns();
039      }
040    
041      // This method initializes the table with input signatures
042      private void initSigTable()
043      {
044        sigTable.add(factory.parse("rec-do(<error-viewer>,show-feedback-summary(<str>,<term>))"));
045        sigTable.add(factory.parse("rec-do(<error-viewer>,remove-feedback-summary(<str>,<str>,<str>))"));
046        sigTable.add(factory.parse("rec-do(<error-viewer>,remove-feedback-summary(<str>,<str>))"));
047        sigTable.add(factory.parse("rec-do(<error-viewer>,refresh-feedback-summary(<str>,<term>))"));
048        sigTable.add(factory.parse("rec-ack-event(<error-viewer>,<term>)"));
049        sigTable.add(factory.parse("rec-terminate(<error-viewer>,<term>)"));
050      }
051    
052      // Initialize the patterns that are used to match against incoming terms
053      private void initPatterns()
054      {
055        PshowFeedbackSummary0 = factory.parse("rec-do(show-feedback-summary(<str>,<term>))");
056        PrefreshFeedbackSummary0 = factory.parse("rec-do(refresh-feedback-summary(<str>,<term>))");
057        PremoveFeedbackSummary0 = factory.parse("rec-do(remove-feedback-summary(<str>,<str>))");
058        PremoveFeedbackSummary1 = factory.parse("rec-do(remove-feedback-summary(<str>,<str>,<str>))");
059        PrecAckEvent0 = factory.parse("rec-ack-event(<term>)");
060        PrecTerminate0 = factory.parse("rec-terminate(<term>)");
061      }
062    
063      // The generic handler calls the specific handlers
064      public ATerm handler(ATerm term)
065      {
066        List<?> result;
067    
068        result = term.match(PshowFeedbackSummary0);
069        if (result != null) {
070          showFeedbackSummary((String)result.get(0), (ATerm)result.get(1));
071          return null;
072        }
073        result = term.match(PrefreshFeedbackSummary0);
074        if (result != null) {
075          refreshFeedbackSummary((String)result.get(0), (ATerm)result.get(1));
076          return null;
077        }
078        result = term.match(PremoveFeedbackSummary0);
079        if (result != null) {
080          removeFeedbackSummary((String)result.get(0), (String)result.get(1));
081          return null;
082        }
083        result = term.match(PremoveFeedbackSummary1);
084        if (result != null) {
085          removeFeedbackSummary((String)result.get(0), (String)result.get(1), (String)result.get(2));
086          return null;
087        }
088        result = term.match(PrecAckEvent0);
089        if (result != null) {
090          recAckEvent((ATerm)result.get(0));
091          return null;
092        }
093        result = term.match(PrecTerminate0);
094        if (result != null) {
095          recTerminate((ATerm)result.get(0));
096          return null;
097        }
098    
099        notInInputSignature(term);
100        return null;
101      }
102    
103      // Check the input signature
104      public void checkInputSignature(ATermList sigs)
105      {
106        while(!sigs.isEmpty()) {
107          ATermAppl sig = (ATermAppl)sigs.getFirst();
108          sigs = sigs.getNext();
109          if (!sigTable.contains(sig)) {
110            // Sorry, but the term is not in the input signature!
111            notInInputSignature(sig);
112          }
113        }
114      }
115    
116      // This function is called when an input term
117      // was not in the input signature.
118      void notInInputSignature(ATerm t)
119      {
120        throw new RuntimeException("term not in input signature: " + t);
121      }
122    }