Display the text required for filtering on custom fields in the TKO UI.

Signed-off-by: Steve Howard <[email protected]>

--- autotest/frontend/client/src/autotest/common/table/DataTable.java   
2010-01-11 11:25:45.000000000 -0800
+++ autotest/frontend/client/src/autotest/common/table/DataTable.java   
2010-01-12 13:44:26.000000000 -0800
@@ -81,7 +81,8 @@
         
         table.setCellSpacing(0);
         table.setCellPadding(0);
-        table.setStyleName("data-table");
+        table.setStylePrimaryName("data-table");
+        table.addStyleDependentName("outlined");
 
         for (int i = 0; i < columns.length; i++) {
             table.setText(0, i, columns[i][1]);
--- autotest/frontend/client/src/autotest/public/afeclient.css  2010-01-12 
13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/public/afeclient.css  2010-01-12 
13:44:26.000000000 -0800
@@ -8,10 +8,13 @@
 }
 
 .data-table {
-  border: 2px solid #A0A0A0;
   empty-cells: show;
 }
 
+.data-table-outlined {
+  border: 2px solid #A0A0A0;
+}
+
 .data-table td {
   margin: 0;
   padding: 0.2em 0.4em;
--- autotest/frontend/client/src/autotest/tko/AttributeField.java       
2010-01-12 13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/tko/AttributeField.java       
2010-01-12 13:44:26.000000000 -0800
@@ -3,6 +3,11 @@
 public abstract class AttributeField extends ParameterizedField {
     @Override
     public String getSqlCondition(String value) {
-        return getSimpleSqlCondition(getQuotedSqlName() + ".value", value);
+        return getSimpleSqlCondition(getFilteringName(), value);
+    }
+
+    @Override
+    public String getFilteringName() {
+        return getQuotedSqlName() + ".value";
     }
 }
--- autotest/frontend/client/src/autotest/tko/LabelField.java   2010-01-12 
13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/tko/LabelField.java   2010-01-12 
13:44:26.000000000 -0800
@@ -5,10 +5,15 @@
 public abstract class LabelField extends ParameterizedField {
     @Override
     public String getSqlCondition(String value) {
-        String condition = "IS NOT NULL";
+        String condition = " IS NOT NULL";
         if (value.equals(Utils.JSON_NULL)) {
-            condition = "IS NULL";
+            condition = " IS NULL";
         }
-        return getQuotedSqlName() + ".id " + condition;
+        return getFilteringName() + condition;
+    }
+
+    @Override
+    public String getFilteringName() {
+        return getQuotedSqlName() + ".id";
     }
 }
--- autotest/frontend/client/src/autotest/tko/ParameterizedField.java   
2010-01-12 13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/tko/ParameterizedField.java   
2010-01-12 13:44:26.000000000 -0800
@@ -127,4 +127,12 @@
     public Object getIdentifier() {
         return new FieldIdentifier(this);
     }
+    
+    /**
+     * Get the exact field to use in a SQL WHERE clause to filter on this 
field.
+     * 
+     * This is a necessary artifact of the way we directly expose SQL WHERE 
clauses to the user.  It
+     * will hopefully be possible to get rid of this in the future if that 
changes.
+     */
+    public abstract String getFilteringName();
 }
--- 
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListDisplay.java    
    2010-01-12 13:44:26.000000000 -0800
+++ 
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListDisplay.java    
    2010-01-12 13:44:26.000000000 -0800
@@ -7,23 +7,25 @@
 
 import com.google.gwt.event.dom.client.HasClickHandlers;
 import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.HasText;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Panel;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
 
 public class ParameterizedFieldListDisplay extends Composite implements 
Display {
-    private static class FieldWidget extends Composite implements 
Display.FieldWidget {
+    private static class FieldWidget implements Display.FieldWidget {
+        private String label;
         private SimpleHyperlink deleteLink = new SimpleHyperlink("[X]");
 
         public FieldWidget(String label) {
-            Panel panel = new HorizontalPanel();
-            panel.add(new Label(label));
-            panel.add(deleteLink);
-            initWidget(panel);
+            this.label = label;
+        }
+
+        public String getLabel() {
+            return label;
         }
 
         @Override
@@ -31,24 +33,36 @@
             return deleteLink;
         }
     }
-    
+
     private ExtendedListBox typeSelect = new ExtendedListBox();
     private TextBox valueInput = new TextBox();
     private SimpleHyperlink addLink = new SimpleHyperlink("Add");
-    private Panel fieldListPanel = new VerticalPanel();
-    
+    private FlexTable fieldTable = new FlexTable();
+
     public ParameterizedFieldListDisplay() {
         Panel addFieldPanel = new HorizontalPanel();
         addFieldPanel.add(new Label("Add custom field:"));
         addFieldPanel.add(typeSelect);
         addFieldPanel.add(valueInput);
         addFieldPanel.add(addLink);
-        
+
+        fieldTable.setText(0, 0, "Field name");
+        fieldTable.setText(0, 1, "Filtering name");
+        fieldTable.setCellSpacing(0);
+        fieldTable.setStylePrimaryName("data-table");
+        fieldTable.getRowFormatter().setStyleName(0, "data-row-header");
+        setFieldTableVisible();
+
         Panel container = new VerticalPanel();
-        container.add(fieldListPanel);
+        container.add(fieldTable);
         container.add(addFieldPanel);
         initWidget(container);
     }
+    
+    private void setFieldTableVisible() {
+        boolean visible = (fieldTable.getRowCount() > 1);
+        fieldTable.setVisible(visible);
+    }
 
     @Override
     public HasClickHandlers getAddLink() {
@@ -66,14 +80,27 @@
     }
     
     @Override
-    public Display.FieldWidget addFieldWidget(String name) {
+    public Display.FieldWidget addFieldWidget(String name, String 
filteringName) {
+        int row = fieldTable.getRowCount();
         FieldWidget widget = new FieldWidget(name);
-        fieldListPanel.add(widget);
+        fieldTable.setText(row, 0, name);
+        fieldTable.setText(row, 1, filteringName);
+        fieldTable.setWidget(row, 2, widget.deleteLink);
+        setFieldTableVisible();
         return widget;
     }
 
     @Override
     public void removeFieldWidget(Display.FieldWidget widget) {
-        fieldListPanel.remove((Widget) widget);
+        FieldWidget fieldWidget = (FieldWidget) widget; 
+        for (int row = 1; row < fieldTable.getRowCount(); row++) {
+            if (fieldTable.getText(row, 0).equals(fieldWidget.getLabel())) {
+                fieldTable.removeRow(row);
+                setFieldTableVisible();
+                return;
+            }
+        }
+        
+        throw new IllegalArgumentException("Unable to find field widget " + 
widget);
     }
 }
--- 
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListPresenter.java  
    2010-01-12 13:44:26.000000000 -0800
+++ 
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListPresenter.java  
    2010-01-12 13:44:26.000000000 -0800
@@ -25,7 +25,7 @@
         public SimplifiedList getTypeSelect();
         public HasText getValueInput();
         public HasClickHandlers getAddLink();
-        public FieldWidget addFieldWidget(String name); 
+        public FieldWidget addFieldWidget(String name, String filteringName); 
         public void removeFieldWidget(FieldWidget widget);
     }
     
@@ -89,7 +89,8 @@
     private void addField(final ParameterizedField field) {
         headerFields.add(field);
 
-        Display.FieldWidget fieldWidget = 
display.addFieldWidget(field.getName());
+        Display.FieldWidget fieldWidget = 
display.addFieldWidget(field.getName(), 
+                                                                 
field.getFilteringName());
         fieldInputMap.put(field, fieldWidget);
         fieldWidget.getDeleteLink().addClickHandler(new ClickHandler() {
             @Override
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to