Search in sources :

Example 21 with StanzaTypeFilter

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

the class SoundPlugin method initialize.

@Override
public void initialize() {
    soundPreference = new SoundPreference();
    SparkManager.getPreferenceManager().addPreference(soundPreference);
    SparkManager.getChatManager().addChatRoomListener(this);
    SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
        Presence presence = (Presence) stanza;
        if (!presence.isAvailable()) {
            SoundPreferences preferences = soundPreference.getPreferences();
            if (preferences != null && preferences.isPlayOfflineSound()) {
                if (!PresenceManager.isOnline(presence.getFrom().asBareJid())) {
                    String offline = preferences.getOfflineSound();
                    File offlineFile = new File(offline);
                    SparkManager.getSoundManager().playClip(offlineFile);
                }
            }
        }
    }, new StanzaTypeFilter(Presence.class));
    // Load sound preferences.
    final Runnable soundLoader = () -> soundPreference.loadFromFile();
    TaskEngine.getInstance().submit(soundLoader);
    MultiUserChatManager.getInstanceFor(SparkManager.getConnection()).addInvitationListener((xmppConnection, muc, inviter, reason, password, message, invitation) -> {
        SoundPreferences preferences = soundPreference.getPreferences();
        if (preferences != null && preferences.playIncomingInvitationSound()) {
            String incomingSoundFile = preferences.getIncomingInvitationSoundFile();
            File offlineFile = new File(incomingSoundFile);
            SparkManager.getSoundManager().playClip(offlineFile);
        }
    });
}
Also used : StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) Presence(org.jivesoftware.smack.packet.Presence) File(java.io.File)

Example 22 with StanzaTypeFilter

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

the class BattleshipPlugin method initialize.

@Override
public void initialize() {
    ProviderManager.addIQProvider(GameOfferPacket.ELEMENT_NAME, GameOfferPacket.NAMESPACE, GameOfferPacket.class);
    ProviderManager.addExtensionProvider(MovePacket.ELEMENT_NAME, MovePacket.NAMESPACE, MovePacket.class);
    ProviderManager.addExtensionProvider(MoveAnswerPacket.ELEMENT_NAME, MoveAnswerPacket.NAMESPACE, MoveAnswerPacket.class);
    _gameofferListener = new StanzaListener() {

        @Override
        public void processPacket(Stanza stanza) {
            GameOfferPacket invitation = (GameOfferPacket) stanza;
            if (invitation.getType() == IQ.Type.get) {
                showInvitationInChat(invitation);
            }
        }
    };
    SparkManager.getConnection().addAsyncStanzaListener(_gameofferListener, new StanzaTypeFilter(GameOfferPacket.class));
    _chatRoomListener = new ChatRoomOpeningListener();
    SparkManager.getChatManager().addChatRoomListener(_chatRoomListener);
}
Also used : StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) GameOfferPacket(battleship.packets.GameOfferPacket) Stanza(org.jivesoftware.smack.packet.Stanza) StanzaListener(org.jivesoftware.smack.StanzaListener) ChatRoomOpeningListener(battleship.listener.ChatRoomOpeningListener)

Example 23 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 24 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)

Aggregations

StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)24 Presence (org.jivesoftware.smack.packet.Presence)16 AndFilter (org.jivesoftware.smack.filter.AndFilter)11 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 ContactItem (org.jivesoftware.spark.ui.ContactItem)6 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