Browse Source

Fix CustomLayout: component not added at the default location (#14340)

Change-Id: I5eb76915b52f6b73ff0799631d98d5711041eeb5
tags/7.3.2
Anna Miroshnik 9 years ago
parent
commit
c84bfc72cc

+ 2
- 0
WebContent/VAADIN/themes/tests-tickets/layouts/Ticket14340.html View File

@@ -0,0 +1,2 @@
<div location="" style="height: 100px"></div>


+ 2
- 4
client/src/com/vaadin/client/ui/VCustomLayout.java View File

@@ -208,12 +208,10 @@ public class VCustomLayout extends ComplexPanel {

/** Collect locations from template */
private void scanForLocations(Element elem) {

final String location = elem.getAttribute("location");
if (!"".equals(location)) {
if (elem.hasAttribute("location")) {
final String location = elem.getAttribute("location");
locationToElement.put(location, elem);
elem.setInnerHTML("");

} else {
final int len = DOM.getChildCount(elem);
for (int i = 0; i < len; i++) {

+ 49
- 0
uitest/src/com/vaadin/tests/layouts/customlayout/DefaultLocationInCustomLayout.java View File

@@ -0,0 +1,49 @@
/*
* Copyright 2000-2014 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.layouts.customlayout;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomLayout;

@SuppressWarnings("serial")
public class DefaultLocationInCustomLayout extends AbstractTestUI {

protected static final String BUTTON_ID = "DefaultLocationInCustomLayoutTestButtonId";

@Override
protected Integer getTicketNumber() {
return 14340;
}

@Override
protected String getTestDescription() {
return "A test for adding a component at the default location in a "
+ "CustomLayout: a button should be visible.";
}

@Override
protected void setup(VaadinRequest request) {
setTheme("tests-tickets");
CustomLayout customLayout = new CustomLayout("Ticket14340");
final Button button = new Button("Button");
button.setId(BUTTON_ID);
customLayout.addComponent(button);
addComponent(customLayout);
}

}

+ 39
- 0
uitest/src/com/vaadin/tests/layouts/customlayout/DefaultLocationInCustomLayoutTest.java View File

@@ -0,0 +1,39 @@
/*
* Copyright 2000-2014 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.layouts.customlayout;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.Test;
import org.openqa.selenium.By;

import com.vaadin.tests.tb3.MultiBrowserTest;

public class DefaultLocationInCustomLayoutTest extends MultiBrowserTest {

@Test
public void buttonExistsInLayout() {
openTestURL();

// We don't use TestBench's ElementQuery here because we need to check
// the DOM for buttons existence.
assertThat(
driver.findElements(
By.id(DefaultLocationInCustomLayout.BUTTON_ID)).size(),
is(1));
}
}

Loading…
Cancel
Save