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