Skip to content

Commit

Permalink
Introduce "shouldWriteDefaultValues" property to DesignContext.
Browse files Browse the repository at this point in the history
Change-Id: I979448e5af032333a6a2f7b99b11ab16c41d7b18
  • Loading branch information
Denis Anisimov authored and Vaadin Code Review committed Oct 26, 2016
1 parent 5bc31e8 commit 9abe01a
Show file tree
Hide file tree
Showing 36 changed files with 163 additions and 123 deletions.
Expand Up @@ -572,12 +572,14 @@ public void writeDesign(Element design, DesignContext designContext) {

Attributes attribute = design.attributes();
DesignAttributeHandler.writeAttribute("color", attribute,
color.getCSS(), Color.WHITE.getCSS(), String.class);
color.getCSS(), Color.WHITE.getCSS(), String.class,
designContext);
DesignAttributeHandler.writeAttribute("popup-style", attribute,
popupStyle == PopupStyle.POPUP_NORMAL ? "normal" : "simple",
"normal", String.class);
"normal", String.class, designContext);
DesignAttributeHandler.writeAttribute("position", attribute,
positionX + "," + positionY, "0,0", String.class);
positionX + "," + positionY, "0,0", String.class,
designContext);
}

@Override
Expand Down
Expand Up @@ -1802,7 +1802,8 @@ public void writeDesign(Element design, DesignContext designContext) {
Attributes attr = design.attributes();
// handle readonly
DesignAttributeHandler.writeAttribute("readonly", attr,
super.isReadOnly(), def.isReadOnly(), Boolean.class);
super.isReadOnly(), def.isReadOnly(), Boolean.class,
designContext);
}

private static final Logger getLogger() {
Expand Down
Expand Up @@ -99,7 +99,8 @@ public void writeDesign(Element design, DesignContext designContext) {
// handle immediate
if (explicitImmediateValue != null) {
DesignAttributeHandler.writeAttribute("immediate", attr,
explicitImmediateValue, def.isImmediate(), Boolean.class);
explicitImmediateValue, def.isImmediate(), Boolean.class,
designContext);
}
}

Expand Down
Expand Up @@ -2343,7 +2343,7 @@ protected Element writeItem(Element design, Object itemId,
Resource icon = getItemIcon(itemId);
if (icon != null) {
DesignAttributeHandler.writeAttribute("icon", element.attributes(),
icon, null, Resource.class);
icon, null, Resource.class, context);
}

if (isSelected(itemId)) {
Expand Down
Expand Up @@ -806,7 +806,7 @@ public void writeDesign(Element design, DesignContext designContext) {
.getDefaultInstance(this);
Attributes attr = design.attributes();
DesignAttributeHandler.writeAttribute("maxlength", attr, getMaxLength(),
def.getMaxLength(), Integer.class);
def.getMaxLength(), Integer.class, designContext);
}

}
Expand Up @@ -252,7 +252,7 @@ public void writeDesign(Element design, DesignContext designContext) {
CheckBox def = (CheckBox) designContext.getDefaultInstance(this);
Attributes attr = design.attributes();
DesignAttributeHandler.writeAttribute("checked", attr, getValue(),
def.getValue(), Boolean.class);
def.getValue(), Boolean.class, designContext);
}

@Override
Expand Down
41 changes: 25 additions & 16 deletions compatibility-server/src/main/java/com/vaadin/v7/ui/Grid.java
Expand Up @@ -3143,7 +3143,8 @@ protected void writeDesign(Element trElement,

if (section.grid.getDefaultHeaderRow() == this) {
DesignAttributeHandler.writeAttribute("default",
trElement.attributes(), true, null, boolean.class);
trElement.attributes(), true, null, boolean.class,
designContext);
}
}

Expand Down Expand Up @@ -4071,31 +4072,35 @@ protected void writeDesign(Element design,
GridColumnState def = new GridColumnState();

DesignAttributeHandler.writeAttribute("property-id", attributes,
getPropertyId(), null, Object.class);
getPropertyId(), null, Object.class, designContext);

// Sortable is a special attribute that depends on the container.
DesignAttributeHandler.writeAttribute("sortable", attributes,
isSortable(), null, boolean.class);
isSortable(), null, boolean.class, designContext);
DesignAttributeHandler.writeAttribute("editable", attributes,
isEditable(), def.editable, boolean.class);
isEditable(), def.editable, boolean.class, designContext);
DesignAttributeHandler.writeAttribute("resizable", attributes,
isResizable(), def.resizable, boolean.class);
isResizable(), def.resizable, boolean.class, designContext);

DesignAttributeHandler.writeAttribute("hidable", attributes,
isHidable(), def.hidable, boolean.class);
isHidable(), def.hidable, boolean.class, designContext);
DesignAttributeHandler.writeAttribute("hidden", attributes,
isHidden(), def.hidden, boolean.class);
isHidden(), def.hidden, boolean.class, designContext);
DesignAttributeHandler.writeAttribute("hiding-toggle-caption",
attributes, getHidingToggleCaption(), null, String.class);
attributes, getHidingToggleCaption(), null, String.class,
designContext);

DesignAttributeHandler.writeAttribute("width", attributes,
getWidth(), def.width, Double.class);
getWidth(), def.width, Double.class, designContext);
DesignAttributeHandler.writeAttribute("min-width", attributes,
getMinimumWidth(), def.minWidth, Double.class);
getMinimumWidth(), def.minWidth, Double.class,
designContext);
DesignAttributeHandler.writeAttribute("max-width", attributes,
getMaximumWidth(), def.maxWidth, Double.class);
getMaximumWidth(), def.maxWidth, Double.class,
designContext);
DesignAttributeHandler.writeAttribute("expand", attributes,
getExpandRatio(), def.expandRatio, Integer.class);
getExpandRatio(), def.expandRatio, Integer.class,
designContext);
}

/**
Expand Down Expand Up @@ -7332,14 +7337,17 @@ public void writeDesign(Element design, DesignContext context) {
Grid def = context.getDefaultInstance(this);

DesignAttributeHandler.writeAttribute("editable", attrs,
isEditorEnabled(), def.isEditorEnabled(), boolean.class);
isEditorEnabled(), def.isEditorEnabled(), boolean.class,
context);

DesignAttributeHandler.writeAttribute("frozen-columns", attrs,
getFrozenColumnCount(), def.getFrozenColumnCount(), int.class);
getFrozenColumnCount(), def.getFrozenColumnCount(), int.class,
context);

if (getHeightMode() == HeightMode.ROW) {
DesignAttributeHandler.writeAttribute("rows", attrs,
getHeightByRows(), def.getHeightByRows(), double.class);
getHeightByRows(), def.getHeightByRows(), double.class,
context);
}

SelectionMode selectionMode = null;
Expand All @@ -7357,7 +7365,8 @@ public void writeDesign(Element design, DesignContext context) {
+ selectionModel.getClass().getName();

DesignAttributeHandler.writeAttribute("selection-mode", attrs,
selectionMode, getDefaultSelectionMode(), SelectionMode.class);
selectionMode, getDefaultSelectionMode(), SelectionMode.class,
context);

if (columns.isEmpty()) {
// Empty grid. Structure not needed.
Expand Down
Expand Up @@ -112,7 +112,7 @@ public void writeDesign(Element design, DesignContext designContext) {
.getDefaultInstance(this);
Attributes attr = design.attributes();
DesignAttributeHandler.writeAttribute("value", attr, getValue(),
def.getValue(), String.class);
def.getValue(), String.class, designContext);
}

@Override
Expand Down
Expand Up @@ -171,7 +171,7 @@ public void writeDesign(Element design, DesignContext designContext) {
Float defaultValue = ((ProgressBar) designContext
.getDefaultInstance(this)).getValue();
DesignAttributeHandler.writeAttribute("value", design.attributes(),
getValue(), defaultValue, Float.class);
getValue(), defaultValue, Float.class, designContext);
}

@Override
Expand Down
Expand Up @@ -387,7 +387,7 @@ public void writeDesign(Element design, DesignContext context) {
}
Slider defaultSlider = context.getDefaultInstance(this);
DesignAttributeHandler.writeAttribute(this, "value",
design.attributes(), defaultSlider);
design.attributes(), defaultSlider, context);
}

@Override
Expand Down
22 changes: 12 additions & 10 deletions compatibility-server/src/main/java/com/vaadin/v7/ui/Table.java
Expand Up @@ -6327,22 +6327,22 @@ public void writeDesign(Element design, DesignContext context) {
Table def = context.getDefaultInstance(this);

DesignAttributeHandler.writeAttribute("sortable", design.attributes(),
isSortEnabled(), def.isSortEnabled(), boolean.class);
isSortEnabled(), def.isSortEnabled(), boolean.class, context);

Element table = null;
boolean hasColumns = getVisibleColumns().length != 0;
if (hasColumns) {
table = design.appendElement("table");
writeColumns(table, def);
writeHeader(table, def);
writeColumns(table, def, context);
writeHeader(table, def, context);
}
super.writeDesign(design, context);
if (hasColumns) {
writeFooter(table);
}
}

private void writeColumns(Element table, Table def) {
private void writeColumns(Element table, Table def, DesignContext context) {
Object[] columns = getVisibleColumns();
if (columns.length == 0) {
return;
Expand All @@ -6361,23 +6361,24 @@ private void writeColumns(Element table, Table def) {
}

DesignAttributeHandler.writeAttribute("width", col.attributes(),
getColumnWidth(id), def.getColumnWidth(null), int.class);
getColumnWidth(id), def.getColumnWidth(null), int.class,
context);

DesignAttributeHandler.writeAttribute("expand", col.attributes(),
getColumnExpandRatio(id), def.getColumnExpandRatio(null),
float.class);
float.class, context);

DesignAttributeHandler.writeAttribute("collapsible",
col.attributes(), isColumnCollapsible(id),
def.isColumnCollapsible(null), boolean.class);
def.isColumnCollapsible(null), boolean.class, context);

DesignAttributeHandler.writeAttribute("collapsed", col.attributes(),
isColumnCollapsed(id), def.isColumnCollapsed(null),
boolean.class);
boolean.class, context);
}
}

private void writeHeader(Element table, Table def) {
private void writeHeader(Element table, Table def, DesignContext context) {
Object[] columns = getVisibleColumns();
if (columns.length == 0
|| (columnIcons.isEmpty() && columnHeaders.isEmpty())) {
Expand All @@ -6389,7 +6390,8 @@ private void writeHeader(Element table, Table def) {
Element th = header.appendElement("th");
th.html(getColumnHeader(id));
DesignAttributeHandler.writeAttribute("icon", th.attributes(),
getColumnIcon(id), def.getColumnIcon(null), Resource.class);
getColumnIcon(id), def.getColumnIcon(null), Resource.class,
context);
}

}
Expand Down
Expand Up @@ -135,7 +135,7 @@ public void writeDesign(Element design, DesignContext designContext) {
.getDefaultInstance(this);
Attributes attr = design.attributes();
DesignAttributeHandler.writeAttribute("value", attr, getValue(),
def.getValue(), String.class);
def.getValue(), String.class, designContext);
}

/*
Expand Down
Expand Up @@ -1944,7 +1944,7 @@ protected Element writeItem(Element design, Object itemId,
Resource icon = getItemIcon(itemId);
if (icon != null) {
DesignAttributeHandler.writeAttribute("icon", element.attributes(),
icon, null, Resource.class);
icon, null, Resource.class, context);
}

if (isSelected(itemId)) {
Expand Down
Expand Up @@ -962,7 +962,7 @@ protected void writeItems(Element tbody, Collection<?> itemIds, int depth,
for (Object itemId : itemIds) {
Element tr = writeItem(tbody, itemId, context);
DesignAttributeHandler.writeAttribute("depth", tr.attributes(),
depth, 0, int.class);
depth, 0, int.class, context);

if (getChildren(itemId) != null) {
writeItems(tbody, getChildren(itemId), depth + 1, context);
Expand All @@ -975,7 +975,7 @@ protected Element writeItem(Element tbody, Object itemId,
DesignContext context) {
Element tr = super.writeItem(tbody, itemId, context);
DesignAttributeHandler.writeAttribute("collapsed", tr.attributes(),
isCollapsed(itemId), true, boolean.class);
isCollapsed(itemId), true, boolean.class, context);
return tr;
}

Expand Down
Expand Up @@ -24,7 +24,6 @@
import com.vaadin.ui.components.colorpicker.ColorPickerPreview;
import com.vaadin.ui.components.colorpicker.ColorPickerSelect;
import com.vaadin.ui.declarative.Design;
import com.vaadin.ui.declarative.DesignAttributeHandler;
import com.vaadin.ui.declarative.DesignContext;

/**
Expand All @@ -33,6 +32,10 @@
public class ComponentDesignWriterUtility {

private static final Set<String> WHITE_LIST_FQNS = new HashSet<>();
private static final Document document = new Document("");
private static final DesignContext designContext = new DesignContext(
document);

static {
WHITE_LIST_FQNS.add(DragAndDropWrapper.class.getName());
WHITE_LIST_FQNS.add(Navigator.EmptyView.class.getName());
Expand Down Expand Up @@ -86,11 +89,9 @@ public class ComponentDesignWriterUtility {
"com.vaadin.server.VaadinPortlet$VaadinWebSpherePortalRequest");
WHITE_LIST_FQNS.add("com.vaadin.server.VaadinPortlet");
WHITE_LIST_FQNS.add("com.vaadin.server.VaadinPortletRequest");
}

private static final Document document = new Document("");
private static final DesignContext designContext = new DesignContext(
document);
designContext.setShouldWriteDefaultValues(true);
}

@SafeVarargs
public static List<String> getDeclarativeSyntax(
Expand All @@ -100,13 +101,10 @@ public static List<String> getDeclarativeSyntax(

public static List<String> getDeclarativeSyntax(
List<Class<? extends Component>> components) {
DesignAttributeHandler.setWriteDefaultValues(true);

List<String> declarativeStrings = components.stream()
.map(ComponentDesignWriterUtility::getDeclarativeSyntax)
.collect(Collectors.toList());

DesignAttributeHandler.setWriteDefaultValues(false);
return declarativeStrings;
}

Expand Down Expand Up @@ -156,10 +154,8 @@ public static void main(String[] args) throws URISyntaxException {

private static void printFullDeclarativeSyntax(
List<Class<? extends Component>> components) {
DesignAttributeHandler.setWriteDefaultValues(true);
components.stream().forEach(component -> System.out
.println(getDeclarativeSyntax(component)));
DesignAttributeHandler.setWriteDefaultValues(false);
}

private static List<Class<? extends Component>> getVaadin8Components()
Expand Down
8 changes: 5 additions & 3 deletions server/src/main/java/com/vaadin/ui/AbstractColorPicker.java
Expand Up @@ -514,12 +514,14 @@ public void writeDesign(Element design, DesignContext designContext) {

Attributes attribute = design.attributes();
DesignAttributeHandler.writeAttribute("color", attribute,
getValue().getCSS(), Color.WHITE.getCSS(), String.class);
getValue().getCSS(), Color.WHITE.getCSS(), String.class,
designContext);
DesignAttributeHandler.writeAttribute("popup-style", attribute,
popupStyle == PopupStyle.POPUP_NORMAL ? "normal" : "simple",
"normal", String.class);
"normal", String.class, designContext);
DesignAttributeHandler.writeAttribute("position", attribute,
positionX + "," + positionY, "0,0", String.class);
positionX + "," + positionY, "0,0", String.class,
designContext);
}

@Override
Expand Down
6 changes: 4 additions & 2 deletions server/src/main/java/com/vaadin/ui/AbstractComponent.java
Expand Up @@ -1240,7 +1240,8 @@ public void writeDesign(Element design, DesignContext designContext) {
Attributes attr = design.attributes();
// handle default attributes
for (String attribute : getDefaultAttributes()) {
DesignAttributeHandler.writeAttribute(this, attribute, attr, def);
DesignAttributeHandler.writeAttribute(this, attribute, attr, def,
designContext);
}
// handle locale
if (getLocale() != null && (getParent() == null
Expand All @@ -1261,7 +1262,8 @@ public void writeDesign(Element design, DesignContext designContext) {
if (this instanceof Focusable) {
DesignAttributeHandler.writeAttribute("tabindex", attr,
((Focusable) this).getTabIndex(),
((Focusable) def).getTabIndex(), Integer.class);
((Focusable) def).getTabIndex(), Integer.class,
designContext);
}
// handle custom attributes
Map<String, String> customAttributes = designContext
Expand Down
3 changes: 2 additions & 1 deletion server/src/main/java/com/vaadin/ui/AbstractEmbedded.java
Expand Up @@ -100,7 +100,8 @@ public void writeDesign(Element design, DesignContext designContext) {
super.writeDesign(design, designContext);
AbstractEmbedded def = designContext.getDefaultInstance(this);
DesignAttributeHandler.writeAttribute("alt", design.attributes(),
getAlternateText(), def.getAlternateText(), String.class);
getAlternateText(), def.getAlternateText(), String.class,
designContext);
}

@Override
Expand Down
3 changes: 2 additions & 1 deletion server/src/main/java/com/vaadin/ui/AbstractField.java
Expand Up @@ -121,7 +121,8 @@ public void writeDesign(Element design, DesignContext designContext) {
AbstractField<T> def = designContext.getDefaultInstance(this);
Attributes attr = design.attributes();
DesignAttributeHandler.writeAttribute("readonly", attr,
super.isReadOnly(), def.isReadOnly(), Boolean.class);
super.isReadOnly(), def.isReadOnly(), Boolean.class,
designContext);
}

@Override
Expand Down

0 comments on commit 9abe01a

Please sign in to comment.