SPARK-1221: Bookmark Plugin causes error in error log

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@12044 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Konstantin Zolotarev
2011-03-02 05:00:51 +00:00
committed by konstantin.zolotarev
parent 7f98e035f8
commit 744bcde294
5 changed files with 78 additions and 52 deletions

View File

@ -99,9 +99,16 @@ public class BookmarksUI extends JPanel {
private BookmarkManager manager;
/**
* Initialize Conference UI.
*
*/
public BookmarksUI() {
}
/**
* Initialize Conference UI.
*/
public void loadUI() {
setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
setLayout(new GridBagLayout());
@ -111,6 +118,7 @@ public class BookmarksUI extends JPanel {
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) {
@ -120,10 +128,12 @@ public class BookmarksUI extends JPanel {
};
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);
}
@ -142,6 +152,7 @@ public class BookmarksUI extends JPanel {
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());
@ -160,10 +171,12 @@ public class BookmarksUI extends JPanel {
}
}
@Override
public void mouseReleased(MouseEvent mouseEvent) {
checkPopup(mouseEvent);
}
@Override
public void mousePressed(MouseEvent mouseEvent) {
checkPopup(mouseEvent);
}
@ -179,6 +192,7 @@ public class BookmarksUI extends JPanel {
}
final TimerTask bookmarkTask = new SwingTimerTask() {
@Override
public void doRun() {
try {
setBookmarks(manager.getBookmarkedConferences());
@ -207,6 +221,7 @@ public class BookmarksUI extends JPanel {
Action browseAction = new AbstractAction() {
private static final long serialVersionUID = -8866708581713789939L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
browseRooms(node.toString());
}
@ -217,6 +232,7 @@ public class BookmarksUI extends JPanel {
Action removeServiceAction = new AbstractAction() {
private static final long serialVersionUID = -5276754429117462223L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
DefaultTreeModel treeModel = (DefaultTreeModel)tree.getModel();
treeModel.removeNodeFromParent(node);
@ -232,6 +248,7 @@ public class BookmarksUI extends JPanel {
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();
@ -245,6 +262,7 @@ public class BookmarksUI extends JPanel {
Action removeRoomAction = new AbstractAction() {
private static final long serialVersionUID = -7560090091884746914L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
DefaultTreeModel treeModel = (DefaultTreeModel)tree.getModel();
treeModel.removeNodeFromParent(node);
@ -273,6 +291,7 @@ public class BookmarksUI extends JPanel {
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)) {
@ -298,6 +317,7 @@ public class BookmarksUI extends JPanel {
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();
@ -326,6 +346,7 @@ public class BookmarksUI extends JPanel {
private void addRegisteredServices() {
SwingWorker worker = new SwingWorker() {
@Override
public Object construct() {
try {
if (SparkManager.getConnection().isConnected()) {
@ -338,6 +359,7 @@ public class BookmarksUI extends JPanel {
return mucServices;
}
@Override
public void finished() {
if (mucServices == null) {
return;
@ -431,6 +453,7 @@ public class BookmarksUI extends JPanel {
final Action conferenceAction = new AbstractAction() {
private static final long serialVersionUID = 7973928300442518496L;
@Override
public void actionPerformed(ActionEvent e) {
final String conferenceService = serviceField.getText();
if (hasService(conferenceService)) {
@ -445,6 +468,7 @@ public class BookmarksUI extends JPanel {
SwingWorker worker = new SwingWorker() {
DiscoverInfo discoInfo;
@Override
public Object construct() {
ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(SparkManager.getConnection());
@ -477,6 +501,7 @@ public class BookmarksUI extends JPanel {
return true;
}
@Override
public void finished() {
if (discoInfo != null) {
for (String aServiceList : serviceList) {
@ -505,6 +530,7 @@ public class BookmarksUI extends JPanel {
serviceField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
conferenceAction.actionPerformed(null);

View File

@ -70,7 +70,7 @@ import org.jivesoftware.spark.util.log.Log;
* you can remove from the plugins.xml file located in the classpath of Communicator.
*/
public class ConferenceServices {
private static BookmarksUI bookmarksUI;
private static BookmarksUI bookmarksUI = new BookmarksUI(); //This variable shouldn't be null.
public ConferenceServices() {
ServiceDiscoveryManager manager = ServiceDiscoveryManager.getInstanceFor(SparkManager.getConnection());
@ -224,7 +224,7 @@ public class ConferenceServices {
}
public void finished() {
bookmarksUI = new BookmarksUI();
bookmarksUI.loadUI();
workspace.getWorkspacePane().addTab(Res.getString("tab.conferences"), SparkRes.getImageIcon(SparkRes.CONFERENCE_IMAGE_16x16), bookmarksUI);
}
};

View File

@ -81,6 +81,7 @@ public class BookmarkItem extends JPanel {
action = new AbstractAction() {
private static final long serialVersionUID = 6986851628853679682L;
@Override
public void actionPerformed(ActionEvent e) {
try {
BrowserLauncher.openURL(bookmark.getURL());
@ -99,8 +100,10 @@ public class BookmarkItem extends JPanel {
action = new AbstractAction() {
private static final long serialVersionUID = 4324785627112595384L;
@Override
public void actionPerformed(ActionEvent e) {
SwingWorker worker = new SwingWorker() {
@Override
public Object construct() {
try {
Thread.sleep(10);
@ -111,6 +114,7 @@ public class BookmarkItem extends JPanel {
return "ok";
}
@Override
public void finished() {
ConferenceUtils.joinConferenceOnSeperateThread(bookmark.getName(), bookmark.getJid(), bookmark.getPassword());
}

View File

@ -27,8 +27,6 @@ import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenu;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
import org.jivesoftware.resource.Res;
import org.jivesoftware.resource.SparkRes;
import org.jivesoftware.smack.XMPPException;
@ -52,18 +50,32 @@ import org.jivesoftware.spark.util.log.Log;
*/
public class BookmarkPlugin implements Plugin {
@Override
public void initialize() {
final SwingWorker bookmarkThreadWorker = new SwingWorker() {
@Override
public Object construct() {
return this;
}
return this;
}
/**
* Installing menu into spark menu and adding events to bookmarks
*/
@Override
public void finished() {
try {
initialize();
} catch (Exception e) {
Log.error(e);
}
}
/**
*
*/
public void initialize() {
final JMenu bookmarkMenu = new JMenu(Res.getString("menuitem.bookmarks"));
createMenu(bookmarkMenu);
@ -74,38 +86,18 @@ public class BookmarkPlugin implements Plugin {
}
BookmarksUI bookmarksUi = ConferenceServices.getBookmarkedConferences();
if ( bookmarksUi != null ) {
bookmarksUi.addBookmarksListener(new BookmarksListener() {
bookmarksUi.addBookmarksListener(new BookmarksListener() {
@Override
public void bookmarkAdded(String roomJID) {
rescan(bookmarkMenu);
}
@Override
public void bookmarkRemoved(String roomJID) {
rescan(bookmarkMenu);
}
});
} else {
/**
* IF our plugin loaded earlier than BookmarkUI we have to reskan bookmarks every time we open this menu
* And BookmarksListener event wouldn't work
*/
Log.error("Bookmark plugin loaded earlier then BookmarkUI. BookmarksListener Events wouldn't work!");
bookmarkMenu.addMenuListener(new MenuListener() {
public void menuSelected(MenuEvent menuEvent) {
rescan(bookmarkMenu);
}
public void menuDeselected(MenuEvent arg0) {
//ignore
}
public void menuCanceled(MenuEvent arg0) {
//ignore
}
});
}
}
/**
@ -113,8 +105,7 @@ public class BookmarkPlugin implements Plugin {
*
* @param Bookmark menu Jmenu
*/
public void rescan(JMenu bookmarkMenu)
{
public void rescan(JMenu bookmarkMenu) {
bookmarkMenu.removeAll(); // removing old menus
try {
setBookmarks(bookmarkMenu); // making new
@ -126,16 +117,15 @@ public class BookmarkPlugin implements Plugin {
SparkManager.getMainWindow().getMenu().add(bookmarkMenu, menuCount - 2);
}
}
if (onPanel >= 0) {
if (bookmarkMenu.getMenuComponentCount() <= 0) {
SparkManager.getMainWindow().getMenu().remove(bookmarkMenu);
}
}
// Refreshing menu panel
SparkManager.getWorkspace().getStatusBar().invalidate();
SparkManager.getWorkspace().getStatusBar().validate();
SparkManager.getWorkspace().getStatusBar().repaint();
SparkManager.getMainWindow().getMenu().invalidate();
SparkManager.getMainWindow().getMenu().validate();
SparkManager.getMainWindow().getMenu().repaint();
} catch (XMPPException ex) {
Log.error(ex);
}
@ -146,11 +136,7 @@ public class BookmarkPlugin implements Plugin {
*
* @param Bookmark menu Jmenu
*/
public void createMenu(JMenu bookmarkMenu)
{
SparkManager.getWorkspace().getStatusBar().invalidate();
SparkManager.getWorkspace().getStatusBar().validate();
SparkManager.getWorkspace().getStatusBar().repaint();
public void createMenu(JMenu bookmarkMenu) {
try {
setBookmarks(bookmarkMenu);
} catch (XMPPException ex) {
@ -164,8 +150,7 @@ public class BookmarkPlugin implements Plugin {
*
* @param Bookmark menu Jmenu
*/
public void setBookmarks(JMenu bookmarkMenu ) throws XMPPException
{
public void setBookmarks(JMenu bookmarkMenu) throws XMPPException {
BookmarkManager manager = BookmarkManager.getBookmarkManager(SparkManager.getConnection());
if (manager != null) {
@ -177,13 +162,14 @@ public class BookmarkPlugin implements Plugin {
final BookmarkedURL link = (BookmarkedURL) bookmarkedLink;
Action urlAction = new AbstractAction() {
private static final long serialVersionUID = 4246574779205966917L;
public void actionPerformed(ActionEvent actionEvent) {
private static final long serialVersionUID = 4246574779205966917L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
try {
BrowserLauncher.openURL(link.getURL());
}
catch (Exception e) {
} catch (Exception e) {
Log.error(e);
}
}
@ -199,10 +185,14 @@ public class BookmarkPlugin implements Plugin {
final BookmarkedConference conferences = (BookmarkedConference) bookmarkedConference;
Action conferenceAction = new AbstractAction() {
private static final long serialVersionUID = 5964584172262968704L;
public void actionPerformed(ActionEvent actionEvent) {
private static final long serialVersionUID = 5964584172262968704L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
final TimerTask task = new SwingTimerTask() {
@Override
public void doRun() {
ConferenceUtils.joinConferenceOnSeperateThread(conferences.getName(), conferences.getJid(), conferences.getPassword());
}
@ -217,20 +207,23 @@ public class BookmarkPlugin implements Plugin {
bookmarkMenu.add(conferenceAction);
}
}
}
}
};
bookmarkThreadWorker.start();
}
@Override
public void shutdown() {
}
@Override
public boolean canShutDown() {
return false;
}
@Override
public void uninstall() {
}
}

View File

@ -56,6 +56,7 @@ public class BookmarkUI extends JPanel {
list.setCellRenderer(new JPanelRenderer());
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
if (mouseEvent.getClickCount() == 2) {
BookmarkItem item = (BookmarkItem)list.getSelectedValue();
@ -66,10 +67,12 @@ public class BookmarkUI extends JPanel {
pane.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
list.setCursor(GraphicUtils.HAND_CURSOR);
}
@Override
public void mouseExited(MouseEvent e) {
list.setCursor(GraphicUtils.DEFAULT_CURSOR);
}