Use tabluator character to separate a dropdown item into columns

The character is only respected if the hidden columns property is set
diff --git a/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js b/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js
index ef64fd3..6d200be 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js
+++ b/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js
@@ -13,6 +13,7 @@
 
   var POPUP_BORDER = new rwt.html.Border( 1, "solid", "#000000" );
   var FRAMEWIDTH = 2;
+  var TAB = String.fromCharCode( 9 );
   var getPadding = function() {
     var manager = rwt.theme.AppearanceManager.getInstance();
     var stylemap = manager.styleFrom( "list-item", {} );
@@ -365,7 +366,11 @@
     rootItem.setItemCount( items.length );
     for( var i = 0; i < items.length; i++ ) {
       var gridItem = new rwt.widgets.GridItem( rootItem, i, false );
-      gridItem.setTexts( [ items[ i ] ] );
+      if( this._.columns ) {
+        gridItem.setTexts( items[ i ].split( TAB ) );
+      } else {
+        gridItem.setTexts( [ items[ i ] ] );
+      }
     }
     delete this._.grid._inServerResponse;
   };
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java
index d75f8e6..809391b 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java
@@ -119,7 +119,7 @@
         dropdown.hide();
       }
     } );
-    dropdown.setData( "columns", new int[] { 90, 50 } );
+    dropdown.setData( "columns", new int[] { 130, 60 } );
   }
 
   private void createKFZExample( Composite parent ) {
@@ -312,7 +312,10 @@
       String item = values[ i ];
       if( item.toLowerCase().startsWith( text ) ) {
         int length = text.length();
-        result.add( "<b>" + item.substring( 0, length ) + "</b>" + item.substring( length ) );
+        int rating = ( int )( Math.random() * 10 );
+        result.add(
+          "<b>" + item.substring( 0, length ) + "</b>" + item.substring( length ) + "\t" + rating + "/10"
+        );
       }
     }
     return result.toArray( new String[ result.size() ] );
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js b/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js
index 2d4c68f..3a27dc2 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js
+++ b/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js
@@ -483,6 +483,18 @@
       assertEquals( 40 - PADDING_RIGHT - PADDING_LEFT, config.itemTextWidth[ 1 ] );
     },
 
+    testSetColumns_separatesItemsByTabulator : function() {
+      dropdown.setColumns( [ 30, 40 ] );
+      var tab = String.fromCharCode( 9 );
+
+      dropdown.setItems( [ "foo" + tab + "bar" ] );
+      showDropDown();
+
+      var gridItem = grid.getRootItem().getChild( 0 );
+      assertEquals( "foo", gridItem.getText( 0 ) );
+      assertEquals( "bar", gridItem.getText( 1 ) );
+    },
+
     testGetItemCount : function() {
       showDropDown();