Index: applications/editors/josm/plugins/geochat/src/geochat/GeoChatPanel.java
===================================================================
--- applications/editors/josm/plugins/geochat/src/geochat/GeoChatPanel.java	(revision 30509)
+++ applications/editors/josm/plugins/geochat/src/geochat/GeoChatPanel.java	(revision 30511)
@@ -4,4 +4,5 @@
 import java.awt.*;
 import java.awt.event.*;
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -11,6 +12,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.gui.JosmUserIdentityManager;
-import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.*;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
@@ -33,7 +33,7 @@
     private ChatServerConnection connection;
     // those fields should be visible to popup menu actions
-    protected Map<String, LatLon> users;
-    protected ChatPaneManager chatPanes;
-    protected boolean userLayerActive;
+    Map<String, LatLon> users;
+    ChatPaneManager chatPanes;
+    boolean userLayerActive;
     
     public GeoChatPanel() {
@@ -97,4 +97,5 @@
         JButton loginButton = new JButton(tr("Login"));
         loginButton.addActionListener(new ActionListener() {
+            @Override
             public void actionPerformed( ActionEvent e ) {
                 connection.login(nameField.getText());
@@ -105,4 +106,5 @@
         final JCheckBox autoLoginBox = new JCheckBox(tr("Enable autologin"), Main.pref.getBoolean("geochat.autologin", true));
         autoLoginBox.addActionListener(new ActionListener() {
+            @Override
             public void actionPerformed( ActionEvent e ) {
                 Main.pref.put("geochat.autologin", autoLoginBox.isSelected());
@@ -128,5 +130,5 @@
                 connection.bruteLogout();
             }
-        } catch( Throwable e ) {
+        } catch( IOException e ) {
             Main.warn("Failed to logout from geochat server: " + e.getMessage());
         }
@@ -158,4 +160,5 @@
      * for all users nearby.
      */
+    @Override
     public void paint( Graphics2D g, MapView mv, Bounds bbox ) {
         Graphics2D g2d = (Graphics2D)g.create();
@@ -205,4 +208,5 @@
         final String alarm = (alarmLevel <= 0 ? "" : alarmLevel == 1 ? "* " : "!!! ") + title;
         GuiHelper.runInEDT(new Runnable() {
+            @Override
             public void run() {
                 setTitle(alarm);
@@ -223,24 +227,27 @@
     /* ============ ChatServerConnectionListener methods ============= */
 
+    @Override
     public void loggedIn( String userName ) {
         Main.pref.put("geochat.username", userName);
         if( gcPanel.getComponentCount() == 1 ) {
-        	GuiHelper.runInEDTAndWait(new Runnable() {
-				@Override
-				public void run() {
-		            gcPanel.remove(0);
-		            gcPanel.add(tabs, BorderLayout.CENTER);
-		            gcPanel.add(input, BorderLayout.SOUTH);
-				}
-			});
-        }
-        updateTitleAlarm();
-    }
-
+            GuiHelper.runInEDTAndWait(new Runnable() {
+                @Override
+                public void run() {
+                    gcPanel.remove(0);
+                    gcPanel.add(tabs, BorderLayout.CENTER);
+                    gcPanel.add(input, BorderLayout.SOUTH);
+                }
+            });
+        }
+        updateTitleAlarm();
+    }
+
+    @Override
     public void notLoggedIn( final String reason ) {
         if( reason != null ) {
-            SwingUtilities.invokeLater(new Runnable() {
+            GuiHelper.runInEDT(new Runnable() {
+                @Override
                 public void run() {
-                    JOptionPane.showMessageDialog(Main.parent, reason);
+                    new Notification(tr("GeoChat") + ": " + reason).show();
                 }
             });
@@ -255,12 +262,15 @@
     }
 
+    @Override
     public void messageSendFailed( final String reason ) {
-        SwingUtilities.invokeLater(new Runnable() {
+        GuiHelper.runInEDT(new Runnable() {
+            @Override
             public void run() {
-                JOptionPane.showMessageDialog(Main.parent, reason);
+                new Notification(tr("GeoChat") + ": " + reason).show();
             }
         });
     }
 
+    @Override
     public void statusChanged( boolean active ) {
         // only the public tab, because private chats don't rely on coordinates
@@ -269,4 +279,5 @@
     }
 
+    @Override
     public void updateUsers( Map<String, LatLon> newUsers ) {
         for( String uname : this.users.keySet() ) {
@@ -292,4 +303,5 @@
     }
 
+    @Override
     public void receivedMessages( boolean replace, List<ChatMessage> messages ) {
         if( replace )
@@ -346,4 +358,5 @@
     }
 
+    @Override
     public void receivedPrivateMessages( boolean replace, List<ChatMessage> messages ) {
         if( replace )
