Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustLayer.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustLayer.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustLayer.java	(revision 25828)
@@ -173,5 +173,5 @@
     /**
      * Draw the objects to the given map view. Also draws the MapDust bugs to
-     * the map, and the tooltip for the selected MapDust bug.
+     * the map, and the tool-tip for the selected MapDust bug.
      *
      * @param g The <code>Graphics2D</code> object
@@ -200,5 +200,4 @@
                     g.drawImage(icon.getImage(), p.x - (width / 2), p.y
                             - (height / 2), new ImageObserver() {
-
                         @Override
                         public boolean imageUpdate(Image img, int infoflags,
@@ -230,5 +229,4 @@
                 g.drawImage(icon.getImage(), p.x - (width / 2), p.y
                         - (height / 2), new ImageObserver() {
-
                     @Override
                     public boolean imageUpdate(Image img, int infoflags, int x,
@@ -240,5 +238,5 @@
                 String text = buildTooltipText(bugSelected);
                 tooltip.setTipText(text);
-                tooltip.setFont(new Font("Times New Roman", Font.BOLD, 12));
+                tooltip.setFont(new Font("Times New Roman", Font.PLAIN, 13));
                 tooltip.setBackground(Color.WHITE);
                 tooltip.setForeground(Color.BLUE);
@@ -272,5 +270,5 @@
 
     /**
-     * Builds the text of the tooltip containing a short description of the
+     * Builds the text of the tool-tip containing a short description of the
      * given <code>MapdustBug</code> object.
      *
@@ -279,15 +277,17 @@
      */
     private String buildTooltipText(MapdustBug bug) {
-        DateFormat df =
-                DateFormat.getDateInstance(DateFormat.DEFAULT,
-                        Locale.getDefault());
-        String text = "<html>Type: " + bug.getType().getValue() + "<br/>";
-        text += "Status: " + bug.getStatus().getValue() + "<br/>";
-        text += "Address: " + bug.getAddress() + " <br/>";
-        text += "Created by: " + bug.getNickname() + "<br/>";
-        text += "Created on: " + df.format(bug.getDateCreated()) + "<br/>";
-        text += "Last modified on: ";
-        text += df.format(bug.getDateUpdated()) + "<br/>";
-        text += "Comments: " + bug.getNumberOfComments();
+        DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT,
+                Locale.getDefault());
+        String text = "<html><b>Type:</b> " + bug.getType().getValue() ;
+        text += "<br/>";
+        text += "<b>Status:</b> " + bug.getStatus().getValue() + "<br/>";
+        text += "<b>Relevance:</b> " + bug.getRelevance().getName() + "<br/>";
+        text += "<b>Address:</b> " + bug.getAddress() + " <br/>";
+        text += "<b>Created by:</b> " + bug.getNickname() + "<br/>";
+        text += "<b>Created on:</b> " + df.format(bug.getDateCreated());
+        text += "<br/>";
+        text += "<b>Last modified on:</b> "+ df.format(bug.getDateUpdated()) ;
+        text += "<br/>";
+        text += "<b>Comments:</b> " + bug.getNumberOfComments();
         text += "</html>";
         return text;
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustPlugin.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustPlugin.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustPlugin.java	(revision 25828)
@@ -52,5 +52,5 @@
 import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CreateIssueDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CreateBugDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustBugObserver;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObserver;
@@ -61,4 +61,5 @@
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBug;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -81,7 +82,7 @@
 
     /** The <code>CreateIssueDialog</code> object */
-    private CreateIssueDialog dialog;
-
-    /** The JOSM user identity manager, it is used for obtaining the username */
+    private CreateBugDialog dialog;
+
+    /** The JOSM user identity manager, it is used for obtaining the user name */
     private final JosmUserIdentityManager userIdentityManager;
 
@@ -89,5 +90,5 @@
     private List<MapdustBug> mapdustBugList;
 
-    /** The bounding box from where the MapDust bugs are downloaded */
+    /** The bounding box from where the MapDust bugs are down-loaded */
     private BoundingBox bBox;
 
@@ -98,6 +99,6 @@
     private MapdustBugFilter filter;
 
-    /** Specifies if there was or not an error downloading the data */
-    private boolean wasError = false;
+    /** Specifies if there was or not an error down-loading the data */
+    protected boolean wasError = false;
 
     /**
@@ -132,11 +133,9 @@
                 shortcut, 150, this);
         /* add default values for static variables */
-        Main.pref.put("mapdust.pluginState",
-                MapdustPluginState.ONLINE.getValue());
+        Main.pref.put("mapdust.pluginState", MapdustPluginState.ONLINE.getValue());
         Main.pref.put("mapdust.nickname", "");
         Main.pref.put("mapdust.showError", true);
         Main.pref.put("mapdust.version", getPluginInformation().version);
-        Main.pref.put("mapdust.localVersion",
-                getPluginInformation().localversion);
+        Main.pref.put("mapdust.localVersion",getPluginInformation().localversion);
     }
 
@@ -176,11 +175,11 @@
     /**
      * Listens for the events of type <code>PreferenceChangeEvent</code> . If
-     * the event key is 'osm-server.username' then if the username was changed
+     * the event key is 'osm-server.username' then if the user name was changed
      * in Preferences and it was used as 'nickname'( the user did not changed
-     * this completed nickname to someting else ) for submitting changes to
+     * this completed nickname to something else ) for submitting changes to
      * MapDust , re-set the 'mapdust.josmUserName' and 'mapdust.nickname'
      * properties.
      *
-     * @param event The <code>PreferenceChangeEvent</code> obejct
+     * @param event The <code>PreferenceChangeEvent</code> object
      */
     @Override
@@ -198,9 +197,9 @@
                 } else {
                     if (nickname.equals(oldUserName)) {
-                        /* username was used for nickname, and was not changed */
+                        /* user name was used for nickname, and was not changed */
                         Main.pref.put("mapdust.josmUserName", newUserName);
                         Main.pref.put("mapdust.nickname", newUserName);
                     } else {
-                        /* username was used for nickname, and was changed */
+                        /* user name was used for nickname, and was changed */
                         Main.pref.put("mapdust.josmUserName", newUserName);
                     }
@@ -268,5 +267,5 @@
      * on the map and on the bugs list. A <code>MapdustBug</code> will be
      * displayed on the map only if it is permitted by the selected filter
-     * settings.
+     * settings (statuses, types, description and relevance filter).
      *
      * @param mapdustBug The <code>MapdustBug</code> object
@@ -304,4 +303,30 @@
                 result = containsStatus && containsType;
             }
+            /* check relevance filter settings */
+            boolean containsMinRelevance = false;
+            if (filter.getMinRelevance() != null) {
+                MapdustRelevance minRel = filter.getMinRelevance();
+                MapdustRelevance bugRel = mapdustBug.getRelevance();
+                if (minRel.equals(bugRel)) {
+                    containsMinRelevance = true;
+                } else {
+                    if (bugRel.compareTo(minRel) == 1) {
+                        containsMinRelevance = true;
+                    }
+                }
+            }
+            boolean containsMaxRelevance = false;
+            if (filter.getMaxRelevance() != null) {
+                MapdustRelevance maxRel = filter.getMaxRelevance();
+                MapdustRelevance bugRel = mapdustBug.getRelevance();
+                if (maxRel.equals(bugRel)) {
+                    containsMaxRelevance = true;
+                } else {
+                    if (bugRel.compareTo(maxRel) == -1) {
+                        containsMaxRelevance = true;
+                    }
+                }
+                result = result && (containsMinRelevance && containsMaxRelevance);
+            }
         }
         return result;
@@ -334,7 +359,7 @@
     /**
      * At mouse click the following two actions can be done: adding a new bug,
-     * and selecting a bug from the map. A bug can be added if the plugin is the
-     * only active plugin and you double click on the map. You can select a bug
-     * from the map by clicking on it.
+     * and selecting a bug from the map. A bug can be added if the plug-in is
+     * the only active plug-in and you double click on the map. You can select
+     * a bug from the map by clicking on it.
      *
      * @param event The <code>MouseEvent</code> object
@@ -357,5 +382,5 @@
                         mapdustGUI.getPanel().disableBtnPanel();
                         /* create and show dialog */
-                        dialog = new CreateIssueDialog(event.getPoint(), this);
+                        dialog = new CreateBugDialog(event.getPoint(), this);
                         dialog.showDialog();
                         event.consume();
@@ -411,6 +436,6 @@
     /**
      * Adds the <code>MapdustLayer</code> to the JOSM editor. If the list of
-     * <code>MapdustBug</code>s is null then downloads the data from the MapDust
-     * Service and updates the editor with this new data.
+     * <code>MapdustBug</code>s is null then down-loads the data from the
+     * MapDust Service and updates the editor with this new data.
      *
      * @param layer The <code>Layer</code> which will be added to the JOSM
@@ -422,5 +447,5 @@
     /**
      * Removes the <code>MapdustLayer</code> from the JOSM editor. Also closes
-     * the MapDust plugin window.
+     * the MapDust plug-in window.
      *
      * @param layer The <code>Layer</code> which will be removed from the JOSM
@@ -447,6 +472,6 @@
     /**
      * Listens for the zoom change event. If the zoom was changed, then it will
-     * download the MapDust bugs data from the current view. The new data will
-     * be downloaded only if the current bounding box is different from the
+     * down-load the MapDust bugs data from the current view. The new data will
+     * be down-loaded only if the current bounding box is different from the
      * previous one.
      */
@@ -469,7 +494,7 @@
 
     /**
-     * Updates the plugin with a new MapDust bugs data. If the filters are set
+     * Updates the plug-in with a new MapDust bugs data. If the filters are set
      * then the MapDust data will be filtered. If initialUpdate flag is true
-     * then the plugin is updated for the first time with the MapDust data. By
+     * then the plug-in is updated for the first time with the MapDust data. By
      * default the first time there is no filter applied to the MapDust data.
      *
@@ -508,5 +533,5 @@
 
     /**
-     * Updates the <code>MapdustPlugin</code> data. Downloads the
+     * Updates the <code>MapdustPlugin</code> data. Down-loads the
      * <code>MapdustBug</code> objects from the current view, and updates the
      * <code>MapdustGUI</code> and the map with the new data.
@@ -523,5 +548,5 @@
 
     /**
-     * Updates the MapDust plugin data. Downloads the list of
+     * Updates the MapDust plug-in data. Down-loads the list of
      * <code>MapdustBug</code> objects for the given area, and updates the map
      * and the MapDust layer with the new data.
@@ -529,5 +554,5 @@
     protected synchronized void updateMapdustData() {
         if (Main.map != null && Main.map.mapView != null) {
-            /* download the MapDust data */
+            /* Down-loads the MapDust data */
             try {
                 MapdustServiceHandler handler = new MapdustServiceHandler();
@@ -542,7 +567,9 @@
                 @Override
                 public void run() {
-                    updateView();
-                    if (wasError) {
-                        handleError();
+                    synchronized (this) {
+                        updateView();
+                        if (wasError) {
+                            handleError();
+                        }
                     }
                 }
@@ -610,7 +637,6 @@
     /**
      * Handles the <code>MapdustServiceHandlerException</code> error.
-     *
-     */
-    private void handleError() {
+     */
+    protected void handleError() {
         String showMessage = Main.pref.get("mapdust.showError");
         Boolean showErrorMessage = Boolean.parseBoolean(showMessage);
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/MapdustGUI.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/MapdustGUI.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/MapdustGUI.java	(revision 25828)
@@ -75,5 +75,5 @@
             new ArrayList<MapdustUpdateObserver>();
 
-    /** The <code>MapdustPlugin</code> plugin */
+    /** The <code>MapdustPlugin</code> plug-in */
     private MapdustPlugin mapdustPlugin;
 
@@ -93,5 +93,5 @@
     private JPanel mainPanel;
 
-    /** Specifies if the MapDust data was or not downloaded */
+    /** Specifies if the MapDust data was or not down-loaded */
     private boolean downloaded = false;
 
@@ -114,5 +114,5 @@
     /**
      * Displays the <code>MapdustGUI</code> dialog window in the JOSM editor. If
-     * the MapDust data was not downloaded yet or the MapDust layer was added
+     * the MapDust data was not down-loaded yet or the MapDust layer was added
      * after a previous deletion, then the bug reports data will be deleted.
      */
@@ -134,5 +134,5 @@
         /* remove panels */
         if (tabbedPane != null) {
-            /* from offline to online */
+            /* from off-line to online */
             remove(mainPanel);
             tabbedPane = null;
@@ -142,5 +142,5 @@
             actionPanel = null;
         } else {
-            /* from online to offline */
+            /* from online to off-line */
             if (mainPanel != null) {
                 remove(mainPanel);
@@ -229,5 +229,5 @@
         if (pluginState.equals(MapdustPluginState.ONLINE.getValue())) {
             if (tabbedPane != null) {
-                /* from offline to online */
+                /* from off-line to online */
                 remove(mainPanel);
                 tabbedPane = null;
@@ -242,16 +242,15 @@
         } else {
             if (tabbedPane == null) {
-                /* from online to offline */
+                /* from online to off-line */
                 remove(mainPanel);
                 mainPanel = null;
                 panel = null;
             }
-            List<MapdustAction> actionList =
-                    actionPanel != null ? actionPanel.getActionList()
-                            : new ArrayList<MapdustAction>();
+            List<MapdustAction> actionList = actionPanel != null ?
+                    actionPanel.getActionList() : new ArrayList<MapdustAction>();
 
             /* update panels */
             List<MapdustBug> bugs = filterMapdustBugList(mapdustBugs,
-                    actionList,mapdustPlugin.getFilter());
+                    actionList, mapdustPlugin.getFilter());
             updateMapdustPanel(bugs);
             updateMapdustActionPanel(actionList);
@@ -268,7 +267,6 @@
      */
     private void updateMapdustPanel(List<MapdustBug> mapdustBugs) {
-        MapdustBug selectedBug =
-                (mapdustBugs != null && mapdustBugs.size() > 0) ? mapdustBugs
-                        .get(0) : null;
+        MapdustBug selectedBug = (mapdustBugs != null && mapdustBugs.size()
+                > 0) ? mapdustBugs.get(0) : null;
         if (detailsPanel == null) {
             detailsPanel = new MapdustBugPropertiesPanel(selectedBug);
@@ -300,5 +298,5 @@
 
     /**
-     * Creates the main panel of the plugin and adds to the content pane.
+     * Creates the main panel of the plug-in and adds to the content pane.
      */
     private void createMainPanel() {
@@ -427,5 +425,5 @@
     /**
      * Enables the basic components from the <code>MapdustButtonPanel</code>.
-     * Basic components are considered the following buttons: work offline,
+     * Basic components are considered the following buttons: work off-line,
      * filter bug report, and refresh.If the onlyBasic flag is true then the
      * other buttons will be disabled.
@@ -447,5 +445,4 @@
         return getActionPanel().getActionList();
     }
-
 
     /**
@@ -512,5 +509,5 @@
     /**
      * Notifies the <code>MapdustInitialUpdateObserver</code> objects waiting
-     * for the initial download, and update of plugin.
+     * for the initial down-load, and update of plug-in.
      */
     @Override
@@ -542,4 +539,6 @@
 
     /**
+     * Returns the <code>MapdustPlugin</code> object
+     *
      * @return the mapdustPlugin
      */
@@ -549,4 +548,6 @@
 
     /**
+     * Sets the <code>MapdustPlugin</code> object
+     *
      * @param mapdustPlugin the mapdustPlugin to set
      */
@@ -556,7 +557,7 @@
 
     /**
-     * Returns the downloaded flag
-     *
-     * @return the downloaded
+     * Returns the down-loaded flag
+     *
+     * @return the down-loaded
      */
     public boolean isDownloaded() {
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteAddBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteAddBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteAddBug.java	(revision 25828)
@@ -38,5 +38,5 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CreateIssueDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CreateBugDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObservable;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObserver;
@@ -88,5 +88,5 @@
      * @param mapdustGUI The <code>MapdustGUI</code> object
      */
-    public ExecuteAddBug(CreateIssueDialog dialog, MapdustGUI mapdustGUI) {
+    public ExecuteAddBug(CreateBugDialog dialog, MapdustGUI mapdustGUI) {
         setDialog(dialog);
         setMapdustGUI(mapdustGUI);
@@ -103,5 +103,5 @@
     public void actionPerformed(ActionEvent event) {
         if (event != null) {
-            CreateIssueDialog createDialog = (CreateIssueDialog) getDialog();
+            CreateBugDialog createDialog = (CreateBugDialog) getDialog();
             Type type = (Type) (createDialog).getCbbType().getSelectedItem();
             String nickname = createDialog.getTxtNickname().getText();
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteCloseBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteCloseBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteCloseBug.java	(revision 25828)
@@ -37,5 +37,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeIssueStatusDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeBugStatusDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObservable;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObserver;
@@ -87,5 +87,5 @@
      * @param mapdustGUI The <code>MapdustGUI</code> object
      */
-    public ExecuteCloseBug(ChangeIssueStatusDialog dialog, MapdustGUI mapdustGUI) {
+    public ExecuteCloseBug(ChangeBugStatusDialog dialog, MapdustGUI mapdustGUI) {
         setDialog(dialog);
         setMapdustGUI(mapdustGUI);
@@ -104,6 +104,6 @@
             if (btn.getText().equals("OK")) {
                 /* the OK button was pressed */
-                ChangeIssueStatusDialog issueDialog =
-                        (ChangeIssueStatusDialog) getDialog();
+                ChangeBugStatusDialog issueDialog =
+                        (ChangeBugStatusDialog) getDialog();
                 String nickname = issueDialog.getTxtNickname().getText();
                 String commentText = issueDialog.getTxtDescription().getText();
@@ -131,5 +131,5 @@
                     /* destroy dialog */
                     enableFiredButton(issueDialog.getFiredButton());
-                    mapdustGUI.enableBtnPanel(false);
+                    mapdustGUI.enableBtnPanel(true);
                     issueDialog.dispose();
                     if (getMapdustGUI().getActionPanel()!= null) {
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteCommentBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteCommentBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteCommentBug.java	(revision 25828)
@@ -37,5 +37,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CommentIssueDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CommentBugDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObservable;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObserver;
@@ -86,5 +86,5 @@
      * @param mapdustGUI The <code>MapdustGUI</code> object
      */
-    public ExecuteCommentBug(CommentIssueDialog dialog, MapdustGUI mapdustGUI) {
+    public ExecuteCommentBug(CommentBugDialog dialog, MapdustGUI mapdustGUI) {
         setDialog(dialog);
         setMapdustGUI(mapdustGUI);
@@ -103,6 +103,6 @@
             if (btn.getText().equals("OK")) {
                 /* ok button was pressed */
-                CommentIssueDialog issueDialog =
-                        (CommentIssueDialog) getDialog();
+                CommentBugDialog issueDialog =
+                        (CommentBugDialog) getDialog();
                 String nickname = issueDialog.getTxtNickname().getText();
                 String commentText = issueDialog.getTxtComment().getText();
@@ -127,4 +127,9 @@
                             MapdustServiceCommand.COMMENT_BUG, iconPath,
                             selectedBug, comment);
+                    /* destroy dialog */
+                    enableFiredButton(issueDialog.getFiredButton());
+                    mapdustGUI.enableBtnPanel(true);
+                    mapdustGUI.getPanel().resetSelectedBug(0);
+                    issueDialog.dispose();
                     if (getMapdustGUI().getActionPanel() != null) {
                         issueDialog.dispose();
@@ -155,4 +160,10 @@
                                     JOptionPane.ERROR_MESSAGE);
                         }
+                        /* enable buttons */
+                        enableFiredButton(issueDialog.getFiredButton());
+                        mapdustGUI.enableBtnPanel(false);
+                        mapdustGUI.getPanel().resetSelectedBug(0);
+                        /* destroy dialog */
+                        issueDialog.dispose();
                         if (newMapdustBug != null) {
                             notifyObservers(newMapdustBug);
@@ -160,10 +171,5 @@
                     }
                 }
-                /* enable buttons */
-                enableFiredButton(issueDialog.getFiredButton());
-                mapdustGUI.enableBtnPanel(false);
-                mapdustGUI.getPanel().resetSelectedBug(0);
-                /* destroy dialog */
-                issueDialog.dispose();
+
             }
         }
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteFilterBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteFilterBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteFilterBug.java	(revision 25828)
@@ -43,4 +43,5 @@
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObserver;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
 
 
@@ -96,7 +97,9 @@
                 /* get the selected description filter */
                 boolean descr = dialog.isDescrFilterChecked();
+                MapdustRelevance minValue = dialog.getSelectedMinRelevance();
+                MapdustRelevance maxValue= dialog.getSelectedMaxRelevance();
                 /* notifies the observers about the filters */
-                notifyObservers(new MapdustBugFilter(statuses, types, descr),
-                        false);
+                notifyObservers(new MapdustBugFilter(statuses, types, descr,
+                        minValue, maxValue), false);
                 enableFiredButton(dialog.getFiredButton());
                 mapdustGUI.enableBtnPanel(false);
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteInvalidateBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteInvalidateBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteInvalidateBug.java	(revision 25828)
@@ -37,5 +37,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeIssueStatusDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeBugStatusDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObservable;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObserver;
@@ -89,5 +89,5 @@
      * @param mapdustGUI The <code>MapdustGUI</code> object
      */
-    public ExecuteInvalidateBug(ChangeIssueStatusDialog dialog,
+    public ExecuteInvalidateBug(ChangeBugStatusDialog dialog,
             MapdustGUI mapdustGUI) {
         setDialog(dialog);
@@ -107,6 +107,6 @@
             if (btn.getText().equals("OK")) {
                 /* ok button was pressed */
-                ChangeIssueStatusDialog issueDialog =
-                        (ChangeIssueStatusDialog) getDialog();
+                ChangeBugStatusDialog issueDialog =
+                        (ChangeBugStatusDialog) getDialog();
                 String nickname = issueDialog.getTxtNickname().getText();
                 String commentText = issueDialog.getTxtDescription().getText();
@@ -135,5 +135,5 @@
 
                     /* enable buttons */
-                    mapdustGUI.enableBtnPanel(false);
+                    mapdustGUI.enableBtnPanel(true);
                     enableFiredButton(issueDialog.getFiredButton());
                     issueDialog.dispose();
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteReOpenBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteReOpenBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteReOpenBug.java	(revision 25828)
@@ -37,5 +37,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeIssueStatusDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeBugStatusDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObservable;
 import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustActionObserver;
@@ -88,5 +88,5 @@
      * @param mapdustGUI The <code>MapdustGUI</code> object
      */
-    public ExecuteReOpenBug(ChangeIssueStatusDialog dialog,
+    public ExecuteReOpenBug(ChangeBugStatusDialog dialog,
             MapdustGUI mapdustGUI) {
         setDialog(dialog);
@@ -104,6 +104,6 @@
             if (btn.getText().equals("OK")) {
                 /* pressed ok */
-                ChangeIssueStatusDialog issueDialog =
-                        (ChangeIssueStatusDialog) getDialog();
+                ChangeBugStatusDialog issueDialog =
+                        (ChangeBugStatusDialog) getDialog();
                 String nickname = issueDialog.getTxtNickname().getText();
                 String commentText = issueDialog.getTxtDescription().getText();
@@ -130,5 +130,5 @@
                             selectedBug, comment, 1);
                     /* destroy dialog */
-                    mapdustGUI.enableBtnPanel(false);
+                    mapdustGUI.enableBtnPanel(true);
                     enableFiredButton(issueDialog.getFiredButton());
                     issueDialog.dispose();
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteWorkOffline.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteWorkOffline.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteWorkOffline.java	(revision 25828)
@@ -95,4 +95,5 @@
                             MapdustPluginState.OFFLINE.getValue());
                     btn.setSelected(false);
+                    btn.setFocusable(false);
                 } else {
                     // was offline, becomes online
@@ -117,4 +118,5 @@
                             MapdustPluginState.ONLINE.getValue());
                     btn.setSelected(false);
+                    btn.setFocusable(false);
                 }
                 notifyObservers(null, false);
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/MapdustExecuteAction.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/MapdustExecuteAction.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/MapdustExecuteAction.java	(revision 25828)
@@ -66,5 +66,5 @@
         String errorMessage = null;
         String invalidNickname = " Your nickname length has to be between 3";
-        invalidNickname += " and 16 characters.Please use letters,numbers, ";
+        invalidNickname += " and 16 characters. Please use letters,numbers, ";
         invalidNickname += " '-', '.' or '_' '.'";
         if (emptyValue(nickname) && emptyValue(commentText)) {
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/MapdustShowAction.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/MapdustShowAction.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/MapdustShowAction.java	(revision 25828)
@@ -51,7 +51,4 @@
     /** The icon name of the dialog window */
     protected String iconName;
-
-    /** The message to display on the dialog */
-    protected String messageText;
 
     /** The <code>MapdustPlugin</code> */
@@ -124,22 +121,4 @@
 
     /**
-     * Returns the message text
-     *
-     * @return the messageText
-     */
-    public String getMessageText() {
-        return this.messageText;
-    }
-
-    /**
-     * Returns the message text
-     *
-     * @param messageText the messageText to set
-     */
-    public void setMessageText(String messageText) {
-        this.messageText = messageText;
-    }
-
-    /**
      * Disables the buttons from the given button panel.
      *
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowCloseBugAction.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowCloseBugAction.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowCloseBugAction.java	(revision 25828)
@@ -33,5 +33,5 @@
 import javax.swing.JToggleButton;
 import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeIssueStatusDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeBugStatusDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
 
@@ -64,9 +64,6 @@
     public ShowCloseBugAction(MapdustPlugin mapdustPlugin) {
         setMapdustPlugin(mapdustPlugin);
-        setTitle("Close bug report");
+        setTitle("Mark bug report as fixed");
         setIconName("dialogs/fixed.png");
-        String text = "In order to close a bug report, please provide your";
-        text += " nickname and your reason of closing the bug report.";
-        setMessageText(text);
     }
 
@@ -89,6 +86,6 @@
             }
             disableButtons(getButtonPanel());
-            ChangeIssueStatusDialog dialog = new ChangeIssueStatusDialog(
-                    getTitle(), getIconName(), getMessageText(), "close", btn,
+            ChangeBugStatusDialog dialog = new ChangeBugStatusDialog(
+                    getTitle(), getIconName(), "close", btn,
                     getMapdustPlugin());
             dialog.setLocationRelativeTo(null);
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowCommentBugAction.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowCommentBugAction.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowCommentBugAction.java	(revision 25828)
@@ -33,5 +33,5 @@
 import javax.swing.JToggleButton;
 import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CommentIssueDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.CommentBugDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
 
@@ -63,9 +63,6 @@
     public ShowCommentBugAction(MapdustPlugin mapdustPlugin) {
         setMapdustPlugin(mapdustPlugin);
-        setTitle("Create bug report comment");
+        setTitle("Add comment/additional info");
         setIconName("dialogs/comment.png");
-        String text = "In order to comment a bug report, you need to ";
-        text += "provide your nickname and a brief comment for the bug.";
-        setMessageText(text);
     }
 
@@ -88,6 +85,6 @@
             }
             disableButtons(getButtonPanel());
-            CommentIssueDialog dialog = new CommentIssueDialog(getTitle(),
-                    getIconName(), getMessageText(), btn, getMapdustPlugin());
+            CommentBugDialog dialog = new CommentBugDialog(getTitle(),
+                    getIconName(), btn, getMapdustPlugin());
             dialog.setLocationRelativeTo(null);
             dialog.getContentPane().setPreferredSize(dialog.getSize());
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowInvalidateBugAction.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowInvalidateBugAction.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowInvalidateBugAction.java	(revision 25828)
@@ -33,5 +33,5 @@
 import javax.swing.JToggleButton;
 import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeIssueStatusDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeBugStatusDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
 
@@ -64,9 +64,6 @@
     public ShowInvalidateBugAction(MapdustPlugin mapdustPlugin) {
         setMapdustPlugin(mapdustPlugin);
-        setTitle("Invalidate bug report");
+        setTitle("Mark bug report as non-reproducible/software bug");
         setIconName("dialogs/invalid.png");
-        String text = "In order to invalidate the bug report, please provide ";
-        text += "your nickname and your reason of invalidating the bug report.";
-        setMessageText(text);
     }
 
@@ -90,6 +87,6 @@
             }
             disableButtons(getButtonPanel());
-            ChangeIssueStatusDialog dialog = new ChangeIssueStatusDialog(
-                    getTitle(), getIconName(), getMessageText(), "invalidate",
+            ChangeBugStatusDialog dialog = new ChangeBugStatusDialog(
+                    getTitle(), getIconName(), "invalidate",
                     btn, getMapdustPlugin());
             dialog.setLocationRelativeTo(null);
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowReOpenBugAction.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowReOpenBugAction.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/show/ShowReOpenBugAction.java	(revision 25828)
@@ -33,5 +33,5 @@
 import javax.swing.JToggleButton;
 import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeIssueStatusDialog;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.ChangeBugStatusDialog;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
 
@@ -63,9 +63,6 @@
     public ShowReOpenBugAction(MapdustPlugin mapdustPlugin) {
         setMapdustPlugin(mapdustPlugin);
-        setTitle("Re-open bug report");
+        setTitle("Reopen bug report");
         setIconName("dialogs/reopen.png");
-        String text = "In order to re-open the bug report, please provide ";
-        text += "your nickname and your reason of re-opening the bug report.";
-        setMessageText(text);
     }
 
@@ -87,6 +84,6 @@
             }
             disableButtons(getButtonPanel());
-            ChangeIssueStatusDialog dialog = new ChangeIssueStatusDialog(
-                    getTitle(), getIconName(), getMessageText(), "reopen", btn,
+            ChangeBugStatusDialog dialog = new ChangeBugStatusDialog(
+                    getTitle(), getIconName(), "reopen", btn,
                     getMapdustPlugin());
             dialog.setLocationRelativeTo(null);
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/ChangeBugStatusDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/ChangeBugStatusDialog.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/ChangeBugStatusDialog.java	(revision 25828)
@@ -0,0 +1,286 @@
+/* Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.dialog;
+
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Image;
+import java.awt.Rectangle;
+import javax.swing.AbstractAction;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.JToggleButton;
+import javax.swing.WindowConstants;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.adapter.WindowClose;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCancel;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCloseBug;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteInvalidateBug;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteReOpenBug;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+
+/**
+ * This class is used for creating a dialog window for the following MapDust BUG
+ * related actions: close bug report, invalidate bug report and re-open bug
+ * report.
+ *
+ * @author Bea
+ */
+public class ChangeBugStatusDialog extends AbstractDialog {
+
+    /** The serial version UID */
+    private static final long serialVersionUID = -4106150600118847229L;
+
+    /** Nickname label */
+    private JLabel lblNickname;
+
+    /** Nickname text field */
+    private JTextField txtNickname;
+
+    /** Comment label */
+    private JLabel lblComment;
+
+    /** Description text area */
+    private JScrollPane cmpDescription;
+
+    /** The description text */
+    private JTextArea txtDescription;
+
+    /** Cancel button */
+    private JButton btnCancel;
+
+    /** OK button */
+    private JButton btnOk;
+
+    /** The type */
+    private final String type;
+
+    /**
+     * Builds a new <code>ChangeStatusDialog</code> object with the given
+     * parameters.
+     *
+     * @param title The title of the dialog
+     * @param iconName The name of the icon
+     * @param type The type of the dialog ( close ,invalidate , re-open)
+     * @param firedButton The button which fired this action
+     * @param mapdustPlugin The <code>MapdustPlugin</code> object
+     */
+    public ChangeBugStatusDialog(String title, String iconName, String type,
+            JToggleButton firedButton, MapdustPlugin mapdustPlugin) {
+        this.type = type;
+        if (firedButton != null) {
+            setFiredButton(firedButton);
+        }
+        setTitle(title);
+        setModal(true);
+        Image image = ImageProvider.get(iconName).getImage();
+        setIconImage(image);
+        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
+        setBackground(Color.white);
+        setResizable(false);
+        setForeground(Color.black);
+        setLayout(null);
+        addComponents(mapdustPlugin);
+        MapdustButtonPanel btnPanel =
+                mapdustPlugin.getMapdustGUI().getPanel().getBtnPanel();
+        addWindowListener(new WindowClose(this, btnPanel));
+    }
+
+    /**
+     * Adds the components to the dialog window.
+     *
+     * @param mapdustPlugin The <code>MapdustPlugin</code> object
+     */
+    @Override
+    public void addComponents(MapdustPlugin mapdustPlugin) {
+        /* initialize components of the JDialog */
+        Color backgroundColor = getContentPane().getBackground();
+        Font font = new Font("Times New Roman", Font.BOLD, 14);
+        /* create the nickname label and text field */
+        if (lblNickname == null) {
+            Rectangle bounds = new Rectangle(10, 10, 85, 25);
+            lblNickname = ComponentUtil.createJLabel("Nickname", font, bounds,
+                    null);
+        }
+        if (txtNickname == null) {
+            Rectangle bounds = new Rectangle(100, 10, 250, 25);
+            txtNickname = ComponentUtil.createJTextField(bounds);
+            /* get the nickname */
+            String nickname = Main.pref.get("mapdust.nickname");
+            if (nickname.isEmpty()) {
+                /* if nickname is empty, then get JOSM username */
+                nickname = Main.pref.get("mapdust.josmUserName");
+            }
+            if (nickname != null && !nickname.isEmpty()) {
+                txtNickname.setText(nickname);
+            }
+        }
+        /* creates the comment label and text area */
+        if (lblComment == null) {
+            Rectangle bounds = new Rectangle(10, 50, 89, 25);
+            lblComment = ComponentUtil.createJLabel("Comment", font, bounds,
+                    null);
+        }
+        if (cmpDescription == null) {
+            Rectangle bounds = new Rectangle(100, 50, 250, 80);
+            txtDescription = new JTextArea();
+            txtDescription.setLineWrap(true);
+            txtDescription.setFont(new Font("Times New Roman", Font.PLAIN, 12));
+            cmpDescription = ComponentUtil.createJScrollPane(txtDescription,
+                    bounds, backgroundColor, false, true);
+        }
+        /* creates the cancel action */
+        ExecuteCancel cancelAction = new ExecuteCancel(this,
+                mapdustPlugin.getMapdustGUI());
+        AbstractAction okAction;
+        if (type.equals("close")) {
+            /* create the execute close bug action */
+            okAction = new ExecuteCloseBug(this, mapdustPlugin.getMapdustGUI());
+            ((ExecuteCloseBug) okAction).addObserver(mapdustPlugin);
+            ((ExecuteCloseBug) okAction).addObserver(mapdustPlugin
+                    .getMapdustGUI());
+        } else {
+            if (type.equals("invalidate")) {
+                /* create the invalidate bug action */
+                okAction = new ExecuteInvalidateBug(this,
+                        mapdustPlugin.getMapdustGUI());
+                ((ExecuteInvalidateBug) okAction).addObserver(mapdustPlugin);
+                ((ExecuteInvalidateBug) okAction).addObserver(mapdustPlugin
+                        .getMapdustGUI());
+            } else {
+                /* executes the re-open bug action */
+                okAction = new ExecuteReOpenBug(this,
+                        mapdustPlugin.getMapdustGUI());
+                ((ExecuteReOpenBug) okAction).addObserver(mapdustPlugin);
+                ((ExecuteReOpenBug) okAction).addObserver(mapdustPlugin
+                        .getMapdustGUI());
+            }
+        }
+        /* creates the cancel button */
+        if (btnCancel == null) {
+            Rectangle bounds = new Rectangle(260, 140, 90, 25);
+            btnCancel = ComponentUtil.createJButton("Cancel", bounds,
+                    cancelAction);
+        }
+        /* creates the ok button */
+        if (btnOk == null) {
+            Rectangle bounds = new Rectangle(190, 140, 60, 25);
+            btnOk = ComponentUtil.createJButton("OK", bounds, okAction);
+        }
+        /* add components to the frame */
+        add(lblNickname);
+        add(txtNickname);
+        add(lblComment);
+        add(cmpDescription);
+        add(btnCancel);
+        add(btnOk);
+        setSize(360, 170);
+    }
+
+    /**
+     * Returns the <code>JLabel</code> of the nickname
+     *
+     * @return the lblNickname
+     */
+    public JLabel getLblNickname() {
+        return this.lblNickname;
+    }
+
+    /**
+     * Returns the <code>JTextField</code> of the nickname
+     *
+     * @return the txtNickname
+     */
+    public JTextField getTxtNickname() {
+        return this.txtNickname;
+    }
+
+    /**
+     * Returns the <code>JLabel</code> of the comment
+     *
+     * @return the lblComment
+     */
+    public JLabel getLblComment() {
+        return this.lblComment;
+    }
+
+    /**
+     * Returns the <code>JScrollPane</code> of the description
+     *
+     * @return the cmpDescription
+     */
+    public JScrollPane getCmpDescription() {
+        return this.cmpDescription;
+    }
+
+    /**
+     * Returns the <code>JTextArea</code> of the description
+     *
+     * @return the txtDescription
+     */
+    public JTextArea getTxtDescription() {
+        return this.txtDescription;
+    }
+
+    /**
+     * Returns the cancel button
+     *
+     * @return the btnCancel
+     */
+    public JButton getBtnCancel() {
+        return this.btnCancel;
+    }
+
+    /**
+     * Returns the ok buttons
+     *
+     * @return the btnOk
+     */
+    public JButton getBtnOk() {
+        return this.btnOk;
+    }
+
+    /**
+     * Returns the type of the dialog window
+     *
+     * @return the type
+     */
+    public String getType() {
+        return this.type;
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/ChangeIssueStatusDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/ChangeIssueStatusDialog.java	(revision 25754)
+++ 	(revision )
@@ -1,319 +1,0 @@
-/* Copyright (c) 2010, skobbler GmbH
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its
- *    contributors may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package org.openstreetmap.josm.plugins.mapdust.gui.component.dialog;
-
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Image;
-import java.awt.Rectangle;
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.JTextPane;
-import javax.swing.JToggleButton;
-import javax.swing.WindowConstants;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.adapter.WindowClose;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCancel;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCloseBug;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteInvalidateBug;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteReOpenBug;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
-import org.openstreetmap.josm.tools.ImageProvider;
-
-
-/**
- * This class is used for creating a dialog window for the following MapDust BUG
- * related actions: close bug report, invalidate bug report and re-open bug
- * report.
- *
- * @author Bea
- */
-public class ChangeIssueStatusDialog extends AbstractDialog {
-
-    /** The serial version UID */
-    private static final long serialVersionUID = -4106150600118847229L;
-
-    /** The message test */
-    private final String messageText;
-
-    /** Custom text */
-    private JScrollPane cmpMessage;
-
-    /** Nickname label */
-    private JLabel lblNickname;
-
-    /** Nickname text field */
-    private JTextField txtNickname;
-
-    /** Comment label */
-    private JLabel lblComment;
-
-    /** Description text area */
-    private JScrollPane cmpDescription;
-
-    /** The description text */
-    private JTextArea txtDescription;
-
-    /** Cancel button */
-    private JButton btnCancel;
-
-    /** OK button */
-    private JButton btnOk;
-
-    /** The type */
-    private final String type;
-
-    /**
-     * Builds a new <code>ChangeStatusDialog</code> object with the given
-     * parameters.
-     *
-     * @param title The title of the dialog
-     * @param iconName The name of the icon
-     * @param messageText The text of the message component.
-     * @param type The type of the dialog ( close ,invalidate , re-open)
-     * @param firedButton The button which fired this action
-     * @param mapdustPlugin The <code>MapdustPlugin</code> object
-     */
-    public ChangeIssueStatusDialog(String title, String iconName,
-            String messageText, String type, JToggleButton firedButton,
-            MapdustPlugin mapdustPlugin) {
-        this.type = type;
-        this.messageText = messageText;
-        if (firedButton != null) {
-            setFiredButton(firedButton);
-        }
-        setTitle(title);
-        setModal(true);
-        Image image = ImageProvider.get(iconName).getImage();
-        setIconImage(image);
-        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
-        getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
-        setBackground(Color.white);
-        setResizable(false);
-        setForeground(Color.black);
-        setLayout(null);
-        addComponents(mapdustPlugin);
-        MapdustButtonPanel btnPanel =
-                mapdustPlugin.getMapdustGUI().getPanel().getBtnPanel();
-        addWindowListener(new WindowClose(this, btnPanel));
-    }
-
-    /**
-     * Adds the components to the dialog window.
-     *
-     * @param mapdustPlugin The <code>MapdustPlugin</code> object
-     */
-    @Override
-    public void addComponents(MapdustPlugin mapdustPlugin) {
-        /* initialize components of the JDialog */
-        Color backgroundColor = getContentPane().getBackground();
-        Font font = new Font("Times New Roman", Font.BOLD, 14);
-        /* create the message cmp */
-        if (cmpMessage == null) {
-            JTextPane txtPane = ComponentUtil.createJTextPane(messageText,
-                    backgroundColor);
-            Rectangle bounds = new Rectangle(10, 10, 330, 50);
-            cmpMessage = ComponentUtil.createJScrollPane(txtPane, bounds,
-                    backgroundColor, true, true);
-        }
-        /* create the nickname label and text field */
-        if (lblNickname == null) {
-            Rectangle bounds = new Rectangle(10, 70, 85, 25);
-            lblNickname = ComponentUtil.createJLabel("Nickname", font, bounds);
-        }
-        if (txtNickname == null) {
-            Rectangle bounds = new Rectangle(100, 70, 230, 25);
-            txtNickname = ComponentUtil.createJTextField(bounds);
-            /* get the nickname */
-            String nickname = Main.pref.get("mapdust.nickname");
-            if (nickname.isEmpty()) {
-                /* if nickname is empty, then get JOSM username */
-                nickname = Main.pref.get("mapdust.josmUserName");
-            }
-            if (nickname != null && !nickname.isEmpty()) {
-                txtNickname.setText(nickname);
-            }
-        }
-        /* creates the comment label and text area */
-        if (lblComment == null) {
-            Rectangle bounds = new Rectangle(10, 110, 89, 25);
-            lblComment = ComponentUtil.createJLabel("Comment", font, bounds);
-        }
-        if (cmpDescription == null) {
-            Rectangle bounds = new Rectangle(100, 110, 230, 50);
-            txtDescription = new JTextArea();
-            txtDescription.setLineWrap(true);
-            txtDescription.setFont(new Font("Times New Roman", Font.PLAIN, 12));
-            cmpDescription = ComponentUtil.createJScrollPane(txtDescription,
-                    bounds, backgroundColor, false, true);
-        }
-        /* creates the cancel action */
-        ExecuteCancel cancelAction = new ExecuteCancel(this,
-                mapdustPlugin.getMapdustGUI());
-        AbstractAction okAction;
-        if (type.equals("close")) {
-            /* create the execute close bug action */
-            okAction = new ExecuteCloseBug(this, mapdustPlugin.getMapdustGUI());
-            ((ExecuteCloseBug) okAction).addObserver(mapdustPlugin);
-            ((ExecuteCloseBug) okAction).addObserver(mapdustPlugin.getMapdustGUI());
-        } else {
-            if (type.equals("invalidate")) {
-                /* create the invalidate bug action */
-                okAction = new ExecuteInvalidateBug(this,
-                        mapdustPlugin.getMapdustGUI());
-                ((ExecuteInvalidateBug) okAction).addObserver(mapdustPlugin);
-                ((ExecuteInvalidateBug) okAction).addObserver(mapdustPlugin
-                        .getMapdustGUI());
-            } else {
-                /* executes the re-open bug action */
-                okAction = new ExecuteReOpenBug(this,mapdustPlugin.getMapdustGUI());
-                ((ExecuteReOpenBug) okAction).addObserver(mapdustPlugin);
-                ((ExecuteReOpenBug) okAction).addObserver(mapdustPlugin
-                        .getMapdustGUI());
-            }
-        }
-        /* creates the cancel button */
-        if (btnCancel == null) {
-            Rectangle bounds = new Rectangle(240, 170, 90, 25);
-            btnCancel = ComponentUtil.createJButton("Cancel", bounds,
-                    cancelAction);
-        }
-        /* creates the ok button */
-        if (btnOk == null) {
-            Rectangle bounds = new Rectangle(170, 170, 60, 25);
-            btnOk = ComponentUtil.createJButton("OK", bounds, okAction);
-        }
-        /* add components to the frame */
-        add(cmpMessage);
-        add(lblNickname);
-        add(txtNickname);
-        add(lblComment);
-        add(cmpDescription);
-        add(btnCancel);
-        add(btnOk);
-        setSize(340, 210);
-    }
-
-    /**
-     * Returns the <code>JScrollPane</code> of the info message.
-     *
-     * @return the cmpMessage
-     */
-    public JScrollPane getCmpMessage() {
-        return this.cmpMessage;
-    }
-
-    /**
-     * Returns the <code>JLabel</code> of the nickname
-     *
-     * @return the lblNickname
-     */
-    public JLabel getLblNickname() {
-        return this.lblNickname;
-    }
-
-    /**
-     * Returns the <code>JTextField</code> of the nickname
-     *
-     * @return the txtNickname
-     */
-    public JTextField getTxtNickname() {
-        return this.txtNickname;
-    }
-
-    /**
-     * Returns the <code>JLabel</code> of the comment
-     *
-     * @return the lblComment
-     */
-    public JLabel getLblComment() {
-        return this.lblComment;
-    }
-
-    /**
-     * Returns the <code>JScrollPane</code> of the description
-     *
-     * @return the cmpDescription
-     */
-    public JScrollPane getCmpDescription() {
-        return this.cmpDescription;
-    }
-
-    /**
-     * Returns the <code>JTextArea</code> of the description
-     *
-     * @return the txtDescription
-     */
-    public JTextArea getTxtDescription() {
-        return this.txtDescription;
-    }
-
-    /**
-     * Returns the cancel button
-     *
-     * @return the btnCancel
-     */
-    public JButton getBtnCancel() {
-        return this.btnCancel;
-    }
-
-    /**
-     * Returns the ok buttons
-     *
-     * @return the btnOk
-     */
-    public JButton getBtnOk() {
-        return this.btnOk;
-    }
-
-    /**
-     * Retruns the message text
-     *
-     * @return the messageText
-     */
-    public String getMessageText() {
-        return this.messageText;
-    }
-
-    /**
-     * Returns the type of the dialog window
-     *
-     * @return the type
-     */
-    public String getType() {
-        return this.type;
-    }
-
-}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CommentBugDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CommentBugDialog.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CommentBugDialog.java	(revision 25828)
@@ -0,0 +1,247 @@
+/* Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.dialog;
+
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Image;
+import java.awt.Rectangle;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.JToggleButton;
+import javax.swing.WindowConstants;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.adapter.WindowClose;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCancel;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCommentBug;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+
+/**
+ * This class is used for creating a dialog window for the comment MapDust Bug
+ * action.
+ *
+ * @author Bea
+ *
+ */
+public class CommentBugDialog extends AbstractDialog {
+
+    /** The serial version UID */
+    private static final long serialVersionUID = 7788698281871951326L;
+
+    /** Nickname label */
+    private JLabel lblNickname;
+
+    /** Nickname text field */
+    private JTextField txtNickname;
+
+    /** Comment label */
+    private JLabel lblComment;
+
+    /** Comment text area */
+    private JScrollPane cmpComment;
+
+    /** The comment */
+    private JTextArea txtComment;
+
+    /** Cancel button */
+    private JButton btnCancel;
+
+    /** OK button */
+    private JButton btnOk;
+
+    /**
+     * Builds a new <code>ChangeStatusDialog</code> object with the given
+     * parameters.
+     *
+     * @param title The title of the dialog
+     * @param iconName The name of the icon
+     * @param firedButton The button which action was to show this dialog
+     * @param mapdustPlugin The <code>MapdustPlugin</code> object
+     */
+    public CommentBugDialog(String title, String iconName,
+            JToggleButton firedButton, MapdustPlugin mapdustPlugin) {
+        if (firedButton != null) {
+            setFiredButton(firedButton);
+        }
+        setTitle(title);
+        setModal(true);
+        Image image = ImageProvider.get(iconName).getImage();
+        setIconImage(image);
+        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
+        setBackground(getContentPane().getBackground());
+        setResizable(false);
+        setForeground(Color.black);
+        setLayout(null);
+        addComponents(mapdustPlugin);
+        MapdustButtonPanel btnPanel =
+                mapdustPlugin.getMapdustGUI().getPanel().getBtnPanel();
+        addWindowListener(new WindowClose(this, btnPanel));
+    }
+
+    /**
+     * Add the components to the dialog window.
+     *
+     * @param mapdustPlugin The <code>MapdustPlugin</code> object
+     */
+    @Override
+    public void addComponents(MapdustPlugin mapdustPlugin) {
+        Color backgroundColor = getContentPane().getBackground();
+        Font font = new Font("Times New Roman", Font.BOLD, 14);
+        /* nickname */
+        if (lblNickname == null) {
+            Rectangle bounds = new Rectangle(10, 10, 91, 25);
+            lblNickname = ComponentUtil.createJLabel("Nickname", font, bounds,
+                    null);
+        }
+        if (txtNickname == null) {
+            Rectangle bounds = new Rectangle(100, 10, 250, 25);
+            txtNickname = ComponentUtil.createJTextField(bounds);
+            /* get the nickname */
+            String nickname = Main.pref.get("mapdust.nickname");
+            if (nickname.isEmpty()) {
+                /* if nickname is empty, get JOSM username */
+                nickname = Main.pref.get("mapdust.josmUserName");
+            }
+            if (nickname != null && !nickname.isEmpty()) {
+                txtNickname.setText(nickname);
+            }
+        }
+        /* comment */
+        if (lblComment == null) {
+            Rectangle bounds = new Rectangle(10, 50, 79, 25);
+            lblComment = ComponentUtil.createJLabel("Comment", font, bounds,
+                    null);
+        }
+        if (cmpComment == null) {
+            Rectangle bounds = new Rectangle(100, 50, 250, 80);
+            txtComment = new JTextArea();
+            txtComment.setFont(new Font("Times New Roman", Font.PLAIN, 12));
+            txtComment.setLineWrap(true);
+            cmpComment = ComponentUtil.createJScrollPane(txtComment, bounds,
+                    backgroundColor, false, true);
+        }
+        /* cancel button */
+        if (btnCancel == null) {
+            Rectangle bounds = new Rectangle(260, 140, 90, 25);
+            ExecuteCancel cancelAction = new ExecuteCancel(this,
+                    mapdustPlugin.getMapdustGUI());
+            btnCancel = ComponentUtil.createJButton("Cancel", bounds,
+                    cancelAction);
+        }
+        /* OK button */
+        if (btnOk == null) {
+            Rectangle bounds = new Rectangle(190, 140, 60, 25);
+            ExecuteCommentBug okAction =
+                    new ExecuteCommentBug(this, mapdustPlugin.getMapdustGUI());
+            okAction.addObserver(mapdustPlugin);
+            okAction.addObserver(mapdustPlugin.getMapdustGUI());
+            btnOk = ComponentUtil.createJButton("OK", bounds, okAction);
+        }
+        /* add components */
+        add(lblNickname);
+        add(txtNickname);
+        add(lblComment);
+        add(cmpComment);
+        add(btnCancel);
+        add(btnOk);
+        setSize(360, 170);
+    }
+
+    /**
+     * Returns the nickname <code>JLabel</code> object
+     *
+     * @return the lblNickname
+     */
+    public JLabel getLblNickname() {
+        return lblNickname;
+    }
+
+    /**
+     * Returns the nickname <code>JTextField</code> object
+     *
+     * @return the txtNickname
+     */
+    public JTextField getTxtNickname() {
+        return txtNickname;
+    }
+
+    /**
+     * Returns the comment <code>JLabel</code> object
+     *
+     * @return the lblComment
+     */
+    public JLabel getLblComment() {
+        return lblComment;
+    }
+
+    /**
+     * Returns the comment <code>JScrollPane</code> object
+     *
+     * @return the cmpComment
+     */
+    public JScrollPane getCmpComment() {
+        return cmpComment;
+    }
+
+    /**
+     * Returns the comment <code>JTextArea</code> object
+     *
+     * @return the txtComment
+     */
+    public JTextArea getTxtComment() {
+        return txtComment;
+    }
+
+    /**
+     * Returns the cancel <code>JButton</code> object
+     *
+     * @return the btnCancel
+     */
+    public JButton getBtnCancel() {
+        return btnCancel;
+    }
+
+    /**
+     * Returns the ok <code>JButton</code> object
+     *
+     * @return the btnOk
+     */
+    public JButton getBtnOk() {
+        return btnOk;
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CommentIssueDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CommentIssueDialog.java	(revision 25754)
+++ 	(revision )
@@ -1,282 +1,0 @@
-/* Copyright (c) 2010, skobbler GmbH
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its
- *    contributors may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package org.openstreetmap.josm.plugins.mapdust.gui.component.dialog;
-
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Image;
-import java.awt.Rectangle;
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.JTextPane;
-import javax.swing.JToggleButton;
-import javax.swing.WindowConstants;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.adapter.WindowClose;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCancel;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCommentBug;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
-import org.openstreetmap.josm.tools.ImageProvider;
-
-
-/**
- * This class is used for creating a dialog window for the comment MapDust Bug
- * action.
- *
- * @author Bea
- *
- */
-public class CommentIssueDialog extends AbstractDialog {
-
-    /** The serial version UID */
-    private static final long serialVersionUID = 7788698281871951326L;
-
-    /** The message text */
-    private final String messageText;
-
-    /** Custom text */
-    private JScrollPane cmpMessage;
-
-    /** Nickname label */
-    private JLabel lblNickname;
-
-    /** Nickname text field */
-    private JTextField txtNickname;
-
-    /** Comment label */
-    private JLabel lblComment;
-
-    /** Comment text area */
-    private JScrollPane cmpComment;
-
-    /** The comment */
-    private JTextArea txtComment;
-
-    /** Cancel button */
-    private JButton btnCancel;
-
-    /** OK button */
-    private JButton btnOk;
-
-    /**
-     * Builds a new <code>ChangeStatusDialog</code> object with the given
-     * parameters.
-     *
-     * @param title The title of the dialog
-     * @param iconName The name of the icon
-     * @param messageText The text of the message component.
-     * @param firedButton The button which action was to show this dialog
-     * @param mapdustPlugin The <code>MapdustPlugin</code> object
-     */
-    public CommentIssueDialog(String title, String iconName,
-            String messageText, JToggleButton firedButton,
-            MapdustPlugin mapdustPlugin) {
-        this.messageText = messageText;
-        if (firedButton != null) {
-            setFiredButton(firedButton);
-        }
-        setTitle(title);
-        setModal(true);
-        Image image = ImageProvider.get(iconName).getImage();
-        setIconImage(image);
-        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
-        getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
-        setBackground(getContentPane().getBackground());
-        setResizable(false);
-        setForeground(Color.black);
-        setLayout(null);
-        addComponents(mapdustPlugin);
-        MapdustButtonPanel btnPanel =
-                mapdustPlugin.getMapdustGUI().getPanel().getBtnPanel();
-        addWindowListener(new WindowClose(this, btnPanel));
-    }
-
-    /**
-     * Add the components to the dialog window.
-     *
-     * @param mapdustPlugin The <code>MapdustPlugin</code> object
-     */
-    @Override
-    public void addComponents(MapdustPlugin mapdustPlugin) {
-        Color backgroundColor = getContentPane().getBackground();
-        Font font = new Font("Times New Roman", Font.BOLD, 14);
-        /* message text */
-        if (cmpMessage == null) {
-            JTextPane txtPane = ComponentUtil.createJTextPane(messageText,
-                    backgroundColor);
-            Rectangle bounds = new Rectangle(10, 10, 320, 50);
-            cmpMessage = ComponentUtil.createJScrollPane(txtPane, bounds,
-                    backgroundColor, true, true);
-        }
-        /* nickaname */
-        if (lblNickname == null) {
-            Rectangle bounds = new Rectangle(10, 70, 91, 25);
-            lblNickname = ComponentUtil.createJLabel("Nickname", font, bounds);
-        }
-        if (txtNickname == null) {
-            Rectangle bounds = new Rectangle(100, 70, 230, 25);
-            txtNickname = ComponentUtil.createJTextField(bounds);
-            /* get the nickname */
-            String nickname = Main.pref.get("mapdust.nickname");
-            if (nickname.isEmpty()) {
-                /* if nickname is empty, get JOSM username */
-                nickname = Main.pref.get("mapdust.josmUserName");
-            }
-            if (nickname != null && !nickname.isEmpty()) {
-                txtNickname.setText(nickname);
-            }
-        }
-        /* comment */
-        if (lblComment == null) {
-            Rectangle bounds = new Rectangle(10, 110, 79, 25);
-            lblComment = ComponentUtil.createJLabel("Comment", font, bounds);
-        }
-        if (cmpComment == null) {
-            Rectangle bounds = new Rectangle(100, 110, 230, 50);
-            txtComment = new JTextArea();
-            txtComment.setFont(new Font("Times New Roman", Font.PLAIN, 12));
-            txtComment.setLineWrap(true);
-            cmpComment = ComponentUtil.createJScrollPane(txtComment, bounds,
-                    backgroundColor, false, true);
-        }
-        /* cancel button */
-        if (btnCancel == null) {
-            Rectangle bounds = new Rectangle(240, 170, 90, 25);
-            ExecuteCancel cancelAction = new ExecuteCancel(this,
-                    mapdustPlugin.getMapdustGUI());
-            btnCancel = ComponentUtil.createJButton("Cancel", bounds,
-                    cancelAction);
-        }
-        /* ok button */
-        if (btnOk == null) {
-            Rectangle bounds = new Rectangle(170, 170, 60, 25);
-            ExecuteCommentBug okAction = new ExecuteCommentBug(this,
-                    mapdustPlugin.getMapdustGUI());
-            okAction.addObserver(mapdustPlugin);
-            okAction.addObserver(mapdustPlugin.getMapdustGUI());
-            btnOk = ComponentUtil.createJButton("OK", bounds, okAction);
-        }
-        /* add components */
-        add(cmpMessage);
-        add(lblNickname);
-        add(txtNickname);
-        add(lblComment);
-        add(cmpComment);
-        add(btnCancel);
-        add(btnOk);
-        setSize(340, 210);
-    }
-
-    /**
-     * Returns the message <code>JScrollPane</code> object
-     *
-     * @return the cmpMessage
-     */
-    public JScrollPane getCmpMessage() {
-        return cmpMessage;
-    }
-
-    /**
-     * Returns the nickname <code>JLabel</code> object
-     *
-     * @return the lblNickname
-     */
-    public JLabel getLblNickname() {
-        return lblNickname;
-    }
-
-    /**
-     * Returns the nickname <code>JTextField</code> object
-     *
-     * @return the txtNickname
-     */
-    public JTextField getTxtNickname() {
-        return txtNickname;
-    }
-
-    /**
-     * Returns the comment <code>JLabel</code> object
-     *
-     * @return the lblComment
-     */
-    public JLabel getLblComment() {
-        return lblComment;
-    }
-
-    /**
-     * Returns the comment <code>JScrollPane</code> object
-     *
-     * @return the cmpComment
-     */
-    public JScrollPane getCmpComment() {
-        return cmpComment;
-    }
-
-    /**
-     * Returns the comment <code>JTextArea</code> object
-     *
-     * @return the txtComment
-     */
-    public JTextArea getTxtComment() {
-        return txtComment;
-    }
-
-    /**
-     * Returns the cancel <code>JButton</code> object
-     *
-     * @return the btnCancel
-     */
-    public JButton getBtnCancel() {
-        return btnCancel;
-    }
-
-    /**
-     * Returns the ok <code>JButton</code> object
-     *
-     * @return the btnOk
-     */
-    public JButton getBtnOk() {
-        return btnOk;
-    }
-
-    /**
-     * Returns the message text
-     *
-     * @return the messageText
-     */
-    public String getMessageText() {
-        return messageText;
-    }
-
-}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CreateBugDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CreateBugDialog.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CreateBugDialog.java	(revision 25828)
@@ -0,0 +1,308 @@
+/* Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.dialog;
+
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.WindowConstants;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.adapter.WindowClose;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteAddBug;
+import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCancel;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.renderer.ComboBoxRenderer;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+
+/**
+ * This class is used for creating a dialog window for the new issue MapDust Bug
+ * action.
+ *
+ * @author Bea
+ *
+ */
+public class CreateBugDialog extends AbstractDialog {
+
+    /** The serial version UID */
+    private static final long serialVersionUID = 1912577313684808253L;
+
+    /** Text message */
+    private JScrollPane cmpMessage;
+
+    /** The label of the bug type */
+    private JLabel lblType;
+
+    /** The combo-box for the bug types */
+    private JComboBox cbbType;
+
+    /** The nickname label */
+    private JLabel lblNickname;
+
+    /** The nickname text field */
+    private JTextField txtNickname;
+
+    /** The description label */
+    private JLabel lblDescription;
+
+    /** The description scroll pane */
+    private JScrollPane cmpDescription;
+
+    /** The description text area */
+    private JTextArea txtDescription;
+
+    /** The cancel button */
+    private JButton btnCancel;
+
+    /** The ok button */
+    private JButton btnOk;
+
+    /** The point */
+    private final Point point;
+
+    /**
+     * Builds a new <code>ChangeStatusDialog</code> object with the given
+     * parameters.
+     *
+     * @param point The position where the bug was created
+     * @param mapdustPlugin The <code>MapdustPlugin</code> object
+     */
+    public CreateBugDialog(Point point, MapdustPlugin mapdustPlugin) {
+        this.point = point;
+        /* set JDialog settings */
+        initializeDialog();
+        /* add components to the dialog */
+        addComponents(mapdustPlugin);
+        /* add window listener */
+        MapdustButtonPanel btnPanel =
+                mapdustPlugin.getMapdustGUI().getPanel().getBtnPanel();
+        addWindowListener(new WindowClose(this, btnPanel));
+    }
+
+    /**
+     * Initializes the dialog default fields.
+     */
+    private void initializeDialog() {
+        /* set JDialog settings */
+        setTitle("Create bug report");
+        setModal(true);
+        Image image = ImageProvider.get("dialogs/open.png").getImage();
+        setIconImage(image);
+        setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
+        getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
+        setResizable(false);
+        setForeground(Color.black);
+        setLayout(null);
+
+    }
+
+    /**
+     * Displays the dialog window on the screen.
+     */
+    public void showDialog() {
+        setLocationRelativeTo(null);
+        getContentPane().setPreferredSize(getSize());
+        pack();
+        setVisible(true);
+    }
+
+    /**
+     * Adds the components to the dialog window.
+     *
+     * @param mapdustPlugin The <code>MapdustPlugin</code> object
+     */
+    @Override
+    public void addComponents(MapdustPlugin mapdustPlugin) {
+        Color backgroundColor = getContentPane().getBackground();
+        Font font = new Font("Times New Roman", Font.BOLD, 14);
+        /* type */
+        if (lblType == null) {
+            Rectangle bounds = new Rectangle(10, 10, 91, 25);
+            lblType = ComponentUtil.createJLabel("Type", font, bounds, null);
+        }
+        if (cbbType == null) {
+            ComboBoxRenderer renderer = new ComboBoxRenderer();
+            Rectangle bounds = new Rectangle(110, 10, 250, 25);
+            cbbType = ComponentUtil.createJComboBox(bounds, renderer,
+                    backgroundColor);
+        }
+        /* nickname */
+        if (lblNickname == null) {
+            Rectangle bounds = new Rectangle(10, 50, 79, 25);
+            lblNickname = ComponentUtil.createJLabel("Nickname", font, bounds,
+                    null);
+        }
+        if (txtNickname == null) {
+            Rectangle bounds = new Rectangle(110, 50, 250, 25);
+            txtNickname = ComponentUtil.createJTextField(bounds);
+            /* get the nickname */
+            String nickname = Main.pref.get("mapdust.nickname");
+            if (nickname.isEmpty()) {
+                /* if nickname is empty, get the JOSM username */
+                nickname = Main.pref.get("mapdust.josmUserName");
+            }
+            if (nickname != null && !nickname.isEmpty()) {
+                txtNickname.setText(nickname);
+            }
+        }
+        /* description */
+        if (lblDescription == null) {
+            Rectangle bounds = new Rectangle(10, 90, 95, 25);
+            lblDescription = ComponentUtil.createJLabel("Description", font,
+                    bounds, null);
+        }
+        if (cmpDescription == null) {
+            Rectangle bounds = new Rectangle(110, 90, 250, 80);
+            txtDescription = new JTextArea();
+            txtDescription.setFont(new Font("Times New Roman", Font.PLAIN, 12));
+            txtDescription.setLineWrap(true);
+            cmpDescription = ComponentUtil.createJScrollPane(txtDescription,
+                    bounds, backgroundColor, false, true);
+        }
+        /* cancel button */
+        if (btnCancel == null) {
+            Rectangle bounds = new Rectangle(270, 180, 90, 25);
+            ExecuteCancel cancelAction = new ExecuteCancel(this,
+                    mapdustPlugin.getMapdustGUI());
+            btnCancel = ComponentUtil.createJButton("Cancel", bounds,
+                    cancelAction);
+        }
+        /* ok button */
+        if (btnOk == null) {
+            Rectangle bounds = new Rectangle(200, 180, 60, 25);
+            ExecuteAddBug okAction = new ExecuteAddBug(this,
+                    mapdustPlugin.getMapdustGUI());
+            okAction.addObserver(mapdustPlugin);
+            okAction.addObserver(mapdustPlugin.getMapdustGUI());
+            btnOk = ComponentUtil.createJButton("OK", bounds, okAction);
+        }
+        /* add components to the frame */
+        add(lblType);
+        add(cbbType);
+        add(lblNickname);
+        add(txtNickname);
+        add(lblDescription);
+        add(cmpDescription);
+        add(btnCancel);
+        add(btnOk);
+        setSize(370, 210);
+    }
+
+    /**
+     * Returns the message <code>JScrollPane</code>
+     *
+     * @return the cmpMessage
+     */
+    public JScrollPane getCmpMessage() {
+        return cmpMessage;
+    }
+
+    /**
+     * Returns the type <code>JLabel</code>
+     *
+     * @return the lblType
+     */
+    public JLabel getLblType() {
+        return lblType;
+    }
+
+    /**
+     * Returns the type <code>JComboBox</code>
+     *
+     * @return the cbbType
+     */
+    public JComboBox getCbbType() {
+        return cbbType;
+    }
+
+    /**
+     * Returns the nickname <code>JLabel</code>
+     *
+     * @return the lblNickname
+     */
+    public JLabel getLblNickname() {
+        return lblNickname;
+    }
+
+    /**
+     * Returns the nickname <code>JTextField</code>
+     *
+     * @return the txtNickname
+     */
+    public JTextField getTxtNickname() {
+        return txtNickname;
+    }
+
+    /**
+     * Returns the description <code>JLabel</code>
+     *
+     * @return the lblDescription
+     */
+    public JLabel getLblDescription() {
+        return lblDescription;
+    }
+
+    /**
+     * Returns the description <code>JScrollPane</code>
+     *
+     * @return the cmpDescription
+     */
+    public JScrollPane getCmpDescription() {
+        return cmpDescription;
+    }
+
+    /**
+     * Returns the description <code>JTextArea</code>
+     *
+     * @return the txtDescription
+     */
+    public JTextArea getTxtDescription() {
+        return txtDescription;
+    }
+
+    /**
+     * Returns the <code>Point</code>
+     *
+     * @return point
+     */
+    public Point getPoint() {
+        return point;
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CreateIssueDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/CreateIssueDialog.java	(revision 25754)
+++ 	(revision )
@@ -1,323 +1,0 @@
-/* Copyright (c) 2010, skobbler GmbH
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its
- *    contributors may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package org.openstreetmap.josm.plugins.mapdust.gui.component.dialog;
-
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Image;
-import java.awt.Point;
-import java.awt.Rectangle;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.JTextPane;
-import javax.swing.WindowConstants;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.plugins.mapdust.MapdustPlugin;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.adapter.WindowClose;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteAddBug;
-import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteCancel;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.renderer.ComboBoxRenderer;
-import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
-import org.openstreetmap.josm.tools.ImageProvider;
-
-
-/**
- * This class is used for creating a dialog window for the new issue MapDust Bug
- * action.
- *
- * @author Bea
- *
- */
-public class CreateIssueDialog extends AbstractDialog {
-
-    /** The serial version UID */
-    private static final long serialVersionUID = 1912577313684808253L;
-
-    /** The create issue text */
-    private String createIssueText;
-
-    /** Text message */
-    private JScrollPane cmpMessage;
-
-    /** The label of the bug type */
-    private JLabel lblType;
-
-    /** The combo box for the bug types */
-    private JComboBox cbbType;
-
-    /** The nickname label */
-    private JLabel lblNickname;
-
-    /** The nickname text field */
-    private JTextField txtNickname;
-
-    /** The description label */
-    private JLabel lblDescription;
-
-    /** The description scroll pane */
-    private JScrollPane cmpDescription;
-
-    /** The description text area */
-    private JTextArea txtDescription;
-
-    /** The cancel button */
-    private JButton btnCancel;
-
-    /** The ok button */
-    private JButton btnOk;
-
-    /** The point */
-    private final Point point;
-
-    /**
-     * Builds a new <code>ChangeStatusDialog</code> object with the given
-     * parameters.
-     *
-     * @param point The position where the bug was created
-     * @param mapdustPlugin The <code>MapdustPlugin</code> object
-     */
-    public CreateIssueDialog(Point point, MapdustPlugin mapdustPlugin) {
-        this.createIssueText = "In order to create a new bug report you";
-        this.createIssueText += " need to provide your nickname and a brief";
-        this.createIssueText += " description for the bug.";
-        this.point = point;
-        /* set JDialog settings */
-        initializeDialog();
-        /* add components to the dialog */
-        addComponents(mapdustPlugin);
-        /* add window listener */
-        MapdustButtonPanel btnPanel =
-                mapdustPlugin.getMapdustGUI().getPanel().getBtnPanel();
-        addWindowListener(new WindowClose(this, btnPanel));
-    }
-
-    /**
-     * Initializes the dialog default fields.
-     */
-    private void initializeDialog() {
-        /* set JDialog settings */
-        setTitle("Create bug report");
-        setModal(true);
-        Image image = ImageProvider.get("dialogs/open.png").getImage();
-        setIconImage(image);
-        setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
-        getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
-        setResizable(false);
-        setForeground(Color.black);
-        setLayout(null);
-
-    }
-
-    /**
-     * Displays the dialog window on the screen.
-     */
-    public void showDialog() {
-        setLocationRelativeTo(null);
-        getContentPane().setPreferredSize(getSize());
-        pack();
-        setVisible(true);
-    }
-
-    /**
-     * Adds the components to the dialog window.
-     *
-     * @param mapdustPlugin The <code>MapdustPlugin</code> object
-     */
-    @Override
-    public void addComponents(MapdustPlugin mapdustPlugin) {
-        Color backgroundColor = getContentPane().getBackground();
-        Font font = new Font("Times New Roman", Font.BOLD, 14);
-        /* text message */
-        if (cmpMessage == null) {
-            JTextPane txtPane = ComponentUtil.createJTextPane(createIssueText,
-                    backgroundColor);
-            Rectangle bounds = new Rectangle(10, 10, 330, 50);
-            cmpMessage = ComponentUtil.createJScrollPane(txtPane, bounds,
-                    backgroundColor, true, true);
-        }
-        /* type */
-        if (lblType == null) {
-            Rectangle bounds = new Rectangle(10, 70, 91, 25);
-            lblType = ComponentUtil.createJLabel("Type", font, bounds);
-        }
-        if (cbbType == null) {
-            ComboBoxRenderer renderer = new ComboBoxRenderer();
-            Rectangle bounds = new Rectangle(110, 70, 230, 25);
-            cbbType = ComponentUtil.createJComboBox(bounds, renderer,
-                    backgroundColor);
-        }
-        /* nickname */
-        if (lblNickname == null) {
-            Rectangle bounds = new Rectangle(10, 110, 79, 25);
-            lblNickname = ComponentUtil.createJLabel("Nickname", font, bounds);
-        }
-        if (txtNickname == null) {
-            Rectangle bounds = new Rectangle(110, 110, 230,25);
-            txtNickname = ComponentUtil.createJTextField(bounds);
-            /* get the nickname */
-            String nickname = Main.pref.get("mapdust.nickname");
-            if (nickname.isEmpty()) {
-                /* if nickname is empty, get the JOSM username */
-                nickname = Main.pref.get("mapdust.josmUserName");
-            }
-            if (nickname != null && !nickname.isEmpty()) {
-                txtNickname.setText(nickname);
-            }
-        }
-        /* description */
-        if (lblDescription == null) {
-            Rectangle bounds = new Rectangle(10, 150, 95, 25);
-            lblDescription = ComponentUtil.createJLabel("Description", font,
-                    bounds);
-        }
-        if (cmpDescription == null) {
-            Rectangle bounds = new Rectangle(110, 150, 230, 50);
-            txtDescription = new JTextArea();
-            txtDescription.setFont(new Font("Times New Roman", Font.PLAIN, 12));
-            txtDescription.setLineWrap(true);
-            cmpDescription = ComponentUtil.createJScrollPane(txtDescription,
-                    bounds, backgroundColor, false, true);
-        }
-        /* cancel button */
-        if (btnCancel == null) {
-            Rectangle bounds = new Rectangle(250, 210, 90, 25);
-            ExecuteCancel cancelAction = new ExecuteCancel(this,
-                    mapdustPlugin.getMapdustGUI());
-            btnCancel = ComponentUtil.createJButton("Cancel", bounds,
-                    cancelAction);
-        }
-        /* ok button */
-        if (btnOk == null) {
-            Rectangle bounds = new Rectangle(180, 210, 60, 25);
-            ExecuteAddBug okAction =
-                    new ExecuteAddBug(this, mapdustPlugin.getMapdustGUI());
-            okAction.addObserver(mapdustPlugin);
-            okAction.addObserver(mapdustPlugin.getMapdustGUI());
-            btnOk = ComponentUtil.createJButton("OK", bounds, okAction);
-        }
-        /* add components to the frame */
-        add(cmpMessage);
-        add(lblType);
-        add(cbbType);
-        add(lblNickname);
-        add(txtNickname);
-        add(lblDescription);
-        add(cmpDescription);
-        add(btnCancel);
-        add(btnOk);
-        setSize(350, 250);
-    }
-
-    /**
-     * Returns the message <code>JScrollPane</code>
-     *
-     * @return the cmpMessage
-     */
-    public JScrollPane getCmpMessage() {
-        return cmpMessage;
-    }
-
-    /**
-     * Returns the type <code>JLabel</code>
-     *
-     * @return the lblType
-     */
-    public JLabel getLblType() {
-        return lblType;
-    }
-
-    /**
-     * Returns the type <code>JComboBox</code>
-     *
-     * @return the cbbType
-     */
-    public JComboBox getCbbType() {
-        return cbbType;
-    }
-
-    /**
-     * Returns the nickname <code>JLabel</code>
-     *
-     * @return the lblNickname
-     */
-    public JLabel getLblNickname() {
-        return lblNickname;
-    }
-
-    /**
-     * Returns the nickname <code>JTextField</code>
-     *
-     * @return the txtNickname
-     */
-    public JTextField getTxtNickname() {
-        return txtNickname;
-    }
-
-    /**
-     * Returns the description <code>JLabel</code>
-     *
-     * @return the lblDescription
-     */
-    public JLabel getLblDescription() {
-        return lblDescription;
-    }
-
-    /**
-     * Returns the description <code>JScrollPane</code>
-     *
-     * @return the cmpDescription
-     */
-    public JScrollPane getCmpDescription() {
-        return cmpDescription;
-    }
-
-    /**
-     * Returns the description <code>JTextArea</code>
-     *
-     * @return the txtDescription
-     */
-    public JTextArea getTxtDescription() {
-        return txtDescription;
-    }
-
-    /**
-     * Returns the <code>Point</code>
-     *
-     * @return point
-     */
-    public Point getPoint() {
-        return point;
-    }
-
-}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/FilterBugDialog.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/FilterBugDialog.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/dialog/FilterBugDialog.java	(revision 25828)
@@ -48,7 +48,10 @@
 import org.openstreetmap.josm.plugins.mapdust.gui.action.execute.ExecuteFilterBug;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.panel.MapdustButtonPanel;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.slider.RelevanceSlider;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.util.FilterCheckBox;
+import org.openstreetmap.josm.plugins.mapdust.gui.value.MapdustRelevanceValue;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
 import org.openstreetmap.josm.plugins.mapdust.service.value.Status;
 import org.openstreetmap.josm.plugins.mapdust.service.value.Type;
@@ -84,4 +87,10 @@
     /** The <code>FilterCheckBox</code> containing the description filter */
     private FilterCheckBox filterDescr;
+
+    /** The <code>JLabel</code> for the relevance filter */
+    private JLabel lblRelevance;
+
+    /** The <code>RelevanceSlider</code> representing the relevance values */
+    private RelevanceSlider sliderRelevance;
 
     /** The apply button */
@@ -131,5 +140,6 @@
         if (lblStatus == null) {
             Rectangle bounds = new Rectangle(10, 10, 95, 25);
-            lblStatus = ComponentUtil.createJLabel("Status", font, bounds);
+            lblStatus = ComponentUtil.createJLabel("Status", font, bounds,
+                    null);
         }
         if (filterStatuses == null) {
@@ -143,5 +153,5 @@
         if (lblType == null) {
             Rectangle bounds = new Rectangle(10, 90, 95, 25);
-            lblType = ComponentUtil.createJLabel("Type", font, bounds);
+            lblType = ComponentUtil.createJLabel("Type", font, bounds, null);
         }
 
@@ -150,5 +160,5 @@
             Rectangle bounds = new Rectangle(10, 230, 95, 25);
             lblDescription = ComponentUtil.createJLabel("Description", font,
-                    bounds);
+                    bounds, null);
         }
         if (filterDescr == null) {
@@ -157,6 +167,6 @@
             String text = "Hide bugs with default description";
             String iconName = "dialogs/default_description.png";
-            filterDescr = new FilterCheckBox("descr", chbBounds, iconName, text,
-                    lblBounds);
+            filterDescr = new FilterCheckBox("descr", chbBounds, iconName,
+                    text, lblBounds);
             if (prevFilter != null && prevFilter.getDescr() != null
                     && prevFilter.getDescr()) {
@@ -164,8 +174,41 @@
             }
         }
+        /* relevance filter */
+        if (lblRelevance == null) {
+            Rectangle bounds = new Rectangle(10, 265, 95, 25);
+            lblRelevance = ComponentUtil.createJLabel("Relevance", font,
+                    bounds, null);
+        }
+        if (sliderRelevance == null) {
+            Rectangle bounds = new Rectangle(110, 265, 300, 50);
+            sliderRelevance = new RelevanceSlider();
+            sliderRelevance.setBounds(bounds);
+            if (prevFilter != null) {
+                MapdustRelevance min = prevFilter.getMinRelevance();
+                MapdustRelevance max = prevFilter.getMaxRelevance();
+                if (min != null) {
+                    Integer value = MapdustRelevanceValue.getSliderValue(min);
+                    if (value == null) {
+                        value = MapdustRelevanceValue.LOW.getSliderValue();
+                    }
+                    sliderRelevance.setLowerValue(value);
+                }
+                if (max != null) {
+                    Integer value = MapdustRelevanceValue.getSliderValue(max);
+                    if (value == null) {
+                        value = MapdustRelevanceValue.HIGH.getSliderValue();
+                    }
+                    sliderRelevance.setUpperValue(value);
+                }
+                if (max != null && max.equals(min)
+                        && max.equals(MapdustRelevance.LOW)) {
+                    sliderRelevance.getUI().setIsUpperSelected(true);
+                }
+            }
+        }
 
         /* creates the cancel button */
         if (btnCancel == null) {
-            Rectangle bounds = new Rectangle(360, 265, 90, 25);
+            Rectangle bounds = new Rectangle(360, 330, 90, 25);
             ExecuteCancel cancelAction = new ExecuteCancel(this,
                     mapdustPlugin.getMapdustGUI());
@@ -173,13 +216,13 @@
                     cancelAction);
         }
-        /* creates the ok button */
+        /* creates the OK button */
         if (btnApply == null) {
-            Rectangle bounds = new Rectangle(260, 265, 90, 25);
+            Rectangle bounds = new Rectangle(260, 330, 90, 25);
             ExecuteFilterBug applyAction = new ExecuteFilterBug(this,
                     mapdustPlugin.getMapdustGUI());
             applyAction.addObserver(mapdustPlugin);
-            btnApply = ComponentUtil.createJButton("Apply", bounds, applyAction);
-        }
-
+            btnApply = ComponentUtil.createJButton("Apply", bounds,
+                    applyAction);
+        }
         /* add components */
         add(lblStatus);
@@ -189,7 +232,9 @@
         add(lblDescription);
         add(filterDescr);
+        add(lblRelevance);
+        add(sliderRelevance);
         add(btnCancel);
         add(btnApply);
-        setSize(460, 300);
+        setSize(460, 360);
     }
 
@@ -238,21 +283,21 @@
         /* wrong_turn type */
         filterTypes[0] = new FilterCheckBox(Type.WRONG_TURN.getKey(),
-                new Rectangle(110,90, 20, 25), "dialogs/wrong_turn.png",
-                Type.WRONG_TURN.getValue(), new Rectangle(130, 90, 120,25));
+                new Rectangle(110, 90, 20, 25), "dialogs/wrong_turn.png",
+                Type.WRONG_TURN.getValue(), new Rectangle(130, 90, 120, 25));
         /* bad_routing type */
         filterTypes[1] = new FilterCheckBox(Type.WRONG_ROUNDABOUT.getKey(),
                 new Rectangle(270, 90, 20, 25), "dialogs/wrong_roundabout.png",
-                Type.WRONG_ROUNDABOUT.getValue(),
-                new Rectangle(290, 90, 180, 25));
+                Type.WRONG_ROUNDABOUT.getValue(), new Rectangle(290, 90, 180,
+                        25));
         /* oneway_road type */
-        filterTypes[2] = new FilterCheckBox(Type.MISSING_STREET.getKey(),
+        filterTypes[2] =  new FilterCheckBox(Type.MISSING_STREET.getKey(),
                 new Rectangle(110, 125, 20, 25), "dialogs/missing_street.png",
-                Type.MISSING_STREET.getValue(),
-                new Rectangle(130, 125, 150, 25));
+                Type.MISSING_STREET.getValue(), new Rectangle(130, 125, 150,
+                        25));
         /* blocked_street type */
         filterTypes[3] = new FilterCheckBox(Type.BLOCKED_STREET.getKey(),
                 new Rectangle(270, 125, 20, 25), "dialogs/blocked_street.png",
-                Type.BLOCKED_STREET.getValue(),
-                new Rectangle(290, 125, 180, 25));
+                Type.BLOCKED_STREET.getValue(), new Rectangle(290, 125, 180,
+                        25));
         /* missing_street type */
         filterTypes[4] = new FilterCheckBox(Type.BAD_ROUTING.getKey(),
@@ -262,6 +307,6 @@
         filterTypes[5] = new FilterCheckBox(Type.MISSING_SPEEDLIMIT.getKey(),
                 new Rectangle(270, 160, 20, 25), "dialogs/missing_speedlimit.png",
-                Type.MISSING_SPEEDLIMIT.getValue(),
-                new Rectangle(290, 160, 180, 25));
+                Type.MISSING_SPEEDLIMIT.getValue(), new Rectangle(290, 160,
+                        180, 25));
         /* missing_speedlimit type */
         filterTypes[6] = new FilterCheckBox(Type.OTHER.getKey(),
@@ -328,4 +373,28 @@
 
     /**
+     * Returns the selected minimum relevance value from the relevance slider.
+     *
+     * @return A <code>MapdustRelevance</code> object
+     */
+    public MapdustRelevance getSelectedMinRelevance() {
+        int value = sliderRelevance.getLowerValue();
+        MapdustRelevance minRelevance =
+                MapdustRelevance.getMapdustRelevance(value);
+        return minRelevance;
+    }
+
+    /**
+     * Returns the selected maximum relevance value from the relevance slider.
+     *
+     * @return A <code>MapdustRelevance</code> object
+     */
+    public MapdustRelevance getSelectedMaxRelevance() {
+        int value = sliderRelevance.getUpperValue();
+        MapdustRelevance maxRelevance =
+                MapdustRelevance.getMapdustRelevance(value);
+        return maxRelevance;
+    }
+
+    /**
      * Add the given filter to the current dialog window.
      *
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustAddressPanel.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustAddressPanel.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustAddressPanel.java	(revision 25828)
@@ -63,13 +63,13 @@
 
     /**
-     * Updates the components of the <code>MapdustAddressPanel</code> based
-     * on the given parameters.
+     * Updates the components of the <code>MapdustAddressPanel</code> based on
+     * the given parameters.
      *
      * @param address The <code>Address</code> of a MapDust bug
      * @param coordinates The <code>LatLon</code> of a MapDust bug
      */
-    public void updateComponents(Address address,LatLon coordinates){
-    	removeAll();
-    	addComponents(address, coordinates);
+    public void updateComponents(Address address, LatLon coordinates) {
+        removeAll();
+        addComponents(address, coordinates);
     }
 
@@ -86,42 +86,42 @@
 
         /* country */
-        add(ComponentUtil.createJLabel("Country: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Country: ", fontLabel, null, null));
         String country = address != null ? address.getCountryCode() : "";
-        add(ComponentUtil.createJLabel(country, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(country, fontLabelVal, null, null));
 
         /* label */
-        add(ComponentUtil.createJLabel("City: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("City: ", fontLabel, null, null));
         String city = address != null ? address.getCity() : "";
-        add(ComponentUtil.createJLabel(city, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(city, fontLabelVal, null, null));
 
         /* statecode */
-        add(ComponentUtil.createJLabel("State code: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("State code: ", fontLabel, null, null));
         String state = address != null ? address.getStateCode() : "";
-        add(ComponentUtil.createJLabel(state, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(state, fontLabelVal, null, null));
 
         /* label */
-        add(ComponentUtil.createJLabel("Zip code: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Zip code: ", fontLabel, null, null));
         String zip = address != null ? address.getZipCode() : "";
-        add(ComponentUtil.createJLabel(zip, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(zip, fontLabelVal, null, null));
 
         /* street name */
-        add(ComponentUtil.createJLabel("Street: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Street: ", fontLabel, null, null));
         String street = address != null ? address.getStreetName() : "";
-        add(ComponentUtil.createJLabel(street, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(street, fontLabelVal, null, null));
 
         /* house number */
-        add(ComponentUtil.createJLabel("House number: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("House number: ", fontLabel, null, null));
         String houseNr = address != null ? address.getHouseNumber() : "";
-        add(ComponentUtil.createJLabel(houseNr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(houseNr, fontLabelVal, null, null));
 
-        /* lat */
-        add(ComponentUtil.createJLabel("Latitude: ", fontLabel, null));
+        /* latitude */
+        add(ComponentUtil.createJLabel("Latitude: ", fontLabel, null, null));
         String lat = coordinates != null ? ("" + coordinates.lat()) : "";
-        add(ComponentUtil.createJLabel(lat, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(lat, fontLabelVal, null, null));
 
-        /*  lon */
-        add(ComponentUtil.createJLabel("Longitude: ", fontLabel, null));
+        /* longitude */
+        add(ComponentUtil.createJLabel("Longitude: ", fontLabel, null, null));
         String lon = coordinates != null ? ("" + coordinates.lon()) : "";
-        add(ComponentUtil.createJLabel(lon, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(lon, fontLabelVal, null, null));
     }
 
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugDetailsPanel.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugDetailsPanel.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugDetailsPanel.java	(revision 25828)
@@ -46,4 +46,5 @@
 import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBug;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
 import org.openstreetmap.josm.plugins.mapdust.util.Configuration;
 import org.openstreetmap.josm.tools.OpenBrowser;
@@ -70,5 +71,5 @@
     public MapdustBugDetailsPanel(MapdustBug bug) {
         this.bug = bug;
-        setLayout(new GridLayout(7, 2));
+        setLayout(new GridLayout(8, 2));
         addComponents();
         setBackground(Color.white);
@@ -99,5 +100,5 @@
 
         /* the id */
-        add(ComponentUtil.createJLabel("Id: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Id: ", fontLabel, null, null));
         String idStr = bug != null ? bug.getId().toString() : "";
         String txt = "<html>";
@@ -114,34 +115,42 @@
 
         /* the type */
-        add(ComponentUtil.createJLabel("Type: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Type: ", fontLabel, null, null));
         String typeStr = bug != null ? bug.getType().getValue() : "";
-        add(ComponentUtil.createJLabel(typeStr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(typeStr, fontLabelVal, null, null));
 
         /* the status */
-        add(ComponentUtil.createJLabel("Status: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Status: ", fontLabel, null, null));
         String statusStr = bug != null ? bug.getStatus().getValue() : "";
-        add(ComponentUtil.createJLabel(statusStr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(statusStr, fontLabelVal, null, null));
+
+        /* the relevance */
+        add(ComponentUtil.createJLabel("Relevance: ", fontLabel, null, null));
+        Color color = getRelevanceValueColor(bug);
+        String relevanceStr = bug != null ? bug.getRelevance().getName() : "";
+        add(ComponentUtil.createJLabel(relevanceStr, fontLabel, null, color));
 
         /* the source */
-        add(ComponentUtil.createJLabel("Source: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Source: ", fontLabel, null, null));
         String sourceStr = bug != null ? bug.getSource() : "";
-        add(ComponentUtil.createJLabel(sourceStr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(sourceStr, fontLabelVal, null, null));
 
         /* the nickname */
-        add(ComponentUtil.createJLabel("Created by: ", fontLabel, null));
+        add(ComponentUtil.createJLabel("Created by: ", fontLabel, null, null));
         String nicknameStr = bug != null ? bug.getNickname() : "";
-        add(ComponentUtil.createJLabel(nicknameStr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel(nicknameStr, fontLabelVal, null, null));
 
         /* the date created */
-        add(ComponentUtil.createJLabel("Date created: ", fontLabel, null));
-        String dateCreatedStr =
-                bug != null ? df.format(bug.getDateCreated()) : "";
-        add(ComponentUtil.createJLabel(dateCreatedStr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel("Date created: ", fontLabel, null, null));
+        String dateCreatedStr = bug != null ? df.format(bug.getDateCreated())
+                : "";
+        add(ComponentUtil.createJLabel(dateCreatedStr, fontLabelVal, null,
+                null));
 
         /* the date updated */
-        add(ComponentUtil.createJLabel("Date updated: ", fontLabel, null));
-        String dateUpdatedStr =
-                bug != null ? df.format(bug.getDateUpdated()) : "";
-        add(ComponentUtil.createJLabel(dateUpdatedStr, fontLabelVal, null));
+        add(ComponentUtil.createJLabel("Date updated: ", fontLabel, null, null));
+        String dateUpdatedStr = bug != null ? df.format(bug.getDateUpdated())
+                : "";
+        add(ComponentUtil.createJLabel(dateUpdatedStr, fontLabelVal, null,
+                null));
     }
 
@@ -151,6 +160,5 @@
             String bugDetailsUrl = null;
             if (bug != null) {
-                String mapdustSite =
-                    Configuration.getInstance().getMapdustBugDetailsUrl();
+                String mapdustSite = Configuration.getInstance().getMapdustBugDetailsUrl();
                 bugDetailsUrl = mapdustSite + bug.getId().toString();
             }
@@ -161,6 +169,7 @@
                     String errorMessage = "Error opening the MapDust bug ";
                     errorMessage += "details page";
-                    JOptionPane.showMessageDialog(Main.parent, tr(errorMessage),
-                            tr("Error"), JOptionPane.ERROR_MESSAGE);
+                    JOptionPane.showMessageDialog(Main.parent,
+                            tr(errorMessage), tr("Error"),
+                            JOptionPane.ERROR_MESSAGE);
                 }
             }
@@ -169,3 +178,33 @@
     }
 
+    /**
+     * Returns a <code>Color</code> object based on the <code>MapdustBug</code>
+     * relevance level. If the <code>MapdustBug</code> is null, then the
+     * returned color will be black.
+     *
+     * @param bug The <code>MapdustBug</code> object
+     * @return The corresponding <code>Color</code>
+     */
+    private Color getRelevanceValueColor(MapdustBug bug) {
+        Color color = Color.BLACK;
+        if (bug != null) {
+            if (bug.getRelevance().equals(MapdustRelevance.LOW)) {
+                color = Color.RED.brighter();
+            }
+            if (bug.getRelevance().equals(MapdustRelevance.MID_LOW)) {
+                color = Color.RED.darker();
+            }
+            if (bug.getRelevance().equals(MapdustRelevance.MEDIUM)) {
+                color = Color.ORANGE;
+            }
+            if (bug.getRelevance().equals(MapdustRelevance.MID_HIGH)) {
+                color = Color.GREEN;
+            }
+            if (bug.getRelevance().equals(MapdustRelevance.HIGH)) {
+                color = (Color.GREEN.darker()).darker();
+            }
+        }
+        return color;
+    }
+
 }
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugListPanel.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugListPanel.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugListPanel.java	(revision 25828)
@@ -65,6 +65,6 @@
  * @version $Revision$
  */
-public class MapdustBugListPanel extends JPanel implements ListSelectionListener,
-        MapdustBugDetailsObservable {
+public class MapdustBugListPanel extends JPanel implements
+        ListSelectionListener, MapdustBugDetailsObservable {
 
     /** The serial version UID */
@@ -140,10 +140,10 @@
             /* add comment item */
             MapdustShowAction action = new ShowCommentBugAction(mapdustPlugin);
-            menuAddComment = ComponentUtil.createJMenuItem(action, "Add comment",
-                    "dialogs/comment.png");
+            menuAddComment = ComponentUtil.createJMenuItem(action,
+                    "Add comment/additional info", "dialogs/comment.png");
             menu.add(menuAddComment);
             /* fix bug item */
             action = new ShowCloseBugAction(mapdustPlugin);
-            menuFixed = ComponentUtil.createJMenuItem(action, "Close bug",
+            menuFixed = ComponentUtil.createJMenuItem(action, "Mark as fixed",
                     "dialogs/fixed.png");
             menu.add(menuFixed);
@@ -151,9 +151,9 @@
             action = new ShowInvalidateBugAction(mapdustPlugin);
             menuInvalidate = ComponentUtil.createJMenuItem(action,
-                    "Invalidate bug", "dialogs/invalid.png");
+                    "Non-reproducible/Software bug", "dialogs/invalid.png");
             menu.add(menuInvalidate);
             /* re-open bug item */
             action = new ShowReOpenBugAction(mapdustPlugin);
-            menuReopen = ComponentUtil.createJMenuItem(action, "Re-open bug",
+            menuReopen = ComponentUtil.createJMenuItem(action, "Reopen bug",
                     "dialogs/reopen.png");
             menu.add(menuReopen);
@@ -197,24 +197,32 @@
             cmpMapdustBugs.getViewport().setView(textJList);
         } else {
-            if (mapdustBugsJList == null) {
-                mapdustBugsJList = ComponentUtil.createJList(mapdustBugsList,
-                        menu);
-                mapdustBugsJList.addListSelectionListener(this);
-                DisplayMenu adapter = new DisplayMenu(mapdustBugsJList, menu);
-                mapdustBugsJList.addMouseListener(adapter);
-            } else {
-                mapdustBugsJList.setModel(new BugsListModel(mapdustBugsList));
+            synchronized (mapdustBugsJList) {
+                if (mapdustBugsJList == null) {
+                    mapdustBugsJList = ComponentUtil.createJList(
+                            mapdustBugsList, menu);
+                    mapdustBugsJList.addListSelectionListener(this);
+                    DisplayMenu adapter = new DisplayMenu(mapdustBugsJList,
+                            menu);
+                    mapdustBugsJList.addMouseListener(adapter);
+                } else {
+                    mapdustBugsJList.setModel(new BugsListModel(mapdustBugsList));
+                }
+                cmpMapdustBugs.getViewport().setView(mapdustBugsJList);
             }
-            cmpMapdustBugs.getViewport().setView(mapdustBugsJList);
-        }
-    }
-
-    /**
-     *
+        }
+    }
+
+    /**
+     * Listens to the <code>ListSelectionEvent</code>s and modifies the buttons
+     * and menu items depending on the status of the <code>MapdustBug</code>
+     * object.
+     *
+     * @param event The <code>ListSelectionEvent</code> object
      */
     @Override
-    public void valueChanged(ListSelectionEvent event) {
+    public synchronized void valueChanged(ListSelectionEvent event) {
         if (!event.getValueIsAdjusting()) {
-            MapdustBug selectedBug = (MapdustBug) mapdustBugsJList.getSelectedValue();
+            MapdustBug selectedBug =
+                    (MapdustBug) mapdustBugsJList.getSelectedValue();
             if (selectedBug != null) {
                 Main.pref.put("selectedBug.status", selectedBug.getStatus()
@@ -250,5 +258,4 @@
                     getMenuFixed().setEnabled(false);
                 }
-
                 btnPanel.getBtnAddComment().setSelected(false);
                 btnPanel.getBtnReOpenBugReport().setSelected(false);
@@ -271,4 +278,6 @@
             Main.map.mapView.repaint();
             mapdustGUI.repaint();
+        } else {
+            return;
         }
     }
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugPropertiesPanel.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugPropertiesPanel.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustBugPropertiesPanel.java	(revision 25828)
@@ -48,7 +48,7 @@
 
 /**
- * Defines the JPanel for the <code>MapdustBug</code> object properties.
- * The MapDust bug properties panel displays detailed information about a
- * given <code>MapdustBug</code> and it is composed by the following panels:
+ * Defines the JPanel for the <code>MapdustBug</code> object properties. The
+ * MapDust bug properties panel displays detailed information about a given
+ * <code>MapdustBug</code> and it is composed by the following panels:
  * <code>MapdustBugDetailsPanel</code>, <code>MapdustAddressPanel</code>,
  * <code>MapdustDescriptionPanel</code>, <code>MapdustCommentsPanel</code> and
@@ -119,5 +119,4 @@
             index = mainPanel.getSelectedIndex();
         }
-
         /* create the panels */
         createPanels(selectedBug);
@@ -159,5 +158,4 @@
             detailsPanel.updateComponents(mapdustBug);
         }
-
         /* address panel */
         Address address = mapdustBug != null ? mapdustBug.getAddress() : null;
@@ -172,7 +170,7 @@
             addressPanel.updateComponents(address, coordinates);
         }
-
         /* description panel */
-        String description = mapdustBug != null ? mapdustBug.getDescription() : "";
+        String description = mapdustBug != null ? mapdustBug.getDescription()
+                : "";
         if (descriptionPanel == null) {
             descriptionPanel = new MapdustDescriptionPanel(description);
@@ -180,20 +178,17 @@
             descriptionPanel.updateComponents(description);
         }
-
         /* comments panel */
-        MapdustComment[] comments = mapdustBug != null ? mapdustBug.getComments()
-                : new MapdustComment[0];
+        MapdustComment[] comments = mapdustBug != null ?
+                mapdustBug.getComments() : new MapdustComment[0];
         if (commentsPanel == null) {
             commentsPanel = new MapdustCommentsPanel(comments);
         } else {
-           commentsPanel.updateComponents(comments);
-           mainPanel.setTitleAt(3, commentsPanel.getName());
-        }
-
+            commentsPanel.updateComponents(comments);
+            mainPanel.setTitleAt(3, commentsPanel.getName());
+        }
         /* the help panel */
         if (helpPanel == null) {
             helpPanel = new MapdustHelpPanel();
         }
-
         /* creates the main panel */
         if (mainPanel == null) {
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustButtonPanel.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustButtonPanel.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustButtonPanel.java	(revision 25828)
@@ -57,5 +57,5 @@
     private static final long serialVersionUID = -4234650664854226973L;
 
-    /** The work offline button */
+    /** The work off-line button */
     private JToggleButton btnWorkOffline;
 
@@ -100,14 +100,14 @@
      */
     private void addComponents(MapdustPlugin mapdustPlugin) {
-        /* 'Work offline' button */
+        /* 'Work off-line' button */
+        String text = "";
+        String imagePath = "";
         if (btnWorkOffline == null) {
             String pluginState = Main.pref.get("mapdust.pluginState");
-            String tooltipText = "";
-            String imagePath = "";
             if (pluginState.equals(MapdustPluginState.ONLINE.getValue())) {
-                tooltipText = "Work offline mode";
+                text = "Work offline mode";
                 imagePath = "dialogs/workoffline.png";
             } else {
-                tooltipText = "Work online mode";
+                text = "Work online mode";
                 imagePath = "dialogs/online.png";
             }
@@ -115,6 +115,6 @@
                     mapdustPlugin.getMapdustGUI());
             ((ExecuteWorkOffline) action).addObserver(mapdustPlugin);
-            btnWorkOffline = ComponentUtil.createJButton("Work offline",
-                    tooltipText, imagePath, action);
+            btnWorkOffline = ComponentUtil.createJButton("Work offline", text,
+                    imagePath, action);
             btnWorkOffline.setSelected(false);
             btnWorkOffline.setFocusTraversalKeysEnabled(false);
@@ -122,7 +122,8 @@
         /* 'Filter' button */
         if (btnFilter == null) {
+            text = "Filter bug reports";
+            imagePath = "dialogs/mapdust_bug_filter.png";
             AbstractAction action = new ShowFilterBugAction(mapdustPlugin);
-            btnFilter = ComponentUtil.createJButton("Filter bug reports",
-                    "Filter bug reports", "dialogs/mapdust_bug_filter.png",
+            btnFilter = ComponentUtil.createJButton(text, text, imagePath,
                     action);
             btnFilter.setEnabled(true);
@@ -131,7 +132,9 @@
         /* 'Add Comment' button */
         if (btnAddComment == null) {
+            text = "Add comment/additional info";
+            imagePath = "dialogs/comment.png";
             AbstractAction action = new ShowCommentBugAction(mapdustPlugin);
-            btnAddComment = ComponentUtil.createJButton("Comment bug report",
-                    "Comment bug report", "dialogs/comment.png", action);
+            btnAddComment = ComponentUtil.createJButton(text, text, imagePath,
+                    action);
             btnAddComment.setEnabled(false);
             btnAddComment.setFocusTraversalKeysEnabled(false);
@@ -139,7 +142,9 @@
         /* 'Fix bug report' button */
         if (btnFixBugReport == null) {
+            text = "Mark as fixed";
+            imagePath = "dialogs/fixed.png";
             AbstractAction action = new ShowCloseBugAction(mapdustPlugin);
-            btnFixBugReport = ComponentUtil.createJButton("Close bug report",
-                    "Close bug report", "dialogs/fixed.png", action);
+            btnFixBugReport = ComponentUtil.createJButton(text, text, imagePath,
+                    action);
             btnFixBugReport.setEnabled(false);
             btnFixBugReport.setFocusTraversalKeysEnabled(false);
@@ -147,8 +152,9 @@
         /* 'Invalidate bug report' button */
         if (btnInvalidateBugReport == null) {
+            text = "Non-reproducible/Software bug";
+            imagePath = "dialogs/invalid.png";
             AbstractAction action = new ShowInvalidateBugAction(mapdustPlugin);
-            btnInvalidateBugReport = ComponentUtil.createJButton(
-                    "Invalidate bug report", "Invalidate bug report",
-                    "dialogs/invalid.png", action);
+            btnInvalidateBugReport = ComponentUtil.createJButton(text, text,
+                    imagePath, action);
             btnInvalidateBugReport.setEnabled(false);
             btnInvalidateBugReport.setFocusTraversalKeysEnabled(false);
@@ -156,8 +162,9 @@
         /* 'Re-open bug report' button */
         if (btnReOpenBugReport == null) {
+            text = "Reopen bug";
+            imagePath = "dialogs/reopen.png";
             AbstractAction action = new ShowReOpenBugAction(mapdustPlugin);
-            btnReOpenBugReport = ComponentUtil.createJButton(
-                    "Re-open bug report", "Re-open bug report",
-                    "dialogs/reopen.png", action);
+            btnReOpenBugReport = ComponentUtil.createJButton(text, text,
+                    imagePath, action);
             btnReOpenBugReport.setEnabled(false);
             btnReOpenBugReport.setFocusTraversalKeysEnabled(false);
@@ -165,9 +172,11 @@
         /* 'Refresh' button */
         if (btnRefresh == null) {
+            text = "Refresh";
+            imagePath = "dialogs/mapdust_refresh.png";
             String pluginState = Main.pref.get("mapdust.pluginState");
             AbstractAction action = new ExecuteRefresh();
             ((ExecuteRefresh) action).addObserver(mapdustPlugin);
-            btnRefresh = ComponentUtil.createJButton("Refresh", "Refresh",
-                    "dialogs/mapdust_refresh.png", action);
+            btnRefresh = ComponentUtil.createJButton(text, text, imagePath,
+                    action);
             if (pluginState.equals(MapdustPluginState.OFFLINE.getValue())) {
                 btnRefresh.setEnabled(false);
@@ -242,5 +251,11 @@
         btnFilter.setSelected(false);
         btnFilter.setFocusable(false);
-        btnRefresh.setEnabled(true);
+        String pluginState = Main.pref.get("mapdust.pluginState");
+        if (pluginState.equals(MapdustPluginState.ONLINE.getValue())) {
+            btnRefresh.setEnabled(true);
+        } else {
+            btnRefresh.setEnabled(false);
+        }
+
         btnRefresh.setSelected(false);
         btnRefresh.setFocusable(false);
@@ -258,10 +273,9 @@
             btnReOpenBugReport.setEnabled(false);
             btnReOpenBugReport.setEnabled(false);
-
-        }
-    }
-
-    /**
-     * Returns the work offline button
+        }
+    }
+
+    /**
+     * Returns the work off-line button
      *
      * @return the btnWorkOffline
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceChangeListener.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceChangeListener.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceChangeListener.java	(revision 25828)
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Created on Apr 1, 2011 by Bea
+ * Modified on $DateTime$ by $Author$
+
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.slider;
+
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+
+/**
+ * Change listener for the <code>RelevanceSlider</code> object.
+ *
+ * @author Bea
+ * @version $Revision$
+ */
+public class RelevanceChangeListener implements ChangeListener {
+
+    /** The <code>RelevanceSliderUI</code> object */
+    private final RelevanceSliderUI sliderUI;
+
+    /**
+     * Builds a <code>RelevanceChangeListener</code> object based on the given
+     * argument
+     *
+     * @param sliderUI The <code>RelevanceSliderUI</code> object
+     */
+    public RelevanceChangeListener(RelevanceSliderUI sliderUI) {
+        this.sliderUI = sliderUI;
+    }
+
+    /**
+     * Listens for slider thumb specific change events ( the lower or upper
+     * thumb of the <code>RelevanceSlider</code> was moved), and updates the
+     * current <code>RelevanceSlider</code> state to the new state.
+     *
+     * @param event A <code>ChangeEvent</code> object
+     */
+    @Override
+    public void stateChanged(ChangeEvent event) {
+        if (event != null) {
+            sliderUI.changeSliderState();
+        }
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceSlider.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceSlider.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceSlider.java	(revision 25828)
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Created on Apr 1, 2011 by Bea
+ * Modified on $DateTime$ by $Author$
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.slider;
+
+
+import java.awt.Font;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import javax.swing.JLabel;
+import javax.swing.JSlider;
+import org.openstreetmap.josm.plugins.mapdust.gui.component.util.ComponentUtil;
+import org.openstreetmap.josm.plugins.mapdust.gui.value.MapdustRelevanceValue;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
+
+
+/**
+ * This class defines a customized relevance <code>JSlider</code> object. The
+ * relevance slider is a slider with two thumbs, and with a lower and upper
+ * value.
+ *
+ * @author Bea
+ * @version $Revision$
+ */
+public class RelevanceSlider extends JSlider {
+
+    /** The serial version UID */
+    private static final long serialVersionUID = 3306976109770890966L;
+
+    /** The selected lower value */
+    private int lowerValue;
+
+    /** The selected upper value */
+    private int upperValue;
+
+    /**
+     * Builds a new <code>RelevanceSlider</code> with the default settings. By
+     * default the <code>RelevanceSlider</code> values are from 0 (see
+     * <code>MapdustRelevanceValue</code> LOW value) until 16 (see
+     * <code>MapdustRelevanceValue</code> HIGH value).
+     */
+    public RelevanceSlider() {
+        super(MapdustRelevanceValue.LOW.getSliderValue(),
+                MapdustRelevanceValue.HIGH.getSliderValue());
+        initSlider(MapdustRelevanceValue.LOW.getSliderValue(),
+                MapdustRelevanceValue.HIGH.getSliderValue());
+    }
+
+    /**
+     * Initialize the <code>RelevanceSlider</code> object.
+     *
+     * @param lowerValue The value of the lower thumb
+     * @param upperValue The value of the upper thumb
+     */
+    private void initSlider(int lowerValue, int upperValue) {
+        setOrientation(HORIZONTAL);
+        setMajorTickSpacing(4);
+        setLowerValue(lowerValue);
+        setUpperValue(upperValue);
+        setPaintTicks(true);
+        setPaintLabels(true);
+        setSnapToTicks(true);
+        setFocusable(false);
+        /* set label for the slider values */
+        Dictionary<Integer, JLabel> values = new Hashtable<Integer, JLabel>();
+        Font font = new Font("Times New Roman", Font.BOLD, 12);
+        values.put(MapdustRelevanceValue.LOW.getSliderValue(), ComponentUtil
+                .createJLabel(MapdustRelevance.LOW.getName(), font, null, null));
+        values.put(MapdustRelevanceValue.MID_LOW.getSliderValue(),
+                ComponentUtil.createJLabel(MapdustRelevance.MID_LOW.getName(),
+                        font, null, null));
+        values.put(MapdustRelevanceValue.MEDIUM.getSliderValue(), ComponentUtil
+                .createJLabel(MapdustRelevance.MEDIUM.getName(), font, null,
+                        null));
+        values.put(MapdustRelevanceValue.MID_HIGH.getSliderValue(),
+                ComponentUtil.createJLabel(MapdustRelevance.MID_HIGH.getName(),
+                        font, null, null));
+        values.put(MapdustRelevanceValue.HIGH.getSliderValue(),
+                ComponentUtil.createJLabel(MapdustRelevance.HIGH.getName(),
+                        font, null, null));
+        setLabelTable(values);
+    }
+
+    /**
+     * Updates the UI of the slider.
+     */
+    @Override
+    public void updateUI() {
+        setUI(new RelevanceSliderUI(this));
+        updateLabelUIs();
+    }
+
+    /**
+     * Returns the <code>RelevanceSliderUI</code> object
+     *
+     * @return ui
+     */
+    @Override
+    public RelevanceSliderUI getUI() {
+        return (RelevanceSliderUI) ui;
+    }
+
+    /**
+     * Returns the lower value
+     *
+     * @return the lowerValue
+     */
+    public int getLowerValue() {
+        return lowerValue;
+    }
+
+    /**
+     * Sets the new lower value, and the range properties.
+     *
+     * @param lowerValue The new lower value
+     */
+    public void setLowerValue(int lowerValue) {
+        int oldValue = getLowerValue();
+        int oldExtent = getExtent();
+        int newExtent = oldExtent + oldValue - lowerValue;
+        getModel().setRangeProperties(lowerValue, newExtent, getMinimum(),
+                getMaximum(), true);
+        this.lowerValue = lowerValue;
+    }
+
+    /**
+     * Returns the upper value
+     *
+     * @return upperValue
+     */
+    public int getUpperValue() {
+        if (upperValue<lowerValue){
+            upperValue=lowerValue;
+        }
+        return upperValue;
+    }
+
+    /**
+     * Sets the upper value, and the extent value.
+     *
+     * @param upperValue The new upper value.
+     */
+    public void setUpperValue(int upperValue) {
+        this.upperValue = upperValue;
+        int newExtent = Math.min(Math.max(0, upperValue - getLowerValue()),
+                getMaximum() - getLowerValue());
+        setExtent(newExtent);
+    }
+
+    /**
+     * Sets the extent values of the slider, and also reset the value for the
+     * upperValue field.
+     */
+    @Override
+    public void setExtent(int extent) {
+        super.setExtent(extent);
+        this.upperValue=getLowerValue()+getExtent();
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceSliderUI.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceSliderUI.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/RelevanceSliderUI.java	(revision 25828)
@@ -0,0 +1,602 @@
+/*
+ * Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Created on Apr 7, 2011 by Bea
+ * Modified on $DateTime$ by $Author$
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.slider;
+
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import javax.swing.JSlider;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeListener;
+import javax.swing.plaf.basic.BasicSliderUI;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+
+/**
+ * This class defines a customized <code>BasicSliderUI</code> for the
+ * <code>RelevanceSlider</code> object.
+ *
+ * @author Bea
+ * @version $Revision$
+ */
+public class RelevanceSliderUI extends BasicSliderUI {
+
+    /** The rectangle of the upper thumb */
+    private Rectangle upperRect;
+
+    /** Flag indicating if the upper thumb is selected or not */
+    private boolean isUpperSelected;
+
+    /** Flag indicating if the lower thumb is dragging or not */
+    private transient boolean isLowerDragging;
+
+    /** Flag indicating if the upper thumb is dragging or not */
+    private transient boolean isUpperDragging;
+
+    /** The icon used for representing the upper and lower thumbs */
+    private final Icon sliderIcon;
+
+    /**
+     * Builds a new <code>RelevanceSliderUI</code> object based on the given
+     * arguments.
+     *
+     * @param relevanceSlider The <code>RelevanceSlider</code> object
+     */
+    public RelevanceSliderUI(RelevanceSlider relevanceSlider) {
+        super(relevanceSlider);
+        this.sliderIcon = ImageProvider.get("slider/thumb.png");
+    }
+
+    /**
+     * Installs the UI on the given component.
+     *
+     * @param component A <code>JComponent</code> object
+     */
+    @Override
+    public void installUI(JComponent component) {
+        upperRect = new Rectangle();
+        super.installUI(component);
+    }
+
+    /**
+     * Changes the slider current state shown on the GUI with a new state.
+     * Basically moves the upper and lower thumbs on the slider, based on a
+     * previous user action.
+     */
+    public void changeSliderState() {
+        if (!isLowerDragging && !isUpperDragging) {
+            calculateThumbLocation();
+            slider.repaint();
+        } else {
+            if (isUpperSelected) {
+                calculateThumbLocation();
+                slider.repaint();
+            }
+        }
+    }
+
+    /**
+     * Creates a new custom <code>TrackListener</code> object for the slider.
+     *
+     * @param slider The <code>JSlider</code> object
+     * @return A new <code>RangeTrackListener</code> object
+     */
+    @Override
+    protected TrackListener createTrackListener(JSlider slider) {
+        return new RangeTrackListener();
+    }
+
+    /**
+     * Creates a new custom <code>ChangeListener</code> object for the slider.
+     *
+     * @param slider The <code>JSlider</code> object
+     * @return A new <code>RelevanceChangeListener</code> object
+     */
+    @Override
+    protected ChangeListener createChangeListener(JSlider slider) {
+        return new RelevanceChangeListener(this);
+    }
+
+    /**
+     * Calculates the slider thumb sizes. Also sets the size for the upper and
+     * lower thumb.
+     *
+     */
+    @Override
+    protected void calculateThumbSize() {
+        super.calculateThumbSize();
+        upperRect.setSize(sliderIcon.getIconWidth(), sliderIcon.getIconHeight());
+
+    }
+
+    /**
+     * Calculates the locations of the upper and lower thumbs.
+     */
+    @Override
+    protected void calculateThumbLocation() {
+        super.calculateThumbLocation();
+        if (getSlider().getSnapToTicks()) {
+            int upperValue = getSlider().getUpperValue();
+            int snappedValue = upperValue;
+            int majorTickSpacing = getSlider().getMajorTickSpacing();
+            int minorTickSpacing = getSlider().getMinorTickSpacing();
+            int tickSpacing = 0;
+            if (minorTickSpacing > 0) {
+                tickSpacing = minorTickSpacing;
+            } else if (majorTickSpacing > 0) {
+                tickSpacing = majorTickSpacing;
+            }
+            if (tickSpacing != 0) {
+                int min = getSlider().getMinimum();
+                if ((upperValue - min) % tickSpacing != 0) {
+                    float temp = upperValue - min;
+                    temp /= tickSpacing;
+                    int whichTick = Math.round(temp);
+                    snappedValue = min + (whichTick * tickSpacing);
+                }
+                if (snappedValue != upperValue) {
+                    int extent = snappedValue - getSlider().getLowerValue();
+                    getSlider().setExtent(extent);
+                }
+            }
+        }
+        int value = getSlider().getLowerValue() + getSlider().getExtent();
+        int upperPosition = xPositionForValue(value);
+        upperRect.x = upperPosition - (upperRect.width / 2);
+        upperRect.y = trackRect.y;
+    }
+
+    /**
+     * Returns the size of the thumbs. The dimension is computed based on the
+     * thumb icon dimension.
+     *
+     * @return A <code>Dimension</code> object.
+     */
+    @Override
+    protected Dimension getThumbSize() {
+        return new Dimension(sliderIcon.getIconWidth(),
+                sliderIcon.getIconHeight());
+    }
+
+    /**
+     * Paints the given components.
+     *
+     * @param g The <code>Graphics</code> object
+     * @param c The <code>JComponent</code> object
+     */
+    @Override
+    public void paint(Graphics g, JComponent c) {
+        super.paint(g, c);
+        Rectangle clipRect = g.getClipBounds();
+        if (isUpperSelected) {
+            if (clipRect.intersects(thumbRect)) {
+                sliderIcon.paintIcon(getSlider(), g, thumbRect.x, thumbRect.y);
+            }
+            if (clipRect.intersects(upperRect)) {
+                sliderIcon.paintIcon(getSlider(), g, upperRect.x, upperRect.y);
+            }
+        } else {
+            if (clipRect.intersects(upperRect)) {
+                sliderIcon.paintIcon(getSlider(), g, upperRect.x, upperRect.y);
+            }
+            if (clipRect.intersects(thumbRect)) {
+                sliderIcon.paintIcon(getSlider(), g, thumbRect.x, thumbRect.y);
+            }
+        }
+    }
+
+    @Override
+    public void paintThumb(Graphics g) {}
+
+    /**
+     * Paints the tack of the slider. The selected part of the slider will be
+     * painted with orange.
+     *
+     * @param g The <code>Graphics</code> object
+     */
+    @Override
+    public void paintTrack(Graphics g) {
+        super.paintTrack(g);
+        Rectangle trackBounds = trackRect;
+        int lowerX = thumbRect.x + (thumbRect.width / 2);
+        int upperX = upperRect.x + (upperRect.width / 2);
+        int cy = (trackBounds.height / 2) - 2;
+        Color oldColor = g.getColor();
+        g.translate(trackBounds.x, trackBounds.y + cy);
+        g.setColor(Color.orange);
+        for (int y = 0; y <= 3; y++) {
+            g.drawLine(lowerX - trackBounds.x, y, upperX - trackBounds.x, y);
+        }
+        g.translate(-trackBounds.x, -(trackBounds.y + cy));
+        g.setColor(oldColor);
+    }
+
+    /**
+     * Moves the selected thumb in the specified direction by a block increment.
+     *
+     * @param direction The direction
+     */
+    @Override
+    public void scrollByBlock(int direction) {
+        synchronized (getSlider()) {
+            int min = getSlider().getMinimum();
+            int max = getSlider().getMaximum();
+            int incr = (max - min) / 10;
+            if (incr <= 0 && max > min) {
+                incr = 1;
+            }
+            int delta = incr  * ((direction > 0) ? POSITIVE_SCROLL
+                    : NEGATIVE_SCROLL);
+            if (isUpperSelected) {
+                int oldValue = getSlider().getUpperValue();
+                getSlider().setUpperValue(oldValue + delta);
+            } else {
+                int oldValue = getSlider().getLowerValue();
+                getSlider().setLowerValue(oldValue + delta);
+            }
+        }
+    }
+
+    /**
+     * Moves the selected thumb in the specified direction by a unit increment.
+     *
+     * @param direction The direction
+     */
+    @Override
+    public void scrollByUnit(int direction) {
+        synchronized (getSlider()) {
+            int delta = 1 * ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
+            if (isUpperSelected) {
+                int oldValue = getSlider().getUpperValue();
+                getSlider().setUpperValue(oldValue + delta);
+            } else {
+                int oldValue = getSlider().getLowerValue();
+                getSlider().setLowerValue(oldValue + delta);
+            }
+        }
+    }
+
+    /**
+     * Returns the <code>RelevanceSlider</code> object
+     *
+     * @return relevance slider
+     */
+    protected RelevanceSlider getSlider() {
+        return (RelevanceSlider) slider;
+    }
+
+    /**
+     * Returns the thumb rectangle. This method returns the parent class
+     * thumbRect field.
+     *
+     * @return A <code>Rectangle</code> object
+     */
+    protected Rectangle getThumbRect() {
+        return super.thumbRect;
+    }
+
+    /**
+     * Returns the track rectangle. This method returns the parent class
+     * trackRect field.
+     *
+     * @return A <code>Rectangle</code> object
+     */
+    protected Rectangle getTrackRect() {
+        return super.trackRect;
+    }
+
+    /**
+     * Returns the upper thumb rectangle.
+     *
+     * @return A <code>Rectangle</code> object
+     */
+    public Rectangle getUpperRect() {
+        return upperRect;
+    }
+
+    /**
+     * This method it is used for accessing the base class 'drawInverted'
+     * method.
+     *
+     * @return boolean
+     */
+    @Override
+    protected boolean drawInverted() {
+        return super.drawInverted();
+    }
+
+    /**
+     * This method it is used for accessing the base class 'xPositionForValue'
+     * method.
+     *
+     * @param value The integer value
+     * @return the x position for the given value
+     */
+    @Override
+    protected int xPositionForValue(int value) {
+        return super.xPositionForValue(value);
+    }
+
+    /**
+     * Returns the isUpperSelected field value.
+     *
+     * @return the isUpperSelected
+     */
+    public boolean getIsUpperSelected() {
+        return isUpperSelected;
+    }
+
+    /**
+     * Sets the isUpperSelected field to a new value
+     *
+     * @param isUpperSelected the isUpperSelected to set
+     */
+    public void setIsUpperSelected(boolean isUpperSelected) {
+        this.isUpperSelected = isUpperSelected;
+    }
+
+    /**
+     * Returns the isLowerDragging field value.
+     *
+     * @return the isLowerDragging
+     */
+    public boolean getIsLowerDragging() {
+        return isLowerDragging;
+    }
+
+    /**
+     * Sets the isLowerDragging field value
+     *
+     * @param isLowerDragging the isLowerDragging to set
+     */
+    public void setIsLowerDragging(boolean isLowerDragging) {
+        this.isLowerDragging = isLowerDragging;
+    }
+
+    /**
+     * Returns the isUpperDragging field value
+     *
+     * @return the isUpperDragging
+     */
+    public boolean getIsUpperDragging() {
+        return isUpperDragging;
+    }
+
+    /**
+     * Sets the isUpperDragging field value
+     *
+     * @param isUpperDragging the isUpperDragging to set
+     */
+    public void setIsUpperDragging(boolean isUpperDragging) {
+        this.isUpperDragging = isUpperDragging;
+    }
+
+    /**
+     * Custom <code>TrackListener</code> inner class for the
+     * <code>RelevanceSliderUI</code> object.
+     *
+     */
+    class RangeTrackListener extends TrackListener {
+
+        /**
+         * Listens and handles the mouse pressed event.
+         *
+         * @param event The <code>MouseEvent</code> object
+         */
+        @Override
+        public void mousePressed(MouseEvent event) {
+            if (!getSlider().isEnabled()) {
+                return;
+            }
+            currentMouseX = event.getX();
+            currentMouseY = event.getY();
+            if (getSlider().isRequestFocusEnabled()) {
+                getSlider().requestFocus();
+            }
+            boolean lowerPressed = false;
+            boolean upperPressed = false;
+            if (getIsUpperSelected()) {
+                if (getUpperRect().contains(currentMouseX, currentMouseY)) {
+                    upperPressed = true;
+                } else {
+                    if (getThumbRect().contains(currentMouseX, currentMouseY)) {
+                        lowerPressed = true;
+                    }
+                }
+            } else {
+                if (getThumbRect().contains(currentMouseX, currentMouseY)) {
+                    lowerPressed = true;
+                } else {
+                    if (getUpperRect().contains(currentMouseX, currentMouseY)) {
+                        upperPressed = true;
+                    }
+                }
+            }
+
+            /* lower thumb was pressed */
+            if (lowerPressed) {
+                offset = currentMouseX - getThumbRect().x;
+                setIsUpperSelected(false);
+                setIsLowerDragging(true);
+                return;
+            }
+            setIsLowerDragging(false);
+
+            /* upper thumb was pressed */
+            if (upperPressed) {
+                offset = currentMouseX - getUpperRect().x;
+                setIsUpperSelected(true);
+                setIsUpperDragging(true);
+                return;
+            }
+            setIsUpperDragging(false);
+        }
+
+        /**
+         * Listens and handles the mouse released event.
+         *
+         * @param event The <code>MouseEvent</code> object
+         */
+        @Override
+        public void mouseReleased(MouseEvent event) {
+            setIsLowerDragging(false);
+            setIsUpperDragging(false);
+            getSlider().setValueIsAdjusting(false);
+            super.mouseReleased(event);
+        }
+
+        /**
+         * Listens and handles the mouse dragged event.
+         *
+         * @param event The <code>MouseEvent</code> object
+         */
+        @Override
+        public void mouseDragged(MouseEvent event) {
+            if (!getSlider().isEnabled()) {
+                return;
+            }
+            currentMouseX = event.getX();
+            currentMouseY = event.getY();
+            if (getIsLowerDragging()) {
+                getSlider().setValueIsAdjusting(true);
+                moveLowerThumb(event);
+
+            } else if (getIsUpperDragging()) {
+                getSlider().setValueIsAdjusting(true);
+                moveUpperThumb(event);
+            }
+        }
+
+        @Override
+        public boolean shouldScroll(int direction) {
+            return false;
+        }
+
+        /**
+         * Moves the location of the lower thumb, and sets its corresponding
+         * value in the slider.
+         *
+         * @param event The <code>MouseEvent</code> object
+         */
+        private void moveLowerThumb(MouseEvent event) {
+            int halfThumbWidth = getThumbRect().width / 2;
+            int thumbLeft = currentMouseX - offset;
+            int trackLeft = getTrackRect().x;
+            int trackRight = getTrackRect().x + (getTrackRect().width - 1);
+            int hMax = xPositionForValue(getSlider().getLowerValue()
+                    + getSlider().getExtent());
+            if (drawInverted()) {
+                trackLeft = hMax;
+            } else {
+                trackRight = hMax;
+            }
+            thumbLeft = Math.max(thumbLeft, trackLeft - halfThumbWidth);
+            thumbLeft = Math.min(thumbLeft, trackRight - halfThumbWidth);
+            /* set location & repaint */
+            setThumbLocation(thumbLeft, getThumbRect().y);
+            /* set lower value */
+            getSlider().setLowerValue(getSnappedValue(event));
+        }
+
+        /**
+         * Moves the location of the upper thumb, and sets its corresponding
+         * value in the slider.
+         *
+         * @param event The <code>MouseEvent</code> object
+         */
+        private void moveUpperThumb(MouseEvent event) {
+            int halfThumbWidth = getThumbRect().width / 2;
+            int thumbLeft = currentMouseX - offset;
+            int trackLeft = getTrackRect().x;
+            int trackRight = getTrackRect().x + (getTrackRect().width - 1);
+            int hMin = xPositionForValue((getSlider()).getLowerValue());
+            if (drawInverted()) {
+                trackRight = hMin;
+            } else {
+                trackLeft = hMin;
+            }
+            thumbLeft = Math.max(thumbLeft, trackLeft - halfThumbWidth);
+            thumbLeft = Math.min(thumbLeft, trackRight - halfThumbWidth);
+            /* set location & repaint */
+            Rectangle upperUnionRect = new Rectangle();
+            upperUnionRect.setBounds(getUpperRect());
+            getUpperRect().setLocation(thumbLeft, getThumbRect().y);
+            SwingUtilities.computeUnion(getUpperRect().x, getUpperRect().y,
+                    getUpperRect().width, getUpperRect().height,
+                    upperUnionRect);
+            getSlider().repaint(upperUnionRect.x, upperUnionRect.y,
+                    upperUnionRect.width, upperUnionRect.height);
+            /* set the new upper value */
+            getSlider().setUpperValue(getSnappedValue(event));
+        }
+
+        /**
+         * Computes the snapped values for the upper/lower relevance slider
+         * value. If the value of the slider is not on a tick, than its value
+         * will be adjusted according to the nearest left or right tick.
+         *
+         * @param evt The <code>MouseEvent</code>
+         * @return The snapped value
+         */
+        private int getSnappedValue(MouseEvent evt) {
+            int pozX = valueForXPosition(evt.getX());
+            int pozY = valueForYPosition(evt.getY());
+            int value = getSlider().getOrientation() ==
+                SwingConstants.HORIZONTAL ? pozX : pozY;
+            int snappedValue = value;
+            int tickSpacing = 0;
+            int majorTickSpacing = getSlider().getMajorTickSpacing();
+            int minorTickSpacing = getSlider().getMinorTickSpacing();
+            if (minorTickSpacing > 0)
+                tickSpacing = minorTickSpacing;
+            else if (majorTickSpacing > 0)
+                tickSpacing = majorTickSpacing;
+            /* If it's not on a tick, change the value */
+            if (tickSpacing != 0) {
+                if ((value - getSlider().getMinimum()) % tickSpacing != 0) {
+                    float temp = (float) (value - getSlider().getMinimum())
+                            / (float) tickSpacing;
+                    snappedValue = getSlider().getMinimum()+ (Math.round(temp)
+                            * tickSpacing);
+                }
+            }
+            return snappedValue;
+        }
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/package-info.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/package-info.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/slider/package-info.java	(revision 25828)
@@ -0,0 +1,6 @@
+/**
+ * Contains a custom implementation for the MapDust bug relevance
+ * <code>JSlider</code> UI element. This custom implementation defines the
+ * functionality for a <code>JSlider</code> with 2 thumbs.
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.component.slider;
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/util/ComponentUtil.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/util/ComponentUtil.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/util/ComponentUtil.java	(revision 25828)
@@ -76,7 +76,9 @@
      * @param font The font of the label
      * @param bounds The bounds of the element
+     * @param color The color of the element
      * @return A <code>JLabel</code> object
      */
-    public static JLabel createJLabel(String text, Font font, Rectangle bounds) {
+    public static JLabel createJLabel(String text, Font font, Rectangle bounds,
+            Color color) {
         JLabel jLabel = new JLabel();
         if (bounds != null) {
@@ -85,6 +87,11 @@
         jLabel.setText(text);
         jLabel.setFont(font);
+        if (color != null) {
+            jLabel.setForeground(color);
+        }
+        jLabel.setVerticalTextPosition(SwingConstants.TOP);
         return jLabel;
     }
+
 
     /**
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/value/MapdustRelevanceValue.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/value/MapdustRelevanceValue.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/value/MapdustRelevanceValue.java	(revision 25828)
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Created on Apr 6, 2011 by Bea
+ * Modified on $DateTime$ by $Author$
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.value;
+
+
+import java.util.HashMap;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
+
+
+/**
+ * This is a helper object, used for representing the MapDust bug relevance -
+ * actual value mappings (value from the slider).
+ *
+ * @author Bea
+ * @version $Revision$
+ */
+public class MapdustRelevanceValue {
+
+    /** The low MapDust bug relevance value */
+    public static final MapdustRelevanceValue LOW = new MapdustRelevanceValue(
+            MapdustRelevance.LOW, 0);
+
+    /** The mid-low MapDust bug relevance value */
+    public static final MapdustRelevanceValue MID_LOW =
+            new MapdustRelevanceValue(MapdustRelevance.MID_LOW, 4);
+
+    /** The medium MapDust bug relevance value */
+    public static final MapdustRelevanceValue MEDIUM =
+            new MapdustRelevanceValue(MapdustRelevance.MEDIUM, 8);
+
+    /** The mid-high MapDust bug relevance value */
+    public static final MapdustRelevanceValue MID_HIGH =
+            new MapdustRelevanceValue(MapdustRelevance.MID_HIGH, 12);
+
+    /** The high MapDust bug relevance value */
+    public static final MapdustRelevanceValue HIGH = new MapdustRelevanceValue(
+            MapdustRelevance.HIGH, 16);
+
+    /** The MapDust bug relevance */
+    private MapdustRelevance relevance;
+
+    /** The actual slider value corresponding for this relevance */
+    private int sliderValue;
+
+    /**
+     * The hash map containing the valid <code>MapdustRelevanceValue</code>
+     * objects
+     */
+    private static java.util.HashMap<MapdustRelevance, Integer> map;
+
+    /**
+     * Builds a new <code>MapdustRelevanceValue</code> object.
+     */
+    private MapdustRelevanceValue() {}
+
+    /**
+     * Builds a new <code>MapdustRelevanceValue</code> object based on the given
+     * arguments.
+     *
+     * @param relevance The MapDust bug relevance
+     * @param sliderValue The actual slider value
+     */
+    private MapdustRelevanceValue(MapdustRelevance relevance, int sliderValue) {
+        this.relevance = relevance;
+        this.sliderValue = sliderValue;
+        if (MapdustRelevanceValue.map == null) {
+            MapdustRelevanceValue.map =
+                    new HashMap<MapdustRelevance, Integer>();
+        }
+        MapdustRelevanceValue.map.put(relevance, sliderValue);
+    }
+
+    /**
+     * Returns the slider value for the given MapDust bug relevance. If the
+     * given relevance does not exists, then the method returns null.
+     *
+     * @param relevance The <code>MapdustRelevanceValue</code> object
+     * @return The corresponding slider value
+     */
+    public static Integer getSliderValue(MapdustRelevance relevance) {
+        if (relevance != null) {
+            Integer sliderValue = MapdustRelevanceValue.map.get(relevance);
+            return sliderValue;
+        }
+        return null;
+    }
+
+    /**
+     * Returns the relevance
+     *
+     * @return the relevance
+     */
+    public MapdustRelevance getRelevance() {
+        return relevance;
+    }
+
+    /**
+     * Returns the slider value
+     *
+     * @return the sliderValue
+     */
+    public int getSliderValue() {
+        return sliderValue;
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/connector/MapdustConnector.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/connector/MapdustConnector.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/connector/MapdustConnector.java	(revision 25828)
@@ -122,6 +122,5 @@
             handleStatusCode(httpResponse);
             result = (MapdustGetBugsResponse) getParser().parseResponse(
-                            httpResponse.getContent(),
-                            MapdustGetBugsResponse.class);
+                    httpResponse.getContent(),MapdustGetBugsResponse.class);
         } catch (MapdustConnectorException e) {
             throw new MapdustConnectorException(e.getMessage(), e);
@@ -333,4 +332,12 @@
                     urlString += "&idd=" + "0";
                 }
+                if (filter.getMinRelevance() != null) {
+                    int min=filter.getMinRelevance().getRange().getLowerValue();
+                    urlString += "&minr=" + min;
+                }
+                if (filter.getMaxRelevance() != null) {
+                    int max= filter.getMaxRelevance().getRange().getUpperValue();
+                    urlString += "&maxr=" + max;
+                }
             }
         }
@@ -521,5 +528,5 @@
     private void handleStatusCode(HttpResponse httpResponse)
             throws MapdustConnectorException {
-        String errorMessage = "";
+        String error = "";
         Integer statusCode = httpResponse.getStatusCode();
         String statusMessage = httpResponse.getStatusMessage();
@@ -535,35 +542,35 @@
         switch (statusCode) {
             case 400:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status400.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status400.getDescription();
+                throw new MapdustConnectorException(error);
             case 401:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status401.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status401.getDescription();
+                throw new MapdustConnectorException(error);
             case 403:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status403.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status403.getDescription();
+                throw new MapdustConnectorException(error);
             case 404:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status404.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status404.getDescription();
+                throw new MapdustConnectorException(error);
             case 405:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status405.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status405.getDescription();
+                throw new MapdustConnectorException(error);
             case 500:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status500.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status500.getDescription();
+                throw new MapdustConnectorException(error);
             case 601:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status601.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status601.getDescription();
+                throw new MapdustConnectorException(error);
             case 602:
-                errorMessage = statusMessage + " ";
-                errorMessage += MapdustResponseStatusCode.Status602.getDescription();
-                throw new MapdustConnectorException(errorMessage);
+                error = statusMessage + " ";
+                error += MapdustResponseStatusCode.Status602.getDescription();
+                throw new MapdustConnectorException(error);
             default:
                 throw new MapdustConnectorException(
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/connector/response/MapdustBugProperties.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/connector/response/MapdustBugProperties.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/connector/response/MapdustBugProperties.java	(revision 25828)
@@ -53,4 +53,7 @@
     private String type;
 
+    /** The relevance value */
+    private Integer relevance;
+
     /** The description of the bug */
     private String description;
@@ -95,4 +98,5 @@
      * @param status The status of the bug
      * @param type The type of the bug
+     * @param relevance The relevance of the bug
      * @param description The description of the bug
      * @param isDefaultDescription Flag indicating if the description is default
@@ -108,5 +112,5 @@
      */
     public MapdustBugProperties(Date dateCreated, Date dateUpdated,
-            Integer status, String type, String description,
+            Integer status, String type, Integer relevance, String description,
             boolean isDefaultDescription, String nickname, String skoUid,
             String extUid, String source, String kmlUrl, Address address,
@@ -116,4 +120,5 @@
         this.status = status;
         this.type = type;
+        this.relevance = relevance;
         this.description = description;
         this.isDefaultDescription = isDefaultDescription;
@@ -201,4 +206,29 @@
 
     /**
+     * Returns the relevance
+     *
+     * @return the relevance
+     */
+    public Integer getRelevance() {
+        return relevance;
+    }
+
+    /**
+     * Sets the relevance
+     *
+     * @param relevance the relevance to set
+     */
+    public void setRelevance(Integer relevance) {
+        this.relevance = relevance;
+    }
+
+    /**
+     * @param isDefaultDescription the isDefaultDescription to set
+     */
+    public void setDefaultDescription(boolean isDefaultDescription) {
+        this.isDefaultDescription = isDefaultDescription;
+    }
+
+    /**
      * Returns the description
      *
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/converter/MapdustConverter.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/converter/MapdustConverter.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/converter/MapdustConverter.java	(revision 25828)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBug;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustComment;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
 import org.openstreetmap.josm.plugins.mapdust.service.value.Status;
 import org.openstreetmap.josm.plugins.mapdust.service.value.Type;
@@ -86,4 +87,9 @@
                 Type type = Type.getType(bugProperties.getType());
                 bug.setType(type);
+                /* sets the relevance */
+                MapdustRelevance relevance =
+                        MapdustRelevance.getMapdustRelevance(bugProperties
+                                .getRelevance());
+                bug.setRelevance(relevance);
                 /* sets the creation date */
                 bug.setDateCreated(bugProperties.getDateCreated());
@@ -173,4 +179,9 @@
                 Type type = Type.getType(bugProperties.getType());
                 bug.setType(type);
+                /* sets the relevance */
+                MapdustRelevance relevance =
+                        MapdustRelevance.getMapdustRelevance(bugProperties
+                                .getRelevance());
+                bug.setRelevance(relevance);
                 /* sets the creation date */
                 bug.setDateCreated(bugProperties.getDateCreated());
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustBug.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustBug.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustBug.java	(revision 25828)
@@ -62,4 +62,7 @@
     private Type type;
 
+    /** The relevance of the object */
+    private MapdustRelevance relevance;
+
     /** The description of the bug */
     private String description;
@@ -92,7 +95,5 @@
      * Builds a <code>MapdustBug</code> object.
      */
-    public MapdustBug() {
-
-    }
+    public MapdustBug() {}
 
     /**
@@ -122,4 +123,5 @@
      * @param status The status of the bug
      * @param type The type of the bug
+     * @param relevance The relevance of the bug
      * @param description The description of the bug
      * @param isDefaultDescription Flag indicating if the description is default
@@ -135,6 +137,7 @@
     public MapdustBug(Long id, LatLon latLon, Address address,
             Date dateCreated, Date dateUpdated, Status status, Type type,
-            String description, boolean isDefaultDescription, String nickname,
-            String skoUid, String extUid, String source, String kmlUrl,
+            MapdustRelevance relevance, String description,
+            boolean isDefaultDescription, String nickname, String skoUid,
+            String extUid, String source, String kmlUrl,
             Integer numberOfComments, MapdustComment[] comments) {
         this.id = id;
@@ -145,4 +148,5 @@
         this.status = status;
         this.type = type;
+        this.relevance = relevance;
         this.description = description;
         this.isDefaultDescription = isDefaultDescription;
@@ -265,4 +269,22 @@
 
     /**
+     * Returns the relevance
+     *
+     * @return the relevance
+     */
+    public MapdustRelevance getRelevance() {
+        return relevance;
+    }
+
+    /**
+     * Sets the relevance
+     *
+     * @param relevance the relevance to set
+     */
+    public void setRelevance(MapdustRelevance relevance) {
+        this.relevance = relevance;
+    }
+
+    /**
      * Returns the description
      *
@@ -443,5 +465,7 @@
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     *
      * @see java.lang.Object#hashCode()
      */
@@ -454,5 +478,7 @@
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     *
      * @see java.lang.Object#equals(java.lang.Object)
      */
@@ -474,4 +500,3 @@
     }
 
-
 }
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustBugFilter.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustBugFilter.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustBugFilter.java	(revision 25828)
@@ -53,4 +53,10 @@
     private Boolean descr;
 
+    /** The minimum relevance */
+    private MapdustRelevance minRelevance;
+
+    /** The maximum relevance */
+    private MapdustRelevance maxRelevance;
+
     /**
      * Build a <code>MapdustBugFilter</code> object
@@ -65,10 +71,15 @@
      * @param types The list of type filter values
      * @param descr The description filter value
+     * @param minRelevance The minimum relevance
+     * @param maxRelevance The maximum relevance
      */
     public MapdustBugFilter(List<Integer> statuses, List<String> types,
-            Boolean descr) {
+            Boolean descr, MapdustRelevance minRelevance,
+            MapdustRelevance maxRelevance) {
         this.statuses = statuses;
         this.types = types;
         this.descr = descr;
+        this.minRelevance = minRelevance;
+        this.maxRelevance = maxRelevance;
     }
 
@@ -127,3 +138,39 @@
     }
 
+    /**
+     * Returns the minimum relevance
+     *
+     * @return the minRelevance
+     */
+    public MapdustRelevance getMinRelevance() {
+        return minRelevance;
+    }
+
+    /**
+     * Sets the minimum relevance
+     *
+     * @param minRelevance the minRelevance to set
+     */
+    public void setMinRelevance(MapdustRelevance minRelevance) {
+        this.minRelevance = minRelevance;
+    }
+
+    /**
+     * Returns the maximum relevance
+     *
+     * @return the maxRelevance
+     */
+    public MapdustRelevance getMaxRelevance() {
+        return maxRelevance;
+    }
+
+    /**
+     * Sets the maximum relevance
+     *
+     * @param maxRelevance the maxRelevance to set
+     */
+    public void setMaxRelevance(MapdustRelevance maxRelevance) {
+        this.maxRelevance = maxRelevance;
+    }
+
 }
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustRelevance.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustRelevance.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/MapdustRelevance.java	(revision 25828)
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Created on Mar 31, 2011 by Bea
+ * Modified on $DateTime$ by $Author$
+ */
+package org.openstreetmap.josm.plugins.mapdust.service.value;
+
+
+import java.io.Serializable;
+import java.util.HashMap;
+
+
+/**
+ * This a helper object, used for representing the MapDust bug relevance. A bug
+ * relevance is defined by a name and a relevance range.
+ *
+ * @author Bea
+ * @version $Revision$
+ */
+public class MapdustRelevance implements Serializable,
+        Comparable<MapdustRelevance> {
+
+    /** Serial Version UID */
+    private static final long serialVersionUID = 8910563589536711954L;
+
+    /** The low MapDust bug relevance */
+    public static final MapdustRelevance LOW = new MapdustRelevance("Low",
+            RelevanceRange.LOW_RANGE);
+
+    /** The low MapDust bug relevance */
+    public static final MapdustRelevance MID_LOW = new MapdustRelevance(
+            "Mid-Low", RelevanceRange.MID_LOW_RANGE);
+
+    /** The low MapDust bug relevance */
+    public static final MapdustRelevance MEDIUM = new MapdustRelevance(
+            "Medium", RelevanceRange.MEDIUM_RANGE);
+
+    /** The low MapDust bug relevance */
+    public static final MapdustRelevance MID_HIGH = new MapdustRelevance(
+            "Mid-High", RelevanceRange.MID_HIGH_RANGE);
+
+    /** The low MapDust bug relevance */
+    public static final MapdustRelevance HIGH = new MapdustRelevance("High",
+            RelevanceRange.HIGH_RANGE);
+
+    /** The name of the relevance */
+    private String name;
+
+    /** The range of the relevance */
+    private RelevanceRange range;
+
+    /** The hash map containing the valid values */
+    private static java.util.HashMap<RelevanceRange, MapdustRelevance> map;
+
+    /***
+     * Builds a new <code>MapdustRelevance</code> object.
+     */
+    public MapdustRelevance() {}
+
+    /**
+     * Builds a new <code>MapdustRelevance</code> object based on the given
+     * arguments.
+     *
+     * @param name The name of the relevance
+     * @param range The range of the relevance
+     */
+    public MapdustRelevance(String name, RelevanceRange range) {
+        this.name = name;
+        this.range = range;
+        if (MapdustRelevance.map == null) {
+            MapdustRelevance.map =
+                    new HashMap<RelevanceRange, MapdustRelevance>();
+        }
+        MapdustRelevance.map.put(range, this);
+    }
+
+    /**
+     * Returns the corresponding <code>MapdustRelevance</code> object for the
+     * given value. If there is no corresponding <code>MapdustRelevance</code>
+     * for the given value, the method returns null.
+     *
+     * @param value The value
+     * @return A <code>MapdustRelevance</code> object
+     */
+    public static MapdustRelevance getMapdustRelevance(int value) {
+        RelevanceRange range = RelevanceRange.getRelevanceRange(value);
+        if (range != null) {
+            MapdustRelevance relevance = map.get(range);
+            return relevance;
+        }
+        return null;
+    }
+
+    /**
+     * Returns the name.
+     *
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Returns the range.
+     *
+     * @return the range
+     */
+    public RelevanceRange getRange() {
+        return range;
+    }
+
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((range == null) ? 0 : range.hashCode());
+        return result;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        MapdustRelevance other = (MapdustRelevance) obj;
+        if (other == null) {
+            return false;
+        }
+        if (name == null || other.name == null) {
+            return false;
+        }
+        if (!name.equals(other.name)) {
+            return false;
+        }
+        if (range == null || other.getRange() == null) {
+            return false;
+        }
+        if (!range.equals(other.range)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int compareTo(MapdustRelevance obj) {
+        if (this.equals(obj)) {
+            return 0;
+        }
+        if (obj == null) {
+            return -1;
+        }
+        return this.getRange().compareTo(obj.getRange());
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/RelevanceRange.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/RelevanceRange.java	(revision 25828)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/RelevanceRange.java	(revision 25828)
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Created on Apr 5, 2011 by Bea
+ * Modified on $DateTime$ by $Author$
+ */
+package org.openstreetmap.josm.plugins.mapdust.service.value;
+
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Iterator;
+
+
+/**
+ * This a helper object, used for representing the MapDust bug relevance range.
+ * A bug relevance range is defined by the lower and the upper values.
+ *
+ * @author Bea
+ * @version $Revision$
+ */
+public class RelevanceRange implements Serializable, Comparable<RelevanceRange> {
+
+    /** The serial version UID */
+    private static final long serialVersionUID = -5187434838022942754L;
+
+    /** The low range */
+    public static final RelevanceRange LOW_RANGE = new RelevanceRange(0, 3);
+
+    /** The mid-low range */
+    public static final RelevanceRange MID_LOW_RANGE = new RelevanceRange(4, 6);
+
+    /** The medium range */
+    public static final RelevanceRange MEDIUM_RANGE = new RelevanceRange(7, 9);
+
+    /** The mid-high range */
+    public static final RelevanceRange MID_HIGH_RANGE = new RelevanceRange(10,
+            13);
+
+    /** The high range */
+    public static final RelevanceRange HIGH_RANGE = new RelevanceRange(14, 17);
+
+    /** A set containing all the valid range values */
+    private static java.util.Set<RelevanceRange> set;
+
+    /** The minimal value */
+    private int lowerValue;
+
+    /** The maximal value */
+    private int upperValue;
+
+    /**
+     * Builds a new <code>RelevanceRange</code> object.
+     *
+     */
+    private RelevanceRange() {}
+
+    /**
+     * Builds a new <code>RelevanceRange</code> object based on the given
+     * arguments.
+     *
+     * @param lowerValue The mimal value of the range
+     * @param upperValue The maximal value of the range
+     */
+    private RelevanceRange(int lowerValue, int upperValue) {
+        this.lowerValue = lowerValue;
+        this.upperValue = upperValue;
+        if (set == null) {
+            set = new HashSet<RelevanceRange>();
+        }
+        set.add(this);
+    }
+
+    /**
+     * Returns the range for the given value. A value belongs to a range if
+     * value>=loweValue and value <=upperValue. If there is no range defined for
+     * the given value, then the method return null.
+     *
+     * @param value An integer value, where value >=0 and value <=17
+     * @return The <code>RelevanceRange</code> corresponding to the given value.
+     */
+    public static RelevanceRange getRelevanceRange(int value) {
+        Iterator<RelevanceRange> it = set.iterator();
+        RelevanceRange range = null;
+        while (it.hasNext()) {
+            range = it.next();
+            if (value >= range.getLowerValue()
+                    && value <= range.getUpperValue()) {
+                return range;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the lower value
+     *
+     * @return the lowerValue
+     */
+    public int getLowerValue() {
+        return lowerValue;
+    }
+
+    /**
+     * Returns the upper value
+     *
+     * @return the upperValue
+     */
+    public int getUpperValue() {
+        return upperValue;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + lowerValue;
+        result = prime * result + upperValue;
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        RelevanceRange other = (RelevanceRange) obj;
+        if (lowerValue != other.lowerValue)
+            return false;
+        if (upperValue != other.upperValue)
+            return false;
+        return true;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Comparable#compareTo(java.lang.Object)
+     */
+    @Override
+    public int compareTo(RelevanceRange obj) {
+        if (this.getLowerValue() < obj.getLowerValue()
+                && this.getUpperValue() < obj.getUpperValue()) {
+            return -1;
+        }
+        if (this.getLowerValue() > obj.getLowerValue()
+                && this.getUpperValue() > obj.getUpperValue()) {
+            return 1;
+        }
+        return 0;
+    }
+
+}
Index: applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/Type.java
===================================================================
--- applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/Type.java	(revision 25754)
+++ applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/service/value/Type.java	(revision 25828)
@@ -87,5 +87,5 @@
     /** The blocked street <code>Type</code> */
     public static final Type BLOCKED_STREET = new Type("blocked_street",
-            "Blocked streeet");
+            "Blocked street");
 
     /** The missing street <code>Type</code> */
