Search in sources :

Example 16 with ChatManager

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

the class PhoneManager method addListeners.

private void addListeners() {
    // Handle ChatRooms.
    final ChatManager chatManager = SparkManager.getChatManager();
    chatManager.addChatRoomListener(this);
    // Handle ContextMenus.
    final ContactList contactList = SparkManager.getWorkspace().getContactList();
    contactList.addContextMenuListener(this);
}
Also used : ContactList(org.jivesoftware.spark.ui.ContactList) ChatManager(org.jivesoftware.spark.ChatManager)

Example 17 with ChatManager

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

the class TranslatorPlugin method initialize.

/**
 * Called after Spark is loaded to initialize the new plugin.
 */
public void initialize() {
    // Retrieve ChatManager from the SparkManager
    final ChatManager chatManager = SparkManager.getChatManager();
    // Add to a new ChatRoom when the ChatRoom opens.
    chatManager.addChatRoomListener(new ChatRoomListenerAdapter() {

        public void chatRoomOpened(ChatRoom room) {
            // only do the translation for single chat
            if (room instanceof ChatRoomImpl) {
                final ChatRoomImpl roomImpl = (ChatRoomImpl) room;
                // Create a new ChatRoomButton.
                final JComboBox<TranslatorUtil.TranslationType> translatorBox = new JComboBox<>(TranslatorUtil.TranslationType.getTypes());
                translatorBox.addActionListener(e -> {
                    // Set the focus back to the message box.
                    roomImpl.getChatInputEditor().requestFocusInWindow();
                });
                roomImpl.addChatRoomComponent(translatorBox);
                // do the translation for outgoing messages.
                final MessageEventListener messageListener = new MessageEventListener() {

                    public void sendingMessage(Message message) {
                        String currentBody = message.getBody();
                        String oldBody = message.getBody();
                        TranslatorUtil.TranslationType type = (TranslatorUtil.TranslationType) translatorBox.getSelectedItem();
                        if (type != null && type != TranslatorUtil.TranslationType.None) {
                            message.setBody(null);
                            currentBody = TranslatorUtil.translate(currentBody, type);
                            TranscriptWindow transcriptWindow = chatManager.getChatRoom(XmppStringUtils.parseBareJid(message.getTo())).getTranscriptWindow();
                            if (oldBody.equals(currentBody.substring(0, currentBody.length() - 1))) {
                                transcriptWindow.insertNotificationMessage("Could not translate: " + currentBody, ChatManager.ERROR_COLOR);
                            } else {
                                transcriptWindow.insertNotificationMessage("-> " + currentBody, Color.gray);
                                message.setBody(currentBody);
                            }
                        }
                    }

                    public void receivingMessage(Message message) {
                    // do nothing
                    }
                };
                roomImpl.addMessageEventListener(messageListener);
            }
        }
    });
}
Also used : Color(java.awt.Color) ChatManager(org.jivesoftware.spark.ChatManager) TranscriptWindow(org.jivesoftware.spark.ui.TranscriptWindow) SparkManager(org.jivesoftware.spark.SparkManager) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) ChatRoomImpl(org.jivesoftware.spark.ui.rooms.ChatRoomImpl) ChatRoomListenerAdapter(org.jivesoftware.spark.ui.ChatRoomListenerAdapter) MessageEventListener(org.jivesoftware.spark.ui.MessageEventListener) Message(org.jivesoftware.smack.packet.Message) JComboBox(javax.swing.JComboBox) Plugin(org.jivesoftware.spark.plugin.Plugin) XmppStringUtils(org.jxmpp.util.XmppStringUtils) JComboBox(javax.swing.JComboBox) Message(org.jivesoftware.smack.packet.Message) MessageEventListener(org.jivesoftware.spark.ui.MessageEventListener) ChatRoomImpl(org.jivesoftware.spark.ui.rooms.ChatRoomImpl) ChatRoomListenerAdapter(org.jivesoftware.spark.ui.ChatRoomListenerAdapter) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) TranscriptWindow(org.jivesoftware.spark.ui.TranscriptWindow) ChatManager(org.jivesoftware.spark.ChatManager)

Example 18 with ChatManager

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

the class InvitationDialog method inviteUsersToRoom.

public void inviteUsersToRoom(final String serviceName, Collection<BookmarkedConference> rooms, String adHocRoomName, Collection<String> jids) {
    fillRoomsUI(rooms, adHocRoomName);
    JFrame parent = SparkManager.getChatManager().getChatContainer().getChatFrame();
    if (parent == null || !parent.isVisible()) {
        parent = SparkManager.getMainWindow();
    }
    // Add jids to user list
    if (jids != null) {
        for (Object jid : jids) {
            invitedUsers.addElement(jid);
        }
    }
    final JOptionPane pane;
    TitlePanel titlePanel;
    // Create the title panel for this dialog
    titlePanel = new TitlePanel(Res.getString("title.invite.to.conference"), Res.getString("message.invite.users.to.conference"), SparkRes.getImageIcon(SparkRes.BLANK_IMAGE), true);
    // Construct main panel w/ layout.
    final JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new BorderLayout());
    mainPanel.add(titlePanel, BorderLayout.NORTH);
    // The user should only be able to close this dialog.
    Object[] options = { Res.getString("invite"), Res.getString("cancel") };
    pane = new JOptionPane(this, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, options, options[0]);
    mainPanel.add(pane, BorderLayout.CENTER);
    final JOptionPane p = new JOptionPane();
    dlg = p.createDialog(parent, Res.getString("title.conference.rooms"));
    dlg.setModal(false);
    dlg.pack();
    dlg.setSize(500, 450);
    dlg.setResizable(true);
    dlg.setContentPane(mainPanel);
    dlg.setLocationRelativeTo(parent);
    PropertyChangeListener changeListener = e -> {
        String value = (String) pane.getValue();
        if (Res.getString("cancel").equals(value)) {
            pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
            dlg.dispose();
        } else if (Res.getString("invite").equals(value)) {
            final String roomTitle = getSelectedRoomName();
            final BookmarkedConference selectedBookmarkedConf = getSelectedBookmarkedConference();
            int size = invitedUserList.getModel().getSize();
            UIManager.put("OptionPane.okButtonText", Res.getString("ok"));
            if (size == 0) {
                JOptionPane.showMessageDialog(dlg, Res.getString("message.specify.users.to.join.conference"), Res.getString("title.error"), JOptionPane.ERROR_MESSAGE);
                pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
                return;
            }
            if (!ModelUtil.hasLength(roomTitle)) {
                JOptionPane.showMessageDialog(dlg, Res.getString("message.no.room.to.join.error"), Res.getString("title.error"), JOptionPane.ERROR_MESSAGE);
                pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
                return;
            }
            String roomName = "";
            // Add all rooms the user is in to list.
            ChatManager chatManager = SparkManager.getChatManager();
            for (ChatRoom chatRoom : chatManager.getChatContainer().getChatRooms()) {
                if (chatRoom instanceof GroupChatRoom) {
                    GroupChatRoom groupRoom = (GroupChatRoom) chatRoom;
                    if (groupRoom.getRoomname().equals(roomTitle)) {
                        roomName = groupRoom.getMultiUserChat().getRoom();
                        break;
                    }
                }
            }
            String message = messageField.getText();
            final String messageText = message != null ? message : Res.getString("message.please.join.in.conference");
            if (invitedUsers.getSize() > 0) {
                invitedUserList.setSelectionInterval(0, invitedUsers.getSize() - 1);
            }
            GroupChatRoom chatRoom;
            try {
                chatRoom = SparkManager.getChatManager().getGroupChat(roomName);
            } catch (ChatNotFoundException e1) {
                dlg.setVisible(false);
                final List<String> jidList = new ArrayList<>();
                Object[] jids1 = invitedUserList.getSelectedValues();
                final int no = jids1 != null ? jids1.length : 0;
                for (int i = 0; i < no; i++) {
                    try {
                        jidList.add((String) jids1[i]);
                    } catch (NullPointerException ee) {
                        Log.error(ee);
                    }
                }
                SwingWorker worker = new SwingWorker() {

                    public Object construct() {
                        try {
                            Thread.sleep(15);
                        } catch (InterruptedException e2) {
                            Log.error(e2);
                        }
                        return "ok";
                    }

                    public void finished() {
                        try {
                            if (selectedBookmarkedConf == null) {
                                ConferenceUtils.createPrivateConference(serviceName, messageText, roomTitle, jidList);
                            } else {
                                ConferenceUtils.joinConferenceOnSeperateThread(selectedBookmarkedConf.getName(), selectedBookmarkedConf.getJid(), selectedBookmarkedConf.getPassword(), messageText, jidList);
                            }
                        } catch (SmackException ex) {
                            UIManager.put("OptionPane.okButtonText", Res.getString("ok"));
                            JOptionPane.showMessageDialog(pane, "An error occurred.", Res.getString("title.error"), JOptionPane.ERROR_MESSAGE);
                        }
                    }
                };
                worker.start();
                pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
                return;
            }
            pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
            dlg.dispose();
            Object[] values = invitedUserList.getSelectedValues();
            final int no = values != null ? values.length : 0;
            for (int i = 0; i < no; i++) {
                String jid = (String) values[i];
                try {
                    chatRoom.getMultiUserChat().invite(jid, message != null ? message : Res.getString("message.please.join.in.conference"));
                } catch (SmackException.NotConnectedException e1) {
                    Log.warning("Unable to send stanza to " + jid, e1);
                }
                String nickname = SparkManager.getUserManager().getUserNicknameFromJID(jid);
                chatRoom.getTranscriptWindow().insertNotificationMessage("Invited " + nickname, ChatManager.NOTIFICATION_COLOR);
            }
        }
    };
    pane.addPropertyChangeListener(changeListener);
    dlg.setVisible(true);
    dlg.toFront();
    dlg.requestFocus();
}
Also used : SmackException(org.jivesoftware.smack.SmackException) UIManager(javax.swing.UIManager) Insets(java.awt.Insets) JDialog(javax.swing.JDialog) JTextField(javax.swing.JTextField) SettingsManager(org.jivesoftware.sparkimpl.settings.local.SettingsManager) Res(org.jivesoftware.resource.Res) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) Log(org.jivesoftware.spark.util.log.Log) Action(javax.swing.Action) ResourceUtils(org.jivesoftware.spark.util.ResourceUtils) ArrayList(java.util.ArrayList) MouseAdapter(java.awt.event.MouseAdapter) JComboBox(javax.swing.JComboBox) JFrame(javax.swing.JFrame) BorderLayout(java.awt.BorderLayout) JComponent(javax.swing.JComponent) ChatManager(org.jivesoftware.spark.ChatManager) ModelUtil(org.jivesoftware.spark.util.ModelUtil) JButton(javax.swing.JButton) SparkRes(org.jivesoftware.resource.SparkRes) JPopupMenu(javax.swing.JPopupMenu) Collection(java.util.Collection) JList(javax.swing.JList) SwingWorker(org.jivesoftware.spark.util.SwingWorker) JOptionPane(javax.swing.JOptionPane) GridBagConstraints(java.awt.GridBagConstraints) TitlePanel(org.jivesoftware.spark.component.TitlePanel) GroupChatRoom(org.jivesoftware.spark.ui.rooms.GroupChatRoom) ActionEvent(java.awt.event.ActionEvent) XmppStringUtils(org.jxmpp.util.XmppStringUtils) MouseEvent(java.awt.event.MouseEvent) JScrollPane(javax.swing.JScrollPane) ChatNotFoundException(org.jivesoftware.spark.ChatNotFoundException) List(java.util.List) DefaultListModel(javax.swing.DefaultListModel) AbstractAction(javax.swing.AbstractAction) PropertyChangeListener(java.beans.PropertyChangeListener) BookmarkedConference(org.jivesoftware.smackx.bookmarks.BookmarkedConference) SparkManager(org.jivesoftware.spark.SparkManager) JLabel(javax.swing.JLabel) RosterPickList(org.jivesoftware.spark.ui.RosterPickList) GridBagLayout(java.awt.GridBagLayout) JPanel(javax.swing.JPanel) JPanel(javax.swing.JPanel) PropertyChangeListener(java.beans.PropertyChangeListener) SmackException(org.jivesoftware.smack.SmackException) BookmarkedConference(org.jivesoftware.smackx.bookmarks.BookmarkedConference) JOptionPane(javax.swing.JOptionPane) TitlePanel(org.jivesoftware.spark.component.TitlePanel) GroupChatRoom(org.jivesoftware.spark.ui.rooms.GroupChatRoom) ChatNotFoundException(org.jivesoftware.spark.ChatNotFoundException) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) ChatRoom(org.jivesoftware.spark.ui.ChatRoom) GroupChatRoom(org.jivesoftware.spark.ui.rooms.GroupChatRoom) SwingWorker(org.jivesoftware.spark.util.SwingWorker) ArrayList(java.util.ArrayList) JList(javax.swing.JList) List(java.util.List) RosterPickList(org.jivesoftware.spark.ui.RosterPickList) ChatManager(org.jivesoftware.spark.ChatManager)

Example 19 with ChatManager

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

the class ContactList method contactItemDoubleClicked.

public void contactItemDoubleClicked(ContactItem item) {
    activeItem = item;
    ChatManager chatManager = SparkManager.getChatManager();
    boolean handled = chatManager.fireContactItemDoubleClicked(item);
    if (!handled) {
        chatManager.activateChat(item.getJID(), item.getDisplayName());
    }
    clearSelectionList(item);
    fireContactItemDoubleClicked(item);
}
Also used : ChatManager(org.jivesoftware.spark.ChatManager)

Aggregations

ChatManager (org.jivesoftware.spark.ChatManager)19 ChatRoom (org.jivesoftware.spark.ui.ChatRoom)8 ChatRoomImpl (org.jivesoftware.spark.ui.rooms.ChatRoomImpl)7 SmackException (org.jivesoftware.smack.SmackException)6 ChatContainer (org.jivesoftware.spark.ui.ChatContainer)5 MultiUserChatManager (org.jivesoftware.smackx.muc.MultiUserChatManager)4 GroupChatRoom (org.jivesoftware.spark.ui.rooms.GroupChatRoom)4 ActionEvent (java.awt.event.ActionEvent)3 Message (org.jivesoftware.smack.packet.Message)3 ChatRoomListenerAdapter (org.jivesoftware.spark.ui.ChatRoomListenerAdapter)3 ChatRoomNotFoundException (org.jivesoftware.spark.ui.ChatRoomNotFoundException)3 LocalPreferences (org.jivesoftware.sparkimpl.settings.local.LocalPreferences)3 BorderLayout (java.awt.BorderLayout)2 File (java.io.File)2 ImageIcon (javax.swing.ImageIcon)2 JButton (javax.swing.JButton)2 JComboBox (javax.swing.JComboBox)2 JLabel (javax.swing.JLabel)2 JPanel (javax.swing.JPanel)2 Presence (org.jivesoftware.smack.packet.Presence)2