1   package debugger.gui.debugging.debugviews;
2   
3   import debugger.resources.ResourcesFactory;
4   import debugger.resources.pr.RuleModel;
5   
6   import javax.swing.event.TableModelListener;
7   import javax.swing.table.TableModel;
8   import java.util.ArrayList;
9   
10  //TODO: move this functionality to actions
11  
12  /**
13   * Copyright (c) Ontos AG (http://www.ontosearch.com).
14   * This class is part of JAPE Debugger component for
15   * GATE (Copyright (c) "The University of Sheffield" see http://gate.ac.uk/) <br>
16   * @author Andrey Shafirin, Oleg Mishenko, Vladimir Karasev
17   */
18  
19  public class LHSModel implements TableModel {
20  
21      public int getRowCount() {
22          if (getMatchedRuleTable(ResourcesFactory.getCurrentRuleModel()) == null) return 0;
23          return getMatchedRuleTable(ResourcesFactory.getCurrentRuleModel()).size();
24      }
25  
26      public int getColumnCount() {
27          return 2;
28      }
29  
30      public String getColumnName(int columnIndex) {
31          if (columnIndex == 0) return "Rule LHS";
32          if (columnIndex == 1) return "Matching";
33          return null;
34      }
35  
36      public Class getColumnClass(int columnIndex) {
37          return String.class;
38      }
39  
40      public boolean isCellEditable(int rowIndex, int columnIndex) {
41          return false;
42      }
43  
44      public Object getValueAt(int rowIndex, int columnIndex) {
45          Object result = null;
46          if (columnIndex == 0) result = getMatchedRuleTable(ResourcesFactory.getCurrentRuleModel()).get(rowIndex);
47          if (columnIndex == 1) result = getMatchedText(ResourcesFactory.getCurrentRuleModel()).get(rowIndex);
48          return result;
49      }
50  
51      public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
52      }
53  
54      public void addTableModelListener(TableModelListener l) {
55      }
56  
57      public void removeTableModelListener(TableModelListener l) {
58      }
59  
60      private ArrayList getMatchedRuleTable(RuleModel ruleModel) {
61          if (ruleModel == null) return null;
62          ArrayList al = ruleModel.getMatshedRuleTable();
63          for (int i = 0; i < al.size(); i++) {
64              String s = (String) al.get(i);
65              if (s.endsWith("*")) {
66                  al.remove(i);
67                  s = s.substring(0, s.indexOf("*"));
68                  al.add(i, s);
69              }
70          }
71          return al;
72      }
73  
74      private ArrayList getMatchedText(RuleModel ruleModel) {
75          if (ruleModel == null) return null;
76          return ruleModel.getMatchedText();
77      }
78  }
79