1 package rero.gui.windows; 2 3 import rero.ircfw.*; 4 import rero.ircfw.data.*; 5 import rero.ircfw.interfaces.*; 6 7 import rero.client.*; 8 import javax.swing.*; 9 import text.*; 10 import text.event.*; 11 import java.awt.*; 12 import java.awt.event.*; 13 14 import rero.bridges.menu.*; 15 16 import text.list.*; 17 18 import java.util.*; 19 20 import rero.config.*; 21 22 public class ChannelWindow extends StatusWindow implements ChannelDataWatch 23 { 24 protected Channel channel; 25 protected ListDisplay listbox; 26 protected ChannelListData data; 27 protected Capabilities capabilities; 28 protected MouseAdapter mouseListener; protected ListBoxOptions watcher; 30 31 public ListDisplay getListbox() 32 { 33 return listbox; 34 } 35 36 public void cleanup() 37 { 38 ((InternalDataList)capabilities.getDataStructure("clientInformation")).installChannelWatch(channel.getName(), null); 39 watcher = null; 40 listeners.clear(); super.cleanup(); 42 } 43 44 public ChannelWindow(Channel _channel) 45 { 46 channel = _channel; 47 } 48 49 public void init(ClientWindow _temp) 50 { 51 super.init(_temp); 52 53 data = new ChannelListData(channel); 54 listbox = new ListDisplay(data); 55 56 watcher = new ListBoxOptions(this, listbox); 57 58 mouseListener = new MouseAdapter() 59 { 60 public void mousePressed(MouseEvent ev) 61 { 62 maybeShowPopupNicklist(ev, "nicklist"); 63 } 64 65 public void mouseReleased(MouseEvent ev) 66 { 67 maybeShowPopupNicklist(ev, "nicklist"); 68 } 69 70 public void mouseClicked(MouseEvent ev) 71 { 72 if (ev.getClickCount() >= 2 && !ev.isPopupTrigger() && (ev.getButton() & MouseEvent.BUTTON3) != MouseEvent.BUTTON3) 73 { 74 fireClickEvent(ev); 75 } 76 else 77 { 78 maybeShowPopupNicklist(ev, "nicklist"); 79 } 80 } 81 }; 82 83 listbox.addMouseListener(mouseListener); 84 } 85 86 protected void maybeShowPopupNicklist(MouseEvent ev, String desc) 87 { 88 JPopupMenu menu = getPopupMenu(desc, null); 89 90 if (ev.isPopupTrigger() && menu != null) 91 { 92 ListElement element = listbox.getSelectedElement(); 93 if (element != null) 94 { 95 HashMap eventData = new HashMap(); 96 User user = (User)element.getSource(); 97 eventData.put("$snick", user.getNick()); 98 99 Iterator i = listbox.getSelectedElements().iterator(); 100 StringBuffer values = new StringBuffer (); 101 102 while (i.hasNext()) 103 { 104 User temp = (User)((ListElement)i.next()).getSource(); 105 106 values.append(temp.getNick()); 107 if (i.hasNext()) 108 values.append(" "); 109 } 110 eventData.put("$data", getName() + " " + values.toString()); 111 112 ScriptedPopupMenu.SetMenuData(eventData); 113 } 114 115 menu.show((JComponent)ev.getComponent(), ev.getX(), ev.getY()); 116 ev.consume(); 117 } 118 } 119 120 public void createChannel(Channel c) 122 { 123 channel = c; 124 data.installCapabilities(capabilities); 125 data.updateChannel(channel); 126 } 127 128 public void userAdded(User u) 129 { 130 listbox.repaint(); 131 } 132 133 public void userRemoved(User u) 134 { 135 data.removeUser(u); 136 listbox.repaint(); 137 } 138 139 public void userChanged() 140 { 141 listbox.repaint(); 142 } 143 144 public void touch() 145 { 146 super.touch(); 147 listbox.repaint(); 148 } 149 150 public void installCapabilities(Capabilities c) 151 { 152 capabilities = c; 153 154 super.installCapabilities(c); 155 data.installCapabilities(c); 156 157 ((InternalDataList)c.getDataStructure("clientInformation")).installChannelWatch(channel.getName(), this); 158 } 159 160 public ImageIcon getImageIcon() 161 { 162 if (icon == null) 163 { 164 icon = new ImageIcon(ClientState.getClientState().getResource("channel.gif")); 165 } 166 167 return icon; 168 } 169 170 public String getQuery() 171 { 172 return channel.getName(); 173 } 174 175 public String getName() 176 { 177 return channel.getName(); 178 } 179 180 public String getWindowType() 181 { 182 return "channel"; 183 } 184 185 protected LinkedList listeners = new LinkedList(); 186 187 public void addClickListener(ClickListener l) 188 { 189 listeners.add(l); 190 } 191 192 public void fireClickEvent(MouseEvent mev) 193 { 194 String target = ""; 195 196 ListElement element = listbox.getSelectedElement(); 197 if (element != null) 198 { 199 User user = (User)element.getSource(); 200 target = user.getNick(); 201 202 ClickEvent ev = new ClickEvent(target, target, mev); 203 204 ListIterator i = listeners.listIterator(); 205 while (i.hasNext() && !ev.isConsumed()) 206 { 207 ClickListener l = (ClickListener)i.next(); 208 l.wordClicked(ev); 209 } 210 211 if (!ev.isConsumed()) 212 { 213 capabilities.getUserInterface().openQueryWindow(target, true); 214 } 215 } 216 } 217 218 public int compareWindowType() 219 { 220 return 2; 221 } 222 } 223 | Popular Tags |