Search in sources :

Example 1 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.

the class BuzzPlugin method initialize.

public void initialize() {
    ProviderManager.addExtensionProvider(ELEMENTNAME, NAMESPACE, new BuzzPacket.Provider());
    ProviderManager.addExtensionProvider(ELEMENTNAME_OLD, NAMESPACE_OLD, new BuzzPacket.Provider());
    SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
        if (stanza instanceof Message) {
            final Message message = (Message) stanza;
            boolean buzz = message.getExtension(ELEMENTNAME_OLD, NAMESPACE_OLD) != null || message.getExtension(ELEMENTNAME, NAMESPACE) != null;
            if (buzz) {
                SwingUtilities.invokeLater(() -> shakeWindow(message));
            }
        }
    }, new StanzaTypeFilter(Message.class));
    SparkManager.getChatManager().addChatRoomListener(new ChatRoomListener() {

        public void chatRoomOpened(final ChatRoom room) {
            TimerTask task = new SwingTimerTask() {

                public void doRun() {
                    addBuzzFeatureToChatRoom(room);
                }
            };
            TaskEngine.getInstance().schedule(task, 100);
        }

        public void chatRoomLeft(ChatRoom room) {
        }

        public void chatRoomClosed(ChatRoom room) {
        }

        public void chatRoomActivated(ChatRoom room) {
        }

        public void userHasJoined(ChatRoom room, String userid) {
        }

        public void userHasLeft(ChatRoom room, String userid) {
        }
    });
}
Also used : StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) SwingTimerTask(org.jivesoftware.spark.util.SwingTimerTask) Message(org.jivesoftware.smack.packet.Message) SwingTimerTask(org.jivesoftware.spark.util.SwingTimerTask) TimerTask(java.util.TimerTask) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) ChatRoomListener(org.jivesoftware.spark.ui.ChatRoomListener)

Example 2 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.

the class ChatContainer method addChatRoom.

/**
 * Adds a new ChatRoom to Spark.
 *
 * @param room the ChatRoom to add.
 */
public synchronized void addChatRoom(final ChatRoom room) {
    createFrameIfNeeded();
    room.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.LIGHT_GRAY));
    AndFilter presenceFilter = new AndFilter(new StanzaTypeFilter(Presence.class), FromMatchesFilter.createBare(room.getRoomname()));
    // Next, create a packet listener. We use an anonymous inner class for brevity.
    StanzaListener myListener = stanza -> SwingUtilities.invokeLater(() -> handleRoomPresence((Presence) stanza));
    room.registeredToFrame(chatFrame);
    SparkManager.getConnection().addAsyncStanzaListener(myListener, presenceFilter);
    // Add to PresenceMap
    presenceMap.put(room.getRoomname(), myListener);
    String tooltip;
    if (room instanceof ChatRoomImpl) {
        tooltip = ((ChatRoomImpl) room).getParticipantJID();
        String nickname = SparkManager.getUserManager().getUserNicknameFromJID(((ChatRoomImpl) room).getParticipantJID());
        tooltip = "<html><body><b>Contact:&nbsp;</b>" + nickname + "<br><b>JID:&nbsp;</b>" + tooltip;
    } else {
        tooltip = room.getRoomname();
    }
    // Create ChatRoom UI and dock
    SparkTab tab = addTab(room.getTabTitle(), room.getTabIcon(), room, tooltip);
    tab.addMouseListener(new MouseAdapter() {

        public void mouseReleased(MouseEvent e) {
            checkTabPopup(e);
        }

        public void mousePressed(MouseEvent e) {
            checkTabPopup(e);
        }
    });
    room.addMessageListener(this);
    // Remove brand panel
    final String title = getTabAt(0).getActualText();
    if (title.equals(WELCOME_TITLE)) {
        chatFrame.setTitle(room.getRoomTitle());
    }
    final TimerTask visibleTask = new SwingTimerTask() {

        public void doRun() {
            checkVisibility(room);
        }
    };
    TaskEngine.getInstance().schedule(visibleTask, 100);
    // Add to ChatRoomList
    chatRoomList.add(room);
    // Notify users that the chat room has been opened.
    fireChatRoomOpened(room);
    // Focus Chat
    focusChat();
    // Add Room listeners to override issue with input maps and keybinding on the mac.
    if (Spark.isMac()) {
        room.getChatInputEditor().addKeyListener(this);
    }
}
Also used : java.util(java.util) SparkTabbedPaneListener(org.jivesoftware.spark.component.tabbedPane.SparkTabbedPaneListener) SettingsManager(org.jivesoftware.sparkimpl.settings.local.SettingsManager) Res(org.jivesoftware.resource.Res) Log(org.jivesoftware.spark.util.log.Log) ChatRoomImpl(org.jivesoftware.spark.ui.rooms.ChatRoomImpl) MainWindow(org.jivesoftware.MainWindow) SparkToaster(org.jivesoftware.sparkimpl.plugin.alerts.SparkToaster) ChangeListener(javax.swing.event.ChangeListener) GroupChatRoomListener(org.jivesoftware.spark.ui.conferences.GroupChatRoomListener) AndFilter(org.jivesoftware.smack.filter.AndFilter) TaskEngine(org.jivesoftware.spark.util.TaskEngine) ChangeEvent(javax.swing.event.ChangeEvent) FromMatchesFilter(org.jivesoftware.smack.filter.FromMatchesFilter) Presence(org.jivesoftware.smack.packet.Presence) ChatManager(org.jivesoftware.spark.ChatManager) LocalPreferences(org.jivesoftware.sparkimpl.settings.local.LocalPreferences) SparkRes(org.jivesoftware.resource.SparkRes) SwingWorker(org.jivesoftware.spark.util.SwingWorker) SparkTabbedPane(org.jivesoftware.spark.component.tabbedPane.SparkTabbedPane) SparkTab(org.jivesoftware.spark.component.tabbedPane.SparkTab) GroupChatRoom(org.jivesoftware.spark.ui.rooms.GroupChatRoom) XmppStringUtils(org.jxmpp.util.XmppStringUtils) Spark(org.jivesoftware.Spark) java.awt(java.awt) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) List(java.util.List) SparkManager(org.jivesoftware.spark.SparkManager) java.awt.event(java.awt.event) SwingTimerTask(org.jivesoftware.spark.util.SwingTimerTask) Message(org.jivesoftware.smack.packet.Message) Pattern(java.util.regex.Pattern) StanzaListener(org.jivesoftware.smack.StanzaListener) javax.swing(javax.swing) AndFilter(org.jivesoftware.smack.filter.AndFilter) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) SparkTab(org.jivesoftware.spark.component.tabbedPane.SparkTab) SwingTimerTask(org.jivesoftware.spark.util.SwingTimerTask) SwingTimerTask(org.jivesoftware.spark.util.SwingTimerTask) Presence(org.jivesoftware.smack.packet.Presence) StanzaListener(org.jivesoftware.smack.StanzaListener) ChatRoomImpl(org.jivesoftware.spark.ui.rooms.ChatRoomImpl)

Example 3 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.

the class GatewayPlugin method registerPresenceListener.

private void registerPresenceListener() {
    StanzaFilter orFilter = new OrFilter(new StanzaTypeFilter(Presence.class), new StanzaTypeFilter(Message.class));
    SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
        if (stanza instanceof Presence) {
            Presence presence = (Presence) stanza;
            Transport transport = TransportUtils.getTransport(stanza.getFrom());
            if (transport != null) {
                boolean registered = true;
                if (presence.getType() == Presence.Type.unavailable) {
                    registered = false;
                }
                GatewayItem button = uiMap.get(transport);
                button.signedIn(registered);
                SwingWorker worker = new SwingWorker() {

                    @Override
                    public Object construct() {
                        transferTab.revalidate();
                        transferTab.repaint();
                        return 41;
                    }
                };
                worker.start();
            }
        } else if (stanza instanceof Message) {
            Message message = (Message) stanza;
            String from = message.getFrom();
            boolean hasError = message.getType() == Message.Type.error;
            String body = message.getBody();
            if (from != null && hasError) {
                Transport transport = TransportUtils.getTransport(from);
                if (transport != null) {
                    String title = "Alert from " + transport.getName();
                    // Show error
                    MessageDialog.showAlert(body, title, "Information", SparkRes.getImageIcon(SparkRes.INFORMATION_IMAGE));
                }
            }
        }
    }, orFilter);
    ChatManager chatManager = SparkManager.getChatManager();
    chatManager.addContactItemHandler(this);
    // Iterate through Contacts and check for
    final ContactList contactList = SparkManager.getWorkspace().getContactList();
    for (ContactGroup contactGroup : contactList.getContactGroups()) {
        for (ContactItem contactItem : contactGroup.getContactItems()) {
            Presence presence = contactItem.getPresence();
            if (presence.isAvailable()) {
                String domain = XmppStringUtils.parseDomain(presence.getFrom());
                Transport transport = TransportUtils.getTransport(domain);
                if (transport != null) {
                    handlePresence(contactItem, presence);
                    contactGroup.fireContactGroupUpdated();
                }
            }
        }
    }
    SparkManager.getSessionManager().addPresenceListener(presence -> {
        for (Transport transport : TransportUtils.getTransports()) {
            GatewayItem button = uiMap.get(transport);
            if (button.isLoggedIn()) {
                if (!presence.isAvailable()) {
                    return;
                }
                // Create new presence
                Presence p = new Presence(presence.getType(), presence.getStatus(), presence.getPriority(), presence.getMode());
                p.setTo(transport.getServiceName());
                try {
                    SparkManager.getConnection().sendStanza(p);
                } catch (SmackException.NotConnectedException e) {
                    Log.warning("Unable to forward presence change to transport.", e);
                }
            }
        }
    });
}
Also used : StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) Message(org.jivesoftware.smack.packet.Message) SmackException(org.jivesoftware.smack.SmackException) OrFilter(org.jivesoftware.smack.filter.OrFilter) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) Presence(org.jivesoftware.smack.packet.Presence) SwingWorker(org.jivesoftware.spark.util.SwingWorker) ChatManager(org.jivesoftware.spark.ChatManager)

Example 4 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.

the class TicTacToePlugin method initialize.

@Override
public void initialize() {
    ClassLoader cl = getClass().getClassLoader();
    buttonimg = new ImageIcon(cl.getResource("ttt.button.png"));
    _currentInvitations = new HashSet<String>();
    ProviderManager.addIQProvider(GameOfferPacket.ELEMENT_NAME, GameOfferPacket.NAMESPACE, new GameOfferPacket.Provider());
    ProviderManager.addExtensionProvider(MovePacket.ELEMENT_NAME, MovePacket.NAMESPACE, new MovePacket.Provider());
    ProviderManager.addExtensionProvider(InvalidMove.ELEMENT_NAME, InvalidMove.NAMESPACE, new InvalidMove.Provider());
    // Add IQ listener to listen for incoming game invitations.
    _gameOfferListener = new StanzaListener() {

        public void processPacket(Stanza stanza) {
            GameOfferPacket invitation = (GameOfferPacket) stanza;
            if (invitation.getType() == IQ.Type.get) {
                showInvitationAlert(invitation);
            }
        }
    };
    SparkManager.getConnection().addAsyncStanzaListener(_gameOfferListener, new StanzaTypeFilter(GameOfferPacket.class));
    addButtonToToolBar();
}
Also used : ImageIcon(javax.swing.ImageIcon) Stanza(org.jivesoftware.smack.packet.Stanza) StanzaListener(org.jivesoftware.smack.StanzaListener) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) MovePacket(tic.tac.toe.packet.MovePacket) GameOfferPacket(tic.tac.toe.packet.GameOfferPacket) InvalidMove(tic.tac.toe.packet.InvalidMove)

Example 5 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.

the class VCardManager method startQueueListener.

/**
 * Listens for new VCards to lookup in a queue.
 */
private void startQueueListener() {
    final Runnable queueListener = () -> {
        while (true) {
            try {
                String jid = queue.take();
                reloadVCard(jid);
            } catch (InterruptedException e) {
                e.printStackTrace();
                break;
            }
        }
    };
    TaskEngine.getInstance().submit(queueListener);
    StanzaFilter filter = new StanzaTypeFilter(VCard.class);
    StanzaListener myListener = stanza -> {
        if (stanza instanceof VCard) {
            VCard VCardpacket = (VCard) stanza;
            String jid = VCardpacket.getFrom();
            if (VCardpacket.getType().equals(IQ.Type.result) && jid != null && delayedContacts.contains(jid)) {
                delayedContacts.remove(jid);
                addVCard(jid, VCardpacket);
                persistVCard(jid, VCardpacket);
            }
        }
    };
    SparkManager.getConnection().addAsyncStanzaListener(myListener, filter);
}
Also used : SmackException(org.jivesoftware.smack.SmackException) java.util(java.util) ExtensionElement(org.jivesoftware.smack.packet.ExtensionElement) URL(java.net.URL) Res(org.jivesoftware.resource.Res) ProviderManager(org.jivesoftware.smack.provider.ProviderManager) Log(org.jivesoftware.spark.util.log.Log) ContactItem(org.jivesoftware.spark.ui.ContactItem) VCard(org.jivesoftware.smackx.vcardtemp.packet.VCard) VCardUpdateExtension(org.jivesoftware.sparkimpl.profile.ext.VCardUpdateExtension) Default(org.jivesoftware.resource.Default) XMPPError(org.jivesoftware.smack.packet.XMPPError) Duration(java.time.Duration) ImageIO(javax.imageio.ImageIO) Enterprise(org.jivesoftware.sparkimpl.plugin.manager.Enterprise) XmlPullParser(org.xmlpull.v1.XmlPullParser) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) Presence(org.jivesoftware.smack.packet.Presence) BufferedImage(java.awt.image.BufferedImage) MalformedURLException(java.net.MalformedURLException) SparkRes(org.jivesoftware.resource.SparkRes) SwingWorker(org.jivesoftware.spark.util.SwingWorker) Instant(java.time.Instant) Base64(org.jivesoftware.spark.util.Base64) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) VCardProvider(org.jivesoftware.smackx.vcardtemp.provider.VCardProvider) XmppStringUtils(org.jxmpp.util.XmppStringUtils) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) java.awt(java.awt) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) List(java.util.List) java.io(java.io) SparkManager(org.jivesoftware.spark.SparkManager) JabberAvatarExtension(org.jivesoftware.sparkimpl.profile.ext.JabberAvatarExtension) MXParser(org.xmlpull.mxp1.MXParser) org.jivesoftware.spark.util(org.jivesoftware.spark.util) StanzaListener(org.jivesoftware.smack.StanzaListener) XMPPException(org.jivesoftware.smack.XMPPException) IQ(org.jivesoftware.smack.packet.IQ) javax.swing(javax.swing) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) StanzaListener(org.jivesoftware.smack.StanzaListener) VCard(org.jivesoftware.smackx.vcardtemp.packet.VCard)

Aggregations

StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)26 Presence (org.jivesoftware.smack.packet.Presence)15 AndFilter (org.jivesoftware.smack.filter.AndFilter)9 StanzaListener (org.jivesoftware.smack.StanzaListener)8 StanzaFilter (org.jivesoftware.smack.filter.StanzaFilter)7 Message (org.jivesoftware.smack.packet.Message)7 ContactItem (org.jivesoftware.spark.ui.ContactItem)7 StanzaCollector (org.jivesoftware.smack.StanzaCollector)6 Stanza (org.jivesoftware.smack.packet.Stanza)6 ChatRoom (org.jivesoftware.spark.ui.ChatRoom)6 ActionEvent (java.awt.event.ActionEvent)5 ContactList (org.jivesoftware.spark.ui.ContactList)5 MouseEvent (java.awt.event.MouseEvent)4 List (java.util.List)4 SmackException (org.jivesoftware.smack.SmackException)4 IQ (org.jivesoftware.smack.packet.IQ)4 SwingWorker (org.jivesoftware.spark.util.SwingWorker)4 Log (org.jivesoftware.spark.util.log.Log)4 XmppStringUtils (org.jxmpp.util.XmppStringUtils)4 java.awt (java.awt)3