Search in sources :

Example 11 with JiveTreeNode

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

the class ConferenceRoomBrowser method bookmarkRoom.

private void bookmarkRoom(String serviceName) {
    int selectedRow = roomsTable.getSelectedRow();
    UIManager.put("OptionPane.okButtonText", Res.getString("ok"));
    if (-1 == selectedRow) {
        JOptionPane.showMessageDialog(dlg, Res.getString("message.select.add.room.to.add"), Res.getString("title.group.chat"), JOptionPane.INFORMATION_MESSAGE);
        return;
    }
    final String roomJID = roomsTable.getValueAt(selectedRow, 2) + "@" + serviceName;
    final String roomName = roomsTable.getValueAt(selectedRow, 1).toString();
    // Check to see what type of room this is.
    boolean persistent = false;
    try {
        final RoomInfo roomInfo = MultiUserChatManager.getInstanceFor(SparkManager.getConnection()).getRoomInfo(roomJID);
        persistent = roomInfo.isPersistent();
    } catch (Exception e) {
        // Do not return
        Log.error("This room does not exist. Probably this room was temporary and was closed");
    }
    if (!persistent) {
        JOptionPane.showMessageDialog(dlg, Res.getString("message.bookmark.temporary.room.error"), Res.getString("title.error"), JOptionPane.ERROR_MESSAGE);
        return;
    }
    Tree serviceTree = conferences.getTree();
    JiveTreeNode rootNode = (JiveTreeNode) serviceTree.getModel().getRoot();
    TreePath rootPath = serviceTree.findByName(serviceTree, new String[] { rootNode.toString(), serviceName });
    boolean isBookmarked = isBookmarked(roomJID);
    if (!isBookmarked) {
        JiveTreeNode node = (JiveTreeNode) serviceTree.getLastSelectedPathComponent();
        if (node == null) {
            TreePath path = serviceTree.findByName(serviceTree, new String[] { rootNode.toString(), ConferenceServices.getDefaultServiceName() });
            node = (JiveTreeNode) path.getLastPathComponent();
        }
        JiveTreeNode roomNode = new JiveTreeNode(roomName, false, SparkRes.getImageIcon(SparkRes.BOOKMARK_ICON));
        roomNode.setAssociatedObject(roomJID);
        node.add(roomNode);
        final DefaultTreeModel model = (DefaultTreeModel) serviceTree.getModel();
        model.nodeStructureChanged(node);
        serviceTree.expandPath(rootPath);
        roomsTable.getTableModel().setValueAt(new JLabel(SparkRes.getImageIcon(SparkRes.BOOKMARK_ICON)), selectedRow, 0);
        addBookmarkUI(false);
        conferences.addBookmark(roomName, roomJID, false);
    } else {
        // Remove bookmark
        TreePath path = serviceTree.findByName(serviceTree, new String[] { rootNode.toString(), serviceName, roomName });
        JiveTreeNode node = (JiveTreeNode) path.getLastPathComponent();
        final DefaultTreeModel model = (DefaultTreeModel) serviceTree.getModel();
        model.removeNodeFromParent(node);
        roomsTable.getTableModel().setValueAt(new JLabel(SparkRes.getImageIcon(SparkRes.BLANK_IMAGE)), selectedRow, 0);
        addBookmarkUI(true);
        String jid = (String) node.getAssociatedObject();
        conferences.removeBookmark(jid);
    }
}
Also used : TreePath(javax.swing.tree.TreePath) JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode) RoomInfo(org.jivesoftware.smackx.muc.RoomInfo) Tree(org.jivesoftware.spark.component.Tree) JLabel(javax.swing.JLabel) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) SmackException(org.jivesoftware.smack.SmackException) ChatRoomNotFoundException(org.jivesoftware.spark.ui.ChatRoomNotFoundException) XMPPException(org.jivesoftware.smack.XMPPException)

Example 12 with JiveTreeNode

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

the class WorkgroupInvitationDialog method getAgent.

/**
 * Handles tree selection of an agent.
 *
 * @return the agents jid.
 */
private String getAgent() {
    String agentJID;
    final DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
    if (node == null || node.getAllowsChildren()) {
        return "";
    }
    agentJID = roster.getAgentJID((JiveTreeNode) node);
    if (agentJID == null) {
        final Object nodeInfo = node.getUserObject();
        if (!node.isLeaf()) {
            return "";
        }
        agentJID = nodeInfo.toString();
    }
    return agentJID;
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode)

Example 13 with JiveTreeNode

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

the class WorkgroupRosterTree method buildFromRoster.

private void buildFromRoster() {
    final Roster roster = Roster.getInstanceFor(SparkManager.getConnection());
    roster.addRosterListener(new RosterListener() {

        public void rosterModified() {
        }

        public void entriesAdded(Collection collection) {
        }

        public void entriesUpdated(Collection collection) {
        }

        public void entriesDeleted(Collection collection) {
        }

        public void presenceChanged(Presence presence) {
            changePresence(presence.getFrom(), presence);
        }
    });
    for (RosterGroup group : roster.getGroups()) {
        if (workgroupList.contains(group.getName())) {
            continue;
        }
        final JiveTreeNode groupNode = new JiveTreeNode(group.getName(), true);
        groupNode.setAllowsChildren(true);
        if (group.getEntryCount() > 0) {
            rootNode.add(groupNode);
        }
        for (RosterEntry entry : group.getEntries()) {
            String name = entry.getName();
            if (name == null) {
                name = entry.getUser();
            }
            if (exclusionList.contains(entry.getUser())) {
                continue;
            }
            final JiveTreeNode entryNode = new JiveTreeNode(name, false);
            final Presence usersPresence = roster.getPresence(entry.getUser());
            addressMap.put(entryNode, entry.getUser());
            if (PresenceManager.isAvailable(usersPresence)) {
                groupNode.add(entryNode);
            } else if (showUnavailableAgents) {
                groupNode.add(entryNode);
            }
            changePresence(entry.getUser(), usersPresence);
            final DefaultTreeModel model = (DefaultTreeModel) rosterTree.getModel();
            model.nodeStructureChanged(groupNode);
        }
    }
}
Also used : Roster(org.jivesoftware.smack.roster.Roster) JiveTreeNode(org.jivesoftware.spark.component.JiveTreeNode) Collection(java.util.Collection) Presence(org.jivesoftware.smack.packet.Presence) RosterEntry(org.jivesoftware.smack.roster.RosterEntry) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) RosterListener(org.jivesoftware.smack.roster.RosterListener) RosterGroup(org.jivesoftware.smack.roster.RosterGroup)

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