mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-12-01 12:27:58 +00:00
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:
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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.
|
||||
|
||||
Reference in New Issue
Block a user