Search in sources :

Example 6 with JiveTreeNode

use of org.jivesoftware.spark.component.JiveTreeNode in project Spark by igniterealtime.

the class WorkgroupRosterTree method changePresence.

private void changePresence(String user, Presence presence) {
    final Iterator<JiveTreeNode> iter = addressMap.keySet().iterator();
    while (iter.hasNext()) {
        final JiveTreeNode node = (JiveTreeNode) iter.next();
        final String nodeUser = (String) addressMap.get(node);
        if (user.startsWith(nodeUser)) {
            if (!PresenceManager.isAvailable(presence)) {
                node.setIcon(FastpathRes.getImageIcon(FastpathRes.RED_BALL));
            } else {
                node.setIcon(FastpathRes.getImageIcon(FastpathRes.GREEN_BALL));
            }
        }
    }
}
Also used : JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode)

Example 7 with JiveTreeNode

use of org.jivesoftware.spark.component.JiveTreeNode in project Spark by igniterealtime.

the class BookmarksUI method checkPopup.

private void checkPopup(MouseEvent mouseEvent) {
    // Handle no path for x y coordinates
    if (tree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY()) == null) {
        return;
    }
    final JiveTreeNode node = (JiveTreeNode) tree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY()).getLastPathComponent();
    if (mouseEvent.isPopupTrigger() && node != null) {
        JPopupMenu popupMenu = new JPopupMenu();
        // Define service actions
        Action browseAction = new AbstractAction() {

            private static final long serialVersionUID = -8866708581713789939L;

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                browseRooms(node.toString());
            }
        };
        browseAction.putValue(Action.NAME, Res.getString("menuitem.browse.service"));
        browseAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_DATA_FIND_IMAGE));
        Action removeServiceAction = new AbstractAction() {

            private static final long serialVersionUID = -5276754429117462223L;

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
                treeModel.removeNodeFromParent(node);
            }
        };
        removeServiceAction.putValue(Action.NAME, Res.getString("menuitem.remove.service"));
        removeServiceAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_DELETE));
        JMenuItem browseServiceMenu = new JMenuItem(browseAction);
        JMenuItem removeServiceMenu = new JMenuItem(removeServiceAction);
        // Define room actions
        Action joinRoomAction = new AbstractAction() {

            private static final long serialVersionUID = -356016505214728244L;

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                String roomName = node.getUserObject().toString();
                String roomJID = node.getAssociatedObject().toString();
                ConferenceUtils.joinConferenceOnSeperateThread(roomName, roomJID, null);
            }
        };
        joinRoomAction.putValue(Action.NAME, Res.getString("menuitem.join.room"));
        joinRoomAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_USER_ENTER));
        Action removeRoomAction = new AbstractAction() {

            private static final long serialVersionUID = -7560090091884746914L;

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
                treeModel.removeNodeFromParent(node);
                String roomJID = node.getAssociatedObject().toString();
                autoJoinRooms.remove(roomJID);
                removeBookmark(roomJID);
            }
        };
        removeRoomAction.putValue(Action.NAME, Res.getString("menuitem.remove.bookmark"));
        removeRoomAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.DELETE_BOOKMARK_ICON));
        JMenuItem joinRoomMenu = new JMenuItem(joinRoomAction);
        JMenuItem removeRoomMenu = new JMenuItem(removeRoomAction);
        if (node.getAllowsChildren()) {
            popupMenu.add(browseServiceMenu);
            popupMenu.add(removeServiceMenu);
        } else {
            popupMenu.add(joinRoomMenu);
            popupMenu.add(removeRoomMenu);
            popupMenu.addSeparator();
            Action autoJoin = new AbstractAction() {

                private static final long serialVersionUID = 7857469398581933449L;

                @Override
                public void actionPerformed(ActionEvent e) {
                    String roomJID = node.getAssociatedObject().toString();
                    if (autoJoinRooms.contains(roomJID)) {
                        autoJoinRooms.remove(roomJID);
                    } else {
                        autoJoinRooms.add(roomJID);
                    }
                    String name = node.getUserObject().toString();
                    addBookmark(name, roomJID, autoJoinRooms.contains(roomJID));
                }
            };
            autoJoin.putValue(Action.NAME, Res.getString("menuitem.join.on.startup"));
            JCheckBoxMenuItem item = new JCheckBoxMenuItem(autoJoin);
            String roomJID = node.getAssociatedObject().toString();
            item.setSelected(autoJoinRooms.contains(roomJID));
            popupMenu.add(item);
            // Define service actions
            Action roomInfoAction = new AbstractAction() {

                private static final long serialVersionUID = -8336773839944003744L;

                @Override
                public void actionPerformed(ActionEvent actionEvent) {
                    String roomJID = node.getAssociatedObject().toString();
                    RoomBrowser roomBrowser = new RoomBrowser();
                    roomBrowser.displayRoomInformation(roomJID);
                }
            };
            roomInfoAction.putValue(Action.NAME, Res.getString("menuitem.view.room.info"));
            roomInfoAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_DATA_FIND_IMAGE));
            popupMenu.add(roomInfoAction);
        }
        // Fire menu listeners
        fireContextMenuListeners(popupMenu, node);
        // Display popup menu.
        popupMenu.show(tree, mouseEvent.getX(), mouseEvent.getY());
    }
}
Also used : JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Example 8 with JiveTreeNode

use of org.jivesoftware.spark.component.JiveTreeNode in project Spark by igniterealtime.

the class BookmarksUI method loadUI.

/**
 * Initialize Conference UI.
 */
public void loadUI() {
    EventQueue.invokeLater(() -> {
        setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
        setLayout(new GridBagLayout());
        add(getServicePanel(), new GridBagConstraints(0, 0, 2, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
        rootNode = new JiveTreeNode("Conference Services");
        tree = new Tree(rootNode) {

            private static final long serialVersionUID = -8445572224948613446L;

            @Override
            protected void setExpandedState(TreePath path, boolean state) {
                // Ignore all collapse requests; collapse events will not be fired
                if (state) {
                    super.setExpandedState(path, state);
                }
            }
        };
        tree.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseEntered(MouseEvent mouseEvent) {
                tree.setCursor(GraphicUtils.HAND_CURSOR);
            }

            @Override
            public void mouseExited(MouseEvent mouseEvent) {
                tree.setCursor(GraphicUtils.DEFAULT_CURSOR);
            }
        });
        JScrollPane scrollPane = new JScrollPane(tree);
        add(scrollPane, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
        // Add all registered services.
        addRegisteredServices();
        tree.setCellRenderer(new JiveTreeCellRenderer());
        tree.putClientProperty("JTree.lineStyle", "None");
        tree.setRootVisible(false);
        tree.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent mouseEvent) {
                if (mouseEvent.getClickCount() == 2) {
                    TreePath path = tree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY());
                    if (path == null) {
                        return;
                    }
                    JiveTreeNode node = (JiveTreeNode) path.getLastPathComponent();
                    if (node != null && node.getAllowsChildren()) {
                        browseRooms((String) node.getUserObject());
                    } else if (node != null) {
                        String roomJID = node.getAssociatedObject().toString();
                        ConferenceUtils.joinConferenceOnSeperateThread(node.getUserObject().toString(), roomJID, null);
                    }
                }
            }

            @Override
            public void mouseReleased(MouseEvent mouseEvent) {
                checkPopup(mouseEvent);
            }

            @Override
            public void mousePressed(MouseEvent mouseEvent) {
                checkPopup(mouseEvent);
            }
        });
        setBackground(Color.white);
        try {
            manager = BookmarkManager.getBookmarkManager(SparkManager.getConnection());
        } catch (XMPPException | SmackException e) {
            Log.error(e);
        }
        final TimerTask bookmarkTask = new TimerTask() {

            @Override
            public void run() {
                Collection<BookmarkedConference> bc = null;
                try {
                    while (bc == null) {
                        bc = manager.getBookmarkedConferences();
                    }
                    setBookmarks(bc);
                } catch (XMPPException | SmackException error) {
                    Log.error(error);
                }
            }
        };
        TaskEngine.getInstance().schedule(bookmarkTask, 5000);
    });
}
Also used : SmackException(org.jivesoftware.smack.SmackException) BookmarkedConference(org.jivesoftware.smackx.bookmarks.BookmarkedConference) JiveTreeCellRenderer(org.jivesoftware.spark.component.JiveTreeCellRenderer) TreePath(javax.swing.tree.TreePath) JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode) Tree(org.jivesoftware.spark.component.Tree) XMPPException(org.jivesoftware.smack.XMPPException)

Example 9 with JiveTreeNode

use of org.jivesoftware.spark.component.JiveTreeNode in project Spark by igniterealtime.

the class BookmarksUI method setBookmarks.

/**
 * Sets the current bookmarks used with this account.
 *
 * @param bookmarks the current bookmarks used with this account.
 */
public void setBookmarks(Collection<BookmarkedConference> bookmarks) {
    for (BookmarkedConference bookmark : bookmarks) {
        String serviceName = XmppStringUtils.parseDomain(bookmark.getJid());
        String roomJID = bookmark.getJid();
        String roomName = XmppStringUtils.parseLocalpart(bookmark.getJid());
        if (bookmark.isAutoJoin()) {
            ConferenceUtils.joinConferenceOnSeperateThread(roomName, bookmark.getJid(), bookmark.getPassword());
            ConferenceUtils.addUnclosableChatRoom(roomJID);
            autoJoinRooms.add(bookmark.getJid());
        }
        // Get Service Node
        TreePath path = tree.findByName(tree, new String[] { rootNode.getUserObject().toString(), serviceName });
        JiveTreeNode serviceNode;
        if (path == null) {
            serviceNode = addServiceToList(serviceName);
            path = tree.findByName(tree, new String[] { rootNode.getUserObject().toString(), serviceName });
        } else {
            serviceNode = (JiveTreeNode) path.getLastPathComponent();
        }
        addBookmark(serviceNode, roomName, roomJID);
        tree.expandPath(path);
    }
}
Also used : TreePath(javax.swing.tree.TreePath) JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode) BookmarkedConference(org.jivesoftware.smackx.bookmarks.BookmarkedConference)

Example 10 with JiveTreeNode

use of org.jivesoftware.spark.component.JiveTreeNode in project Spark by igniterealtime.

the class BookmarksUI method addServiceToList.

/**
 * Adds a new service (ex. conferences@jabber.org) to the services list.
 *
 * @param service the new service.
 * @return the new service node created.
 */
public JiveTreeNode addServiceToList(String service) {
    final JiveTreeNode serviceNode = new JiveTreeNode(service, true, SparkRes.getImageIcon(SparkRes.SERVER_ICON));
    rootNode.add(serviceNode);
    final DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
    model.nodeStructureChanged(rootNode);
    // expand the tree for displaying
    for (int i = 0; i <= tree.getRowCount(); i++) {
        tree.expandPath(tree.getPathForRow(i));
    }
    return serviceNode;
}
Also used : JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Aggregations

JiveTreeNode (org.jivesoftware.spark.component.JiveTreeNode)13 DefaultTreeModel (javax.swing.tree.DefaultTreeModel)7 TreePath (javax.swing.tree.TreePath)5 Tree (org.jivesoftware.spark.component.Tree)5 SmackException (org.jivesoftware.smack.SmackException)4 XMPPException (org.jivesoftware.smack.XMPPException)4 JiveTreeCellRenderer (org.jivesoftware.spark.component.JiveTreeCellRenderer)4 BorderLayout (java.awt.BorderLayout)3 JDialog (javax.swing.JDialog)3 JLabel (javax.swing.JLabel)3 JOptionPane (javax.swing.JOptionPane)3 JPanel (javax.swing.JPanel)3 GridBagConstraints (java.awt.GridBagConstraints)2 GridBagLayout (java.awt.GridBagLayout)2 Insets (java.awt.Insets)2 Collection (java.util.Collection)2 Iterator (java.util.Iterator)2 JScrollPane (javax.swing.JScrollPane)2 BookmarkedConference (org.jivesoftware.smackx.bookmarks.BookmarkedConference)2 RoomInfo (org.jivesoftware.smackx.muc.RoomInfo)2