Change-Id: I11d9e7bcdc3471157b9c21881d463ef5a747d2c1tags/7.7.0.alpha1
@@ -180,20 +180,6 @@ public class TableConnector extends AbstractFieldConnector implements | |||
return; | |||
} | |||
getWidget().enabled = isEnabled(); | |||
if (BrowserInfo.get().isIE8() && !getWidget().enabled) { | |||
/* | |||
* The disabled shim will not cover the table body if it is relative | |||
* in IE8. See #7324 | |||
*/ | |||
getWidget().scrollBodyPanel.getElement().getStyle() | |||
.setPosition(Position.STATIC); | |||
} else if (BrowserInfo.get().isIE8()) { | |||
getWidget().scrollBodyPanel.getElement().getStyle() | |||
.setPosition(Position.RELATIVE); | |||
} | |||
getWidget().paintableId = uidl.getStringAttribute("id"); | |||
getWidget().immediate = getState().immediate; | |||
@@ -398,6 +384,25 @@ public class TableConnector extends AbstractFieldConnector implements | |||
getWidget().collapsibleMenuContent = getState().collapseMenuContent; | |||
} | |||
@Override | |||
public void updateEnabledState(boolean enabledState) { | |||
super.updateEnabledState(enabledState); | |||
getWidget().enabled = isEnabled(); | |||
if (BrowserInfo.get().isIE8() && !getWidget().enabled) { | |||
/* | |||
* The disabled shim will not cover the table body if it is relative | |||
* in IE8. See #7324 | |||
*/ | |||
getWidget().scrollBodyPanel.getElement().getStyle() | |||
.setPosition(Position.STATIC); | |||
} else if (BrowserInfo.get().isIE8()) { | |||
getWidget().scrollBodyPanel.getElement().getStyle() | |||
.setPosition(Position.RELATIVE); | |||
} | |||
} | |||
@Override | |||
public VScrollTable getWidget() { | |||
return (VScrollTable) super.getWidget(); |
@@ -0,0 +1,84 @@ | |||
/* | |||
* 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.components.table; | |||
import com.vaadin.data.util.IndexedContainer; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUIWithLog; | |||
import com.vaadin.ui.Button; | |||
import com.vaadin.ui.Button.ClickEvent; | |||
import com.vaadin.ui.CustomComponent; | |||
import com.vaadin.ui.FormLayout; | |||
import com.vaadin.ui.Label; | |||
import com.vaadin.ui.Table; | |||
public class TableParentEnabledStateChange extends AbstractTestUIWithLog { | |||
private Button toggle; | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
addComponent(new Label( | |||
"Toggling the enabled state of the custom component will break the selectability of the row in the table. ")); | |||
final MyCustomComponent customComponent = new MyCustomComponent(); | |||
toggle = new Button("Toggle enabled state ; " | |||
+ customComponent.isEnabled()); | |||
toggle.addClickListener(new Button.ClickListener() { | |||
@Override | |||
public void buttonClick(ClickEvent event) { | |||
customComponent.setEnabled(!customComponent.isEnabled()); | |||
toggle.setCaption("Toggle enabled state ; " | |||
+ customComponent.isEnabled()); | |||
} | |||
}); | |||
addComponent(toggle); | |||
addComponent(customComponent); | |||
} | |||
class MyCustomComponent extends CustomComponent { | |||
private static final long serialVersionUID = 1L; | |||
private FormLayout root; | |||
private Table table; | |||
private Button toggle; | |||
public MyCustomComponent() { | |||
root = new FormLayout(); | |||
setCompositionRoot(root); | |||
setWidth("300px"); | |||
setHeight("300px"); | |||
table = new Table(); | |||
table.setWidth("200px"); | |||
table.setHeight("150px"); | |||
table.setSelectable(true); | |||
IndexedContainer container = new IndexedContainer(); | |||
container.addContainerProperty("name", String.class, | |||
"Select this item"); | |||
container.addItem(1); | |||
table.setContainerDataSource(container); | |||
root.addComponent(table); | |||
} | |||
} | |||
} |
@@ -0,0 +1,55 @@ | |||
/* | |||
* 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.components.table; | |||
import org.junit.Assert; | |||
import org.junit.Test; | |||
import com.vaadin.testbench.elements.ButtonElement; | |||
import com.vaadin.testbench.elements.TableElement; | |||
import com.vaadin.testbench.elements.TableRowElement; | |||
import com.vaadin.tests.tb3.SingleBrowserTest; | |||
public class TableParentEnabledStateChangeTest extends SingleBrowserTest { | |||
@Test | |||
public void tableEnabledShouldFollowParent() { | |||
openTestURL(); | |||
TableElement table = $(TableElement.class).first(); | |||
TableRowElement row = table.getRow(0); | |||
ButtonElement button = $(ButtonElement.class).first(); | |||
row.click(); | |||
Assert.assertTrue(isSelected(row)); | |||
// Disable | |||
button.click(); | |||
Assert.assertTrue(isSelected(row)); | |||
row.click(); // Should have no effect | |||
Assert.assertTrue(isSelected(row)); | |||
// Enable | |||
button.click(); | |||
Assert.assertTrue(isSelected(row)); | |||
row.click(); // Should deselect | |||
Assert.assertFalse(isSelected(row)); | |||
} | |||
private boolean isSelected(TableRowElement row) { | |||
return hasCssClass(row, "v-selected"); | |||
} | |||
} |