Search in sources :

Example 1 with Spark

use of org.jivesoftware.Spark 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 2 with Spark

use of org.jivesoftware.Spark in project Spark by igniterealtime.

the class Workspace method loadPlugins.

/**
 * Starts the Loading of all Spark Plugins.
 */
public void loadPlugins() {
    // Send Available status
    SparkManager.getSessionManager().changePresence(statusBox.getPresence());
    // Add presence and message listeners
    // we listen for these to force open a 1-1 peer chat window from other operators if
    // one isn't already open
    StanzaFilter workspaceMessageFilter = new StanzaTypeFilter(Message.class);
    // Add the packetListener to this instance
    SparkManager.getSessionManager().getConnection().addAsyncStanzaListener(this, workspaceMessageFilter);
    // Make presence available to anonymous requests, if from anonymous user in the system.
    StanzaListener workspacePresenceListener = stanza -> {
        Presence presence = (Presence) stanza;
        JivePropertiesExtension extension = (JivePropertiesExtension) presence.getExtension(JivePropertiesExtension.NAMESPACE);
        if (extension != null && extension.getProperty("anonymous") != null) {
            boolean isAvailable = statusBox.getPresence().getMode() == Presence.Mode.available;
            Presence reply = new Presence(Presence.Type.available);
            if (!isAvailable) {
                reply.setType(Presence.Type.unavailable);
            }
            reply.setTo(presence.getFrom());
            try {
                SparkManager.getSessionManager().getConnection().sendStanza(reply);
            } catch (SmackException.NotConnectedException e) {
                Log.warning("Unable to send presence reply to " + reply.getTo(), e);
            }
        }
    };
    SparkManager.getSessionManager().getConnection().addAsyncStanzaListener(workspacePresenceListener, new StanzaTypeFilter(Presence.class));
    // Until we have better plugin management, will init after presence updates.
    gatewayPlugin = new GatewayPlugin();
    gatewayPlugin.initialize();
    // Load all non-presence related items.
    conferences.loadConferenceBookmarks();
    SearchManager.getInstance();
    transcriptPlugin = new ChatTranscriptPlugin();
    // Load Broadcast Plugin
    broadcastPlugin = new BroadcastPlugin();
    broadcastPlugin.initialize();
    // Load BookmarkPlugin
    bookmarkPlugin = new BookmarkPlugin();
    bookmarkPlugin.initialize();
    // Schedule loading of the plugins after two seconds.
    TaskEngine.getInstance().schedule(new TimerTask() {

        public void run() {
            final PluginManager pluginManager = PluginManager.getInstance();
            SparkManager.getMainWindow().addMainWindowListener(pluginManager);
            pluginManager.initializePlugins();
            // Subscriptions are always manual
            Roster roster = Roster.getInstanceFor(SparkManager.getConnection());
            roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
        }
    }, 2000);
    // Check URI Mappings
    SparkManager.getChatManager().handleURIMapping(Spark.ARGUMENTS);
}
Also used : Color(java.awt.Color) SmackException(org.jivesoftware.smack.SmackException) CommandPanel(org.jivesoftware.spark.ui.CommandPanel) ChatRoomNotFoundException(org.jivesoftware.spark.ui.ChatRoomNotFoundException) Log(org.jivesoftware.spark.util.log.Log) ContactItem(org.jivesoftware.spark.ui.ContactItem) MainWindow(org.jivesoftware.MainWindow) TimerTask(java.util.TimerTask) Enterprise(org.jivesoftware.sparkimpl.plugin.manager.Enterprise) KeyStroke(javax.swing.KeyStroke) TaskEngine(org.jivesoftware.spark.util.TaskEngine) ModelUtil(org.jivesoftware.spark.util.ModelUtil) BorderFactory(javax.swing.BorderFactory) SparkTabbedPane(org.jivesoftware.spark.component.tabbedPane.SparkTabbedPane) GridBagConstraints(java.awt.GridBagConstraints) Spark(org.jivesoftware.Spark) GatewayPlugin(org.jivesoftware.sparkimpl.plugin.gateways.GatewayPlugin) AbstractAction(javax.swing.AbstractAction) Roster(org.jivesoftware.smack.roster.Roster) DelayInformation(org.jivesoftware.smackx.delay.packet.DelayInformation) GridBagLayout(java.awt.GridBagLayout) JPanel(javax.swing.JPanel) StanzaListener(org.jivesoftware.smack.StanzaListener) Stanza(org.jivesoftware.smack.packet.Stanza) BroadcastPlugin(org.jivesoftware.sparkimpl.plugin.alerts.BroadcastPlugin) Insets(java.awt.Insets) CardLayout(java.awt.CardLayout) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) UIComponentRegistry(org.jivesoftware.spark.util.UIComponentRegistry) MainWindowListener(org.jivesoftware.MainWindowListener) SwingUtilities(javax.swing.SwingUtilities) VCard(org.jivesoftware.smackx.vcardtemp.packet.VCard) Default(org.jivesoftware.resource.Default) JTabbedPane(javax.swing.JTabbedPane) StatusBar(org.jivesoftware.spark.ui.status.StatusBar) EnhancedDebuggerWindow(org.jivesoftware.smackx.debugger.EnhancedDebuggerWindow) BookmarkPlugin(org.jivesoftware.sparkimpl.plugin.bookmarks.BookmarkPlugin) ChatContainer(org.jivesoftware.spark.ui.ChatContainer) JComponent(javax.swing.JComponent) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) Presence(org.jivesoftware.smack.packet.Presence) SearchManager(org.jivesoftware.spark.search.SearchManager) SparkTransferManager(org.jivesoftware.spark.filetransfer.SparkTransferManager) ActionEvent(java.awt.event.ActionEvent) ConferenceServices(org.jivesoftware.spark.ui.conferences.ConferenceServices) XmppStringUtils(org.jxmpp.util.XmppStringUtils) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) ContactList(org.jivesoftware.spark.ui.ContactList) Message(org.jivesoftware.smack.packet.Message) ChatTranscriptPlugin(org.jivesoftware.sparkimpl.plugin.transcripts.ChatTranscriptPlugin) JivePropertiesExtension(org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension) ChatTranscriptPlugin(org.jivesoftware.sparkimpl.plugin.transcripts.ChatTranscriptPlugin) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) StanzaListener(org.jivesoftware.smack.StanzaListener) JivePropertiesExtension(org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) BroadcastPlugin(org.jivesoftware.sparkimpl.plugin.alerts.BroadcastPlugin) BookmarkPlugin(org.jivesoftware.sparkimpl.plugin.bookmarks.BookmarkPlugin) TimerTask(java.util.TimerTask) Roster(org.jivesoftware.smack.roster.Roster) GatewayPlugin(org.jivesoftware.sparkimpl.plugin.gateways.GatewayPlugin) Presence(org.jivesoftware.smack.packet.Presence)

Aggregations

MainWindow (org.jivesoftware.MainWindow)2 Spark (org.jivesoftware.Spark)2 StanzaListener (org.jivesoftware.smack.StanzaListener)2 StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)2 Message (org.jivesoftware.smack.packet.Message)2 Presence (org.jivesoftware.smack.packet.Presence)2 SparkTabbedPane (org.jivesoftware.spark.component.tabbedPane.SparkTabbedPane)2 TaskEngine (org.jivesoftware.spark.util.TaskEngine)2 Log (org.jivesoftware.spark.util.log.Log)2 XmppStringUtils (org.jxmpp.util.XmppStringUtils)2 java.awt (java.awt)1 CardLayout (java.awt.CardLayout)1 Color (java.awt.Color)1 GridBagConstraints (java.awt.GridBagConstraints)1 GridBagLayout (java.awt.GridBagLayout)1 Insets (java.awt.Insets)1 java.awt.event (java.awt.event)1 ActionEvent (java.awt.event.ActionEvent)1 java.util (java.util)1 List (java.util.List)1