// first try the full shorthands
if (widthFull && heightFull) {
- attributes.put("size-full", "");
+ attributes.put("size-full", "true");
} else if (widthAuto && heightAuto) {
- attributes.put("size-auto", "");
+ attributes.put("size-auto", "true");
} else {
// handle width
if (!hasEqualWidth(defaultInstance)) {
if (widthFull) {
- attributes.put("width-full", "");
+ attributes.put("width-full", "true");
} else if (widthAuto) {
- attributes.put("width-auto", "");
+ attributes.put("width-auto", "true");
} else {
String widthString = DesignAttributeHandler.getFormatter()
.format(getWidth()) + getWidthUnits().getSymbol();
if (!hasEqualHeight(defaultInstance)) {
// handle height
if (heightFull) {
- attributes.put("height-full", "");
+ attributes.put("height-full", "true");
} else if (heightAuto) {
- attributes.put("height-auto", "");
+ attributes.put("height-auto", "true");
} else {
String heightString = DesignAttributeHandler.getFormatter()
.format(getHeight()) + getHeightUnits().getSymbol();
public String convertToPresentation(Boolean value,
Class<? extends String> targetType, Locale locale)
throws Converter.ConversionException {
- if (value.booleanValue()) {
- return "";
- } else {
- return "false";
- }
+ return String.valueOf(value.booleanValue());
}
@Override
@Test
// #16328
public void testReadWrite() throws IOException {
- String design = "<v-menu-bar auto-open='' tabindex=5>"
- + "<menu checkable=''>Save</menu>"
+ String design = "<v-menu-bar auto-open='true' tabindex=5>"
+ + "<menu checkable='true'>Save</menu>"
+ "<menu description='Open a file'>Open</menu>"
- + "<menu disabled=''>Close</menu>"
+ + "<menu disabled='true'>Close</menu>"
+ "<menu icon='http://foo.bar/ico.png'>Help</menu>"
+ "<menu visible='false'>About</menu>"
+ "<menu>Sub<menu>Item</menu></menu>"
@Test
// #16328
public void testTicketSpec1() throws IOException {
- String design = "<v-menu-bar auto-open='' plain-text tabindex=5> "
+ String design = "<v-menu-bar auto-open='true' plain-text tabindex=5> "
+ "<menu>File"
+ "<menu>Save</menu>"
+ "<menu icon=\"theme://../runo/icons/16/folder.png\">Open</menu>"
- + "<menu separator='' />"
- + "<menu disabled=''>Exit</menu>"
+ + "<menu separator='true' />"
+ + "<menu disabled='true'>Exit</menu>"
+ "<menu visible='false'>Not for everybody</menu>"
+ "</menu>"
+ "<menu description=\"This contains many items in sub menus\">Other"
+ "<menu style-name=\"fancy\">Sub"
- + "<menu checkable='' checked=''>Option 1 - no <b>html</b></menu>"
- + "<menu checkable=''>Option 2</menu>"
- + "<menu checkable=''>Option 3</menu>" //
+ + "<menu checkable='true' checked='true'>Option 1 - no <b>html</b></menu>"
+ + "<menu checkable='true'>Option 2</menu>"
+ + "<menu checkable='true'>Option 3</menu>" //
+ "</menu>" //
+ "</menu>" //
+ "<menu more icon=\"theme://icon.png\">foo</menu>"
+ "<menu><b>File</b>"
+ "<menu><font style=\"color: red\">Save</font></menu>"
+ "<menu icon=\"theme://../runo/icons/16/folder.png\">Open</menu>"
- + "<menu separator='' />" + "<menu disabled=''>Exit</menu>" //
+ + "<menu separator='true' />"
+ + "<menu disabled='true'>Exit</menu>" //
+ "</menu></v-menu-bar>";
MenuBar menuBar = new MenuBar();
menuBar.setHtmlContentAllowed(true);
label.setContentMode(ContentMode.HTML);
label.setResponsive(true);
- String design = "<v-label responsive='' />";
+ String design = "<v-label responsive='true' />";
testWrite(design, label);
testRead(design, label);
@Test
public void testBoolean() {
- assertEquals("", formatter.format(true));
+ assertEquals("true", formatter.format(true));
assertEquals("false", formatter.format(false));
assertEquals(true, formatter.parse("true", boolean.class));
String s = "<" + componentTag + " ";
if (left && right && top && bottom) {
- s += "margin=''";
+ s += "margin='true'";
} else {
if (left) {
- s += "margin-left='' ";
+ s += "margin-left='true' ";
}
if (right) {
- s += "margin-right='' ";
+ s += "margin-right='true' ";
}
if (top) {
- s += "margin-top='' ";
+ s += "margin-top='true' ";
}
if (bottom) {
- s += "margin-bottom='' ";
+ s += "margin-bottom='true' ";
}
}
return s + " />";
public void testProperties() {
String design = "<v-label id=\"testId\" primary-style-name=\"test-style\" "
+ "caption=\"test-caption\" locale=\"fi_FI\" description=\"test-description\" "
- + "error=\"<div>test-error</div>\" immediate=\"\"/>";
+ + "error=\"<div>test-error</div>\" immediate=\"true\"/>";
component.setId("testId");
component.setPrimaryStyleName("test-style");
component.setCaption("test-caption");
@Test
public void testSizeFull() {
- String design = "<v-label size-full=\"\"/>";
+ String design = "<v-label size-full=\"true\"/>";
component.setSizeFull();
testRead(design, component);
testWrite(design, component);
@Test
public void testSizeAuto() {
- String design = "<v-label size-auto=\"\"/>";
+ String design = "<v-label size-auto=\"true\"/>";
component.setSizeUndefined();
testRead(design, component);
testWrite(design, component);
@Test
public void testHeightFull() {
- String design = "<v-label height-full=\"\"/ width=\"20px\"/>";
+ String design = "<v-label height-full=\"true\"/ width=\"20px\"/>";
component.setHeight("100%");
component.setWidth("20px");
testRead(design, component);
@Test
public void testHeightAuto() {
- String design = "<v-horizontal-split-panel height-auto=\"\"/ width=\"20px\" >";
+ String design = "<v-horizontal-split-panel height-auto=\"true\"/ width=\"20px\" >";
// we need to have default height of 100% -> use split panel
AbstractComponent component = new HorizontalSplitPanel();
component.setHeight(null);
@Test
public void testWidthFull() {
- String design = "<v-button width-full=\"\"/ height=\"20px\">Foo</button>";
+ String design = "<v-button width-full=\"true\"/ height=\"20px\">Foo</button>";
AbstractComponent component = new Button();
component.setCaptionAsHtml(true);
component.setCaption("Foo");
@Test
public void testWidthAuto() {
- String design = "<v-label height=\"20px\"/ width-auto=\"\"/>";
+ String design = "<v-label height=\"20px\"/ width-auto=\"true\"/>";
component.setCaptionAsHtml(false);
component.setHeight("20px");
component.setWidth(null);
@Test
public void testResponsive() {
- String design = "<v-label responsive =\"\"/>";
+ String design = "<v-label responsive =\"true\"/>";
Responsive.makeResponsive(component);
testRead(design, component);
testWrite(design, component);
@Test
public void testPlainText() {
- String design = "<v-text-field buffered='' validation-visible='false' invalid-committed=''"
- + " invalid-allowed='false' required='' required-error='This is a required field'"
- + " conversion-error='Input {0} cannot be parsed' tabindex=3 readonly=''/>";
+ String design = "<v-text-field buffered='true' validation-visible='false' invalid-committed='true'"
+ + " invalid-allowed='false' required='true' required-error='This is a required field'"
+ + " conversion-error='Input {0} cannot be parsed' tabindex=3 readonly='true'/>";
AbstractField tf = new TextField();
tf.setBuffered(true);
tf.setBuffered(true);
testWrite(design, tf);
// Test with readonly=false
- design = design.replace("readonly=''", "");
+ design = design.replace("readonly='true'", "");
tf.setReadOnly(false);
testRead(design, tf);
testWrite(design, tf);
DeclarativeTestBase<AbstractSelect> {
public String getDesignSingleSelectNewItemsAllowed() {
- return "<v-combo-box new-items-allowed='' item-caption-mode='icon_only'"
+ return "<v-combo-box new-items-allowed='true' item-caption-mode='icon_only'"
+ " null-selection-item-id='nullIid'/>";
}
}
public String getDesignMultiSelect() {
- return "<v-list-select multi-select='' null-selection-allowed='false' new-items-allowed='' item-caption-mode='property' />";
+ return "<v-list-select multi-select='true' null-selection-allowed='false' new-items-allowed='true' item-caption-mode='property' />";
}
public AbstractSelect getExpectedMultiSelect() {
attributes.put("item-caption-mode", "property");
attributes.put("item-caption-property-id", "name");
attributes.put("item-icon-property-id", "icon");
- attributes.put("null-selection-allowed", "");
+ attributes.put("null-selection-allowed", "true");
attributes.put("null-selection-item-id", "No items selected");
return new Element(Tag.valueOf("v-combo-box"), "", attributes);
}
assertEquals("Wrong caption for the combo box.", "A combo box",
e.attr("caption"));
Assert.assertTrue("Adding new items should be allowed.",
- "".equals(e.attr("new-items-allowed")));
+ "true".equals(e.attr("new-items-allowed")));
assertEquals("Wrong item caption mode.", "icon_only",
e.attr("item-caption-mode"));
assertEquals("Wrong item icon property id.", "icon",
//@formatter:off
String expected =
- "<v-option-group html-content-allowed=''>"
+ "<v-option-group html-content-allowed='true'>"
+ "<option item-id=\"foo\"><b>True</b></option>"
+ "<option item-id=\"bar\"><font color='red'>False</font></option>"
+ "<option>baz</option>"
@Test
public void testWithBothChildren() {
String design = "<v-horizontal-split-panel split-position=20.5% "
- + "min-split-position=20% max-split-position=50px locked='' "
+ + "min-split-position=20% max-split-position=50px locked=true "
+ "reversed=\"\"> <v-table /> <v-vertical-layout />"
+ "</v-horizontal-split-panel>";
AbstractSplitPanel sp = new HorizontalSplitPanel();
@Test
public void testAttributes() {
String design = "<v-text-field null-representation=this-is-null "
- + "null-setting-allowed='' maxlength=5 columns=3 "
+ + "null-setting-allowed=true maxlength=5 columns=3 "
+ "input-prompt=input text-change-event-mode=eager "
+ "text-change-timeout=100 />";
AbstractTextField tf = new TextField();
@Test
public void testAudioMultipleSources() {
- String design = "<v-audio muted='' show-controls='false'>"
+ String design = "<v-audio muted='true' show-controls='false'>"
+ "some <b>text</b>" //
+ "<source href='http://foo.pl' />"
+ "<source href='https://bar.pl' />" //
@Test
public void testVideoMultipleSources() {
- String design = "<v-video muted='' show-controls='false'>"
+ String design = "<v-video muted='true' show-controls='false'>"
+ "some <b>text</b>" //
+ "<source href='http://foo.pl' />"
+ "<source href='https://bar.pl' />" //
@Test
public void testUnchecked() {
- String design = "<v-check-box checked='' />";
+ String design = "<v-check-box checked='true' />";
CheckBox checkBox = new CheckBox();
checkBox.setValue(true);
testRead(design, checkBox);
@Test
public void testAllAbstractColorPickerFeatures() {
- String design = "<v-color-picker color='#fafafa' default-caption-enabled='' position='100,100'"
+ String design = "<v-color-picker color='#fafafa' default-caption-enabled='true' position='100,100'"
+ " popup-style='simple' rgb-visibility='false' hsv-visibility='false'"
+ " history-visibility=false textfield-visibility=false />";
ColorPicker colorPicker = new ColorPicker();
@Test
public void testAllAbstractColorPickerAreaFeatures() {
- String design = "<v-color-picker-area color='#fafafa' default-caption-enabled='' position='100,100'"
+ String design = "<v-color-picker-area color='#fafafa' default-caption-enabled='true' position='100,100'"
+ " popup-style='simple' rgb-visibility='false' hsv-visibility='false'"
+ " history-visibility=false textfield-visibility=false />";
AbstractColorPicker colorPicker = new ColorPickerArea();
}
private String getTimezoneDesign() {
- return "<v-date-field range-start=\"2014-05-05 00:00:00+0300\" range-end=\"2014-06-05 00:00:00+0300\" date-out-of-range-message=\"Please select a sensible date\" date-format=\"yyyy-MM-dd\" lenient='' show-iso-week-numbers='' parse-error-message=\"You are doing it wrong\" time-zone=\"GMT+05:00\" value=\"2014-05-15 00:00:00+0300\"/>";
+ return "<v-date-field range-start=\"2014-05-05 00:00:00+0300\" range-end=\"2014-06-05 00:00:00+0300\" date-out-of-range-message=\"Please select a sensible date\" date-format=\"yyyy-MM-dd\" lenient='true' show-iso-week-numbers='true' parse-error-message=\"You are doing it wrong\" time-zone=\"GMT+05:00\" value=\"2014-05-15 00:00:00+0300\"/>";
}
private DateField getTimezoneExpected() {
public void testSimpleGridColumns() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' width='100' property-id='Column1'>"
+ + " <col sortable=true width='100' property-id='Column1'>"
+ " <col sortable=false max-width='200' expand='2' property-id='Column2'>"
- + " <col sortable='' editable=false min-width='15' expand='1' property-id='Column3'>"
- + " <col sortable='' hidable='' hiding-toggle-caption='col 4' property-id='Column4'>"
- + " <col sortable='' hidden='' property-id='Column5'>"
+ + " <col sortable=true editable=false min-width='15' expand='1' property-id='Column3'>"
+ + " <col sortable=true hidable=true hiding-toggle-caption='col 4' property-id='Column4'>"
+ + " <col sortable=true hidden=true property-id='Column5'>"
+ "</colgroup>" //
+ "<thead />" //
+ "</table></v-grid>";
@Test
public void testBasicAttributes() {
- String design = "<v-grid editable='' rows=20 frozen-columns=-1 "
- + "editor-save-caption='Tallenna' editor-cancel-caption='Peruuta' column-reordering-allowed=''>";
+ String design = "<v-grid editable='true' rows=20 frozen-columns=-1 "
+ + "editor-save-caption='Tallenna' editor-cancel-caption='Peruuta' column-reordering-allowed=true>";
Grid grid = new Grid();
grid.setEditorEnabled(true);
public void testSingleDefaultHeader() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
- + " <col sortable='' property-id='Column2'>"
- + " <col sortable='' property-id='Column3'>"
+ + " <col sortable=true property-id='Column1'>"
+ + " <col sortable=true property-id='Column2'>"
+ + " <col sortable=true property-id='Column3'>"
+ "</colgroup>" //
+ "<thead>" //
- + " <tr default=''><th plain-text=''>Column1<th plain-text=''>Column2<th plain-text=''>Column3</tr>" //
+ + " <tr default='true'><th plain-text=''>Column1<th plain-text=''>Column2<th plain-text=''>Column3</tr>" //
+ "</thead>" //
+ "</table></v-grid>";
Grid grid = new Grid();
public void testSingleDefaultHTMLHeader() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
- + " <col sortable='' property-id='Column2'>"
- + " <col sortable='' property-id='Column3'>" + "</colgroup>" //
+ + " <col sortable=true property-id='Column1'>"
+ + " <col sortable=true property-id='Column2'>"
+ + " <col sortable=true property-id='Column3'>"
+ + "</colgroup>" //
+ "<thead>" //
- + " <tr default=''><th>Column1<th>Column2<th>Column3</tr>" //
+ + " <tr default='true'><th>Column1<th>Column2<th>Column3</tr>" //
+ "</thead>" //
+ "</table></v-grid>";
Grid grid = new Grid();
public void testNoHeaderRows() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
+ + " <col sortable=true property-id='Column1'>"
+ "</colgroup>" //
+ "<thead />" //
+ "</table></v-grid>";
public void testMultipleHeadersWithColSpans() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
- + " <col sortable='' property-id='Column2'>"
- + " <col sortable='' property-id='Column3'>"
+ + " <col sortable=true property-id='Column1'>"
+ + " <col sortable=true property-id='Column2'>"
+ + " <col sortable=true property-id='Column3'>"
+ "</colgroup>" //
+ "<thead>" //
+ " <tr><th colspan=3>Baz</tr>"
- + " <tr default=''><th>Column1<th>Column2<th>Column3</tr>" //
+ + " <tr default='true'><th>Column1<th>Column2<th>Column3</tr>" //
+ " <tr><th>Foo<th colspan=2>Bar</tr>" //
+ "</thead>" //
+ "</table></v-grid>";
public void testSingleDefaultFooter() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
- + " <col sortable='' property-id='Column2'>"
- + " <col sortable='' property-id='Column3'>"
+ + " <col sortable=true property-id='Column1'>"
+ + " <col sortable=true property-id='Column2'>"
+ + " <col sortable=true property-id='Column3'>"
+ "</colgroup>" //
+ "<thead />" // No headers read or written
+ "<tfoot>" //
public void testSingleDefaultHTMLFooter() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
- + " <col sortable='' property-id='Column2'>"
- + " <col sortable='' property-id='Column3'>" + "</colgroup>" //
+ + " <col sortable=true property-id='Column1'>"
+ + " <col sortable=true property-id='Column2'>"
+ + " <col sortable=true property-id='Column3'>"
+ + "</colgroup>" //
+ "<thead />" // No headers read or written
+ "<tfoot>" //
+ " <tr><td>Column1<td>Column2<td>Column3</tr>" //
public void testMultipleFootersWithColSpans() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
- + " <col sortable='' property-id='Column2'>"
- + " <col sortable='' property-id='Column3'>"
+ + " <col sortable=true property-id='Column1'>"
+ + " <col sortable=true property-id='Column2'>"
+ + " <col sortable=true property-id='Column3'>"
+ "</colgroup>" //
+ "<thead />" // No headers read or written.
+ "<tfoot>" //
public void testComponentInGridHeader() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
+ + " <col sortable=true property-id='Column1'>"
+ "</colgroup>" //
+ "<thead>" //
- + "<tr default=''><th><v-label><b>Foo</b></v-label></tr>"
+ + "<tr default=true><th><v-label><b>Foo</b></v-label></tr>"
+ "</thead>"//
+ "</table></v-grid>";
public void testComponentInGridFooter() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Column1'>"
+ + " <col sortable=true property-id='Column1'>"
+ "</colgroup>" //
+ "<thead />" // No headers read or written
+ "<tfoot>" //
public void testSimpleInlineData() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Col1' />"
+ + " <col sortable=true property-id='Col1' />"
+ "</colgroup>" //
+ "<thead />" // No headers read or written
+ "<tbody>" //
public void testMultipleColumnsInlineData() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Col1' />"
- + " <col sortable='' property-id='Col2' />"
- + " <col sortable='' property-id='Col3' />" //
+ + " <col sortable=true property-id='Col1' />"
+ + " <col sortable=true property-id='Col2' />"
+ + " <col sortable=true property-id='Col3' />" //
+ "</colgroup>" //
+ "<thead />" // No headers read or written
+ "<tbody>" //
public void testMultipleColumnsInlineDataReordered() {
String design = "<v-grid><table>"//
+ "<colgroup>"
- + " <col sortable='' property-id='Col2' />"
- + " <col sortable='' property-id='Col3' />"
- + " <col sortable='' property-id='Col1' />" //
+ + " <col sortable=true property-id='Col2' />"
+ + " <col sortable=true property-id='Col3' />"
+ + " <col sortable=true property-id='Col1' />" //
+ "</colgroup>" //
+ "<thead />" // No headers read or written
+ "<tbody>" //
component.setHideOnMouseOut(true);
component.setPopupVisible(true);
// hide-on-mouse-out is true by default. not seen in design
- String design = "<v-popup-view popup-visible=''>" //
+ String design = "<v-popup-view popup-visible='true'>" //
+ "Click <u>here</u> to open"
+ "<popup-content>"
+ new DesignContext().createElement(verticalLayout)
DeclarativeTestBase<ProgressBar> {
public String getBasicDesign() {
- return "<v-progress-bar value=0.5 indeterminate=''>";
+ return "<v-progress-bar value=0.5 indeterminate='true'>";
}
DeclarativeTestBase<RichTextArea> {
private String getBasicDesign() {
- return "<v-rich-text-area null-representation='' null-setting-allowed=''>\n"
+ return "<v-rich-text-area null-representation='' null-setting-allowed='true'>\n"
+ "\n <b>Header</b> <br/>Some text\n "
+ "</v-rich-text-area>";
}
String design = "<"
+ getTag()
- + " page-length=30 cache-rate=3 selectable='' editable='' "
+ + " page-length=30 cache-rate=3 selectable=true editable=true "
+ "sortable=false sort-ascending=false sort-container-property-id=foo "
+ "drag-mode=row multi-select-mode=simple column-header-mode=id row-header-mode=id "
- + "column-reordering-allowed='' column-collapsing-allowed='' />";
+ + "column-reordering-allowed=true column-collapsing-allowed=true />";
Table table = getTable();
table.setPageLength(30);
public void testColumns() {
String design = "<"
+ getTag()
- + " column-collapsing-allowed=''>" //
+ + " column-collapsing-allowed=true>" //
+ " <table>" //
+ " <colgroup>"
+ " <col property-id='foo' width=300>"
+ " <col property-id='bar' center expand=1 collapsible=false>"
- + " <col property-id='baz' right expand=2 collapsed=''>"
+ + " <col property-id='baz' right expand=2 collapsed=true>"
+ " </colgroup>" //
+ " </table>";
@Test
public void testFeatures() {
String design = "<v-tab-sheet tabindex=5><tab caption=test-caption "
- + "visible=false closable='' enabled=false icon=http://www.vaadin.com/test.png"
+ + "visible=false closable=true enabled=false icon=http://www.vaadin.com/test.png"
+ " icon-alt=OK description=test-desc style-name=test-style "
+ "id=test-id><v-text-field/></tab></v-tab-sheet>";
TabSheet ts = new TabSheet();
@Test
public void testSelected() {
- String design = "<v-tab-sheet><tab selected=''><v-text-field/></tab></v-tab-sheet>";
+ String design = "<v-tab-sheet><tab selected=true><v-text-field/></tab></v-tab-sheet>";
TabSheet ts = new TabSheet();
TextField tf = new TextField();
ts.addTab(tf);
@Test
public void tabsNotShown() {
String design = "<v-tab-sheet tabs-visible=\"false\">\n"
- + " <tab caption=\"My Tab\" selected=\"\">\n"
+ + " <tab caption=\"My Tab\" selected=\"true\">\n"
+ " <v-label>My Content</v-label>\n" + " </tab>\n"
+ "</v-tab-sheet>\n";
TabSheet ts = new TabSheet();
testWrite(design, ts);
}
-}
+}
\ No newline at end of file
@Test
public void testAttributes() {
- String design = "<v-tree-table animations-enabled=''>";
+ String design = "<v-tree-table animations-enabled=true>";
TreeTable table = getTable();
table.setAnimationsEnabled(true);
public void testFeatures() {
String design = "<v-window position='100,100' window-mode='maximized' "
- + "center modal='' resizable=false resize-lazy='' closable=false draggable=false "
+ + "center modal=true resizable=false resize-lazy=true closable=false draggable=false "
+ "close-shortcut='ctrl-alt-escape' "
+ "assistive-prefix='Hello' assistive-postfix='World' assistive-role='alertdialog' "
- + "tab-stop-enabled='' "
+ + "tab-stop-enabled=true "
+ "tab-stop-top-assistive-text='Do not move above the window' "
+ "tab-stop-bottom-assistive-text='End of window'>"
+ "</v-window>";