1   package debugger.gui.resources;
2   
3   import gate.*;
4   import gate.jape.SinglePhaseTransducer;
5   
6   import javax.swing.tree.DefaultMutableTreeNode;
7   import javax.swing.tree.DefaultTreeModel;
8   import javax.swing.tree.TreeNode;
9   import java.util.*;
10  
11  import debugger.resources.pr.PrModel;
12  import debugger.resources.lr.LrModel;
13  
14  /**
15   * Copyright (c) Ontos AG (http://www.ontosearch.com).
16   * This class is part of JAPE Debugger component for
17   * GATE (Copyright (c) "The University of Sheffield" see http://gate.ac.uk/) <br>
18   * @author Andrey Shafirin
19   */
20  public class ResourceTreeModel extends DefaultTreeModel {
21      private static int DebugLevel = 4;
22      private DefaultMutableTreeNode prResources;
23      private DefaultMutableTreeNode lrResources;
24  
25      /**
26       * Creates a new instance of ResourceModel with newRoot set
27       * to the root of this model.
28       */
29      private ResourceTreeModel(TreeNode newRoot) {
30          super(newRoot);
31      }
32  
33      /** Creates a new default instance of ResourceModel. */
34      public ResourceTreeModel() {
35          super(createNewNode("Resources"));
36          prResources = createNewNode("Processing Resources");
37          ((DefaultMutableTreeNode) getRoot()).add(prResources);
38          lrResources = createNewNode("Language Resources");
39          ((DefaultMutableTreeNode) getRoot()).add(lrResources);
40  //        Gate.addCreoleListener(DebugController.getInstance().getResourceController());
41      }
42  
43      public static DefaultMutableTreeNode createNewNode(String name) {
44          if (null == name) {
45              name = "Undefined name";
46          }
47          return new DefaultMutableTreeNode(new String(name));
48      }
49  
50      public Enumeration getPRResources() {
51          return prResources.children();
52      }
53  
54      public Enumeration getLrResources() {
55          return lrResources.children();
56      }
57  
58      public PrModel getPRResource(ProcessingResource pr) {
59          Enumeration prEnum = prResources.children();
60          while (prEnum.hasMoreElements()) {
61              PrModel prModel = (PrModel) prEnum.nextElement();
62              if (prModel.getProcessingResource().equals(pr)) {
63                  return prModel;
64              }
65          }
66          return null;
67      }
68  
69      public PrModel getPRResource(String phaseName) {
70          Enumeration prEnum = prResources.children();
71          while (prEnum.hasMoreElements()) {
72              PrModel pr = (PrModel) prEnum.nextElement();
73              if (pr.getName().equals(phaseName)) {
74                  return pr;
75              }
76          }
77          return null;
78      }
79  
80      public PrModel getPRResource(SinglePhaseTransducer spt) {
81          if (DebugLevel >= 5) {
82              System.out.print("DEBUG [" + this.getClass().getName() + "]: ");
83              System.out.println("getPrResource(SinglePhaseTransducer): SPT name [" + spt.getName() + "] child count = " + prResources.getChildCount());
84          }
85          Enumeration prEnum = prResources.children();
86          while (prEnum.hasMoreElements()) {
87              PrModel pr = (PrModel) prEnum.nextElement();
88              if (null != pr.getPhase(spt)) {
89                  return pr;
90              }
91          }
92          return null;
93      }
94  
95      public LrModel getLRResource(LanguageResource lr) {
96          Enumeration lrEnum = lrResources.children();
97          while (lrEnum.hasMoreElements()) {
98              LrModel model = (LrModel) lrEnum.nextElement();
99              if (model.getLr().equals(lr)) {
100                 return model;
101             }
102         }
103         return null;
104     }
105 
106     public DefaultMutableTreeNode getPRResourcesNode() {
107         return prResources;
108     }
109 
110     public DefaultMutableTreeNode getLRResourcesNode() {
111         return lrResources;
112     }
113 
114     public void reloadProcessingResource(ProcessingResource resource) {
115 //        this.prResources.remove(this.getPRResource(resource));
116 //        this.prResources.add(new PrModel(resource));
117         this.reload();
118     }
119 }
120 
121