source: branches/2.2/jabberit_messenger/java_source/src/nu/fw/jeti/ui/RegisterServices.java @ 3102

Revision 3102, 8.9 KB checked in by amuller, 14 years ago (diff)

Ticket #986 - Efetuado merge para o Branch 2.2( atualizacao do modulo)

  • Property svn:executable set to *
Line 
1package nu.fw.jeti.ui;
2
3import java.awt.BorderLayout;
4import java.awt.Cursor;
5import java.awt.event.ActionEvent;
6import java.awt.event.WindowEvent;
7import java.util.HashMap;
8import java.util.Iterator;
9import java.util.Map;
10
11import javax.swing.*;
12import javax.swing.event.ListSelectionEvent;
13
14import nu.fw.jeti.events.DiscoveryListener;
15import nu.fw.jeti.events.RegisterListener;
16import nu.fw.jeti.jabber.Backend;
17import nu.fw.jeti.jabber.JID;
18import nu.fw.jeti.jabber.elements.DiscoveryInfo;
19import nu.fw.jeti.jabber.elements.DiscoveryItem;
20import nu.fw.jeti.jabber.elements.IQRegister;
21import nu.fw.jeti.jabber.elements.InfoQuery;
22import nu.fw.jeti.util.I18N;
23import nu.fw.jeti.util.Utils;
24
25/**
26 * <p>Title: im</p>
27 * <p>Description: </p>
28 * <p>Copyright: Copyright (c) 2001</p>
29 * <p>Company: </p>
30 * @author E.S. de Boer
31 * @version 1.0
32 */
33
34public class RegisterServices extends JFrame implements DiscoveryListener, RegisterListener
35{
36        private JList jList1;
37        private JPanel jPanel1 = new JPanel();
38        private JButton btnRegister = new JButton();
39        private JButton btnCancel = new JButton();
40        private Map services = new HashMap();
41        private Backend backend;
42        private JTextField txtServer = new JTextField();
43        private JButton btnChangeServer = new JButton();
44        private JID server;
45        private JID registerJID;
46        private int numberOfServices;
47       
48        public RegisterServices(Backend backend)
49        {
50                this.backend = backend;
51                server = new JID(backend.getMyJID().getDomain());
52                //Collections.sort(services); //object[] not sortable
53        try
54        {
55            jbInit();
56        }
57        catch(Exception e)
58        {
59            e.printStackTrace();
60        }
61                backend.addListener(RegisterListener.class,this);
62                //setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
63                backend.getItems(server,this);
64        }
65
66        private void jbInit() throws Exception
67        {
68                //setIconImage(nu.fw.jeti.images.StatusIcons.getImageIcon("jeti").getImage());
69        //btnRegister.setMnemonic('R');
70        //btnRegister.setText(I18N.gettext("main.manageservices.Register"));
71        I18N.setTextAndMnemonic("main.manageservices.Register",btnRegister);
72        btnRegister.addActionListener(new java.awt.event.ActionListener()
73        {
74            public void actionPerformed(ActionEvent e)
75            {
76                btnRegister_actionPerformed(e);
77            }
78        });
79        btnCancel.setAlignmentX(0.5f);
80        Action cancelAction = new AbstractAction(I18N.gettext("Cancel"))
81                {
82                        public void actionPerformed(ActionEvent e)
83                        {
84                                btnCancel_actionPerformed(e);
85                        }
86                };
87                Utils.addCancelButton(this, btnCancel, cancelAction);
88               
89                addWindowListener(new java.awt.event.WindowAdapter()
90                {
91                        public void windowClosing(WindowEvent e)
92                        {
93                                backend.removeListener(RegisterListener.class,RegisterServices.this);
94                                dispose();
95                        }
96                });
97        this.setTitle(I18N.gettext("main.manageservices.Manage_Services"));
98        //DefaultListModel listModel = new DefaultListModel();
99                /*
100                for(Iterator i = services.listIterator();i.hasNext();)
101                {
102                        listModel.addElement((String)((Object[])i.next())[0]);
103                }
104                */
105                jList1 = new JList(new DefaultListModel());
106                jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener()
107        {
108            public void valueChanged(ListSelectionEvent e)
109            {
110                jList1_valueChanged(e);
111            }
112        });
113                jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
114                btnChangeServer.setAlignmentX(0.5f);
115       //btnChangeServer.setMnemonic('S');
116                //btnChangeServer.setText(I18N.gettext("main.manageservices.Change_Server"));
117                I18N.setTextAndMnemonic("main.manageservices.Change_Server",btnChangeServer);
118                btnChangeServer.addActionListener(new java.awt.event.ActionListener()
119                {
120                  public void actionPerformed(ActionEvent e)
121                  {
122                        btnChangeServer_actionPerformed(e);
123                  }
124                });
125                JLabel label = new JLabel();
126                label.setAlignmentX(0.5f);
127                //jLabel1.setText(I18N.gettext("main.manageservices.Server"));
128                I18N.setTextAndMnemonic("main.manageservices.Server",label);
129                label.setLabelFor(txtServer);
130                this.getContentPane().add(jList1, BorderLayout.CENTER);
131        this.getContentPane().add(jPanel1, BorderLayout.SOUTH);
132        //jPanel1.add(btnRegister, null);
133                jPanel1.setLayout(new BoxLayout(jPanel1,BoxLayout.Y_AXIS));
134        jPanel1.add(label);
135        jPanel1.add(txtServer);
136                jPanel1.add(btnChangeServer);
137                jPanel1.add(btnCancel);
138                pack();
139        }
140
141        void btnCancel_actionPerformed(ActionEvent e)
142        {
143                backend.removeListener(RegisterListener.class,this);
144                this.dispose();
145        }
146
147        void btnRegister_actionPerformed(ActionEvent e)
148        {
149        backend.removeListener(RegisterListener.class,this);
150                this.dispose();
151        }
152
153        void jList1_valueChanged(ListSelectionEvent e)
154        {
155                if (e.getValueIsAdjusting())
156        return;
157
158                JList theList = (JList)e.getSource();
159                if (!theList.isSelectionEmpty())
160                {
161                        registerJID = (JID)services.get(theList.getSelectedValue());
162                    if(registerJID!=null) backend.send(new InfoQuery(registerJID,"get",backend.getIdentifier(),new IQRegister()));
163                }
164                theList.clearSelection();
165        }
166
167        void btnChangeServer_actionPerformed(ActionEvent e)
168        {
169        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
170        JID temp = null;
171        try
172                {
173                temp = JID.checkedJIDFromString(txtServer.getText());
174                }
175        catch (InstantiationException ex)
176        {
177                        nu.fw.jeti.util.Popups.errorPopup(ex.getMessage(), I18N.gettext("main.error.invalid_server"));
178        }
179                if(temp == null) return;
180                server = temp;
181                backend.getItems(server,this);
182        }
183   
184        public void discoveryItemResult(JID jid,DiscoveryItem item)
185        {
186                //System.out.println(browse);
187                if (!item.hasItems()) nu.fw.jeti.util.Popups.errorPopup(I18N.gettext("main.error.No_services"), I18N.gettext("main.error.Register_Services"));
188                else
189                {
190                        numberOfServices=item.getSize();
191                        DefaultListModel model = (DefaultListModel) jList1.getModel();
192                        services.clear();
193                        model.clear();
194                        for(Iterator i = item.getItems();i.hasNext();)
195                        {
196                                DiscoveryItem di = (DiscoveryItem)i.next();
197                                String name = di.getName();
198                                if(name==null) name= di.getJID().toStringNoResource();
199                                //put in services so errors do not prevent register
200                                services.put(name,di.getJID());
201                                model.addElement(name);
202                                //numberOfServices++;
203                                backend.getInfo(di.getJID(),this);
204                        }
205                }
206                pack();
207                setLocationRelativeTo(null);
208        }
209         
210        public void discoveryInfoResult(JID jid, DiscoveryInfo item)
211        {
212                //DefaultListModel model = (DefaultListModel) jList1.getModel();
213                numberOfServices--;
214                //System.out.println(numberOfServices);
215                if (numberOfServices <= 0) setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
216                DefaultListModel model = (DefaultListModel) jList1.getModel();
217                String name = item.getName();
218                if(name!=null && model.removeElement(jid.toStringNoResource()))
219                {
220                        model.addElement(name);
221                }
222                if (item.getFeatures().contains("jabber:iq:register"))
223                {
224                        if(name!=null) services.put(item.getName(),jid);
225                        else services.put(jid.toStringNoResource(),jid);
226                }
227                //else{} remove from services
228               
229        }
230         
231          /*
232          public void browseResult(IQBrowse browse)
233          {
234                  //System.out.println(browse);
235                  if(browse.getJID() == null) nu.fw.jeti.util.Popups.errorPopup(I18N.gettext("main.error.Server_doesn't_support_browse"),I18N.gettext("main.error.Service_error"));
236                  else if(browse.getJID().equals(server))
237                  {//current server browse
238                                services.clear();
239                                DefaultListModel model =(DefaultListModel)jList1.getModel();
240                                model.clear();
241                                if(!browse.hasChildItems())
242                                {
243                                        nu.fw.jeti.util.Popups.errorPopup(I18N.gettext("main.error.No_services"),I18N.gettext("main.error.Register_Services"));
244                                        backend.removeListener(RegisterListener.class,this);
245                                        this.dispose();
246                                        return;
247                                }
248                                else {
249                                        for(Iterator i = browse.getItems();i.hasNext();)
250                                        {
251                                                IQBrowse item = (IQBrowse)i.next();
252                                                if(item.hasFeatures())
253                                                {
254                                                        for(Iterator j = item.getFeatures();j.hasNext();)
255                                                        {
256                                                                String namespace = (String)j.next();
257                                                                if(namespace.equals("jabber:iq:register"))
258                                                                {//object 0 could be removed
259                                                                        Object temp[] = new Object[2];
260                                                                        temp[0] = item.getName();
261                                                                        temp[1] = item.getJID();
262                                                                        services.add(temp);
263                                                                        model.addElement(item.getName());
264                                                                }
265                                                        }
266                                                }
267                                        }
268                                }
269                        }
270                        setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
271                        pack();
272                        setLocationRelativeTo(null);
273          }
274          */
275
276        public void register(IQRegister register,String id)
277        {
278
279                new RegisterWindow(backend,register,registerJID,id);
280                  /*
281                  Map map = new HashMap(20);
282                  String key = null;
283                  //for(Iterator i = register.getFields()
284                        for(      Enumeration keys = register.getNames();keys.hasMoreElements();)
285                  {
286                          key = (String)keys.nextElement();
287                          map.put(key ,register.getValue(key));
288                          //System.out.println(key +   "   " + register.getValue(key));
289                  }
290                  RegisterWindow registerWindow = new RegisterWindow(this,map,newAccount,cp.getFromAddress());
291                  registerWindow.show();
292                  */
293        }       
294}
295/*
296 * Overrides for emacs
297 * Local variables:
298 * tab-width: 4
299 * End:
300 */
Note: See TracBrowser for help on using the repository browser.