aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/ui/Table.java
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2015-04-16 14:39:31 +0300
committerVaadin Code Review <review@vaadin.com>2015-04-20 07:26:13 +0000
commit4845b804fd09163c70cf7ecac9c26e91a6cb46c9 (patch)
tree531cc5578f4564b0a6b3e403067e137537099f99 /server/src/com/vaadin/ui/Table.java
parentbe90c6d21607d504cc559884c5f7df49289def30 (diff)
downloadvaadin-framework-4845b804fd09163c70cf7ecac9c26e91a6cb46c9.tar.gz
vaadin-framework-4845b804fd09163c70cf7ecac9c26e91a6cb46c9.zip
Declarative write support for Table (#16367)
Change-Id: I9caa766be3152b35f7fe354b989e8cd6d615a043
Diffstat (limited to 'server/src/com/vaadin/ui/Table.java')
-rw-r--r--server/src/com/vaadin/ui/Table.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/server/src/com/vaadin/ui/Table.java b/server/src/com/vaadin/ui/Table.java
index 202e58f0c9..eb3d35be3e 100644
--- a/server/src/com/vaadin/ui/Table.java
+++ b/server/src/com/vaadin/ui/Table.java
@@ -6175,12 +6175,115 @@ public class Table extends AbstractSelect implements Action.Container,
}
@Override
+ public void writeDesign(Element design, DesignContext context) {
+ Table def = context.getDefaultInstance(this);
+
+ DesignAttributeHandler.writeAttribute("sortable", design.attributes(),
+ isSortEnabled(), def.isSortEnabled(), boolean.class);
+
+ Element table = null;
+ boolean hasColumns = getVisibleColumns().length != 0;
+ if (hasColumns) {
+ table = design.appendElement("table");
+ writeColumns(table, def);
+ writeHeader(table, def);
+ }
+ super.writeDesign(design, context);
+ if (hasColumns) {
+ writeFooter(table);
+ }
+ }
+
+ private void writeColumns(Element table, Table def) {
+ Object[] columns = getVisibleColumns();
+ if (columns.length == 0) {
+ return;
+ }
+
+ Element colgroup = table.appendElement("colgroup");
+ for (Object id : columns) {
+ Element col = colgroup.appendElement("col");
+
+ col.attr("property-id", id.toString());
+
+ if (getColumnAlignment(id) == Align.CENTER) {
+ col.attr("center", "");
+ } else if (getColumnAlignment(id) == Align.RIGHT) {
+ col.attr("right", "");
+ }
+
+ DesignAttributeHandler.writeAttribute("width", col.attributes(),
+ getColumnWidth(id), def.getColumnWidth(null), int.class);
+
+ DesignAttributeHandler.writeAttribute("expand", col.attributes(),
+ getColumnExpandRatio(id), def.getColumnExpandRatio(null),
+ float.class);
+
+ DesignAttributeHandler.writeAttribute("collapsible",
+ col.attributes(), isColumnCollapsible(id),
+ def.isColumnCollapsible(null), boolean.class);
+
+ DesignAttributeHandler.writeAttribute("collapsed",
+ col.attributes(), isColumnCollapsed(id),
+ def.isColumnCollapsed(null), boolean.class);
+ }
+ }
+
+ private void writeHeader(Element table, Table def) {
+ Object[] columns = getVisibleColumns();
+ if (columns.length == 0
+ || (columnIcons.isEmpty() && columnHeaders.isEmpty())) {
+ return;
+ }
+
+ Element header = table.appendElement("thead").appendElement("tr");
+ for (Object id : columns) {
+ Element th = header.appendElement("th");
+ th.html(getColumnHeader(id));
+ DesignAttributeHandler.writeAttribute("icon", th.attributes(),
+ getColumnIcon(id), def.getColumnIcon(null), Resource.class);
+ }
+
+ }
+
+ private void writeFooter(Element table) {
+ Object[] columns = getVisibleColumns();
+ if (columns.length == 0 || columnFooters.isEmpty()) {
+ return;
+ }
+
+ Element footer = table.appendElement("tfoot").appendElement("tr");
+ for (Object id : columns) {
+ footer.appendElement("td").text(getColumnFooter(id));
+ }
+ }
+
+ @Override
+ protected void writeItems(Element design, DesignContext context) {
+ Element tbody = design.child(0).appendElement("tbody");
+ super.writeItems(tbody, context);
+ }
+
+ @Override
+ protected Element writeItem(Element tbody, Object itemId,
+ DesignContext context) {
+ Element tr = tbody.appendElement("tr");
+ Item item = getItem(itemId);
+ for (Object id : getVisibleColumns()) {
+ Element td = tr.appendElement("td");
+ td.html(item.getItemProperty(id).getValue().toString());
+ }
+ return tr;
+ }
+
+ @Override
protected Collection<String> getCustomAttributes() {
Collection<String> result = super.getCustomAttributes();
result.add("sortable");
result.add("sort-enabled");
result.add("sort-disabled");
result.add("footer-visible");
+ result.add("item-caption-mode");
result.add("current-page-first-item-id");
result.add("current-page-first-item-index");
return result;