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 varname, String parm) 43 { 44 doTimestamp = ClientState.getClientState().isOption("option.timestamp", ClientDefaults.option_timestamp); 45 } 46 47 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 setName) 90 { 91 gui.printActive(getSet(event, setName)); 92 } 93 94 95 public void fireSetQuery(HashMap event, String from, String target, String 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 123 public void fireSetConfused(HashMap event, String target, String setType, String 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 148 public void fireSetOption(HashMap event, String variable, String setName) 149 { 150 gui.printStatus(getSet(event, setName)); 151 } 152 153 public void fireSetTarget(HashMap event, String target, String setName) 154 { 155 gui.printNormal(target, getSet(event, setName)); 156 } 157 158 public void fireSetAllDeadTarget(HashMap event, String target, String 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 target, String setName) 165 { 166 echoToTarget(target, getSet(event, setName), false); 167 } 168 169 public void fireSetAllTarget2(HashMap event, String target, String setName) 170 { 171 echoToTarget(target, getSet(event, setName), true); 172 } 173 174 175 public void fireSetStatus(HashMap event, String setName) 176 { 177 gui.printStatus(getSet(event, setName)); 178 } 179 180 181 public void fireSetAll(HashMap event, String setName) 182 { 183 gui.printAll(getSet(event, setName)); 184 } 185 186 public String chooseSet(String target, String setNameActive, String setNameInActive) 187 { 188 if (gui.isActive(target)) 189 { 190 return setNameActive; 191 } 192 return setNameInActive; 193 } 194 195 public String getSet(HashMap event, String setName) 196 { 197 200 if (sets.isSet(setName)) 201 { 202 String 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 parseSet(HashMap event, String set_name) 223 { 224 return sets.parseSet(set_name, event); 225 } 226 227 public boolean isSet(String setName) 228 { 229 return sets.isSet(setName); 230 } 231 232 public void echoToTarget(String nickname, String 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 window, String text[], double percentage) 247 { 248 StringBuffer temp = new StringBuffer (text[0].length() * text.length); 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 |