mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-11-01 16:40:26 +00:00
Start of transports.
git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@4663 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
a5615a9f6d
commit
436d0975c9
@ -10,11 +10,6 @@
|
|||||||
|
|
||||||
package org.jivesoftware.resource;
|
package org.jivesoftware.resource;
|
||||||
|
|
||||||
import javax.swing.ImageIcon;
|
|
||||||
import javax.swing.JEditorPane;
|
|
||||||
import javax.swing.JFrame;
|
|
||||||
import javax.swing.JScrollPane;
|
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
@ -22,6 +17,11 @@ import java.util.Enumeration;
|
|||||||
import java.util.PropertyResourceBundle;
|
import java.util.PropertyResourceBundle;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JEditorPane;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
|
||||||
public class SparkRes {
|
public class SparkRes {
|
||||||
private static PropertyResourceBundle prb;
|
private static PropertyResourceBundle prb;
|
||||||
|
|
||||||
@ -239,6 +239,10 @@ public class SparkRes {
|
|||||||
public static final String PANE_DOWN_ARROW_IMAGE = "PANE_DOWN_ARROW_IMAGE";
|
public static final String PANE_DOWN_ARROW_IMAGE = "PANE_DOWN_ARROW_IMAGE";
|
||||||
public static final String CLOSE_DARK_X_IMAGE = "CLOSE_DARK_X_IMAGE";
|
public static final String CLOSE_DARK_X_IMAGE = "CLOSE_DARK_X_IMAGE";
|
||||||
public static final String CLOSE_WHITE_X_IMAGE = "CLOSE_WHITE_X_IMAGE";
|
public static final String CLOSE_WHITE_X_IMAGE = "CLOSE_WHITE_X_IMAGE";
|
||||||
|
public static final String AIM_TRANSPORT_ACTIVE_IMAGE = "AIM_TRANSPORT_ACTIVE_IMAGE";
|
||||||
|
public static final String AIM_TRANSPORT_INACTIVE_IMAGE = "AIM_TRANSPORT_INACTIVE_IMAGE";
|
||||||
|
public static final String MSN_TRANSPORT_ACTIVE_IMAGE = "MSN_TRANSPORT_ACTIVE_IMAGE";
|
||||||
|
public static final String MSN_TRANSPORT_INACTIVE_IMAGE = "MSN_TRANSPORT_INACTIVE_IMAGE";
|
||||||
|
|
||||||
|
|
||||||
static ClassLoader cl = SparkRes.class.getClassLoader();
|
static ClassLoader cl = SparkRes.class.getClassLoader();
|
||||||
|
|||||||
@ -237,4 +237,10 @@ FASTPATH_OFFLINE_IMAGE_16x16 = images/fastpath16_offline.png
|
|||||||
FASTPATH_OFFLINE_IMAGE_24x24 = images/fastpath24_offline.png
|
FASTPATH_OFFLINE_IMAGE_24x24 = images/fastpath24_offline.png
|
||||||
USER1_ADD_16x16 = images/user1_add.png
|
USER1_ADD_16x16 = images/user1_add.png
|
||||||
END_BUTTON_24x24 = images/end_button_24x24.png
|
END_BUTTON_24x24 = images/end_button_24x24.png
|
||||||
POWERED_BY_IMAGE = images/powered_by.png
|
POWERED_BY_IMAGE = images/powered_by.png
|
||||||
|
|
||||||
|
# Transport images
|
||||||
|
AIM_TRANSPORT_ACTIVE_IMAGE = images/aim.gif
|
||||||
|
AIM_TRANSPORT_INACTIVE_IMAGE = images/aim-gray.gif
|
||||||
|
MSN_TRANSPORT_ACTIVE_IMAGE = images/msn.gif
|
||||||
|
MSN_TRANSPORT_INACTIVE_IMAGE = images/msn-gray.gif
|
||||||
@ -0,0 +1,104 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways;
|
||||||
|
|
||||||
|
import org.jivesoftware.resource.SparkRes;
|
||||||
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smackx.ServiceDiscoveryManager;
|
||||||
|
import org.jivesoftware.smackx.packet.DiscoverInfo;
|
||||||
|
import org.jivesoftware.smackx.packet.DiscoverInfo.Identity;
|
||||||
|
import org.jivesoftware.smackx.packet.DiscoverItems;
|
||||||
|
import org.jivesoftware.smackx.packet.DiscoverItems.Item;
|
||||||
|
import org.jivesoftware.spark.SparkManager;
|
||||||
|
import org.jivesoftware.spark.plugin.Plugin;
|
||||||
|
import org.jivesoftware.spark.util.ResourceUtils;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.AIMTransport;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.MSNTransport;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportFactory;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import javax.swing.JMenu;
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GatewayPlugin implements Plugin {
|
||||||
|
public static final String GATEWAY = "gateway";
|
||||||
|
|
||||||
|
|
||||||
|
public void initialize() {
|
||||||
|
try {
|
||||||
|
populateTransports(SparkManager.getConnection());
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to Menu Item
|
||||||
|
// Register with action menu
|
||||||
|
final JMenu actionsMenu = SparkManager.getMainWindow().getMenuByName("Actions");
|
||||||
|
JMenuItem transportsMenu = new JMenuItem("Transports", SparkRes.getImageIcon(SparkRes.AIM_TRANSPORT_ACTIVE_IMAGE));
|
||||||
|
ResourceUtils.resButton(transportsMenu, "&Transports");
|
||||||
|
actionsMenu.add(transportsMenu);
|
||||||
|
transportsMenu.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
final Transports transports = new Transports(SparkManager.getConnection());
|
||||||
|
transports.showTransports();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canShutDown() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void uninstall() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void populateTransports(XMPPConnection con) throws Exception {
|
||||||
|
ServiceDiscoveryManager manager = ServiceDiscoveryManager.getInstanceFor(con);
|
||||||
|
|
||||||
|
DiscoverItems discoItems = manager.discoverItems(con.getServiceName());
|
||||||
|
|
||||||
|
DiscoverItems.Item item;
|
||||||
|
DiscoverInfo info;
|
||||||
|
DiscoverInfo.Identity identity;
|
||||||
|
|
||||||
|
Iterator it = discoItems.getItems();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
item = (Item)it.next();
|
||||||
|
info = manager.discoverInfo(item.getEntityID());
|
||||||
|
Iterator itx = info.getIdentities();
|
||||||
|
while (itx.hasNext()) {
|
||||||
|
identity = (Identity)itx.next();
|
||||||
|
|
||||||
|
if (identity.getCategory().equalsIgnoreCase(GATEWAY)) {
|
||||||
|
if (item.getEntityID().startsWith("aim.")) {
|
||||||
|
AIMTransport aim = new AIMTransport(item.getEntityID());
|
||||||
|
TransportFactory.addTransport(item.getEntityID(), aim);
|
||||||
|
}
|
||||||
|
else if (item.getEntityID().startsWith("msn.")) {
|
||||||
|
MSNTransport msn = new MSNTransport(item.getEntityID());
|
||||||
|
TransportFactory.addTransport(item.getEntityID(), msn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.PacketCollector;
|
||||||
|
import org.jivesoftware.smack.SmackConfiguration;
|
||||||
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
|
import org.jivesoftware.smack.filter.PacketIDFilter;
|
||||||
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
|
import org.jivesoftware.smack.packet.Registration;
|
||||||
|
import org.jivesoftware.spark.component.RolloverButton;
|
||||||
|
import org.jivesoftware.spark.util.ModelUtil;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportFactory;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.swing.JDialog;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RegistrationDialog {
|
||||||
|
|
||||||
|
|
||||||
|
public void registerWithService(final XMPPConnection con, final String serviceName) {
|
||||||
|
final JPanel mainPanel = new JPanel();
|
||||||
|
mainPanel.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
final TransportRegistrationPanel regPanel = new TransportRegistrationPanel(serviceName);
|
||||||
|
mainPanel.add(regPanel, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
final JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
|
||||||
|
|
||||||
|
final RolloverButton registerButton = new RolloverButton("Register", null);
|
||||||
|
final RolloverButton cancelButton = new RolloverButton("Cancel", null);
|
||||||
|
|
||||||
|
buttonPanel.add(registerButton);
|
||||||
|
buttonPanel.add(cancelButton);
|
||||||
|
|
||||||
|
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
// Create Dialog
|
||||||
|
Transport transport = TransportFactory.getTransport(serviceName);
|
||||||
|
final JDialog dialog = new JDialog(new JFrame(), transport.getTitle(), true);
|
||||||
|
dialog.add(mainPanel);
|
||||||
|
dialog.pack();
|
||||||
|
dialog.setSize(400, 200);
|
||||||
|
|
||||||
|
|
||||||
|
registerButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
String username = regPanel.getScreenName();
|
||||||
|
String password = regPanel.getPassword();
|
||||||
|
if (!ModelUtil.hasLength(username) || !ModelUtil.hasLength(password)) {
|
||||||
|
JOptionPane.showMessageDialog(mainPanel, "Username and/or Password need to be supplied.", "Registration Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
registerUser(con, serviceName, username, password);
|
||||||
|
}
|
||||||
|
catch (XMPPException e1) {
|
||||||
|
JOptionPane.showMessageDialog(mainPanel, "Unable to register with Transport.", "Registration Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
cancelButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
dialog.dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void registerUser(XMPPConnection con, String gatewayDomain, String username, String password) throws XMPPException {
|
||||||
|
Registration registration = new Registration();
|
||||||
|
registration.setType(IQ.Type.SET);
|
||||||
|
registration.setTo(gatewayDomain);
|
||||||
|
|
||||||
|
Map<String, String> attributes = new HashMap<String, String>();
|
||||||
|
attributes.put("username", username);
|
||||||
|
attributes.put("password", password);
|
||||||
|
registration.setAttributes(attributes);
|
||||||
|
|
||||||
|
PacketCollector collector = con.createPacketCollector(new PacketIDFilter(registration.getPacketID()));
|
||||||
|
con.sendPacket(registration);
|
||||||
|
|
||||||
|
IQ response = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
|
||||||
|
collector.cancel();
|
||||||
|
if (response == null) {
|
||||||
|
throw new XMPPException("Server timed out");
|
||||||
|
}
|
||||||
|
if (response.getType() == IQ.Type.ERROR) {
|
||||||
|
throw new XMPPException("Error registering user", response.getError());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -8,7 +8,9 @@
|
|||||||
* a copy of which is included in this distribution.
|
* a copy of which is included in this distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jivesoftware.sparkimpl.plugin.transports;
|
package org.jivesoftware.sparkimpl.plugin.gateways;
|
||||||
|
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
@ -16,7 +18,6 @@ import java.awt.GridBagConstraints;
|
|||||||
import java.awt.GridBagLayout;
|
import java.awt.GridBagLayout;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
|
|
||||||
import javax.swing.Icon;
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
@ -32,7 +33,9 @@ public class TransportItem extends JPanel {
|
|||||||
|
|
||||||
private String transportAddress;
|
private String transportAddress;
|
||||||
|
|
||||||
public TransportItem(Icon icon, String title, String description, boolean active, String address) {
|
private Transport transport;
|
||||||
|
|
||||||
|
public TransportItem(Transport transport, boolean active, String address) {
|
||||||
setLayout(new GridBagLayout());
|
setLayout(new GridBagLayout());
|
||||||
|
|
||||||
iconLabel = new JLabel();
|
iconLabel = new JLabel();
|
||||||
@ -40,17 +43,19 @@ public class TransportItem extends JPanel {
|
|||||||
descriptionLabel = new JLabel();
|
descriptionLabel = new JLabel();
|
||||||
activeLabel = new JLabel();
|
activeLabel = new JLabel();
|
||||||
|
|
||||||
iconLabel.setIcon(icon);
|
iconLabel.setIcon(transport.getIcon());
|
||||||
|
|
||||||
titleLabel.setText(title);
|
titleLabel.setText(transport.getTitle());
|
||||||
titleLabel.setFont(new Font("Verdana", Font.BOLD, 12));
|
titleLabel.setFont(new Font("Dialog", Font.BOLD, 11));
|
||||||
|
|
||||||
descriptionLabel.setText(description);
|
// descriptionLabel.setText(description);
|
||||||
descriptionLabel.setFont(new Font("Dialog", Font.PLAIN, 11));
|
descriptionLabel.setFont(new Font("Dialog", Font.PLAIN, 11));
|
||||||
descriptionLabel.setForeground(Color.lightGray);
|
descriptionLabel.setForeground(Color.lightGray);
|
||||||
descriptionLabel.setHorizontalTextPosition(JLabel.LEFT);
|
descriptionLabel.setHorizontalTextPosition(JLabel.LEFT);
|
||||||
descriptionLabel.setHorizontalAlignment(JLabel.LEFT);
|
descriptionLabel.setHorizontalAlignment(JLabel.LEFT);
|
||||||
|
|
||||||
|
activeLabel.setFont(new Font("Dialog", Font.PLAIN, 10));
|
||||||
|
|
||||||
if (active) {
|
if (active) {
|
||||||
activeLabel.setText("Active");
|
activeLabel.setText("Active");
|
||||||
activeLabel.setForeground(Color.green);
|
activeLabel.setForeground(Color.green);
|
||||||
@ -62,14 +67,16 @@ public class TransportItem extends JPanel {
|
|||||||
|
|
||||||
this.transportAddress = address;
|
this.transportAddress = address;
|
||||||
|
|
||||||
|
this.transport = transport;
|
||||||
|
|
||||||
// Build UI
|
// Build UI
|
||||||
buildUI();
|
buildUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildUI() {
|
private void buildUI() {
|
||||||
add(iconLabel, new GridBagConstraints(0, 0, 1, 2, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 10, 0, 0), 0, 0));
|
add(iconLabel, new GridBagConstraints(0, 0, 1, 2, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 10, 0, 0), 0, 0));
|
||||||
add(titleLabel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0));
|
add(titleLabel, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0));
|
||||||
add(descriptionLabel, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 2, 0), 0, 0));
|
// add(descriptionLabel, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 2, 0), 0, 0));
|
||||||
add(activeLabel, new GridBagConstraints(1, 2, 1, 2, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0));
|
add(activeLabel, new GridBagConstraints(1, 2, 1, 2, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,4 +87,8 @@ public class TransportItem extends JPanel {
|
|||||||
public void setTransportAddress(String transportAddress) {
|
public void setTransportAddress(String transportAddress) {
|
||||||
this.transportAddress = transportAddress;
|
this.transportAddress = transportAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Transport getTransport(){
|
||||||
|
return transport;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways;
|
||||||
|
|
||||||
|
import org.jivesoftware.spark.component.TitlePanel;
|
||||||
|
import org.jivesoftware.spark.util.ResourceUtils;
|
||||||
|
import org.jivesoftware.resource.SparkRes;
|
||||||
|
import org.jivesoftware.smack.packet.Registration;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportFactory;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport;
|
||||||
|
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
import java.awt.Insets;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JPasswordField;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class TransportRegistrationPanel extends JPanel {
|
||||||
|
|
||||||
|
private TitlePanel titlePanel;
|
||||||
|
private JTextField usernameField = new JTextField();
|
||||||
|
private JPasswordField passwordField = new JPasswordField();
|
||||||
|
|
||||||
|
public TransportRegistrationPanel(String serviceName) {
|
||||||
|
setLayout(new GridBagLayout());
|
||||||
|
|
||||||
|
final Transport transport = TransportFactory.getTransport(serviceName);
|
||||||
|
|
||||||
|
titlePanel = new TitlePanel("AIM Registration", transport.getTitle(), transport.getIcon(), true);
|
||||||
|
|
||||||
|
add(titlePanel, new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
|
||||||
|
|
||||||
|
final JLabel usernameLabel = new JLabel();
|
||||||
|
usernameLabel.setFont(new Font("Dialog", Font.BOLD, 11));
|
||||||
|
ResourceUtils.resLabel(usernameLabel, usernameField, "&Username:");
|
||||||
|
add(usernameLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
|
add(usernameField, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
|
|
||||||
|
final JLabel passwordLabel = new JLabel();
|
||||||
|
passwordLabel.setFont(new Font("Dialog", Font.BOLD, 11));
|
||||||
|
ResourceUtils.resLabel(passwordLabel, passwordField, "&Password:");
|
||||||
|
add(passwordLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
|
add(passwordField, new GridBagConstraints(1, 2, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getScreenName() {
|
||||||
|
return usernameField.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return new String(passwordField.getPassword());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,140 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.PacketCollector;
|
||||||
|
import org.jivesoftware.smack.SmackConfiguration;
|
||||||
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
|
import org.jivesoftware.smack.filter.PacketIDFilter;
|
||||||
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
|
import org.jivesoftware.smack.packet.Presence;
|
||||||
|
import org.jivesoftware.smack.packet.Registration;
|
||||||
|
import org.jivesoftware.spark.SparkManager;
|
||||||
|
import org.jivesoftware.spark.component.TitlePanel;
|
||||||
|
import org.jivesoftware.spark.component.renderer.JPanelRenderer;
|
||||||
|
import org.jivesoftware.spark.util.GraphicUtils;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport;
|
||||||
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportFactory;
|
||||||
|
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.awt.event.MouseAdapter;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.swing.DefaultListModel;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class Transports extends JPanel {
|
||||||
|
|
||||||
|
private JList list;
|
||||||
|
private DefaultListModel model = new DefaultListModel();
|
||||||
|
|
||||||
|
|
||||||
|
private RegistrationDialog registrationDialog;
|
||||||
|
|
||||||
|
|
||||||
|
public Transports(final XMPPConnection con) {
|
||||||
|
setLayout(new GridBagLayout());
|
||||||
|
|
||||||
|
list = new JList(model);
|
||||||
|
|
||||||
|
// Use JPanel Renderer
|
||||||
|
list.setCellRenderer(new JPanelRenderer());
|
||||||
|
|
||||||
|
|
||||||
|
registrationDialog = new RegistrationDialog();
|
||||||
|
|
||||||
|
TitlePanel titlePanel = new TitlePanel("Available Transports", "Register with these available transports.", null, true);
|
||||||
|
add(titlePanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
|
||||||
|
|
||||||
|
final JScrollPane pane = new JScrollPane(list);
|
||||||
|
add(pane, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
|
||||||
|
|
||||||
|
list.addMouseListener(new MouseAdapter() {
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
if (e.getClickCount() == 2) {
|
||||||
|
TransportItem item = (TransportItem)list.getSelectedValue();
|
||||||
|
Presence presence = con.getRoster().getPresence(item.getTransport().getServiceName());
|
||||||
|
boolean registered = presence != null && presence.getMode() != null;
|
||||||
|
if (registered) {
|
||||||
|
int confirm = JOptionPane.showConfirmDialog(item, "Would you like to disable this active transport?", "Disable Transport", JOptionPane.YES_NO_OPTION);
|
||||||
|
if (confirm == JOptionPane.YES_OPTION) {
|
||||||
|
try {
|
||||||
|
unregister(con, item.getTransport().getServiceName());
|
||||||
|
}
|
||||||
|
catch (XMPPException e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
registrationDialog.registerWithService(con, item.getTransport().getServiceName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
for (Transport transport : TransportFactory.getTransports()) {
|
||||||
|
final TransportItem transportItem = new TransportItem(transport, TransportFactory.isRegistered(con, transport), transport.getServiceName());
|
||||||
|
model.addElement(transportItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void unregister(XMPPConnection con, String gatewayDomain) throws XMPPException {
|
||||||
|
Registration registration = new Registration();
|
||||||
|
registration.setType(IQ.Type.SET);
|
||||||
|
registration.setTo(gatewayDomain);
|
||||||
|
Map map = new HashMap();
|
||||||
|
map.put("remove", "");
|
||||||
|
registration.setAttributes(map);
|
||||||
|
|
||||||
|
|
||||||
|
PacketCollector collector = con.createPacketCollector(new PacketIDFilter(registration.getPacketID()));
|
||||||
|
con.sendPacket(registration);
|
||||||
|
|
||||||
|
IQ response = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
|
||||||
|
collector.cancel();
|
||||||
|
if (response == null) {
|
||||||
|
throw new XMPPException("Server timed out");
|
||||||
|
}
|
||||||
|
if (response.getType() == IQ.Type.ERROR) {
|
||||||
|
throw new XMPPException("Error registering user", response.getError());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showTransports() {
|
||||||
|
final JFrame frame = new JFrame("Transports");
|
||||||
|
|
||||||
|
Transports panel = new Transports(SparkManager.getConnection());
|
||||||
|
|
||||||
|
|
||||||
|
frame.getContentPane().add(panel);
|
||||||
|
frame.pack();
|
||||||
|
frame.setSize(400, 200);
|
||||||
|
GraphicUtils.centerWindowOnScreen(frame);
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways.transports;
|
||||||
|
|
||||||
|
import org.jivesoftware.resource.SparkRes;
|
||||||
|
|
||||||
|
import javax.swing.Icon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AIMTransport implements Transport {
|
||||||
|
|
||||||
|
private String serviceName;
|
||||||
|
|
||||||
|
public AIMTransport(String serviceName){
|
||||||
|
this.serviceName = serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle(){
|
||||||
|
return "AIM Registration";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstructions() {
|
||||||
|
return "Enter your AIM Screen Name and password below.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Icon getIcon() {
|
||||||
|
return SparkRes.getImageIcon(SparkRes.AIM_TRANSPORT_ACTIVE_IMAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Icon getInactiveIcon() {
|
||||||
|
return SparkRes.getImageIcon(SparkRes.AIM_TRANSPORT_INACTIVE_IMAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getServiceName() {
|
||||||
|
return serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServiceName(String serviceName) {
|
||||||
|
this.serviceName = serviceName;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways.transports;
|
||||||
|
|
||||||
|
import org.jivesoftware.resource.SparkRes;
|
||||||
|
|
||||||
|
import javax.swing.Icon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MSNTransport implements Transport {
|
||||||
|
|
||||||
|
private String serviceName;
|
||||||
|
|
||||||
|
public MSNTransport(String serviceName) {
|
||||||
|
this.serviceName = serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return "MSN Registration";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstructions() {
|
||||||
|
return "Enter your MSN Screen Name and password below.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Icon getIcon() {
|
||||||
|
return SparkRes.getImageIcon(SparkRes.MSN_TRANSPORT_ACTIVE_IMAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Icon getInactiveIcon() {
|
||||||
|
return SparkRes.getImageIcon(SparkRes.MSN_TRANSPORT_INACTIVE_IMAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getServiceName() {
|
||||||
|
return serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServiceName(String serviceName) {
|
||||||
|
this.serviceName = serviceName;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
/**
|
||||||
|
* $Revision$
|
||||||
|
* $Date$
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999-2005 Jive Software. All rights reserved.
|
||||||
|
* This software is the proprietary information of Jive Software. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways.transports;
|
||||||
|
|
||||||
|
import javax.swing.Icon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface Transport {
|
||||||
|
|
||||||
|
String getTitle();
|
||||||
|
|
||||||
|
String getInstructions();
|
||||||
|
|
||||||
|
Icon getIcon();
|
||||||
|
|
||||||
|
Icon getInactiveIcon();
|
||||||
|
|
||||||
|
String getServiceName();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,54 @@
|
|||||||
|
/**
|
||||||
|
* $Revision: $
|
||||||
|
* $Date: $
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
||||||
|
* a copy of which is included in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jivesoftware.sparkimpl.plugin.gateways.transports;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.packet.Presence;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class TransportFactory {
|
||||||
|
|
||||||
|
private static Map<String, Transport> transports = new HashMap<String, Transport>();
|
||||||
|
|
||||||
|
|
||||||
|
private TransportFactory() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Transport getTransport(String serviceName) {
|
||||||
|
// Return transport.
|
||||||
|
if (transports.containsKey(serviceName)) {
|
||||||
|
return transports.get(serviceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addTransport(String serviceName, Transport transport) {
|
||||||
|
transports.put(serviceName, transport);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Collection<Transport> getTransports() {
|
||||||
|
return transports.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isRegistered(XMPPConnection con, Transport transport) {
|
||||||
|
Presence presence = con.getRoster().getPresence(transport.getServiceName());
|
||||||
|
boolean registered = presence != null && presence.getMode() != null;
|
||||||
|
return registered;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,33 +0,0 @@
|
|||||||
/**
|
|
||||||
* $Revision: $
|
|
||||||
* $Date: $
|
|
||||||
*
|
|
||||||
* Copyright (C) 2006 Jive Software. All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
|
||||||
* a copy of which is included in this distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jivesoftware.sparkimpl.plugin.transports;
|
|
||||||
|
|
||||||
import org.jivesoftware.spark.plugin.Plugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TransportPlugin implements Plugin {
|
|
||||||
|
|
||||||
public void initialize() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void shutdown() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canShutDown() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void uninstall() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
/**
|
|
||||||
* $Revision: $
|
|
||||||
* $Date: $
|
|
||||||
*
|
|
||||||
* Copyright (C) 2006 Jive Software. All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
|
||||||
* a copy of which is included in this distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jivesoftware.sparkimpl.plugin.transports;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TransportViewer {
|
|
||||||
}
|
|
||||||
@ -1,143 +0,0 @@
|
|||||||
/**
|
|
||||||
* $Revision: $
|
|
||||||
* $Date: $
|
|
||||||
*
|
|
||||||
* Copyright (C) 2006 Jive Software. All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is published under the terms of the GNU Lesser Public License (LGPL),
|
|
||||||
* a copy of which is included in this distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jivesoftware.sparkimpl.plugin.transports;
|
|
||||||
|
|
||||||
import org.jivesoftware.smack.PacketCollector;
|
|
||||||
import org.jivesoftware.smack.SmackConfiguration;
|
|
||||||
import org.jivesoftware.smack.XMPPConnection;
|
|
||||||
import org.jivesoftware.smack.XMPPException;
|
|
||||||
import org.jivesoftware.smack.filter.PacketIDFilter;
|
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
|
||||||
import org.jivesoftware.smack.packet.Presence;
|
|
||||||
import org.jivesoftware.smack.packet.Registration;
|
|
||||||
import org.jivesoftware.smackx.ServiceDiscoveryManager;
|
|
||||||
import org.jivesoftware.smackx.packet.DiscoverInfo;
|
|
||||||
import org.jivesoftware.smackx.packet.DiscoverInfo.Identity;
|
|
||||||
import org.jivesoftware.smackx.packet.DiscoverItems;
|
|
||||||
import org.jivesoftware.smackx.packet.DiscoverItems.Item;
|
|
||||||
import org.jivesoftware.spark.component.renderer.JPanelRenderer;
|
|
||||||
|
|
||||||
import java.awt.GridBagLayout;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.swing.DefaultListModel;
|
|
||||||
import javax.swing.JFrame;
|
|
||||||
import javax.swing.JList;
|
|
||||||
import javax.swing.JPanel;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TransportViewerPanel extends JPanel {
|
|
||||||
|
|
||||||
private JList list;
|
|
||||||
private DefaultListModel model = new DefaultListModel();
|
|
||||||
|
|
||||||
private static final String GATEWAY = "gateway";
|
|
||||||
|
|
||||||
|
|
||||||
public TransportViewerPanel() {
|
|
||||||
setLayout(new GridBagLayout());
|
|
||||||
|
|
||||||
list = new JList(model);
|
|
||||||
|
|
||||||
// Use JPanel Renderer
|
|
||||||
list.setCellRenderer(new JPanelRenderer());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void populateTransports(XMPPConnection con) throws Exception {
|
|
||||||
ServiceDiscoveryManager manager = ServiceDiscoveryManager.getInstanceFor(con);
|
|
||||||
|
|
||||||
DiscoverItems discoItems = manager.discoverItems(con.getServiceName());
|
|
||||||
|
|
||||||
DiscoverItems.Item item;
|
|
||||||
DiscoverInfo info;
|
|
||||||
DiscoverInfo.Identity identity;
|
|
||||||
|
|
||||||
Iterator it = discoItems.getItems();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
item = (Item)it.next();
|
|
||||||
info = manager.discoverInfo(item.getEntityID());
|
|
||||||
Iterator itx = info.getIdentities();
|
|
||||||
while (itx.hasNext()) {
|
|
||||||
identity = (Identity)itx.next();
|
|
||||||
|
|
||||||
if (identity.getCategory().equalsIgnoreCase(GATEWAY)) {
|
|
||||||
Presence presence = con.getRoster().getPresence(item.getEntityID());
|
|
||||||
boolean registered = presence != null && presence.getMode() != null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerUser(XMPPConnection con, String gatewayDomain, String username, String password) throws XMPPException {
|
|
||||||
Registration registration = new Registration();
|
|
||||||
registration.setType(IQ.Type.SET);
|
|
||||||
registration.setTo(gatewayDomain);
|
|
||||||
|
|
||||||
Map<String, String> attributes = new HashMap<String, String>();
|
|
||||||
attributes.put("username", username);
|
|
||||||
attributes.put("password", password);
|
|
||||||
registration.setAttributes(attributes);
|
|
||||||
|
|
||||||
PacketCollector collector = con.createPacketCollector(new PacketIDFilter(registration.getPacketID()));
|
|
||||||
con.sendPacket(registration);
|
|
||||||
|
|
||||||
IQ response = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
|
|
||||||
collector.cancel();
|
|
||||||
if (response == null) {
|
|
||||||
throw new XMPPException("Server timed out");
|
|
||||||
}
|
|
||||||
if (response.getType() == IQ.Type.ERROR) {
|
|
||||||
throw new XMPPException("Error registering user", response.getError());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void getForm(XMPPConnection con, String gateway) throws Exception {
|
|
||||||
Registration registration = new Registration();
|
|
||||||
registration.setType(IQ.Type.GET);
|
|
||||||
registration.setTo(gateway);
|
|
||||||
|
|
||||||
PacketCollector collector = con.createPacketCollector(new PacketIDFilter(registration.getPacketID()));
|
|
||||||
con.sendPacket(registration);
|
|
||||||
|
|
||||||
IQ response = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
|
|
||||||
collector.cancel();
|
|
||||||
if (response == null) {
|
|
||||||
throw new XMPPException("Server timed out");
|
|
||||||
}
|
|
||||||
if (response.getType() == IQ.Type.ERROR) {
|
|
||||||
throw new XMPPException("Error registering user", response.getError());
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String args[]) throws Exception {
|
|
||||||
XMPPConnection con = new XMPPConnection("derek", 5222);
|
|
||||||
con.login("derek", "test");
|
|
||||||
|
|
||||||
final JFrame frame = new JFrame("Test");
|
|
||||||
|
|
||||||
TransportViewerPanel panel = new TransportViewerPanel();
|
|
||||||
panel.populateTransports(con);
|
|
||||||
panel.getForm(con, "aim.derek");
|
|
||||||
|
|
||||||
frame.getContentPane().add(panel);
|
|
||||||
frame.pack();
|
|
||||||
frame.setVisible(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -120,4 +120,13 @@
|
|||||||
<description>Allows users to have bookmarks.</description>
|
<description>Allows users to have bookmarks.</description>
|
||||||
<class>org.jivesoftware.sparkimpl.plugin.bookmarks.BookmarkPlugin</class>
|
<class>org.jivesoftware.sparkimpl.plugin.bookmarks.BookmarkPlugin</class>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<name>Transports Plugin</name>
|
||||||
|
<version>1.0</version>
|
||||||
|
<author>Derek DeMoro</author>
|
||||||
|
<homePage>http://www.jivesoftware.com</homePage>
|
||||||
|
<email>derek@jivesoftware.com</email>
|
||||||
|
<description>Allows users to register with Gateways.</description>
|
||||||
|
<class>org.jivesoftware.sparkimpl.plugin.gateways.GatewayPlugin</class>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|||||||
BIN
src/resources/images/aim-gray.gif
Normal file
BIN
src/resources/images/aim-gray.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 124 B |
BIN
src/resources/images/icq-gray.gif
Normal file
BIN
src/resources/images/icq-gray.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 657 B |
BIN
src/resources/images/msn-gray.gif
Normal file
BIN
src/resources/images/msn-gray.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 594 B |
BIN
src/resources/images/yahoo-gray.gif
Normal file
BIN
src/resources/images/yahoo-gray.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 622 B |
Loading…
x
Reference in New Issue
Block a user