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.manager.Enterprise;
|
||||||
import org.jivesoftware.sparkimpl.plugin.transcripts.ChatTranscriptPlugin;
|
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.CardLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.GridBagConstraints;
|
import java.awt.GridBagConstraints;
|
||||||
@ -60,6 +53,13 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.TimerTask;
|
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
|
* 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;
|
boolean broadcast = message.getProperty("broadcast") != null;
|
||||||
|
|
||||||
if (body == null ||
|
if (body == null ||
|
||||||
isGroupChat ||
|
isGroupChat ||
|
||||||
broadcast ||
|
broadcast ||
|
||||||
message.getType() == Message.Type.normal ||
|
message.getType() == Message.Type.normal ||
|
||||||
message.getType() == Message.Type.headline ||
|
message.getType() == Message.Type.headline ||
|
||||||
message.getType() == Message.Type.error) {
|
message.getType() == Message.Type.error) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -471,6 +471,9 @@ public class ContactGroup extends CollapsiblePane implements MouseListener {
|
|||||||
Object o = null;
|
Object o = null;
|
||||||
try {
|
try {
|
||||||
int loc = contactItemList.locationToIndex(e.getPoint());
|
int loc = contactItemList.locationToIndex(e.getPoint());
|
||||||
|
if(loc == -1){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
o = model.getElementAt(loc);
|
o = model.getElementAt(loc);
|
||||||
if (!(o instanceof ContactItem)) {
|
if (!(o instanceof ContactItem)) {
|
||||||
|
|||||||
@ -124,7 +124,7 @@ public class GatewayButton extends JPanel {
|
|||||||
final JMenuItem unregisterMenu = new JMenuItem(Res.getString("menuitem.delete.login.information"));
|
final JMenuItem unregisterMenu = new JMenuItem(Res.getString("menuitem.delete.login.information"));
|
||||||
unregisterMenu.addActionListener(new ActionListener() {
|
unregisterMenu.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent actionEvent) {
|
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) {
|
if (confirm == JOptionPane.YES_OPTION) {
|
||||||
try {
|
try {
|
||||||
TransportUtils.unregister(SparkManager.getConnection(), transport.getServiceName());
|
TransportUtils.unregister(SparkManager.getConnection(), transport.getServiceName());
|
||||||
|
|||||||
@ -10,11 +10,14 @@
|
|||||||
|
|
||||||
package org.jivesoftware.sparkimpl.plugin.gateways;
|
package org.jivesoftware.sparkimpl.plugin.gateways;
|
||||||
|
|
||||||
|
import org.jivesoftware.resource.SparkRes;
|
||||||
import org.jivesoftware.smack.PacketListener;
|
import org.jivesoftware.smack.PacketListener;
|
||||||
import org.jivesoftware.smack.Roster;
|
|
||||||
import org.jivesoftware.smack.XMPPConnection;
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
import org.jivesoftware.smack.XMPPException;
|
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.filter.PacketTypeFilter;
|
||||||
|
import org.jivesoftware.smack.packet.Message;
|
||||||
import org.jivesoftware.smack.packet.Packet;
|
import org.jivesoftware.smack.packet.Packet;
|
||||||
import org.jivesoftware.smack.packet.Presence;
|
import org.jivesoftware.smack.packet.Presence;
|
||||||
import org.jivesoftware.smack.provider.ProviderManager;
|
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;
|
||||||
import org.jivesoftware.smackx.packet.DiscoverItems.Item;
|
import org.jivesoftware.smackx.packet.DiscoverItems.Item;
|
||||||
import org.jivesoftware.spark.ChatManager;
|
import org.jivesoftware.spark.ChatManager;
|
||||||
import org.jivesoftware.spark.SparkManager;
|
|
||||||
import org.jivesoftware.spark.PresenceManager;
|
import org.jivesoftware.spark.PresenceManager;
|
||||||
|
import org.jivesoftware.spark.SparkManager;
|
||||||
import org.jivesoftware.spark.plugin.Plugin;
|
import org.jivesoftware.spark.plugin.Plugin;
|
||||||
import org.jivesoftware.spark.ui.ContactGroup;
|
import org.jivesoftware.spark.ui.ContactGroup;
|
||||||
import org.jivesoftware.spark.ui.ContactItem;
|
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.Transport;
|
||||||
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportUtils;
|
import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportUtils;
|
||||||
import org.jivesoftware.sparkimpl.plugin.gateways.transports.YahooTransport;
|
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.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
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.
|
* Handles Gateways/Transports in Spark.
|
||||||
*
|
*
|
||||||
@ -88,7 +91,7 @@ public class GatewayPlugin implements Plugin, ContactItemHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(TransportUtils.getTransports().size() > 0){
|
if (TransportUtils.getTransports().size() > 0) {
|
||||||
final JPanel commandPanel = SparkManager.getWorkspace().getCommandPanel();
|
final JPanel commandPanel = SparkManager.getWorkspace().getCommandPanel();
|
||||||
final JLabel dividerLabel = new JLabel(SparkRes.getImageIcon("DIVIDER_IMAGE"));
|
final JLabel dividerLabel = new JLabel(SparkRes.getImageIcon("DIVIDER_IMAGE"));
|
||||||
commandPanel.add(dividerLabel);
|
commandPanel.add(dividerLabel);
|
||||||
@ -132,7 +135,7 @@ public class GatewayPlugin implements Plugin, ContactItemHandler {
|
|||||||
info = discoveryManager.discoverInfo(item.getEntityID());
|
info = discoveryManager.discoverInfo(item.getEntityID());
|
||||||
}
|
}
|
||||||
catch (XMPPException e) {
|
catch (XMPPException e) {
|
||||||
Log.debug("Unable to locate "+item);
|
Log.debug("Unable to locate " + item);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Iterator identities = info.getIdentities();
|
Iterator identities = info.getIdentities();
|
||||||
@ -168,23 +171,40 @@ public class GatewayPlugin implements Plugin, ContactItemHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void registerPresenceListener() {
|
private void registerPresenceListener() {
|
||||||
|
PacketFilter orFilter = new OrFilter(new PacketTypeFilter(Presence.class), new PacketTypeFilter(Message.class));
|
||||||
|
|
||||||
SparkManager.getConnection().addPacketListener(new PacketListener() {
|
SparkManager.getConnection().addPacketListener(new PacketListener() {
|
||||||
public void processPacket(Packet packet) {
|
public void processPacket(Packet packet) {
|
||||||
Presence presence = (Presence)packet;
|
if (packet instanceof Presence) {
|
||||||
Transport transport = TransportUtils.getTransport(packet.getFrom());
|
Presence presence = (Presence)packet;
|
||||||
if (transport != null) {
|
Transport transport = TransportUtils.getTransport(packet.getFrom());
|
||||||
boolean registered = true;
|
if (transport != null) {
|
||||||
if (presence.getType() == Presence.Type.unavailable) {
|
boolean registered = true;
|
||||||
registered = false;
|
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();
|
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.sending.file.to = Sending file to {0}.
|
||||||
message.you.have.sent = You have sent a 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.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.register.transports = Register with these available transports.
|
||||||
message.enter.aim = Enter your AIM username and password below.
|
message.enter.aim = Enter your AIM username and password below.
|
||||||
message.enter.msn = Enter your MSN username and password below.
|
message.enter.msn = Enter your MSN username and password below.
|
||||||
|
|||||||
Reference in New Issue
Block a user