]> source.dussan.org Git - vaadin-framework.git/commitdiff
draft of scroll table and some other enhancements
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 12 Jun 2007 14:10:14 +0000 (14:10 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 12 Jun 2007 14:10:14 +0000 (14:10 +0000)
svn changeset:1685/svn branch:trunk

16 files changed:
src/com/itmill/toolkit/terminal/PaintTarget.java
src/com/itmill/toolkit/terminal/gwt/client/Client.java
src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java
src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/ui/Label.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/client/ui/UnknownComponent.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/ui/Window.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/server/JSONPaintTarget.java
src/com/itmill/toolkit/terminal/web/AjaxJsonPaintTarget.java
src/com/itmill/toolkit/terminal/web/AjaxXmlPaintTarget.java
src/com/itmill/toolkit/terminal/web/WebPaintTarget.java
src/com/itmill/toolkit/ui/AbstractComponent.java
src/com/itmill/toolkit/ui/Table.java

index e63406c38cc448c5a03bdf7ed3b5690a17f90860..9b42ef893224ad0a1a39301947607351453bfa82 100644 (file)
@@ -305,4 +305,6 @@ public interface PaintTarget {
         * @since 3.1
         */
        void addCharacterData(String text) throws PaintException;
+
+       public void addAttribute(String string, Object[] keys);
 }
index 038d66e1dd320d507606d102b2f1c79461d36f6b..626893a6cc232aee39b3855e3ea54537d3709a99 100755 (executable)
@@ -104,6 +104,7 @@ public class Client implements EntryPoint {
                Date start = new Date();
                
                console.log(response.getText().substring(3) + "}");
+               System.out.println(response.getText().substring(3) + "}");
                JSONValue json = JSONParser
                .parse(response.getText().substring(3) + "}");
                // Process changes
@@ -130,7 +131,7 @@ public class Client implements EntryPoint {
                                                                + ", but there is no such paintable ("
                                                                + uidl.getId() + ") registered yet.");
                                        Widget window = createWidgetFromUIDL(uidl);
-                                       // We should also handle other windows 
+                                       // TODO We should also handle other windows 
                                        RootPanel.get("itmtk-ajax-window").add(window);
                                }
 
index eb5ed6e852fb8c35468e5300c05df1ea8633d53d..f80b3bd00adbd64071d8c318b504b7132755375e 100644 (file)
@@ -8,6 +8,7 @@ import com.itmill.toolkit.terminal.gwt.client.ui.TkLabel;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkOrderedLayout;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkPanel;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkSelect;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkTable;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkTabsheet;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkTextField;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkTree;
@@ -40,6 +41,8 @@ public class DefaultWidgetFactory implements WidgetFactory {
                        return new TkEmbedded();
                if ("textfield".equals(tag))
                        return new TkTextField();
+               if ("table".equals(tag))
+                       return new TkTable();
 
                return new TkUnknownComponent();
        }
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Button.java
deleted file mode 100644 (file)
index 342e751..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Widget;
-import com.itmill.toolkit.terminal.gwt.client.Client;
-import com.itmill.toolkit.terminal.gwt.client.Paintable;
-import com.itmill.toolkit.terminal.gwt.client.UIDL;
-
-public class Button extends com.google.gwt.user.client.ui.Button implements
-               Paintable, ClickListener {
-
-       String id;
-
-       Client client;
-
-       public Button() {
-               addClickListener(this);
-       }
-
-       public void updateFromUIDL(UIDL uidl, Client client) {
-               this.client = client;
-               id = uidl.getId();
-               setText(uidl.getStringAttribute("caption"));
-       }
-
-       public void onClick(Widget sender) {
-               if (id == null || client == null)
-                       return;
-               client.updateVariable(id, "state", true, true);
-       }
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/GridLayout.java
deleted file mode 100644 (file)
index e3c5604..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-import java.util.Iterator;
-
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.Widget;
-import com.itmill.toolkit.terminal.gwt.client.Client;
-import com.itmill.toolkit.terminal.gwt.client.Paintable;
-import com.itmill.toolkit.terminal.gwt.client.UIDL;
-
-public class GridLayout extends FlexTable implements Paintable {
-
-       public void updateFromUIDL(UIDL uidl, Client client) {
-               clear();
-               if (uidl.hasAttribute("caption")) setTitle(uidl.getStringAttribute("caption"));
-               int row = 0, column = 0;
-               for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
-                       UIDL r = (UIDL) i.next();
-                       if ("gr".equals(r.getTag())) {
-                               row++;
-                               column = 0;
-                               for (Iterator j = r.getChildIterator(); j.hasNext();) {
-                                       UIDL c = (UIDL) j.next();
-                                       if ("gc".equals(c.getTag())) {
-                                               column++;
-                                               if(c.hasAttribute("w")) {
-                                                       int w = c.getIntAttribute("w");
-                                                       ((FlexCellFormatter)getCellFormatter()).setColSpan(row,column, w);
-                                               }
-                                               UIDL u = c.getChildUIDL(0);                                             
-                                               Widget child = client.createWidgetFromUIDL(u);
-                                               if (child != null)
-                                                       setWidget(row, column, child);
-                                       }
-                               }
-                       }
-               }
-       }
-       
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Label.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Label.java
deleted file mode 100644 (file)
index 3be8e0b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.itmill.toolkit.terminal.gwt.client.Client;
-import com.itmill.toolkit.terminal.gwt.client.Paintable;
-import com.itmill.toolkit.terminal.gwt.client.UIDL;
-
-public class Label extends Composite implements Paintable{
-       
-       com.google.gwt.user.client.ui.Label caption = new com.google.gwt.user.client.ui.Label();;
-       HTML content = new HTML();
-       
-       public Label() {
-               VerticalPanel panel = new VerticalPanel();
-               panel.add(caption);
-               panel.add(content);
-               initWidget(panel);
-               setStyleName("itmtk-label");
-               caption.setStyleName("itmtk-label-caption");
-               content.setStyleName("itmtk-label-content");
-       }
-       
-       public void updateFromUIDL(UIDL uidl, Client client) {
-               try{
-                       UIDL child = uidl.getChildUIDL(0).getChildUIDL(0);
-                       if(child.hasAttribute("xmlns") && 
-                                       child.getStringAttribute("xmlns").
-                                       equals("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")) {
-                               setContent(child.getChildString(0));
-                       } else {
-                               setContent("Terminals Label compoent can't handle this content type.");
-                       }
-               } catch (Exception e) {
-                       setContent(uidl.getChildString(0));
-               }
-               if(uidl.hasAttribute("caption"))
-                       setCaption(uidl.getStringAttribute("caption"));
-               else
-                       caption.setVisible(false);
-       }
-       
-       public void setContent(String c) {
-               content.setHTML(c);
-       }
-       public void setCaption(String c) {
-               caption.setText(c);
-       }
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/OrderedLayout.java
deleted file mode 100644 (file)
index b0a5aec..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-import java.util.Iterator;
-
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.itmill.toolkit.terminal.gwt.client.Client;
-import com.itmill.toolkit.terminal.gwt.client.Paintable;
-import com.itmill.toolkit.terminal.gwt.client.UIDL;
-
-public class OrderedLayout extends VerticalPanel implements Paintable {
-
-       public void updateFromUIDL(UIDL uidl, Client client) {
-               clear();
-               if (uidl.hasAttribute("caption")) setTitle(uidl.getStringAttribute("caption")); 
-               for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
-                       UIDL uidlForChild = (UIDL)i.next();
-                       Widget child = client.createWidgetFromUIDL(uidlForChild);
-                       add(child);
-               }
-       }
-       
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java
new file mode 100644 (file)
index 0000000..9c6b901
--- /dev/null
@@ -0,0 +1,227 @@
+package com.itmill.toolkit.terminal.gwt.client.ui;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.itmill.toolkit.terminal.gwt.client.Client;
+import com.itmill.toolkit.terminal.gwt.client.Paintable;
+import com.itmill.toolkit.terminal.gwt.client.UIDL;
+
+public class TkTable extends Composite implements Paintable {
+       
+       private int firstRendered = 0;
+       private int lastRendered = 0;
+       private int firstRowInViewPort = 0;
+       private int pageLength = 15;
+       
+       private int rowHeaders = 0;
+       
+       private Map columnOrder = new HashMap();
+       
+       private Client client;
+       private String id;
+       private boolean immediate;
+       
+       private FlexTable tHead = new FlexTable();
+       private FlexTable tBody = new FlexTable();
+       
+       private ScrollPanel bodyContainer = new ScrollPanel();
+       private VerticalPanel bodyContent = new VerticalPanel();
+       
+       private ScrollPanel headerContainer = new ScrollPanel();
+       
+       private HTML preSpacer = new HTML();
+       private HTML postSpacer = new HTML();
+       
+       private boolean colWidthsInitialized = false;
+       private int totalRows;
+       private HashMap columnWidths = new HashMap();
+       
+       public TkTable() {
+               headerContainer.add(tHead);
+               DOM.setStyleAttribute(headerContainer.getElement(), "overflow", "hidden");
+               
+               bodyContent.add(preSpacer);
+               bodyContent.add(tBody);
+               bodyContent.add(postSpacer);
+               //TODO remove debug color
+               DOM.setStyleAttribute(postSpacer.getElement(), "background", "red");
+               bodyContainer.add(bodyContent);
+               
+               VerticalPanel panel = new VerticalPanel();
+               panel.add(headerContainer);
+               panel.add(bodyContainer);
+               
+               initWidget(panel);
+       }
+
+       public void updateFromUIDL(UIDL uidl, Client client) {
+               this.client = client;
+               this.id = uidl.getStringAttribute("id");
+               this.immediate = uidl.getBooleanAttribute("immediate");
+               this.totalRows = uidl.getIntAttribute("totalrows");
+               
+               UIDL columnInfo = null;
+               UIDL rowData = null;
+               for(Iterator it = uidl.getChildIterator(); it.hasNext();) {
+                       UIDL c = (UIDL) it.next();
+                       if(c.getTag().equals("cols"))
+                               columnInfo = c;
+                       else if(c.getTag().equals("rows"))
+                               rowData = c;
+                       else if(c.getTag().equals("actions"))
+                               updateActionMap(c);
+                       else if(c.getTag().equals("visiblecolumns"))
+                               ;
+               }
+               updateHeader(columnInfo);
+               updateBody(rowData);
+               
+               if(!colWidthsInitialized) {
+                       DeferredCommand.addCommand(new Command() {
+                               public void execute() {
+                                       initSize();
+                                       updateSpacers();
+                               }
+                       });
+               }
+               
+       }
+       
+       private void updateActionMap(UIDL c) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       private void updateHeader(UIDL uidl) {
+               if(uidl == null)
+                       return;
+               for(Iterator it = uidl.getChildIterator();it.hasNext();) {
+                       UIDL col = (UIDL) it.next();
+                       String cid = col.getStringAttribute("cid");
+                       int colIndex = getColIndexByKey(cid);
+                       if(colIndex > -1)
+                               setHeaderText(colIndex, col.getStringAttribute("caption"));
+                       DOM.setElementProperty(tHead.getFlexCellFormatter().getElement(0, colIndex), "cid", cid);
+               }
+       }
+       
+       private void updateBody(UIDL uidl) {
+               if(uidl == null)
+                       return;
+               
+               Iterator it = uidl.getChildIterator();
+               UIDL row = (UIDL) it.next();
+               if(firstRendered == 0)
+                       firstRendered = row.getIntAttribute("key");
+               if(row.getIntAttribute("key") == lastRendered + 1) {
+                       while(it.hasNext())
+                               appendRow( (UIDL) it.next() );
+               }
+       }
+       
+       private void appendRow(UIDL uidl) {
+               lastRendered++;
+               updateRow(uidl, lastRendered);
+       }
+
+       private void updateRow(UIDL uidl, int rowIndex) {
+               int colIndex = 0;
+               for(Iterator it = uidl.getChildIterator(); it.hasNext();) {
+                       Object cell = it.next();
+                       if (cell instanceof String) {
+                               setCellContent(rowIndex, colIndex, (String) cell);
+                       } else {
+                               setCellContent(rowIndex, colIndex, (UIDL) cell);
+                       }
+                       colIndex++;
+               }
+               
+       }
+       
+       
+       private int getRowIndex(int rowKey) {
+               return rowKey - firstRendered;
+       }
+       
+       private int getColIndexByKey(String colKey) {
+               return Integer.parseInt(colKey) - 1;
+       }
+       
+       private String getColKeyByIndex(int index) {
+               return DOM.getElementProperty(tHead.getCellFormatter().getElement(0, index), "cid");
+       }
+
+       public void setHeaderText(int colIndex, String text) {
+               tHead.setText(0, colIndex, text);
+       }
+       
+       public void setCellContent(int rowId, int colId, UIDL cell) {
+               if(cell == null)
+                       return;
+               Widget cellContent = client.createWidgetFromUIDL(cell);
+               tBody.setWidget(rowId, colId, cellContent);
+       }
+       
+       public void setCellContent(int rowId, int colId, String text) {
+               tBody.setText(rowId, colId, text);
+       }
+       
+       /**
+        * Run when receices its initial content. Syncs headers and bodys
+        * "natural widths and saves the values.
+        */
+       private void initSize() {
+               int cols = tHead.getCellCount(0);
+               FlexCellFormatter hf = tHead.getFlexCellFormatter();
+               FlexCellFormatter bf = tBody.getFlexCellFormatter();
+               for (int i = 0; i < cols; i++) {
+                       Element hCell = hf.getElement(0, i);
+                       Element bCell = bf.getElement(1, i);
+                       int hw = DOM.getElementPropertyInt(hCell, "offsetWidth");
+                       int cw = DOM.getElementPropertyInt(bCell, "offsetWidth");
+                       setColWidth(i , hw > cw ? hw : cw);
+               }
+               
+               bodyContainer.setHeight(tBody.getOffsetHeight() + "px");
+               bodyContainer.setWidth(tBody.getOffsetWidth() + "px");
+               
+       }
+
+       private void setColWidth(int colIndex, int w) {
+               String cid = getColKeyByIndex(colIndex);
+               tHead.getCellFormatter().setWidth(0, colIndex, w + "px");
+               tBody.getCellFormatter().setWidth(0, colIndex, w + "px");
+               columnWidths.put(cid,new Integer(w));
+       }
+       
+       private int getColWidth(String colKey) {
+               return ( (Integer) this.columnWidths.get(colKey)).intValue();
+       }
+       
+       private void updateSpacers() {
+               int rowHeight = tBody.getOffsetHeight()/getRenderedRowCount();
+               int preSpacerHeight = (firstRendered - 1)*rowHeight;
+               int postSpacerHeight = (totalRows - lastRendered)*rowHeight;
+               preSpacer.setHeight(preSpacerHeight+"px");
+               postSpacer.setHeight(postSpacerHeight + "px");
+       }
+
+       private int getRenderedRowCount() {
+               return lastRendered-firstRendered;
+       }
+
+
+}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/UnknownComponent.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/UnknownComponent.java
deleted file mode 100644 (file)
index b5efa79..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Tree;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.itmill.toolkit.terminal.gwt.client.Client;
-import com.itmill.toolkit.terminal.gwt.client.Paintable;
-import com.itmill.toolkit.terminal.gwt.client.UIDL;
-
-public class UnknownComponent extends Composite implements Paintable{
-       
-       com.google.gwt.user.client.ui.Label caption = new com.google.gwt.user.client.ui.Label();;
-       Tree uidlTree = new Tree();
-       
-       public UnknownComponent() {
-               VerticalPanel panel = new VerticalPanel();
-               panel.add(caption);
-               panel.add(uidlTree);
-               initWidget(panel);
-               setStyleName("itmtk-unknown");
-               caption.setStyleName("itmtk-unknown-caption");
-       }
-       
-       public void updateFromUIDL(UIDL uidl, Client client) {
-               setCaption("Client faced an unknown component type. Unrendered UIDL:");
-               uidlTree.addItem(uidl.dir());
-       }
-       
-       public void setCaption(String c) {
-               caption.setText(c);
-       }
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Window.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Window.java
deleted file mode 100644 (file)
index ed49aa5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.itmill.toolkit.terminal.gwt.client.Client;
-import com.itmill.toolkit.terminal.gwt.client.Paintable;
-import com.itmill.toolkit.terminal.gwt.client.UIDL;
-
-public class Window extends FlowPanel implements Paintable {
-
-       String id;
-
-       public Window() {
-               super();
-       }
-       
-       public void updateFromUIDL(UIDL uidl, Client client) {
-
-               id = uidl.getId();
-               com.google.gwt.user.client.Window.setTitle(uidl.getStringAttribute("caption"));
-               UIDL child = uidl.getChildUIDL(0);
-               add(client.createWidgetFromUIDL(child));
-       }
-
-}
index eec686426d946fdaba213df4afa7fdb78370dde7..a1a62918e9f0d2585ec73846f311ddc74f5021d8 100644 (file)
@@ -157,4 +157,9 @@ public class JSONPaintTarget implements PaintTarget {
                }
        }
 
+       public void addAttribute(String string, Object[] keys) {
+               // TODO Auto-generated method stub
+               
+       }
+
 }
index 6c7b520f018c8851f158849c6e3713de72aa17af..4cc897201dd8f1e2ac72e8b65a72d48c788854cb 100644 (file)
@@ -454,6 +454,24 @@ public class AjaxJsonPaintTarget implements PaintTarget, AjaxPaintTarget {
                
        }
 
+       public void addAttribute(String name, Object[] values) {
+               // In case of null data output nothing:
+               if ((values == null) || (name == null))
+                       throw new NullPointerException(
+                                       "Parameters must be non-null strings");
+               StringBuffer buf = new StringBuffer();
+               buf.append("\""+name+"\":[");
+               for (int i = 0; i < values.length; i++) {
+                       if(i>0)
+                               buf.append(",");
+                       buf.append("\"");
+                       buf.append(escapeJSON(values[i].toString()));
+                       buf.append("\"");
+               }
+               buf.append("]");
+               tag.addAttribute(buf.toString());
+       }
+       
        /**
         * Adds a string type variable.
         * 
index 26dd13d9e21bb0d5bc0695bf91aa2a1d80b61f4c..dc175f731a5c64ff36f2e7691bb983a4382a3491 100644 (file)
@@ -595,4 +595,14 @@ public class AjaxXmlPaintTarget implements PaintTarget, AjaxPaintTarget {
                return preCachedResources;
        }
 
+       public void addAttribute(String string, String[] keys) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void addAttribute(String string, Object[] keys) {
+               // TODO Auto-generated method stub
+               
+       }
+
 }
index b17cfd24ba16539d33733a4bbce6c496bf767a85..3b8564a70354122883b816a927b75cfd95af68d6 100644 (file)
@@ -538,7 +538,7 @@ public class WebPaintTarget implements PaintTarget {
         * @throws PaintException
         *             if the paint operation failed.
         */
-       public void addVariable(VariableOwner owner, String name, String[] value)
+       public void addVariable(VariableOwner owner, String name, Object[] value)
                        throws PaintException {
                String code = variableMap.registerVariable(name, String[].class, value,
                                owner);
@@ -546,7 +546,7 @@ public class WebPaintTarget implements PaintTarget {
                addAttribute(UIDL_ARG_ID, code);
                addAttribute(UIDL_ARG_NAME, name);
                for (int i = 0; i < value.length; i++)
-                       addSection("ai", value[i]);
+                       addSection("ai", (String) value[i]);
                endTag("array");
        }
 
@@ -716,4 +716,19 @@ public class WebPaintTarget implements PaintTarget {
                addUIDL("<![CDATA[" + text + "]]>");
        }
 
+       public void addAttribute(String string, String[] keys) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void addAttribute(String string, Object[] keys) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void addVariable(VariableOwner owner, String name, String[] value) throws PaintException {
+               // TODO Auto-generated method stub
+               
+       }
+
 }
index 6c453d0a571de82030f23fbae97f3ce80f394033..6c2a04f170450a24643f9472483d3a7225a6fb65 100644 (file)
@@ -533,15 +533,13 @@ public abstract class AbstractComponent implements Component, MethodEventSource
 
                        // Only paint content of visible components.
                        if (isVisible()) {
-                               paintContent(target);
-
                                String desc = getDescription();
                                if (desc != null && description.length() > 0) {
-                                       target.startTag("description");
-                                       target.addUIDL(getDescription());
-                                       target.endTag("description");
+                                       target.addAttribute("description", getDescription());
                                }
 
+                               paintContent(target);
+
                                ErrorMessage error = getErrorMessage();
                                if (error != null)
                                        error.paint(target);
index 071fe84169c903695a4156135d2859a39518e5be..d90f6da39084ca846a277c6e4583ffd8916fcdb4 100644 (file)
@@ -28,6 +28,7 @@
 
 package com.itmill.toolkit.ui;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -1495,8 +1496,8 @@ public class Table extends Select implements Action.Container,
                                        target.addAttribute("caption",
                                                        (String) cells[CELL_HEADER][i]);
                        }
+                       target.addAttribute("key", Integer.parseInt(cells[CELL_KEY][i].toString()));
                        if (actionHandlers != null || isSelectable()) {
-                               target.addAttribute("key", (String) cells[CELL_KEY][i]);
                                if (isSelected(itemId) && keyIndex < selectedKeys.length) {
                                        target.addAttribute("selected", true);
                                        selectedKeys[keyIndex++] = (String) cells[CELL_KEY][i];
@@ -1505,7 +1506,7 @@ public class Table extends Select implements Action.Container,
 
                        // Actions
                        if (actionHandlers != null) {
-                               target.startTag("al");
+                               ArrayList keys = new ArrayList();
                                for (Iterator ahi = actionHandlers.iterator(); ahi.hasNext();) {
                                        Action[] aa = ((Action.Handler) ahi.next()).getActions(
                                                        itemId, this);
@@ -1513,10 +1514,10 @@ public class Table extends Select implements Action.Container,
                                                for (int ai = 0; ai < aa.length; ai++) {
                                                        String key = actionMapper.key(aa[ai]);
                                                        actionSet.add(aa[ai]);
-                                                       target.addSection("ak", key);
+                                                       keys.add(key);
                                                }
                                }
-                               target.endTag("al");
+                               target.addAttribute("al", keys.toArray());
                        }
 
                        // cells
@@ -1531,11 +1532,11 @@ public class Table extends Select implements Action.Container,
                                        Component c = (Component) cells[CELL_FIRSTCOL
                                                        + currentColumn][i];
                                        if (c == null)
-                                               target.addSection("label", "");
+                                               target.addText("");
                                        else
                                                c.paint(target);
                                } else
-                                       target.addSection("label", (String) cells[CELL_FIRSTCOL
+                                       target.addText((String) cells[CELL_FIRSTCOL
                                                        + currentColumn][i]);
                        }
 
@@ -1568,8 +1569,8 @@ public class Table extends Select implements Action.Container,
 
                // Actions
                if (!actionSet.isEmpty()) {
-                       target.startTag("actions");
                        target.addVariable(this, "action", "");
+                       target.startTag("actions");
                        for (Iterator it = actionSet.iterator(); it.hasNext();) {
                                Action a = (Action) it.next();
                                target.startTag("action");