Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: third_party/twisted_8_1/twisted/words/im/jychat.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4 #
5 from twisted.words.im.basechat import ContactsList, Conversation, GroupConversat ion,\
6 ChatUI
7 from twisted.words.im.locals import OFFLINE, ONLINE, AWAY
8
9 from java.awt import GridLayout, FlowLayout, BorderLayout, Container
10 import sys
11 from java.awt.event import ActionListener
12 from javax.swing import JTextField, JPasswordField, JComboBox, JPanel, JLabel,\
13 JTextArea, JFrame, JButton, BoxLayout, JTable, JScrollPane, \
14 ListSelectionModel
15 from javax.swing.table import DefaultTableModel
16
17 doublebuffered = 0
18
19
20 class UneditableTableModel(DefaultTableModel):
21 def isCellEditable(self, x, y):
22 return 0
23
24 class _AccountAdder:
25 def __init__(self, contactslist):
26 self.contactslist = contactslist
27 self.mainframe = JFrame("Add New Contact")
28 self.account = JComboBox(self.contactslist.clientsByName.keys())
29 self.contactname = JTextField()
30 self.buildpane()
31
32 def buildpane(self):
33 buttons = JPanel()
34 buttons.add(JButton("OK", actionPerformed=self.add))
35 buttons.add(JButton("Cancel", actionPerformed=self.cancel))
36
37 acct = JPanel(GridLayout(1, 2), doublebuffered)
38 acct.add(JLabel("Account"))
39 acct.add(self.account)
40
41 mainpane = self.mainframe.getContentPane()
42 mainpane.setLayout(BoxLayout(mainpane, BoxLayout.Y_AXIS))
43 mainpane.add(self.contactname)
44 mainpane.add(acct)
45 mainpane.add(buttons)
46 self.mainframe.pack()
47 self.mainframe.show()
48
49 #action listeners
50 def add(self, ae):
51 acct = self.contactslist.clientsByName[self.account.getSelectedItem()]
52 acct.addContact(self.contactname.getText())
53 self.mainframe.dispose()
54
55 def cancel(self, ae):
56 self.mainframe.dispose()
57
58 class ContactsListGUI(ContactsList):
59 """A GUI object that displays a contacts list"""
60 def __init__(self, chatui):
61 ContactsList.__init__(self, chatui)
62 self.clientsByName = {}
63 self.mainframe = JFrame("Contacts List")
64 self.headers = ["Contact", "Status", "Idle", "Account"]
65 self.data = UneditableTableModel([], self.headers)
66 self.table = JTable(self.data,
67 columnSelectionAllowed = 0, #cannot select columns
68 selectionMode = ListSelectionModel.SINGLE_SELECTION)
69
70 self.buildpane()
71 self.mainframe.pack()
72 self.mainframe.show()
73
74 def setContactStatus(self, person):
75 ContactsList.setContactStatus(self, person)
76 self.update()
77
78 def registerAccountClient(self, client):
79 ContactsList.registerAccountClient(self, client)
80 if not client.accountName in self.clientsByName.keys():
81 self.clientsByName[client.accountName] = client
82
83 def unregisterAccount(self, client):
84 ContactsList.unregisterAccountClient(self, client)
85 if client.accountName in self.clientsByName.keys():
86 del self.clientsByName[client.accountName]
87
88 def contactChangedNick(self, person, newnick):
89 ContactsList.contactChangedNick(self, person, newnick)
90 self.update()
91
92 #GUI code
93 def buildpane(self):
94 buttons = JPanel(FlowLayout(), doublebuffered)
95 buttons.add(JButton("Send Message", actionPerformed=self.message))
96 buttons.add(JButton("Add Contact", actionPerformed=self.addContact))
97 #buttons.add(JButton("Quit", actionPerformed=self.quit))
98
99 mainpane = self.mainframe.getContentPane()
100 mainpane.setLayout(BoxLayout(mainpane, BoxLayout.Y_AXIS))
101 mainpane.add(JScrollPane(self.table))
102 mainpane.add(buttons)
103 self.update()
104
105 def update(self):
106 contactdata = []
107 for contact in self.onlineContacts.values():
108 if contact.status == AWAY:
109 stat = "(away)"
110 else:
111 stat = "(active)"
112 contactdata.append([contact.name, stat, contact.getIdleTime(),
113 contact.client.accountName])
114 self.data.setDataVector(contactdata, self.headers)
115
116 #callable actionlisteners
117 def message(self, ae):
118 row = self.table.getSelectedRow()
119 if row < 0:
120 print "Trying to send IM to person, but no person selected"
121 else:
122 person = self.onlineContacts[self.data.getValueAt(row, 0)]
123 self.chat.getConversation(person)
124
125 def addContact(self, ae):
126 _AccountAdder(self)
127
128 def quit(self, ae):
129 sys.exit()
130
131
132 class ConversationWindow(Conversation):
133 """A GUI window of a conversation with a specific person"""
134 def __init__(self, person, chatui):
135 """ConversationWindow(basesupport.AbstractPerson:person)"""
136 Conversation.__init__(self, person, chatui)
137 self.mainframe = JFrame("Conversation with "+person.name)
138 self.display = JTextArea(columns=100,
139 rows=15,
140 editable=0,
141 lineWrap=1)
142 self.typepad = JTextField()
143 self.buildpane()
144 self.lentext = 0
145
146 def buildpane(self):
147 buttons = JPanel(doublebuffered)
148 buttons.add(JButton("Send", actionPerformed=self.send))
149 buttons.add(JButton("Hide", actionPerformed=self.hidewindow))
150
151 mainpane = self.mainframe.getContentPane()
152 mainpane.setLayout(BoxLayout(mainpane, BoxLayout.Y_AXIS))
153 mainpane.add(JScrollPane(self.display))
154 self.typepad.actionPerformed = self.send
155 mainpane.add(self.typepad)
156 mainpane.add(buttons)
157
158 def show(self):
159 self.mainframe.pack()
160 self.mainframe.show()
161
162 def hide(self):
163 self.mainframe.hide()
164
165 def sendText(self, text):
166 self.displayText("\n"+self.person.client.name+": "+text)
167 Conversation.sendText(self, text)
168
169 def showMessage(self, text, metadata=None):
170 self.displayText("\n"+self.person.name+": "+text)
171
172 def contactChangedNick(self, person, newnick):
173 Conversation.contactChangedNick(self, person, newnick)
174 self.mainframe.setTitle("Conversation with "+newnick)
175
176 #GUI code
177 def displayText(self, text):
178 self.lentext = self.lentext + len(text)
179 self.display.append(text)
180 self.display.setCaretPosition(self.lentext)
181
182 #actionlisteners
183 def hidewindow(self, ae):
184 self.hide()
185
186 def send(self, ae):
187 text = self.typepad.getText()
188 self.typepad.setText("")
189 if text != "" and text != None:
190 self.sendText(text)
191
192
193 class GroupConversationWindow(GroupConversation):
194 """A GUI window of a conversation witha group of people"""
195 def __init__(self, group, chatui):
196 GroupConversation.__init__(self, group, chatui)
197 self.mainframe = JFrame(self.group.name)
198 self.headers = ["Member"]
199 self.memberdata = UneditableTableModel([], self.headers)
200 self.display = JTextArea(columns=100, rows=15, editable=0, lineWrap=1)
201 self.typepad = JTextField()
202 self.buildpane()
203 self.lentext = 0
204
205 def show(self):
206 self.mainframe.pack()
207 self.mainframe.show()
208
209 def hide(self):
210 self.mainframe.hide()
211
212 def showGroupMessage(self, sender, text, metadata=None):
213 self.displayText(sender + ": " + text)
214
215 def setGroupMembers(self, members):
216 GroupConversation.setGroupMembers(self, members)
217 self.updatelist()
218
219 def setTopic(self, topic, author):
220 topictext = "Topic: " + topic + ", set by " + author
221 self.mainframe.setTitle(self.group.name + ": " + topictext)
222 self.displayText(topictext)
223
224 def memberJoined(self, member):
225 GroupConversation.memberJoined(self, member)
226 self.updatelist()
227
228 def memberChangedNick(self, oldnick, newnick):
229 GroupConversation.memberChangedNick(self, oldnick, newnick)
230 self.updatelist()
231
232 def memberLeft(self, member):
233 GroupConversation.memberLeft(self, member)
234 self.updatelist()
235
236 #GUI code
237 def buildpane(self):
238 buttons = JPanel(doublebuffered)
239 buttons.add(JButton("Hide", actionPerformed=self.hidewindow))
240
241 memberpane = JTable(self.memberdata)
242 memberframe = JScrollPane(memberpane)
243
244 chat = JPanel(doublebuffered)
245 chat.setLayout(BoxLayout(chat, BoxLayout.Y_AXIS))
246 chat.add(JScrollPane(self.display))
247 self.typepad.actionPerformed = self.send
248 chat.add(self.typepad)
249 chat.add(buttons)
250
251 mainpane = self.mainframe.getContentPane()
252 mainpane.setLayout(BoxLayout(mainpane, BoxLayout.X_AXIS))
253 mainpane.add(chat)
254 mainpane.add(memberframe)
255
256 def displayText(self, text):
257 self.lentext = self.lentext + len(text)
258 self.display.append(text)
259 self.display.setCaretPosition(self.lentext)
260
261 def updatelist(self):
262 self.memberdata.setDataVector([self.members], self.headers)
263
264 #actionListener
265 def send(self, ae):
266 text = self.typepad.getText()
267 self.typepad.setText("")
268 if text != "" and text != None:
269 GroupConversation.sendText(self, text)
270
271 def hidewindow(self, ae):
272 self.hide()
273
274 class JyChatUI(ChatUI):
275 def __init__(self):
276 ChatUI.__init__(self)
277 self.contactsList = ContactsListGUI(self)
278
279 def getConversation(self, person, stayHidden=0):
280 return ChatUI.getGroupConversation(self, person, ConversationWindow,
281 stayHidden)
282
283 def getGroupConversation(self, group, stayHidden=0):
284 return ChatUI.getGroupConversation(self, group,
285 GroupConversationWindow,
286 stayHidden)
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/words/im/jyaccount.py ('k') | third_party/twisted_8_1/twisted/words/im/locals.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698