Fixed notification issue with gateway errors.

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@7618 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro
2007-03-21 06:31:38 +00:00
committed by derek
parent 450a65937d
commit b50498851c
5 changed files with 57 additions and 34 deletions

View File

@ -43,13 +43,6 @@ import org.jivesoftware.sparkimpl.plugin.gateways.GatewayPlugin;
import org.jivesoftware.sparkimpl.plugin.manager.Enterprise;
import org.jivesoftware.sparkimpl.plugin.transcripts.ChatTranscriptPlugin;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
@ -60,6 +53,13 @@ import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
/**
* The inner Container for Spark. The Workspace is the container for all plugins into the Spark
@ -322,11 +322,11 @@ public class Workspace extends JPanel implements PacketListener {
boolean broadcast = message.getProperty("broadcast") != null;
if (body == null ||
isGroupChat ||
broadcast ||
message.getType() == Message.Type.normal ||
message.getType() == Message.Type.headline ||
message.getType() == Message.Type.error) {
isGroupChat ||
broadcast ||
message.getType() == Message.Type.normal ||
message.getType() == Message.Type.headline ||
message.getType() == Message.Type.error) {
return;
}

View File

@ -471,6 +471,9 @@ public class ContactGroup extends CollapsiblePane implements MouseListener {
Object o = null;
try {
int loc = contactItemList.locationToIndex(e.getPoint());
if(loc == -1){
return;
}
o = model.getElementAt(loc);
if (!(o instanceof ContactItem)) {

View File

@ -124,7 +124,7 @@ public class GatewayButton extends JPanel {
final JMenuItem unregisterMenu = new JMenuItem(Res.getString("menuitem.delete.login.information"));
unregisterMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
int confirm = JOptionPane.showConfirmDialog(SparkManager.getMainWindow(), Res.getString("message.disable.transport"), Res.getString("title.disable.transport"), JOptionPane.YES_NO_OPTION);
int confirm = JOptionPane.showConfirmDialog(SparkManager.getMainWindow(), Res.getString("message.disable.transport", transport.getName()), Res.getString("title.disable.transport"), JOptionPane.YES_NO_OPTION);
if (confirm == JOptionPane.YES_OPTION) {
try {
TransportUtils.unregister(SparkManager.getConnection(), transport.getServiceName());

View File

@ -10,11 +10,14 @@
package org.jivesoftware.sparkimpl.plugin.gateways;
import org.jivesoftware.resource.SparkRes;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.OrFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.provider.ProviderManager;
@ -25,8 +28,8 @@ import org.jivesoftware.smackx.packet.DiscoverInfo.Identity;
import org.jivesoftware.smackx.packet.DiscoverItems;
import org.jivesoftware.smackx.packet.DiscoverItems.Item;
import org.jivesoftware.spark.ChatManager;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.PresenceManager;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.plugin.Plugin;
import org.jivesoftware.spark.ui.ContactGroup;
import org.jivesoftware.spark.ui.ContactItem;
@ -41,16 +44,16 @@ import org.jivesoftware.sparkimpl.plugin.gateways.transports.MSNTransport;
import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport;
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportUtils;
import org.jivesoftware.sparkimpl.plugin.gateways.transports.YahooTransport;
import org.jivesoftware.resource.SparkRes;
import javax.swing.Icon;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/**
* Handles Gateways/Transports in Spark.
*
@ -88,7 +91,7 @@ public class GatewayPlugin implements Plugin, ContactItemHandler {
return;
}
if(TransportUtils.getTransports().size() > 0){
if (TransportUtils.getTransports().size() > 0) {
final JPanel commandPanel = SparkManager.getWorkspace().getCommandPanel();
final JLabel dividerLabel = new JLabel(SparkRes.getImageIcon("DIVIDER_IMAGE"));
commandPanel.add(dividerLabel);
@ -132,7 +135,7 @@ public class GatewayPlugin implements Plugin, ContactItemHandler {
info = discoveryManager.discoverInfo(item.getEntityID());
}
catch (XMPPException e) {
Log.debug("Unable to locate "+item);
Log.debug("Unable to locate " + item);
continue;
}
Iterator identities = info.getIdentities();
@ -168,23 +171,40 @@ public class GatewayPlugin implements Plugin, ContactItemHandler {
}
private void registerPresenceListener() {
PacketFilter orFilter = new OrFilter(new PacketTypeFilter(Presence.class), new PacketTypeFilter(Message.class));
SparkManager.getConnection().addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Presence presence = (Presence)packet;
Transport transport = TransportUtils.getTransport(packet.getFrom());
if (transport != null) {
boolean registered = true;
if (presence.getType() == Presence.Type.unavailable) {
registered = false;
if (packet instanceof Presence) {
Presence presence = (Presence)packet;
Transport transport = TransportUtils.getTransport(packet.getFrom());
if (transport != null) {
boolean registered = true;
if (presence.getType() == Presence.Type.unavailable) {
registered = false;
}
GatewayButton button = uiMap.get(transport);
button.signedIn(registered);
}
GatewayButton button = uiMap.get(transport);
button.signedIn(registered);
}
else if (packet instanceof Message) {
Message message = (Message)packet;
String from = message.getFrom();
boolean hasError = message.getType() == Message.Type.error;
String body = message.getBody();
if (from != null && hasError) {
Transport transport = TransportUtils.getTransport(from);
String title = "Alert from " + transport.getName();
if (transport != null) {
// Show error
JOptionPane.showMessageDialog(SparkManager.getMainWindow(), body, title, JOptionPane.ERROR_MESSAGE);
}
}
}
}
}, new PacketTypeFilter(Presence.class));
}, orFilter);
ChatManager chatManager = SparkManager.getChatManager();

View File

@ -412,7 +412,7 @@ message.unable.to.send.file = You were unable to send the file to {0}.
message.sending.file.to = Sending file to {0}.
message.you.have.sent = You have sent a file to {0}.
message.file.transfer.rejected = The file transfer was not accepted by {0}.
message.disable.transport = Remove login information from gateway?
message.disable.transport = Remove login information from {0}?
message.register.transports = Register with these available transports.
message.enter.aim = Enter your AIM username and password below.
message.enter.msn = Enter your MSN username and password below.