display: block;
}
+ .#{$primaryStyleName}.v-disabled:focus .#{$primaryStyleName}-cell-focused:before {
+ // Disabled Grid should not show cell focus outline
+ display: none;
+ }
+
// Editor
.#{$primaryStyleName}-editor {
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.HasEnabled;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.ResizeComposite;
import com.google.gwt.user.client.ui.Widget;
* @author Vaadin Ltd
*/
public class Grid<T> extends ResizeComposite implements
- HasSelectionHandlers<T>, SubPartAware, DeferredWorker, HasWidgets {
+ HasSelectionHandlers<T>, SubPartAware, DeferredWorker, HasWidgets,
+ HasEnabled {
/**
* Enum describing different sections of Grid.
*/
private final AutoColumnWidthsRecalculator autoColumnWidthsRecalculator = new AutoColumnWidthsRecalculator();
+ private boolean enabled = true;
+
/**
* Enumeration for easy setting of selection mode.
*/
});
}
+ @Override
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ getElement().setTabIndex(enabled ? 0 : -1);
+ getEscalator().setScrollLocked(Direction.VERTICAL, !enabled);
+ getEscalator().setScrollLocked(Direction.HORIZONTAL, !enabled);
+ }
+
@Override
public void setStylePrimaryName(String style) {
super.setStylePrimaryName(style);
@Override
public void onBrowserEvent(Event event) {
+ if (!isEnabled()) {
+ return;
+ }
+
EventTarget target = event.getEventTarget();
if (!Element.is(target)) {
--- /dev/null
+/*
+ * 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.grid.basicfeatures.client;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.testbench.elements.GridElement.GridRowElement;
+import com.vaadin.tests.components.grid.basicfeatures.GridBasicFeaturesTest;
+
+public class DisabledGridClientTest extends GridBasicFeaturesTest {
+
+ @Before
+ public void setUp() {
+ openTestURL();
+ selectMenuPath("Component", "State", "Enabled");
+ }
+
+ @Test
+ public void testSelection() {
+ selectMenuPath("Component", "State", "Selection mode", "single");
+
+ GridRowElement row = getGridElement().getRow(0);
+ row.click();
+ assertFalse("disabled row should not be selected", row.isSelected());
+
+ }
+
+ @Test
+ public void testEditorOpening() {
+ selectMenuPath("Component", "Editor", "Enabled");
+
+ GridRowElement row = getGridElement().getRow(0);
+ row.click();
+ assertNull("Editor should not open", getEditor());
+
+ new Actions(getDriver()).sendKeys(Keys.ENTER).perform();
+ assertNull("Editor should not open", getEditor());
+ }
+}
--- /dev/null
+/*
+ * 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.grid.basicfeatures.server;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.testbench.elements.GridElement.GridRowElement;
+import com.vaadin.tests.components.grid.basicfeatures.GridBasicFeaturesTest;
+
+public class DisabledGridTest extends GridBasicFeaturesTest {
+
+ @Before
+ public void setUp() {
+ openTestURL();
+ selectMenuPath("Component", "State", "Enabled");
+ }
+
+ @Test
+ public void testSelection() {
+ selectMenuPath("Component", "State", "Selection mode", "single");
+
+ GridRowElement row = getGridElement().getRow(0);
+ row.click();
+ assertFalse("disabled row should not be selected", row.isSelected());
+
+ }
+
+ @Test
+ public void testEditorOpening() {
+ selectMenuPath("Component", "Editor", "Enabled");
+
+ GridRowElement row = getGridElement().getRow(0);
+ row.click();
+ assertNull("Editor should not open", getEditor());
+
+ new Actions(getDriver()).sendKeys(Keys.ENTER).perform();
+ assertNull("Editor should not open", getEditor());
+ }
+}