[jboss-svn-commits] JBL Code SVN: r32050 - in labs/jbossrules/soa_branches/BRMS-5.0.1: drools-guvnor/src/main/java/org/drools/guvnor/client/messages and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 12 01:14:32 EST 2010


Author: jervisliu
Date: 2010-03-12 01:14:31 -0500 (Fri, 12 Mar 2010)
New Revision: 32050

Added:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java
Modified:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/DSLSentenceWidget.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePicker.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerLabel.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerPopUp.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerTextBox.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QueryWidget.java
Log:
Merged BRMS-131(broken reloading of values in drop down lists when working with enums) from trunk.
Merge log:
1. For Constants.java and Constants.properties, we only added constants needed by this version.
2. /labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
replaced its content with r28994. 
3. /labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePicker.java
replaced its content with 28994 version.
4. /labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerLabel.java
replaced its content with 28994 version.
5. /labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java
replace its content with 28994 version. 
6. /labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/SecurityServiceImplTest.java
did not do anything with this file

NOTE: wont compile after this merge. This is mainly because we missed r26981 which is part of fix for BRMS-125. Then did following:
  replaced DatePickerTextBox.java with r27109
  replaced DatePickerPopUp.java with r26981
  replaced DSLSentenceWidget.java with r27110
  replaced QueryWidget.java with r26981
  replaced /labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/DSLSentenceWidget.java with r27001

For this merge, we also included fixes for following jiras:
r27109: GUVNOR-375 : DSL broken -Dates fixed
r27110: GUVNOR-375 : DSL broken -Broken regexp fixed
r27001: GUVNOR-374 : When using DSL for booleans the dropdown is always saved as true
        GUVNOR-373 : Defining a checkbox via DSL doesn't work anymore - generated rule is broken - Fixed in Guvnor and Eclipse
r27000: GUVNOR-373 : Defining a checkbox via DSL doesn't work anymore - generated rule is broken
r26981: GUVNOR-173 : Replace the Date Picker widget in DSLSentenceWidget with a custom widget

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/DSLSentenceWidget.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/DSLSentenceWidget.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/DSLSentenceWidget.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -544,7 +544,7 @@
             resultWidget.add( "true" );
             resultWidget.add( "false" );
 
-            if ( checkedUnchecked.equalsIgnoreCase( "checked" ) ) {
+s             if ( checkedUnchecked.equalsIgnoreCase( "true" ) ) {
                 resultWidget.select( 0 );
             } else {
                 resultWidget.select( 1 );
@@ -589,7 +589,7 @@
         }
 
         public String getCheckedValue() {
-            return this.resultWidget.getSelectionIndex() == 0 ? "checked" : "checked";
+            return this.resultWidget.getSelectionIndex() == 0 ? "true" : "false";
 
         }
     }
@@ -754,4 +754,4 @@
 
     }
 
-}
+}
\ No newline at end of file

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -1868,4 +1868,8 @@
     String AreYouSureYouWantToRemoveThisBlockOfData();
 
     String PleaseEnterANameThatIsNotAlreadyUsedByAnotherPattern();
+    
+	String ValueCanNotBeEmpty();
+
+	String Value();
 }

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties	2010-03-12 06:14:31 UTC (rev 32050)
@@ -919,4 +919,6 @@
 RecentlyOpened=Recently Opened
 RecentlyEdited=Recently Edited
 IncomingChanges=Incoming changes
-From=From
\ No newline at end of file
+From=From
+ValueCanNotBeEmpty=Value can not be empty
+Value=Value
\ No newline at end of file

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -45,6 +45,7 @@
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.KeyboardListener;
+import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.Panel;
 import com.google.gwt.user.client.ui.SimplePanel;
@@ -119,7 +120,10 @@
         } else {
             switch ( constraint.constraintValueType ) {
                 case SingleFieldConstraint.TYPE_LITERAL :
-                    panel.add( literalEditor() );
+                    panel.add( new LiteralEditor( constraint,
+                                                  this.dropDownData,
+                                                  this.fieldType,
+                                                  this.numericValue ) );
                     break;
                 case SingleFieldConstraint.TYPE_RET_VALUE :
                     panel.add( returnValueEditor() );
@@ -141,6 +145,7 @@
         if ( this.constraint.value == null ) {
             box.addItem( constants.Choose() );
         }
+
         int j = 0;
         for ( int i = 0; i < vars.size(); i++ ) {
             String var = (String) vars.get( i );
@@ -179,74 +184,11 @@
     }
 
     /**
-     * An editor for literal values.
-     */
-    private Widget literalEditor() {
-
-        //use a drop down if we have a fixed list
-        if ( this.dropDownData != null ) {
-            return enumDropDown( constraint.value,
-                                 new ValueChanged() {
-                                     public void valueChanged(String newValue) {
-                                         constraint.value = newValue;
-                                     }
-                                 },
-                                 this.dropDownData );
-
-        } else if ( SuggestionCompletionEngine.TYPE_DATE.equals( this.fieldType ) ) {
-
-            DatePickerLabel datePicker = new DatePickerLabel( constraint.value );
-
-            // Set the default time
-            constraint.value = datePicker.getDateString();
-
-            datePicker.addValueChanged( new ValueChanged() {
-                public void valueChanged(String newValue) {
-                    constraint.value = newValue;
-                }
-            } );
-
-            return datePicker;
-        } else {
-
-            final TextBox box = boundTextBox( constraint );
-
-            if ( this.numericValue ) {
-                box.addKeyboardListener( new KeyboardListener() {
-
-                    public void onKeyDown(Widget arg0,
-                                          char arg1,
-                                          int arg2) {
-
-                    }
-
-                    public void onKeyPress(Widget w,
-                                           char c,
-                                           int i) {
-                        if ( Character.isLetter( c ) ) {
-                            ((TextBox) w).cancelKey();
-                        }
-                    }
-
-                    public void onKeyUp(Widget arg0,
-                                        char arg1,
-                                        int arg2) {
-                    }
-
-                } );
-            }
-
-            box.setTitle( constants.LiteralValueTip() );
-            return box;
-        }
-    }
-
-    /**
      * This will do a drop down for enumerated values..
      */
-    public static Widget enumDropDown(final String currentValue,
-                                      final ValueChanged valueChanged,
-                                      final DropDownData dropData) {
+    public static ListBox enumDropDown(final String currentValue,
+                                       final ValueChanged valueChanged,
+                                       final DropDownData dropData) {
         final ListBox box = new ListBox();
         final Constants cs = GWT.create( Constants.class );
 
@@ -277,25 +219,6 @@
                 }
             } );
 
-            //	        box.addFocusListener(new FocusListener() {
-            //
-            //
-            //				public void onFocus(Widget w) {
-            //					DeferredCommand.addCommand(new Command() {
-            //						public void execute() {
-            //							LoadingPopup.showMessage("Refreshing list...");
-            //							RepositoryServiceFactory.getService().loadDropDownExpression(dropData.valuePairs, dropData.queryExpression, new GenericCallback() {
-            //								public void onSuccess(Object data) {
-            //									LoadingPopup.close();
-            //									String[] list = (String[]) data;
-            //									doDropDown(currentValue, list, box);
-            //								}
-            //							});
-            //						}
-            //					});
-            //				}
-            //				public void onLostFocus(Widget w) {}
-            //	        });
         } else {
             //otherwise its just a normal one...
             doDropDown( currentValue,
@@ -321,29 +244,6 @@
         return box;
     }
 
-    //    /**
-    //     * This will do a drop down for enumerated values..
-    //     */
-    //    public static Widget enumDropDown(//final ISingleFieldConstraint constraint,
-    //                                       final String currentValue, final ValueChanged valueChanged,
-    //                                final String[] enumeratedValues) {
-    //        final ListBox box = new ListBox();
-    //
-    //        if (currentValue == null || "".equals( currentValue )) {
-    //            box.addItem( "Choose ..." );
-    //        }
-    //
-    //        doDropDown(currentValue, enumeratedValues, box);
-    //
-    //        box.addChangeListener( new ChangeListener() {
-    //            public void onChange(Widget w) {
-    //                valueChanged.valueChanged( box.getValue( box.getSelectedIndex() ) );
-    //                //constraint.value = box.getValue( box.getSelectedIndex() );
-    //            }
-    //        });
-    //        return box;
-    //    }
-
     private static void doDropDown(final String currentValue,
                                    final String[] enumeratedValues,
                                    final ListBox box) {
@@ -381,7 +281,7 @@
         }
     }
 
-    private TextBox boundTextBox(final ISingleFieldConstraint c) {
+    public static TextBox boundTextBox(final ISingleFieldConstraint c) {
         final TextBox box = new TextBox();
         box.setStyleName( "constraint-value-Editor" ); //NON-NLS
         if ( c.value == null ) {
@@ -400,7 +300,7 @@
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 c.value = box.getText();
-                makeDirty();
+                //                makeDirty();
             }
 
         } );
@@ -445,7 +345,9 @@
             for ( int i = 0; i < vars.size(); i++ ) {
                 String var = (String) vars.get( i );
                 FactPattern f = model.getBoundFact( var );
-                if ( f.factType.equals( this.fieldType ) ) {
+                String fieldConstraint = model.getFieldConstraint( var );
+
+                if ( (f != null && f.factType.equals( this.fieldType )) || this.fieldType.equals( fieldConstraint ) ) {
                     foundABouncVariableThatMatches = true;
                     break;
                 }

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -17,34 +17,25 @@
  */
 
 import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
 import org.drools.guvnor.client.common.DirtyableComposite;
 import org.drools.guvnor.client.common.SmallLabel;
 import org.drools.guvnor.client.common.ValueChanged;
-import org.drools.guvnor.client.explorer.Preferences;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.guvnor.client.modeldriven.brl.DSLSentence;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FocusListener;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
@@ -162,26 +153,15 @@
         // <varName>:DATE:<dateFormat>
         // <varName>:BOOLEAN:[checked | unchecked] <-initial value
 
-        int colonIndex = currVariable.indexOf( ":" );
-        if ( colonIndex > 0 ) {
-
-            String definition = currVariable.substring( colonIndex + 1,
-                                                        currVariable.length() );
-
-            int secondColonIndex = definition.indexOf( ":" );
-            if ( secondColonIndex > 0 ) {
-
-                String type = currVariable.substring( colonIndex + 1,
-                                                      colonIndex + secondColonIndex + 1 );
-                if ( type.equalsIgnoreCase( ENUM_TAG ) ) {
-                    result = getEnumDropdown( currVariable );
-                } else if ( type.equalsIgnoreCase( DATE_TAG ) ) {
-                    result = getDateSelector( currVariable );
-                } else if ( type.equalsIgnoreCase( BOOLEAN_TAG ) ) {
-                    result = getCheckbox( currVariable );
-                }
+        if ( currVariable.contains( ":" ) ) {
+            if ( currVariable.contains( ":" + ENUM_TAG + ":" ) ) {
+                result = getEnumDropdown( currVariable );
+            } else if ( currVariable.contains( ":" + DATE_TAG + ":" ) ) {
+                result = getDateSelector( currVariable );
+            } else if ( currVariable.contains( ":" + BOOLEAN_TAG + ":" ) ) {
+                result = getCheckbox( currVariable );
             } else {
-                String regex = currVariable.substring( colonIndex + 1,
+                String regex = currVariable.substring( currVariable.indexOf( ":" ) + 1,
                                                        currVariable.length() );
                 result = getBox( currVariable,
                                  regex );
@@ -221,7 +201,10 @@
     }
 
     public Widget getDateSelector(String variableDef) {
-        return new DSLDateSelector( variableDef );
+        String[] parts = variableDef.split( ":" + DATE_TAG + ":" );
+
+        return new DSLDateSelector( parts[0],
+                                    parts[1] );
     }
 
     public Widget getLabel(String labelDef) {
@@ -452,7 +435,7 @@
             resultWidget.addItem( "true" );
             resultWidget.addItem( "false" );
 
-            if ( checkedUnchecked.equalsIgnoreCase( "checked" ) ) {
+            if ( checkedUnchecked.equalsIgnoreCase( "true" ) ) {
                 resultWidget.setSelectedIndex( 0 );
             } else {
                 resultWidget.setSelectedIndex( 1 );
@@ -489,18 +472,17 @@
         }
 
         public String getCheckedValue() {
-            return this.resultWidget.getSelectedIndex() == 0 ? "checked" : "checked";
+            return this.resultWidget.getSelectedIndex() == 0 ? "true" : "false";
 
         }
     }
 
     class DSLDateSelector extends DatePickerLabel {
 
-        public DSLDateSelector(String variableDef) {
-            super( variableDef.substring( 0,
-                                          variableDef.indexOf( ":" ) ),
-                   variableDef.substring( variableDef.lastIndexOf( ":" ) + 1,
-                                          variableDef.length() ) );
+        public DSLDateSelector(String selectedDate,
+                               String dateFormat) {
+            super( selectedDate,
+                   dateFormat );
 
             addValueChanged( new ValueChanged() {
                 public void valueChanged(String newValue) {

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePicker.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePicker.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePicker.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -13,33 +13,73 @@
 import com.google.gwt.user.client.ui.Panel;
 import com.google.gwt.user.client.ui.TextBox;
 
-public abstract class DatePicker extends DirtyableComposite {
-    protected Panel               panel         = new HorizontalPanel();
-    protected TextBox             textWidget    = new TextBox();
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
+abstract class DatePicker extends DirtyableComposite {
 
+    protected DatePickerPopUp     datePickerPopUp;
+
+    protected Panel               panel                 = new HorizontalPanel();
+    protected TextBox             textWidget            = new TextBox();
+
     // Format that the text box uses.
-    protected String              visualFormat  = "";
+    protected String              visualFormat          = "";
     // Format that the system uses.
-    protected final static String defaultFormat = Preferences.getStringPref( "drools.dateformat" );
-    protected DateTimeFormat      formatter     = null;
+    protected final static String defaultFormat         = Preferences.getStringPref( "drools.dateformat" );
+    protected DateTimeFormat      visualFormatFormatter = null;
 
-    protected List<ValueChanged>  valueChangeds = new ArrayList<ValueChanged>();
+    protected List<ValueChanged>  valueChangeds         = new ArrayList<ValueChanged>();
 
+    protected void solveVisualFormat(String visualFormat) {
+
+        if ( visualFormat == null || visualFormat.equals( "default" ) || visualFormat.equals( "" ) ) {
+            visualFormat = defaultFormat;
+        }
+        this.visualFormat = visualFormat;
+    }
+
     public String getVisualFormat() {
         return this.visualFormat;
     }
 
     public String getDateString() {
+        String t = textWidget.getText();
+        Date date = this.visualFormatFormatter.parse( t );
         DateTimeFormat formatter = DateTimeFormat.getFormat( defaultFormat );
-        Date date = this.formatter.parse( textWidget.getText() );
         return formatter.format( date );
     }
 
-    public Date getDate() {
+    /**
+     * Set the date from the dropdowns
+     * @return
+     */
+    protected Date fillDate() {
+        Date date = visualFormatFormatter.parse( textWidget.getText() );
+
+        // years
+        date.setYear( Integer.parseInt( datePickerPopUp.years.getItemText( datePickerPopUp.years.getSelectedIndex() ) ) - 1900 );
+        // months
+        date.setMonth( datePickerPopUp.months.getSelectedIndex() );
+        // days
+        date.setDate( datePickerPopUp.dates.getSelectedIndex() + 1 );
+
+        if ( datePickerPopUp.showTime ) {
+            // hours
+            date.setHours( datePickerPopUp.hours.getSelectedIndex() );
+            // minutes
+            date.setMinutes( datePickerPopUp.minutes.getSelectedIndex() );
+        }
+        return date;
+    }
+
+    public Date getDate() throws IllegalArgumentException {
         if ( textWidget.getText() == null || "".equals( textWidget.getText() ) ) {
             return null;
         } else {
-            return this.formatter.parse( textWidget.getText() );
+            return this.visualFormatFormatter.parse( textWidget.getText().trim() );
         }
     }
 

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerLabel.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerLabel.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerLabel.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -1,64 +1,50 @@
 package org.drools.guvnor.client.modeldriven.ui;
 
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.List;
 
-import org.drools.guvnor.client.common.DirtyableComposite;
-import org.drools.guvnor.client.common.ValueChanged;
-import org.drools.guvnor.client.explorer.Preferences;
-
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.FocusListener;
 import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.Widget;
 
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
 public class DatePickerLabel extends DatePicker {
 
-    DatePickerPopUp               datePickerPopUp = new DatePickerPopUp( new ClickListener() {
-                                                      public void onClick(Widget arg0) {
-                                                          // Set the date from the dropdowns
-                                                          Date date = formatter.parse( textWidget.getText() );
+    protected Label labelWidget = new Label();
 
-                                                          // years
-                                                          date.setYear( Integer.parseInt( datePickerPopUp.years.getItemText( datePickerPopUp.years.getSelectedIndex() ) ) - 1900 );
-                                                          // months
-                                                          date.setMonth( datePickerPopUp.months.getSelectedIndex() );
-                                                          // days
-                                                          date.setDate( datePickerPopUp.dates.getSelectedIndex() + 1 );
-
-                                                          textWidget.setText( formatter.format( date ) );
-                                                          labelWidget.setText( textWidget.getText() );
-
-                                                          valueChanged();
-                                                          makeDirty();
-                                                          panel.clear();
-                                                          panel.add( labelWidget );
-                                                          datePickerPopUp.hide();
-                                                      }
-                                                  } );
-
-    protected Label               labelWidget   = new Label();
-
     public DatePickerLabel(String selectedDate) {
         this( selectedDate,
               defaultFormat );
     }
 
     public DatePickerLabel(String selectedDate,
-                      String visualFormat) {
-        this.visualFormat = visualFormat;
+                           String visualFormat) {
+        solveVisualFormat( visualFormat );
 
-        if ( visualFormat == null || visualFormat.equals( "default" ) || visualFormat.equals( "" ) ) {
-            visualFormat = defaultFormat;
-        }
+        visualFormatFormatter = DateTimeFormat.getFormat( this.visualFormat );
 
-        formatter = DateTimeFormat.getFormat( visualFormat );
+        datePickerPopUp = new DatePickerPopUp( new ClickListener() {
+                                                   public void onClick(Widget arg0) {
+                                                       Date date = fillDate();
 
+                                                       textWidget.setText( visualFormatFormatter.format( date ) );
+                                                       labelWidget.setText( textWidget.getText() );
+
+                                                       valueChanged();
+                                                       makeDirty();
+                                                       panel.clear();
+                                                       panel.add( labelWidget );
+                                                       datePickerPopUp.hide();
+                                                   }
+                                               },
+                                               visualFormatFormatter );
+
         labelWidget.setStyleName( "x-form-field" );
 
         labelWidget.addClickListener( new ClickListener() {
@@ -68,16 +54,19 @@
                 datePickerPopUp.setPopupPosition( textWidget.getAbsoluteLeft(),
                                                   textWidget.getAbsoluteTop() + 20 );
 
-                datePickerPopUp.setDropdowns( formatter.parse( textWidget.getText() ) );
+                datePickerPopUp.setDropdowns( visualFormatFormatter,
+                                              textWidget.getText() );
                 datePickerPopUp.show();
             }
         } );
 
         // Check if there is a valid date set. If not, set this date.
         try {
-            formatter.parse( selectedDate );
+            DateTimeFormat formatter = DateTimeFormat.getFormat( defaultFormat );
+            Date date = formatter.parse( selectedDate );
+            selectedDate = visualFormatFormatter.format( date );
         } catch ( Exception e ) {
-            selectedDate = formatter.format( new Date() );
+            selectedDate = visualFormatFormatter.format( new Date() );
         }
 
         if ( selectedDate != null && !selectedDate.equals( "" ) ) {
@@ -104,4 +93,5 @@
         panel.add( labelWidget );
         initWidget( panel );
     }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerPopUp.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerPopUp.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerPopUp.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -5,30 +5,46 @@
 import org.drools.guvnor.client.messages.Constants;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.PopupPanel;
 import com.google.gwt.user.client.ui.Widget;
 
 /**
- *
+ * 
  * @author Toni Rikkola
  *
  */
 public class DatePickerPopUp extends PopupPanel {
-    private Constants constants = ((Constants) GWT.create( Constants.class ));
+    private Label     timeColonLabel  = new Label( ":" );
 
-    protected ListBox   years     = new ListBox();
-    protected ListBox   months    = new ListBox();
-    protected ListBox   dates     = new ListBox();
+    private Label     timeHyphenLabel = new Label( " - " );
 
-    //            private ListBox   hours     = new ListBox();
-    //            private ListBox   minutes   = new ListBox();
+    private Constants constants       = ((Constants) GWT.create( Constants.class ));
 
-    public DatePickerPopUp(ClickListener okClickListener) {
+    // It is show time! (When to show time next to date selectors)
+    protected boolean showTime        = false;
+
+    protected ListBox years           = new ListBox();
+    protected ListBox months          = new ListBox();
+    protected ListBox dates           = new ListBox();
+
+    protected ListBox hours           = new ListBox();
+    protected ListBox minutes         = new ListBox();
+
+    /**
+     * 
+     * @param okClickListener What to do when ok, is pressed
+     * @param showTime Can you select time too.
+     */
+    public DatePickerPopUp(ClickListener okClickListener,
+                           DateTimeFormat formatter) {
+
         HorizontalPanel horizontalPanel = new HorizontalPanel();
 
         // Add years
@@ -67,20 +83,23 @@
         fillDates();
         horizontalPanel.add( dates );
 
-        //                // Hours
-        //                for ( int i = 0; i < 24; i++ ) {
-        //                    hours.addItem( Integer.toString( i ) );
-        //                }
-        //                horizontalPanel.add( new Label( " - " ) );
-        //                horizontalPanel.add( hours );
-        //
-        //                // Minutes
-        //                for ( int i = 0; i < 60; i++ ) {
-        //                    minutes.addItem( Integer.toString( i ) );
-        //                }
-        //                horizontalPanel.add( new Label( ":" ) );
-        //                horizontalPanel.add( minutes );
+        showTime = hasTime( formatter );
+        if ( showTime ) {
+            // Hours
+            for ( int i = 0; i < 24; i++ ) {
+                hours.addItem( Integer.toString( i ) );
+            }
+            horizontalPanel.add( timeHyphenLabel );
+            horizontalPanel.add( hours );
 
+            // Minutes 
+            for ( int i = 0; i < 60; i++ ) {
+                minutes.addItem( Integer.toString( i ) );
+            }
+            horizontalPanel.add( timeColonLabel );
+            horizontalPanel.add( minutes );
+        }
+
         Button okButton = new Button( constants.OK() );
         okButton.addClickListener( okClickListener );
         horizontalPanel.add( okButton );
@@ -89,9 +108,34 @@
     }
 
     /**
+     * Simple check, if time format has hours it has time.
+     * 
+     * @param formatter
+     * @return
+     */
+    private boolean hasTime(DateTimeFormat formatter) {
+        return formatter.getPattern().contains( "h" ) || formatter.getPattern().contains( "H" ) || formatter.getPattern().contains( "k" ) || formatter.getPattern().contains( "K" );
+    }
+
+    private void setTimeVisible(boolean visible) {
+        hours.setVisible( visible );
+        minutes.setVisible( visible );
+        timeHyphenLabel.setVisible( visible );
+        timeColonLabel.setVisible( visible );
+    }
+
+    /**
     * Sets the current year, month ect to dropdowns.
     */
-    public void setDropdowns(Date date) {
+    public void setDropdowns(DateTimeFormat formatter,
+                             String text) {
+        Date date;
+        try {
+            date = formatter.parse( text );
+        } catch ( Exception e ) {
+            date = new Date();
+        }
+
         // Set year
         years.clear();
         int year = date.getYear() + 1900 - 50;
@@ -107,10 +151,16 @@
         months.setSelectedIndex( date.getMonth() );
         // day
         dates.setSelectedIndex( date.getDate() - 1 );
-        //                // hours
-        //                hours.setSelectedIndex( date.getHours() );
-        //                // minutes
-        //                minutes.setSelectedIndex( date.getMinutes() );
+
+        setTimeVisible( showTime );
+
+        if ( showTime ) {
+            // hours
+            hours.setSelectedIndex( date.getHours() );
+
+            // minutes
+            minutes.setSelectedIndex( date.getMinutes() );
+        }
     }
 
     private void fillDates() {
@@ -118,7 +168,7 @@
 
         dates.clear();
 
-        // Check month
+        // Check month 
         int days = daysInMonth( months.getSelectedIndex() + 1 );
 
         for ( int i = 1; i <= days; i++ ) {
@@ -143,4 +193,4 @@
         }
     }
 
-}
+}
\ No newline at end of file

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerTextBox.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerTextBox.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DatePickerTextBox.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -3,10 +3,8 @@
 import java.util.Date;
 
 import org.drools.guvnor.client.common.ImageButton;
-import org.drools.guvnor.client.common.ValueChanged;
 
 import com.google.gwt.i18n.client.DateTimeFormat;
-import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.FocusListener;
 import com.google.gwt.user.client.ui.TextBox;
@@ -14,27 +12,8 @@
 
 public class DatePickerTextBox extends DatePicker {
 
-    DatePickerPopUp               datePickerPopUp = new DatePickerPopUp( new ClickListener() {
-                                                      public void onClick(Widget arg0) {
-                                                          // Set the date from the dropdowns
-                                                          Date date = formatter.parse( textWidget.getText() );
+    private ImageButton select = new ImageButton( "images/edit_tiny.gif" );
 
-                                                          // years
-                                                          date.setYear( Integer.parseInt( datePickerPopUp.years.getItemText( datePickerPopUp.years.getSelectedIndex() ) ) - 1900 );
-                                                          // months
-                                                          date.setMonth( datePickerPopUp.months.getSelectedIndex() );
-                                                          // days
-                                                          date.setDate( datePickerPopUp.dates.getSelectedIndex() + 1 );
-
-                                                          textWidget.setText( formatter.format( date ) );
-
-                                                          valueChanged();
-                                                          makeDirty();
-                                                          datePickerPopUp.hide();
-                                                      }
-                                                  } );
-    ImageButton                        select          = new ImageButton("images/edit_tiny.gif");
-
     public DatePickerTextBox(String selectedDate) {
         this( selectedDate,
               defaultFormat );
@@ -42,35 +21,44 @@
 
     public DatePickerTextBox(String selectedDate,
                              String visualFormat) {
-        this.visualFormat = visualFormat;
+        solveVisualFormat( visualFormat );
 
-        if ( visualFormat == null || visualFormat.equals( "default" ) || visualFormat.equals( "" ) ) {
-            visualFormat = defaultFormat;
-        }
+        visualFormatFormatter = DateTimeFormat.getFormat( this.visualFormat );
 
-        formatter = DateTimeFormat.getFormat( visualFormat );
+        datePickerPopUp = new DatePickerPopUp( new ClickListener() {
+                                                   public void onClick(Widget arg0) {
+                                                       Date date = fillDate();
 
+                                                       textWidget.setText( visualFormatFormatter.format( date ) );
+
+                                                       valueChanged();
+                                                       makeDirty();
+                                                       datePickerPopUp.hide();
+                                                   }
+                                               },
+                                               visualFormatFormatter );
+
         select.addClickListener( new ClickListener() {
             public void onClick(Widget arg0) {
                 datePickerPopUp.setPopupPosition( textWidget.getAbsoluteLeft(),
                                                   textWidget.getAbsoluteTop() + 20 );
 
                 if ( textWidget.getText() != null && "".equals( textWidget.getText() ) ) {
-                    textWidget.setText( formatter.format( new Date() ) );
+                    textWidget.setText( visualFormatFormatter.format( new Date() ) );
                 }
 
-                datePickerPopUp.setDropdowns( formatter.parse( textWidget.getText() ) );
+                datePickerPopUp.setDropdowns( visualFormatFormatter,
+                                              textWidget.getText() );
                 datePickerPopUp.show();
             }
         } );
 
-
         if ( selectedDate != null && !selectedDate.equals( "" ) ) {
             textWidget.setText( selectedDate );
 
             // Check if there is a valid date set. If not, set this date.
             try {
-                formatter.parse( selectedDate );
+                visualFormatFormatter.parse( selectedDate );
             } catch ( Exception e ) {
                 selectedDate = null;
             }
@@ -94,5 +82,7 @@
         initWidget( panel );
     }
 
-
-}
+    public void clear() {
+        textWidget.setText( "" );
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -0,0 +1,193 @@
+package org.drools.guvnor.client.modeldriven.ui;
+
+import org.drools.guvnor.client.common.ErrorPopup;
+import org.drools.guvnor.client.common.ValueChanged;
+import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.modeldriven.DropDownData;
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.guvnor.client.modeldriven.brl.ISingleFieldConstraint;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.KeyboardListener;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ *
+ * Editor for literal values.
+ * Normally shows the value as text, when clicked opens a custom editor for dates,
+ * enums etc or by default a textbox.
+ *
+ * @author Toni Rikkola
+ *
+ */
+public class LiteralEditor extends Composite {
+
+    private Constants              constants    = ((Constants) GWT.create( Constants.class ));
+    protected Panel                panel        = new HorizontalPanel();
+    protected Label                labelWidget  = new Label();
+    private ISingleFieldConstraint constraint;
+    private DropDownData           dropDownData;
+    private String                 fieldType;
+    private final boolean          numericValue;
+
+    private final Button           okButton     = new Button( constants.OK() );
+    private final ValueChanged     valueChanged = new ValueChanged() {
+                                                    public void valueChanged(String newValue) {
+                                                        constraint.value = newValue;
+                                                        okButton.click();
+                                                    }
+                                                };
+
+    public LiteralEditor(ISingleFieldConstraint constraint,
+                         DropDownData dropDownData,
+                         String fieldType,
+                         boolean numericValue) {
+        this.constraint = constraint;
+        this.dropDownData = dropDownData;
+        this.fieldType = fieldType;
+        this.numericValue = numericValue;
+
+        if ( SuggestionCompletionEngine.TYPE_DATE.equals( this.fieldType ) ) {
+
+            DatePickerLabel datePicker = new DatePickerLabel( constraint.value );
+
+            // Set the default time
+            this.constraint.value = datePicker.getDateString();
+
+            datePicker.addValueChanged( valueChanged );
+
+            initWidget( datePicker );
+        } else {
+
+            labelWidget.setStyleName( "x-form-field" );
+
+            if ( constraint.value != null && !"".equals( constraint.value ) ) {
+                labelWidget.setText( constraint.value );
+            } else {
+                labelWidget.setText( constants.Value() );
+            }
+
+            panel.add( labelWidget );
+
+            labelWidget.addClickListener( new ClickListener() {
+                public void onClick(Widget arg0) {
+                    //                panel.clear();
+                    //                panel.add( getWidget() );
+                    showPopup();
+                }
+            } );
+
+            initWidget( panel );
+        }
+    }
+
+    private void showPopup() {
+        final PopupPanel popup = new PopupPanel();
+        HorizontalPanel horizontalPanel = new HorizontalPanel();
+
+        popup.setPopupPosition( this.getAbsoluteLeft(),
+                                this.getAbsoluteTop() );
+
+        okButton.addClickListener( new ClickListener() {
+            public void onClick(Widget arg0) {
+
+                if ( !isValueEmpty( constraint.value ) ) {
+                    labelWidget.setText( constraint.value );
+
+                    //                valueChanged();
+                    panel.clear();
+                    panel.add( labelWidget );
+                    popup.hide();
+                }
+            }
+        } );
+
+        Widget w = getEditorWidget();
+
+        horizontalPanel.add( w );
+        horizontalPanel.add( okButton );
+
+        popup.add( horizontalPanel );
+
+        popup.show();
+
+    }
+
+    public Widget getEditorWidget() {
+
+        //use a drop down if we have a fixed list
+        if ( this.dropDownData != null ) {
+            ListBox box = ConstraintValueEditor.enumDropDown( constraint.value,
+                                                              valueChanged,
+                                                              this.dropDownData );
+
+            box.setVisibleItemCount( 6 );
+
+            return box;
+
+        } else if ( SuggestionCompletionEngine.TYPE_DATE.equals( this.fieldType ) ) {
+
+            DatePickerLabel datePicker = new DatePickerLabel( constraint.value );
+
+            // Set the default time
+            constraint.value = datePicker.getDateString();
+
+            datePicker.addValueChanged( valueChanged );
+
+            return datePicker;
+
+        } else {
+
+            final TextBox box = ConstraintValueEditor.boundTextBox( constraint );
+
+            box.addKeyboardListener( new KeyboardListener() {
+
+                public void onKeyDown(Widget arg0,
+                                      char arg1,
+                                      int arg2) {
+
+                }
+
+                public void onKeyPress(Widget w,
+                                       char c,
+                                       int i) {
+                    if ( numericValue && Character.isLetter( c ) ) {
+                        ((TextBox) w).cancelKey();
+                    }
+                }
+
+                public void onKeyUp(Widget arg0,
+                                    char c,
+                                    int arg2) {
+                    if ( '\r' == c || '\n' == c ) {
+                        valueChanged.valueChanged( box.getText() );
+                    } else {
+                        constraint.value = box.getText();
+                    }
+                }
+
+            } );
+
+            box.setTitle( constants.LiteralValueTip() );
+            return box;
+        }
+    }
+
+    private boolean isValueEmpty(String s) {
+        if ( s == null || "".equals( s.trim() ) ) {
+            ErrorPopup.showMessage( constants.ValueCanNotBeEmpty() );
+            return true;
+        } else {
+            return false;
+        }
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QueryWidget.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QueryWidget.java	2010-03-12 04:00:47 UTC (rev 32049)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QueryWidget.java	2010-03-12 06:14:31 UTC (rev 32050)
@@ -1,12 +1,15 @@
 package org.drools.guvnor.client.rulelist;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.drools.guvnor.client.common.ErrorPopup;
 import org.drools.guvnor.client.common.FormStyleLayout;
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.SmallLabel;
+import org.drools.guvnor.client.explorer.Preferences;
 import org.drools.guvnor.client.rpc.MetaDataQuery;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.messages.Constants;
@@ -16,183 +19,223 @@
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.*;
 import com.google.gwt.core.client.GWT;
+import com.gwtext.client.util.Format;
 import com.gwtext.client.widgets.Panel;
 import com.gwtext.client.widgets.form.DateField;
 
 public class QueryWidget extends Composite {
 
-	private VerticalPanel layout;
-	private EditItemEvent openItem;
-    private Constants constants = ((Constants) GWT.create(Constants.class));
+    private VerticalPanel layout;
+    private EditItemEvent openItem;
+    private Constants     constants = ((Constants) GWT.create( Constants.class ));
 
     public QueryWidget(EditItemEvent openItem) {
-		layout = new VerticalPanel();
-		this.openItem = openItem;
-		doQuickFind();
-		doTextSearch();
-		doMetaSearch();
+        layout = new VerticalPanel();
+        this.openItem = openItem;
+        doQuickFind();
+        doTextSearch();
+        doMetaSearch();
 
-		layout.setWidth("100%");
+        layout.setWidth( "100%" );
 
+        initWidget( layout );
 
+        setWidth( "100%" );
 
-		initWidget(layout);
+    }
 
-		setWidth("100%");
+    private void doMetaSearch() {
+        Panel p = new Panel();
+        p.setCollapsible( true );
+        p.setTitle( constants.AttributeSearch() );
 
-	}
+        final Map<String, MetaDataQuery> atts = new HashMap<String, MetaDataQuery>() {
+            {
+                put( constants.CreatedBy(),
+                     new MetaDataQuery( "drools:creator" ) ); //NON-NLS
+                put( constants.Format1(),
+                     new MetaDataQuery( "drools:format" ) ); //NON-NLS
+                put( constants.Subject(),
+                     new MetaDataQuery( "drools:subject" ) ); //NON-NLS
+                put( constants.Type1(),
+                     new MetaDataQuery( "drools:type" ) ); //NON-NLS
+                put( constants.ExternalLink(),
+                     new MetaDataQuery( "drools:relation" ) ); //NON-NLS
+                put( constants.Source(),
+                     new MetaDataQuery( "drools:source" ) ); //NON-NLS
+                put( constants.Description1(),
+                     new MetaDataQuery( "drools:description" ) ); //NON-NLS
+                put( constants.LastModifiedBy(),
+                     new MetaDataQuery( "drools:lastContributor" ) ); //NON-NLS
+                put( constants.CheckinComment(),
+                     new MetaDataQuery( "drools:checkinComment" ) ); //NON-NLS
+            }
+        };
 
-	private void doMetaSearch() {
-		Panel p = new Panel();
-		p.setCollapsible(true);
-		p.setTitle(constants.AttributeSearch());
+        FormStyleLayout fm = new FormStyleLayout();
+        for ( Iterator iterator = atts.keySet().iterator(); iterator.hasNext(); ) {
+            String fieldName = (String) iterator.next();
+            final MetaDataQuery q = (MetaDataQuery) atts.get( fieldName );
+            final TextBox box = new TextBox();
+            box.setTitle( constants.WildCardsSearchTip() );
+            fm.addAttribute( fieldName + ":",
+                             box );
+            box.addChangeListener( new ChangeListener() {
+                public void onChange(Widget w) {
+                    q.valueList = box.getText();
+                }
+            } );
+        }
 
-		final Map<String, MetaDataQuery> atts = new HashMap<String, MetaDataQuery>() {
-			{
-				put(constants.CreatedBy(), new MetaDataQuery("drools:creator")); //NON-NLS
-				put(constants.Format1(), new MetaDataQuery("drools:format"));    //NON-NLS
-				put(constants.Subject(), new MetaDataQuery("drools:subject"));   //NON-NLS
-				put(constants.Type1(), new MetaDataQuery("drools:type"));        //NON-NLS
-				put(constants.ExternalLink(), new MetaDataQuery("drools:relation"));  //NON-NLS
-				put(constants.Source(), new MetaDataQuery("drools:source"));          //NON-NLS
-				put(constants.Description1(), new MetaDataQuery("drools:description"));   //NON-NLS
-				put(constants.LastModifiedBy(), new MetaDataQuery("drools:lastContributor"));   //NON-NLS
-				put(constants.CheckinComment(), new MetaDataQuery("drools:checkinComment"));  //NON-NLS
-			}
-		};
+        HorizontalPanel created = new HorizontalPanel();
+        created.add( new SmallLabel( constants.AfterColon() ) );
+        final DatePickerTextBox createdAfter = new DatePickerTextBox( "" );
+        created.add( createdAfter );
 
+        created.add( new SmallLabel( "&nbsp;" ) ); //NON-NLS
 
-		FormStyleLayout fm = new FormStyleLayout();
-		for (Iterator iterator = atts.keySet().iterator(); iterator.hasNext();) {
-			String fieldName = (String) iterator.next();
-			final MetaDataQuery q = (MetaDataQuery) atts.get(fieldName);
-			final TextBox box = new TextBox();
-			box.setTitle(constants.WildCardsSearchTip());
-			fm.addAttribute(fieldName + ":", box);
-			box.addChangeListener(new ChangeListener() {
-				public void onChange(Widget w) {
-					q.valueList = box.getText();
-				}
-			});
-		}
+        created.add( new SmallLabel( constants.BeforeColon() ) );
+        final DatePickerTextBox createdBefore = new DatePickerTextBox( "" );
+        created.add( createdBefore );
 
-		HorizontalPanel created = new HorizontalPanel();
-		created.add(new SmallLabel(constants.AfterColon()));
-		final DatePickerTextBox createdAfter = new DatePickerTextBox( "" );
-		created.add(createdAfter);
-		
-		created.add(new SmallLabel("&nbsp;"));      //NON-NLS
+        fm.addAttribute( constants.DateCreated1(),
+                         created );
 
-		created.add(new SmallLabel(constants.BeforeColon()));
-		final DatePickerTextBox createdBefore = new DatePickerTextBox( "" );
-		created.add(createdBefore);
+        HorizontalPanel lastMod = new HorizontalPanel();
+        lastMod.add( new SmallLabel( constants.AfterColon() ) );
+        final DatePickerTextBox lastModAfter = new DatePickerTextBox( "" );
+        lastMod.add( lastModAfter );
 
-		fm.addAttribute(constants.DateCreated1(), created);
+        lastMod.add( new SmallLabel( "&nbsp;" ) ); //NON-NLS
 
+        lastMod.add( new SmallLabel( constants.BeforeColon() ) );
+        final DatePickerTextBox lastModBefore = new DatePickerTextBox( "" );
+        lastMod.add( lastModBefore );
 
+        fm.addAttribute( constants.LastModified1(),
+                         lastMod );
 
-		HorizontalPanel lastMod = new HorizontalPanel();
-		lastMod.add(new SmallLabel(constants.AfterColon()));
-		final DatePickerTextBox lastModAfter = new DatePickerTextBox( "" );
-		lastMod.add(lastModAfter);
+        final SimplePanel resultsP = new SimplePanel();
+        Button search = new Button( constants.Search() );
+        fm.addAttribute( "",
+                         search );
+        search.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                resultsP.clear();
+                AssetItemGrid grid = new AssetItemGrid( openItem,
+                                                        "searchresults",
+                                                        new AssetItemGridDataLoader() { //NON-NLS
+                                                            public void loadData(int startRow,
+                                                                                 int numberOfRows,
+                                                                                 GenericCallback cb) {
+                                                                MetaDataQuery[] mdq = new MetaDataQuery[atts.size()];
+                                                                int i = 0;
+                                                                for ( Iterator iterator = atts.keySet().iterator(); iterator.hasNext(); ) {
+                                                                    String name = (String) iterator.next();
+                                                                    mdq[i] = (MetaDataQuery) atts.get( name );
+                                                                    i++;
+                                                                }
+                                                                try {
+                                                                    RepositoryServiceFactory.getService().queryMetaData( mdq,
+                                                                                                                         getDate( createdAfter ),
+                                                                                                                         getDate( createdBefore ),
+                                                                                                                         getDate( lastModAfter ),
+                                                                                                                         getDate( lastModBefore ),
+                                                                                                                         false,
+                                                                                                                         startRow,
+                                                                                                                         numberOfRows,
+                                                                                                                         cb );
+                                                                } catch ( IllegalArgumentException e ) {
+                                                                    ErrorPopup.showMessage( Format.format( constants.BadDateFormatPleaseTryAgainTryTheFormatOf0(),
+                                                                                                           Preferences.getStringPref( "drools.dateformat" ) ) );
+                                                                }
+                                                            }
 
-		lastMod.add(new SmallLabel("&nbsp;"));   //NON-NLS
+                                                            private Date getDate(final DatePickerTextBox datePicker) {
+                                                                try {
+                                                                    return datePicker.getDate();
+                                                                } catch ( IllegalArgumentException e ) {
+                                                                    datePicker.clear();
+                                                                    throw e;
+                                                                }
+                                                            }
+                                                        } );
+                resultsP.add( grid );
+            }
+        } );
+        fm.addRow( resultsP );
+        p.add( fm );
+        p.setCollapsed( true );
+        layout.add( p );
+    }
 
-		lastMod.add(new SmallLabel(constants.BeforeColon()));
-		final DatePickerTextBox lastModBefore = new DatePickerTextBox( "" );
-		lastMod.add(lastModBefore);
+    private void doQuickFind() {
+        Panel p = new Panel();
+        p.setCollapsible( true );
+        p.setTitle( constants.NameSearch() );
+        p.add( new QuickFindWidget( openItem ) );
 
-		fm.addAttribute(constants.LastModified1(), lastMod);
+        p.setCollapsed( false );
 
-		final SimplePanel resultsP = new SimplePanel();
-		Button search = new Button(constants.Search());
-		fm.addAttribute("", search);
-		search.addClickListener(new ClickListener() {
-			public void onClick(Widget w) {
-				resultsP.clear();
-				AssetItemGrid grid = new AssetItemGrid(openItem, "searchresults", new AssetItemGridDataLoader() { //NON-NLS
-					public void loadData(int startRow, int numberOfRows,
-							GenericCallback cb) {
-						MetaDataQuery[] mdq = new MetaDataQuery[atts.size()];
-						int i = 0;
-						for (Iterator iterator = atts.keySet().iterator(); iterator
-								.hasNext();) {
-							String name = (String) iterator.next();
-							mdq[i] = (MetaDataQuery) atts.get(name);
-							i++;
-						}
-						RepositoryServiceFactory.getService().queryMetaData(mdq, createdAfter.getDate(), createdBefore.getDate(),
-								lastModAfter.getDate(), lastModBefore.getDate(), false, startRow, numberOfRows, cb);
-					}
-				});
-				resultsP.add(grid);
-			}
-		});
-		fm.addRow(resultsP);
-		p.add(fm);
-		p.setCollapsed(true);
-		layout.add(p);
-	}
+        layout.add( p );
+    }
 
-	private void doQuickFind() {
-		Panel p = new Panel();
-		p.setCollapsible(true);
-		p.setTitle(constants.NameSearch());
-		p.add(new QuickFindWidget(openItem));
+    private void doTextSearch() {
+        Panel p = new Panel();
+        p.setCollapsible( true );
+        p.setTitle( constants.TextSearch() );
 
-		p.setCollapsed(false);
+        p.setCollapsed( true );
 
-		layout.add(p);
-	}
+        FormStyleLayout ts = new FormStyleLayout();
+        final TextBox tx = new TextBox();
+        ts.addAttribute( constants.SearchFor(),
+                         tx );
+        Button go = new Button();
+        go.setText( constants.Search1() );
+        ts.addAttribute( "",
+                         go );
+        ts.setWidth( "100%" );
+        p.add( ts );
 
-	private void doTextSearch() {
-		Panel p = new Panel();
-		p.setCollapsible(true);
-		p.setTitle(constants.TextSearch());
-
-		p.setCollapsed(true);
-
-		FormStyleLayout ts = new FormStyleLayout();
-		final TextBox tx = new TextBox();
-		ts.addAttribute(constants.SearchFor(), tx);
-		Button go = new Button();
-		go.setText(constants.Search1());
-		ts.addAttribute("", go);
-		ts.setWidth("100%");
-		p.add(ts);
-
-
-		final SimplePanel resultsP = new SimplePanel();
+        final SimplePanel resultsP = new SimplePanel();
         final ClickListener cl = new ClickListener() {
-			public void onClick(Widget w) {
-				if (tx.getText().equals("")) {
-					Window.alert(constants.PleaseEnterSomeSearchText());
-					return;
-				}
-				resultsP.clear();
-				AssetItemGrid grid = new AssetItemGrid(openItem, "searchresults", new AssetItemGridDataLoader() { //NON-NLS
-					public void loadData(int startRow, int numberOfRows,
-							GenericCallback cb) {
-						RepositoryServiceFactory.getService().queryFullText(tx.getText(), false, startRow, numberOfRows, cb);
-					}
-				});
-				resultsP.add(grid);
-			}
-		};
+            public void onClick(Widget w) {
+                if ( tx.getText().equals( "" ) ) {
+                    Window.alert( constants.PleaseEnterSomeSearchText() );
+                    return;
+                }
+                resultsP.clear();
+                AssetItemGrid grid = new AssetItemGrid( openItem,
+                                                        "searchresults",
+                                                        new AssetItemGridDataLoader() { //NON-NLS
+                                                            public void loadData(int startRow,
+                                                                                 int numberOfRows,
+                                                                                 GenericCallback cb) {
+                                                                RepositoryServiceFactory.getService().queryFullText( tx.getText(),
+                                                                                                                     false,
+                                                                                                                     startRow,
+                                                                                                                     numberOfRows,
+                                                                                                                     cb );
+                                                            }
+                                                        } );
+                resultsP.add( grid );
+            }
+        };
 
-		go.addClickListener(cl);
-        tx.addKeyboardListener(new KeyboardListenerAdapter() {
+        go.addClickListener( cl );
+        tx.addKeyboardListener( new KeyboardListenerAdapter() {
             @Override
-            public void onKeyUp(Widget sender, char keyCode, int modifiers) {
-                if (keyCode == KeyboardListener.KEY_ENTER) {
-                    cl.onClick(sender);
+            public void onKeyUp(Widget sender,
+                                char keyCode,
+                                int modifiers) {
+                if ( keyCode == KeyboardListener.KEY_ENTER ) {
+                    cl.onClick( sender );
                 }
             }
-        });
-		ts.addRow(resultsP);
-		layout.add(p);
-	}
+        } );
+        ts.addRow( resultsP );
+        layout.add( p );
+    }
 
-
-
-}
+}
\ No newline at end of file



More information about the jboss-svn-commits mailing list