Search in sources :

Example 16 with StanzaTypeFilter

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

the class SparkTransferManager method sendFile.

/**
 * Send a file to a user.
 *
 * @param file the file to send.
 * @param jid  the jid of the user to send the file to.
 * @return the ChatRoom of the user.
 */
public ChatRoom sendFile(File file, String jid) {
    long maxsize = Long.parseLong(Default.getString(Default.FILE_TRANSFER_MAXIMUM_SIZE));
    long warningsize = Long.parseLong(Default.getString(Default.FILE_TRANSFER_WARNING_SIZE));
    if (file.length() >= maxsize && maxsize != -1) {
        String maxsizeString = TransferUtils.getAppropriateByteWithSuffix(maxsize);
        String yoursizeString = TransferUtils.getAppropriateByteWithSuffix(file.length());
        String output = Res.getString("message.file.transfer.file.too.big.error", maxsizeString, yoursizeString);
        UIManager.put("OptionPane.okButtonText", Res.getString("ok"));
        JOptionPane.showMessageDialog(null, output, Res.getString("title.error"), JOptionPane.ERROR_MESSAGE);
        return null;
    }
    if (file.length() >= warningsize && warningsize != -1) {
        int result = JOptionPane.showConfirmDialog(null, Res.getString("message.file.transfer.file.too.big.warning"), Res.getString("title.error"), JOptionPane.YES_NO_OPTION);
        if (result != 0) {
            return null;
        }
    }
    final ContactList contactList = SparkManager.getWorkspace().getContactList();
    String bareJID = XmppStringUtils.parseBareJid(jid);
    String fullJID = PresenceManager.getFullyQualifiedJID(jid);
    if (!PresenceManager.isOnline(jid)) {
        ArrayList<File> list = waitMap.get(jid);
        if (list == null) {
            list = new ArrayList<>();
        }
        list.add(file);
        waitMap.put(jid, list);
        ChatRoom chatRoom;
        ContactItem contactItem = contactList.getContactItemByJID(jid);
        if (contactItem != null) {
            chatRoom = SparkManager.getChatManager().createChatRoom(jid, contactItem.getDisplayName(), contactItem.getDisplayName());
        } else {
            chatRoom = SparkManager.getChatManager().createChatRoom(jid, jid, jid);
        }
        chatRoom.getTranscriptWindow().insertNotificationMessage("The user is offline. Will auto-send \"" + file.getName() + "\" when user comes back online.", ChatManager.ERROR_COLOR);
        return null;
    }
    // Create the outgoing file transfer
    final OutgoingFileTransfer transfer = transferManager.createOutgoingFileTransfer(fullJID);
    ContactItem contactItem = contactList.getContactItemByJID(bareJID);
    ChatRoom chatRoom;
    if (contactItem != null) {
        chatRoom = SparkManager.getChatManager().createChatRoom(bareJID, contactItem.getDisplayName(), contactItem.getDisplayName());
    } else {
        chatRoom = SparkManager.getChatManager().createChatRoom(bareJID, bareJID, bareJID);
    }
    TranscriptWindow transcriptWindow = chatRoom.getTranscriptWindow();
    SendFileTransfer sendingUI = new SendFileTransfer();
    try {
        transfer.sendFile(file, "Sending file");
    } catch (SmackException e) {
        Log.error(e);
    }
    // Add listener to cancel transfer is sending file to user who just went offline.
    AndFilter presenceFilter = new AndFilter(new StanzaTypeFilter(Presence.class), FromMatchesFilter.createBare(bareJID));
    final StanzaListener packetListener = stanza -> {
        Presence presence = (Presence) stanza;
        if (!presence.isAvailable()) {
            if (transfer != null) {
                transfer.cancel();
            }
        }
    };
    // Add presence listener to check if user is offline and cancel sending.
    SparkManager.getConnection().addAsyncStanzaListener(packetListener, presenceFilter);
    chatRoom.addClosingListener(() -> {
        SparkManager.getConnection().removeAsyncStanzaListener(packetListener);
        if (!transfer.isDone()) {
            transfer.cancel();
        }
    });
    try {
        sendingUI.sendFile(transfer, transferManager, fullJID, contactItem.getDisplayName());
    } catch (NullPointerException e) {
        Log.error(e);
    }
    transcriptWindow.addComponent(sendingUI);
    chatRoom.scrollToBottom();
    return chatRoom;
}
Also used : OutgoingFileTransfer(org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer) Color(java.awt.Color) UIManager(javax.swing.UIManager) URL(java.net.URL) Cursor(java.awt.Cursor) URISyntaxException(java.net.URISyntaxException) StringUtils(org.jivesoftware.smack.util.StringUtils) Res(org.jivesoftware.resource.Res) Log(org.jivesoftware.spark.util.log.Log) TransferUtils(org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.TransferUtils) ContactItem(org.jivesoftware.spark.ui.ContactItem) ResourceUtils(org.jivesoftware.spark.util.ResourceUtils) GraphicsEnvironment(java.awt.GraphicsEnvironment) FileDialog(java.awt.FileDialog) TranscriptWindow(org.jivesoftware.spark.ui.TranscriptWindow) Map(java.util.Map) MouseAdapter(java.awt.event.MouseAdapter) ImageIO(javax.imageio.ImageIO) ChatRoomImpl(org.jivesoftware.spark.ui.rooms.ChatRoomImpl) MainWindow(org.jivesoftware.MainWindow) PreferenceManager(org.jivesoftware.spark.preference.PreferenceManager) URI(java.net.URI) FileTransferPreference(org.jivesoftware.spark.filetransfer.preferences.FileTransferPreference) Enterprise(org.jivesoftware.sparkimpl.plugin.manager.Enterprise) AndFilter(org.jivesoftware.smack.filter.AndFilter) FromMatchesFilter(org.jivesoftware.smack.filter.FromMatchesFilter) org.jivesoftware.smack(org.jivesoftware.smack) Frame(java.awt.Frame) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) ChatManager(org.jivesoftware.spark.ChatManager) FileTransferManager(org.jivesoftware.smackx.filetransfer.FileTransferManager) BufferedImage(java.awt.image.BufferedImage) SparkRes(org.jivesoftware.resource.SparkRes) SendFileTransfer(org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.SendFileTransfer) JMenu(javax.swing.JMenu) ChatRoomListenerAdapter(org.jivesoftware.spark.ui.ChatRoomListenerAdapter) KeyEvent(java.awt.event.KeyEvent) ImageSelectionPanel(org.jivesoftware.spark.ui.ImageSelectionPanel) Spark(org.jivesoftware.Spark) List(java.util.List) AWTException(java.awt.AWTException) Toolkit(java.awt.Toolkit) Downloads(org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.Downloads) FileTransferRequest(org.jivesoftware.smackx.filetransfer.FileTransferRequest) Rectangle(java.awt.Rectangle) DataFlavor(java.awt.datatransfer.DataFlavor) ChatRoomButton(org.jivesoftware.spark.ui.ChatRoomButton) GraphicsDevice(java.awt.GraphicsDevice) Transferable(java.awt.datatransfer.Transferable) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) HashMap(java.util.HashMap) ReceiveFileTransfer(org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.ReceiveFileTransfer) KeyAdapter(java.awt.event.KeyAdapter) ArrayList(java.util.ArrayList) SwingUtilities(javax.swing.SwingUtilities) Robot(java.awt.Robot) JMenuItem(javax.swing.JMenuItem) Default(org.jivesoftware.resource.Default) PresenceManager(org.jivesoftware.spark.PresenceManager) OutgoingFileTransfer(org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer) Desktop(java.awt.Desktop) Presence(org.jivesoftware.smack.packet.Presence) Iterator(java.util.Iterator) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) SwingWorker(org.jivesoftware.spark.util.SwingWorker) JOptionPane(javax.swing.JOptionPane) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) XmppStringUtils(org.jxmpp.util.XmppStringUtils) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) ContactList(org.jivesoftware.spark.ui.ContactList) SparkManager(org.jivesoftware.spark.SparkManager) InBandBytestreamManager(org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager) Message(org.jivesoftware.smack.packet.Message) ChatFrame(org.jivesoftware.spark.ui.ChatFrame) ContactItem(org.jivesoftware.spark.ui.ContactItem) SendFileTransfer(org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.SendFileTransfer) ContactList(org.jivesoftware.spark.ui.ContactList) AndFilter(org.jivesoftware.smack.filter.AndFilter) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) TranscriptWindow(org.jivesoftware.spark.ui.TranscriptWindow) Presence(org.jivesoftware.smack.packet.Presence) File(java.io.File)

Example 17 with StanzaTypeFilter

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

the class BroadcastPlugin method initialize.

@Override
public void initialize() {
    // See if we should disable all "Broadcast" menu items
    if (Default.getBoolean(Default.DISABLE_BROADCAST_MENU_ITEM) || !Enterprise.containsFeature(Enterprise.BROADCAST_FEATURE)) {
        return;
    }
    // Add as ContainerDecoratr
    SparkManager.getChatManager().addSparkTabHandler(this);
    StanzaFilter serverFilter = new StanzaTypeFilter(Message.class);
    SparkManager.getConnection().addAsyncStanzaListener(this, serverFilter);
    // Register with action menu
    final JMenu actionsMenu = SparkManager.getMainWindow().getMenuByName(Res.getString("menuitem.actions"));
    JMenuItem broadcastHistoryMenu = new JMenuItem(Res.getString("title.broadcast.history"), SparkRes.getImageIcon(SparkRes.HISTORY_16x16));
    JMenuItem broadcastMenu = new JMenuItem(Res.getString("title.broadcast.message"), SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));
    ResourceUtils.resButton(broadcastMenu, Res.getString("title.broadcast.message"));
    actionsMenu.add(broadcastHistoryMenu);
    actionsMenu.add(broadcastMenu);
    broadcastMenu.addActionListener(e -> broadcastToRoster());
    broadcastHistoryMenu.addActionListener(e -> new BroadcastHistoryFrame().run());
    // Register with action menu
    JMenuItem startConversationtMenu = new JMenuItem("", SparkRes.getImageIcon(SparkRes.SMALL_MESSAGE_IMAGE));
    ResourceUtils.resButton(startConversationtMenu, Res.getString("menuitem.start.a.chat"));
    if (!Default.getBoolean(Default.HIDE_START_A_CHAT) && Enterprise.containsFeature(Enterprise.START_A_CHAT_FEATURE)) {
        actionsMenu.add(startConversationtMenu, 0);
    }
    startConversationtMenu.addActionListener(e -> {
        ContactList contactList = SparkManager.getWorkspace().getContactList();
        Collection<ContactItem> selectedUsers = contactList.getSelectedUsers();
        String selectedUser = "";
        Iterator<ContactItem> selectedUsersIterator = selectedUsers.iterator();
        if (selectedUsersIterator.hasNext()) {
            ContactItem contactItem = selectedUsersIterator.next();
            selectedUser = contactItem.getJid().toString();
        }
        UIManager.put("OptionPane.okButtonText", Res.getString("ok"));
        UIManager.put("OptionPane.cancelButtonText", Res.getString("cancel"));
        String jid = (String) JOptionPane.showInputDialog(SparkManager.getMainWindow(), Res.getString("label.enter.address"), Res.getString("title.start.chat"), JOptionPane.QUESTION_MESSAGE, null, null, selectedUser);
        if (ModelUtil.hasLength(jid) && ModelUtil.hasLength(XmppStringUtils.parseDomain(jid))) {
            if (ModelUtil.hasLength(jid) && jid.indexOf('@') == -1) {
                // Append server address
                jid = jid + "@" + SparkManager.getConnection().getXMPPServiceDomain();
            }
            EntityBareJid entityBareJid = JidCreate.entityBareFromUnescapedOrThrowUnchecked(jid);
            String nickname = SparkManager.getUserManager().getUserNicknameFromJID(entityBareJid);
            ChatRoom chatRoom = SparkManager.getChatManager().createChatRoom(entityBareJid, nickname, nickname);
            SparkManager.getChatManager().getChatContainer().activateChatRoom(chatRoom);
        }
    });
    // Add send to selected users.
    final ContactList contactList = SparkManager.getWorkspace().getContactList();
    contactList.addContextMenuListener(new ContextMenuListener() {

        @Override
        public void poppingUp(Object component, JPopupMenu popup) {
            if (component instanceof ContactGroup) {
                final ContactGroup group = (ContactGroup) component;
                Action broadcastMessageAction = new AbstractAction() {

                    private static final long serialVersionUID = -6411248110270296726L;

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        broadcastToGroup(group);
                    }
                };
                broadcastMessageAction.putValue(Action.NAME, Res.getString("menuitem.broadcast.to.group"));
                broadcastMessageAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));
                popup.add(broadcastMessageAction);
            }
        }

        @Override
        public void poppingDown(JPopupMenu popup) {
        }

        @Override
        public boolean handleDefaultAction(MouseEvent e) {
            return false;
        }
    });
    // Add Broadcast to roster
    StatusBar statusBar = SparkManager.getWorkspace().getStatusBar();
    RolloverButton broadcastToRosterButton = new RolloverButton(SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));
    broadcastToRosterButton.setToolTipText(Res.getString("message.send.a.broadcast"));
    statusBar.invalidate();
    statusBar.validate();
    statusBar.repaint();
    broadcastToRosterButton.addActionListener(e -> broadcastToRoster());
}
Also used : AbstractAction(javax.swing.AbstractAction) Action(javax.swing.Action) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) MouseEvent(java.awt.event.MouseEvent) ActionEvent(java.awt.event.ActionEvent) ContactItem(org.jivesoftware.spark.ui.ContactItem) ContextMenuListener(org.jivesoftware.spark.plugin.ContextMenuListener) ContactList(org.jivesoftware.spark.ui.ContactList) StatusBar(org.jivesoftware.spark.ui.status.StatusBar) RolloverButton(org.jivesoftware.spark.component.RolloverButton) JPopupMenu(javax.swing.JPopupMenu) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) JMenuItem(javax.swing.JMenuItem) BroadcastHistoryFrame(org.jivesoftware.spark.ui.BroadcastHistoryFrame) ContactGroup(org.jivesoftware.spark.ui.ContactGroup) EntityBareJid(org.jxmpp.jid.EntityBareJid) AbstractAction(javax.swing.AbstractAction) JMenu(javax.swing.JMenu)

Example 18 with StanzaTypeFilter

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

the class PresenceChangePlugin method initialize.

@Override
public void initialize() {
    // Listen for right-clicks on ContactItem
    final ContactList contactList = SparkManager.getWorkspace().getContactList();
    final Action listenAction = new AbstractAction() {

        private static final long serialVersionUID = 7705539667621148816L;

        @Override
        public void actionPerformed(ActionEvent e) {
            for (ContactItem item : contactList.getSelectedUsers()) {
                BareJid bareAddress = item.getJid().asBareJid();
                sparkContacts.add(bareAddress);
            }
        }
    };
    listenAction.putValue(Action.NAME, Res.getString("menuitem.alert.when.online"));
    listenAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_ALARM_CLOCK));
    final Action removeAction = new AbstractAction() {

        private static final long serialVersionUID = -8726129089417116105L;

        @Override
        public void actionPerformed(ActionEvent e) {
            for (ContactItem item : contactList.getSelectedUsers()) {
                BareJid bareAddress = item.getJid().asBareJid();
                sparkContacts.remove(bareAddress);
            }
        }
    };
    removeAction.putValue(Action.NAME, Res.getString("menuitem.remove.alert.when.online"));
    removeAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_DELETE));
    contactList.addContextMenuListener(new ContextMenuListener() {

        @Override
        public void poppingUp(Object object, JPopupMenu popup) {
            if (object instanceof ContactItem) {
                ContactItem item = (ContactItem) object;
                BareJid bareAddress = item.getJid();
                if (!item.getPresence().isAvailable() || item.getPresence().isAway()) {
                    if (sparkContacts.contains(bareAddress)) {
                        popup.add(removeAction);
                    } else {
                        popup.add(listenAction);
                    }
                }
            }
        }

        @Override
        public void poppingDown(JPopupMenu popup) {
        }

        @Override
        public boolean handleDefaultAction(MouseEvent e) {
            return false;
        }
    });
    // Check presence changes
    SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
        try {
            Presence presence = (Presence) stanza;
            if (!presence.isAvailable() || presence.isAway()) {
                return;
            }
            Jid from = presence.getFrom();
            ArrayList<BareJid> removelater = new ArrayList<>();
            for (final BareJid jid : sparkContacts) {
                if (jid.equals(from.asBareJid())) {
                    removelater.add(jid);
                    // sparkContacts.remove(jid);
                    String nickname = SparkManager.getUserManager().getUserNicknameFromJID(jid);
                    String time = SparkManager.DATE_SECOND_FORMATTER.format(new Date());
                    String infoText = Res.getString("message.user.now.available.to.chat", nickname, time);
                    if (localPref.getShowToasterPopup()) {
                        EventQueue.invokeLater(() -> {
                            SparkToaster toaster = new SparkToaster();
                            toaster.setDisplayTime(5000);
                            toaster.setBorder(BorderFactory.createLineBorder(Color.lightGray, 1, true));
                            toaster.setToasterHeight(150);
                            toaster.setToasterWidth(200);
                            toaster.setTitle(nickname);
                            toaster.showToaster(null, infoText);
                            toaster.setCustomAction(new AbstractAction() {

                                private static final long serialVersionUID = 4827542713848133369L;

                                @Override
                                public void actionPerformed(ActionEvent e) {
                                    SparkManager.getChatManager().getChatRoom(jid.asEntityBareJidOrThrow());
                                }
                            });
                        });
                    }
                    ChatRoom room = SparkManager.getChatManager().getChatRoom(jid.asEntityBareJidOrThrow());
                    if (localPref.getWindowTakesFocus()) {
                        EventQueue.invokeLater(() -> SparkManager.getChatManager().activateChat(jid, nickname));
                    }
                    EventQueue.invokeLater(() -> room.getTranscriptWindow().insertNotificationMessage(infoText, ChatManager.NOTIFICATION_COLOR));
                }
            }
            for (BareJid s : removelater) {
                sparkContacts.remove(s);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }, new StanzaTypeFilter(Presence.class));
}
Also used : Action(javax.swing.Action) AbstractAction(javax.swing.AbstractAction) MouseEvent(java.awt.event.MouseEvent) SparkToaster(org.jivesoftware.sparkimpl.plugin.alerts.SparkToaster) Jid(org.jxmpp.jid.Jid) BareJid(org.jxmpp.jid.BareJid) BareJid(org.jxmpp.jid.BareJid) ActionEvent(java.awt.event.ActionEvent) ContactItem(org.jivesoftware.spark.ui.ContactItem) ContextMenuListener(org.jivesoftware.spark.plugin.ContextMenuListener) ArrayList(java.util.ArrayList) ContactList(org.jivesoftware.spark.ui.ContactList) JPopupMenu(javax.swing.JPopupMenu) Date(java.util.Date) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) Presence(org.jivesoftware.smack.packet.Presence) AbstractAction(javax.swing.AbstractAction)

Example 19 with StanzaTypeFilter

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

the class JabberVersion method initialize.

@Override
public void initialize() {
    // Populate Smack's Version Manager with Sparks version information.
    VersionManager.getInstanceFor(SparkManager.getConnection()).setVersion(JiveInfo.getName(), JiveInfo.getVersion(), JiveInfo.getOS());
    // Create IQ Filter
    StanzaFilter packetFilter = new StanzaTypeFilter(IQ.class);
    SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
        IQ iq = (IQ) stanza;
        try {
            if (iq instanceof Time && iq.getType() == IQ.Type.get) {
                Time time = new Time();
                time.setStanzaId(iq.getStanzaId());
                time.setFrom(iq.getTo());
                time.setTo(iq.getFrom());
                time.setTime(new Date());
                time.setType(IQ.Type.result);
                // Send Time
                SparkManager.getConnection().sendStanza(time);
            }
        } catch (SmackException.NotConnectedException e) {
            Log.warning("Unable to answer request: " + stanza, e);
        }
    }, packetFilter);
    final ContactList contactList = SparkManager.getWorkspace().getContactList();
    contactList.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("control F11"), "viewClient");
    contactList.addContextMenuListener(new ContextMenuListener() {

        @Override
        public void poppingUp(final Object component, JPopupMenu popup) {
            if (!(component instanceof ContactItem)) {
                return;
            }
            ContactItem contactItem = (ContactItem) component;
            if (contactItem.getPresence() == null) {
                return;
            }
            Action versionRequest = new AbstractAction() {

                private static final long serialVersionUID = -5619737417315441711L;

                @Override
                public void actionPerformed(ActionEvent e) {
                    viewClient();
                }
            };
            versionRequest.putValue(Action.NAME, Res.getString("menuitem.view.client.version"));
            popup.add(versionRequest);
        }

        @Override
        public void poppingDown(JPopupMenu popup) {
        }

        @Override
        public boolean handleDefaultAction(MouseEvent e) {
            return false;
        }
    });
    contactList.getActionMap().put("viewClient", new AbstractAction("viewClient") {

        private static final long serialVersionUID = 8282301357403753561L;

        @Override
        public void actionPerformed(ActionEvent evt) {
            viewClient();
        }
    });
}
Also used : Action(javax.swing.Action) AbstractAction(javax.swing.AbstractAction) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) MouseEvent(java.awt.event.MouseEvent) ActionEvent(java.awt.event.ActionEvent) SmackException(org.jivesoftware.smack.SmackException) ContactItem(org.jivesoftware.spark.ui.ContactItem) IQ(org.jivesoftware.smack.packet.IQ) ContextMenuListener(org.jivesoftware.spark.plugin.ContextMenuListener) Time(org.jivesoftware.smackx.time.packet.Time) ContactList(org.jivesoftware.spark.ui.ContactList) Date(java.util.Date) JPopupMenu(javax.swing.JPopupMenu) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) AbstractAction(javax.swing.AbstractAction)

Example 20 with StanzaTypeFilter

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

the class NotificationPlugin method registerListener.

private void registerListener() {
    preferences = SettingsManager.getLocalPreferences();
    // Iterate through all online users and add them to the list.
    ContactList contactList = SparkManager.getWorkspace().getContactList();
    for (ContactGroup contactGroup : contactList.getContactGroups()) {
        for (ContactItem item : contactGroup.getContactItems()) {
            if (item != null && item.getJid() != null && item.getPresence().isAvailable()) {
                BareJid bareJID = item.getJid().asBareJid();
                onlineUsers.add(bareJID);
            }
        }
    }
    // Add Presence Listener
    SparkManager.getConnection().addAsyncStanzaListener(this, new StanzaTypeFilter(Presence.class));
}
Also used : StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) BareJid(org.jxmpp.jid.BareJid) ContactItem(org.jivesoftware.spark.ui.ContactItem) Presence(org.jivesoftware.smack.packet.Presence) ContactList(org.jivesoftware.spark.ui.ContactList) ContactGroup(org.jivesoftware.spark.ui.ContactGroup)

Aggregations

StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)24 Presence (org.jivesoftware.smack.packet.Presence)16 AndFilter (org.jivesoftware.smack.filter.AndFilter)11 ContactItem (org.jivesoftware.spark.ui.ContactItem)8 BareJid (org.jxmpp.jid.BareJid)8 StanzaFilter (org.jivesoftware.smack.filter.StanzaFilter)7 Message (org.jivesoftware.smack.packet.Message)7 EntityBareJid (org.jxmpp.jid.EntityBareJid)7 ContactList (org.jivesoftware.spark.ui.ContactList)6 ActionEvent (java.awt.event.ActionEvent)5 MouseEvent (java.awt.event.MouseEvent)5 StanzaListener (org.jivesoftware.smack.StanzaListener)5 ChatRoom (org.jivesoftware.spark.ui.ChatRoom)5 Jid (org.jxmpp.jid.Jid)5 File (java.io.File)4 IOException (java.io.IOException)4 List (java.util.List)4 StanzaCollector (org.jivesoftware.smack.StanzaCollector)4 SwingWorker (org.jivesoftware.spark.util.SwingWorker)4 Log (org.jivesoftware.spark.util.log.Log)4