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);
}
}
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;
}
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);
}
}
}
Aggregations