KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > client > output > OutputCapabilities


1 package rero.client.output;
2
3 import rero.ircfw.*;
4 import rero.ircfw.data.*;
5
6 import rero.bridges.event.*;
7 import rero.bridges.set.*;
8
9 import rero.client.*;
10
11 import java.util.*;
12
13 import rero.client.listeners.*;
14
15 import rero.gui.*;
16 import rero.gui.windows.*;
17 import text.*;
18
19 import rero.util.*;
20
21 import rero.config.*;
22
23 public class OutputCapabilities extends Feature implements ClientStateListener
24 {
25    protected SetEnvironment sets;
26    protected UICapabilities gui;
27    protected InternalDataList data;
28
29    protected boolean doTimestamp;
30  
31    public void init()
32    {
33       sets = (SetEnvironment)getCapabilities().getDataStructure("setBridge");
34       gui = getCapabilities().getUserInterface();
35       data = (InternalDataList)getCapabilities().getDataStructure("clientInformation");
36
37       doTimestamp = ClientState.getClientState().isOption("option.timestamp", ClientDefaults.option_timestamp);
38
39       ClientState.getClientState().addClientStateListener("option.timestamp", this);
40    }
41
42    public void propertyChanged(String JavaDoc varname, String JavaDoc parm)
43    {
44       doTimestamp = ClientState.getClientState().isOption("option.timestamp", ClientDefaults.option_timestamp);
45    }
46
47    /** sets the query to be the next non /window'd channel */
48    public void cycleQuery()
49    {
50       Set mychans = data.getMyUser().getChannels();
51
52       boolean pastQuery = false;
53  
54       if (gui.getQuery().length() == 0)
55       {
56          pastQuery = true;
57       }
58
59       Iterator i = mychans.iterator();
60       while (i.hasNext())
61       {
62          Channel temp = (Channel)i.next();
63          if (pastQuery && !gui.isActive(temp.getName()))
64          {
65             gui.setQuery(temp.getName());
66             return;
67          }
68
69          if (temp.getName().equals(gui.getQuery()))
70          {
71             pastQuery = true;
72          }
73       }
74
75       i = mychans.iterator();
76       while (i.hasNext())
77       {
78          Channel temp = (Channel)i.next();
79          if (!gui.isActive(temp.getName()))
80          {
81             gui.setQuery(temp.getName());
82             return;
83          }
84       }
85
86       gui.setQuery("");
87    }
88
89    public void fireSetActive(HashMap event, String JavaDoc setName)
90    {
91       gui.printActive(getSet(event, setName));
92    }
93
94    /** fires a set for a query */
95    public void fireSetQuery(HashMap event, String JavaDoc from, String JavaDoc target, String JavaDoc setName)
96    {
97       if (target.charAt(0) == '@' || target.charAt(0) == '+' || target.charAt(0) == '%')
98       {
99          target = target.substring(1, target.length());
100       }
101
102       boolean toActive = ClientState.getClientState().isOption("active.query", ClientDefaults.active_option);
103
104       if (ClientUtils.isChannel(target))
105       {
106          fireSetTarget(event, target, setName);
107       }
108       else if (getCapabilities().getUserInterface().isWindow(from))
109       {
110          fireSetTarget(event, from, setName);
111       }
112       else if (toActive)
113       {
114          fireSetActive(event, setName);
115       }
116       else
117       {
118          fireSetStatus(event, setName);
119       }
120    }
121
122    /** fires a set for a "confusing" situation... */
123    public void fireSetConfused(HashMap event, String JavaDoc target, String JavaDoc setType, String JavaDoc setName)
124    {
125       if (target != null && target.length() > 0 && (target.charAt(0) == '@' || target.charAt(0) == '+' || target.charAt(0) == '%'))
126       {
127          target = target.substring(1, target.length());
128       }
129
130       boolean toActive = ClientState.getClientState().isOption("active."+setType, ClientDefaults.active_option);
131
132       if (target != null && getCapabilities().getUserInterface().isWindow(target))
133       {
134          fireSetTarget(event, target, setName);
135       }
136       else if (toActive)
137       {
138          fireSetActive(event, setName);
139       }
140       else
141       {
142          fireSetStatus(event, setName);
143       }
144    }
145
146    /** analyzes variable and determines if user has chosen for event to go to status or active window. Fires appropriate set
147        based on users chosen value of variable */

148    public void fireSetOption(HashMap event, String JavaDoc variable, String JavaDoc setName)
149    {
150       gui.printStatus(getSet(event, setName));
151    }
152
153    public void fireSetTarget(HashMap event, String JavaDoc target, String JavaDoc setName)
154    {
155       gui.printNormal(target, getSet(event, setName));
156    }
157
158    public void fireSetAllDeadTarget(HashMap event, String JavaDoc target, String JavaDoc setName)
159    {
160       Set temp = data.getChannelsFromPriorLife(target);
161       gui.printToTargets(temp, getSet(event, setName), false);
162    }
163
164    public void fireSetAllTarget(HashMap event, String JavaDoc target, String JavaDoc setName)
165    {
166       echoToTarget(target, getSet(event, setName), false);
167    }
168
169    public void fireSetAllTarget2(HashMap event, String JavaDoc target, String JavaDoc setName)
170    {
171       echoToTarget(target, getSet(event, setName), true);
172    }
173
174    /** fires set echoing to status window */
175    public void fireSetStatus(HashMap event, String JavaDoc setName)
176    {
177       gui.printStatus(getSet(event, setName));
178    }
179
180    /** fires set echoing to all active windows */
181    public void fireSetAll(HashMap event, String JavaDoc setName)
182    {
183        gui.printAll(getSet(event, setName));
184    }
185
186    public String JavaDoc chooseSet(String JavaDoc target, String JavaDoc setNameActive, String JavaDoc setNameInActive)
187    {
188       if (gui.isActive(target))
189       {
190          return setNameActive;
191       }
192       return setNameInActive;
193    }
194
195    public String JavaDoc getSet(HashMap event, String JavaDoc setName)
196    {
197   // System.out.println("--- \"" + setName + "\" ---");
198
// System.out.println(event);
199

200       if (sets.isSet(setName))
201       {
202           String JavaDoc setData = sets.parseSet(setName, event);
203
204           if (setData == null || setData.equals(""))
205           {
206               return null;
207           }
208
209           if (doTimestamp && sets.isTimeStamped(setName) && sets.isSet("TIMESTAMP"))
210           {
211               return sets.parseSet("TIMESTAMP", event) + setData;
212           }
213           else
214           {
215               return setData;
216           }
217       }
218
219       return null;
220    }
221
222    public String JavaDoc parseSet(HashMap event, String JavaDoc set_name)
223    {
224       return sets.parseSet(set_name, event);
225    }
226
227    public boolean isSet(String JavaDoc setName)
228    {
229       return sets.isSet(setName);
230    }
231
232    public void echoToTarget(String JavaDoc nickname, String JavaDoc text, boolean alwaysStatys)
233    {
234       Set targets = new HashSet();
235
236       Iterator i = data.getUser(nickname).getChannels().iterator();
237       while (i.hasNext())
238       {
239          Channel temp = (Channel)i.next();
240          targets.add(temp.getName());
241       }
242
243       gui.printToTargets(targets, text, alwaysStatys);
244    }
245
246    public void echo(String JavaDoc window, String JavaDoc text[], double percentage)
247    {
248       StringBuffer JavaDoc temp = new StringBuffer JavaDoc(text[0].length() * text.length); // pretty accurate guess at size.
249
for (int x = 0; x < text.length; x++)
250       {
251          temp.append(text[x]);
252       }
253
254       gui.printChunk(window, temp.toString(), text, percentage);
255    }
256 }
257
258
259
Popular Tags