View Javadoc

1   package org.catacomb.druid.gui.base;
2   
3   
4   import org.catacomb.interlish.content.StringValue;
5   import org.catacomb.interlish.structure.*;
6   import org.catacomb.report.E;
7   
8   
9   import java.util.ArrayList;
10  import java.util.HashMap;
11  
12  
13  public class PanelPack {
14  
15      DruPanel mainPanel;
16  
17      HashMap<String, Object> components;
18  
19      ArrayList<Object> anonCpts;
20  
21  
22      public PanelPack(DruPanel dp, ArrayList<Object> anons, HashMap<String, Object> hm) {
23          mainPanel = dp;
24          anonCpts = anons;
25          components = hm;
26      }
27  
28  
29      public DruPanel getMainPanel() {
30          return mainPanel;
31      }
32  
33  
34      public boolean hasComponent(String sid) {
35          return components.containsKey(sid);
36      }
37  
38  
39      public Object getComponent(String sid) {
40          Object ret = null;
41          if (components.containsKey(sid)) {
42              ret = components.get(sid);
43          } else {
44              E.error("no such component in panel pack " + sid);
45              for (String s : components.keySet()) {
46                  E.info("known cpt " + s);
47              }
48          }
49          return ret;
50      }
51  
52  
53      public void setText(String cpt, String txt) {
54          if (hasComponent(cpt)) {
55              Object obj = getComponent(cpt);
56              if (obj instanceof TextSettable) {
57                  ((TextSettable)obj).setText(txt);
58              } else {
59                  E.error("cant set text in " + obj);
60              }
61  
62          } else {
63              E.error("no such cpt in panel pack " + cpt);
64              reportComponents();
65          }
66      }
67  
68  
69  
70  
71      public void actionConnect(Object tgt) {
72          DruActionRelay dar = new DruActionRelay(tgt);
73          for (Object obj : anonCpts) {
74              connectRelay(dar, obj);
75          }
76  
77          for (Object obj : components.values()) {
78              connectRelay(dar, obj);
79          }
80  
81      }
82  
83  
84      private void connectRelay(DruActionRelay dar, Object obj) {
85          if (obj instanceof ActionSource) {
86              ((ActionSource)obj).setActionRelay(dar);
87          }
88      }
89  
90  
91      public void reportComponents() {
92          int icpt = 0;
93          for (String s : components.keySet()) {
94              E.info("known cpt " + icpt + " " + s);
95              icpt += 1;
96          }
97      }
98  
99  
100     public void setStringValue(String cpt, StringValue sv) {
101         if (hasComponent(cpt)) {
102             Object obj = getComponent(cpt);
103             if (obj instanceof StringValueEditor) {
104                 ((StringValueEditor)obj).setStringValue(sv);
105             } else {
106                 E.error("cant set text in " + obj);
107             }
108 
109         } else {
110             E.error("no such cpt in panel pack " + cpt);
111             reportComponents();
112         }
113 
114     }
115 
116 }