Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 6741)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 6742)
@@ -56,4 +56,6 @@
 
     public static final int DEFAULT_SEARCH_HISTORY_SIZE = 15;
+    /** Maximum number of characters before the search expression is shortened for display purposes. */
+    public static final int MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY = 100;
 
     private static final String SEARCH_EXPRESSION = "searchExpression";
@@ -321,5 +323,5 @@
                     new ToolbarPreferences.ActionDefinition(Main.main.menu.search);
             aDef.getParameters().put(SEARCH_EXPRESSION, initialValues);
-            aDef.setName(initialValues.text); // Display search expression as tooltip instead of generic one
+            aDef.setName(Utils.shortenString(initialValues.text, MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY)); // Display search expression as tooltip instead of generic one
             // parametrized action definition is now composed
             ActionParser actionParser = new ToolbarPreferences.ActionParser(null);
@@ -588,12 +590,13 @@
         if (foundMatches == 0) {
             String msg = null;
+            final String text = Utils.shortenString(s.text, MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY);
             if (s.mode == SearchMode.replace) {
-                msg = tr("No match found for ''{0}''", s.text);
+                msg = tr("No match found for ''{0}''", text);
             } else if (s.mode == SearchMode.add) {
-                msg = tr("Nothing added to selection by searching for ''{0}''", s.text);
+                msg = tr("Nothing added to selection by searching for ''{0}''", text);
             } else if (s.mode == SearchMode.remove) {
-                msg = tr("Nothing removed from selection by searching for ''{0}''", s.text);
+                msg = tr("Nothing removed from selection by searching for ''{0}''", text);
             } else if (s.mode == SearchMode.in_selection) {
-                msg = tr("Nothing found in selection by searching for ''{0}''", s.text);
+                msg = tr("Nothing found in selection by searching for ''{0}''", text);
             }
             Main.map.statusLine.setHelpText(msg);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 6741)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 6742)
@@ -38,4 +38,5 @@
 import org.openstreetmap.josm.actions.relation.EditRelationAction;
 import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
+import org.openstreetmap.josm.actions.search.SearchAction;
 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
 import org.openstreetmap.josm.data.SelectionChangedListener;
@@ -74,4 +75,5 @@
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -275,5 +277,5 @@
             putValue(NAME, tr("Search"));
             putValue(SHORT_DESCRIPTION,   tr("Search for objects"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs","select"));
+            putValue(SMALL_ICON, ImageProvider.get("dialogs","search"));
             updateEnabledState();
         }
@@ -657,5 +659,5 @@
 
         public SearchMenuItem(SearchSetting s) {
-            super(s.toString());
+            super(Utils.shortenString(s.toString(), org.openstreetmap.josm.actions.search.SearchAction.MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY));
             this.s = s;
             addActionListener(this);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 6741)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 6742)
@@ -806,8 +806,5 @@
                 selection = null;
             }
-            if (positionString.length() > 20) {
-                positionString = positionString.substring(0, 17) + "...";
-            }
-            return positionString;
+            return Utils.shortenString(positionString, 20);
         }
 
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 6741)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 6742)
@@ -947,3 +947,14 @@
         return biggerCopy;
     }
+
+    /**
+     * If the string {@code s} is longer than {@code maxLength}, the string is cut and "..." is appended.
+     */
+    public static String shortenString(String s, int maxLength) {
+        if (s != null && s.length() > maxLength) {
+            return s.substring(0, maxLength - 3) + "...";
+        } else {
+            return s;
+        }
+    }
 }
