@Override
 public boolean select(Viewer viewer, Object parentElement, Object element) {
   IGeneratingFunction f = (IGeneratingFunction) element;
   String actionLabel = graph.getSymbolGenerator().getActionLabel(f.getActionId());
   boolean result = actionLabel.contains(searchText.getText());
   return result;
 }
 private static int getLargestActionType(GC gc, IParametricDerivationGraph graph) {
   int max = gc.textExtent("tauw").x; // tau action
   for (IGeneratingFunction f : graph.getGeneratingFunctions())
     max =
         Math.max(
             max,
             gc.textExtent(graph.getSymbolGenerator().getActionLabel(f.getActionId()) + "w").x);
   return max;
 }
 public String getColumnText(Object element, int columnIndex) {
   IGeneratingFunction f = (IGeneratingFunction) element;
   if (columnIndex == 0) return graph.getSymbolGenerator().getActionLabel(f.getActionId());
   if (columnIndex >= 1 && columnIndex <= graph.getInitialState().length) {
     short jump = f.getJump()[columnIndex - 1];
     if (jump == 1) return "+1";
     else if (jump == -1) return "-1";
     else return "0";
   }
   if (columnIndex == graph.getInitialState().length + 1) {
     ExpressionPrinter p = new ExpressionPrinter();
     try {
       f.getRate().accept(p);
     } catch (DifferentialAnalysisException e) {
       return "N/A";
     }
     return p.result;
   }
   return null;
 }