Переглянути джерело

Fixes Grid editor visibility inside TabSheet (#10557)

Fixes #10146
Fixes #10543
tags/8.4.0.alpha1
Piotr Wilkin 6 роки тому
джерело
коміт
fd4dedf921

+ 15
- 0
server/src/main/java/com/vaadin/ui/Grid.java Переглянути файл

} }
} }


@Override
public void setVisible(boolean visible) {
if (getEditor().isOpen() && !visible) {
getEditor().cancel();
}
super.setVisible(visible);
}

@Override
public void detach() {
if (getEditor().isOpen()) {
getEditor().cancel();
}
super.detach();
}
} }

+ 5
- 0
server/src/main/java/com/vaadin/ui/TabSheet.java Переглянути файл

import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.Objects;


import org.jsoup.nodes.Attributes; import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
*/ */
private void setSelected(Component component) { private void setSelected(Component component) {
Tab tab = tabs.get(selected); Tab tab = tabs.get(selected);
if (tab != null && !Objects.equals(tab.getComponent(), component) && tab.getComponent() != null && tab.getComponent().isAttached()) {
tab.getComponent().detach();
tab.getComponent().attach(); // ugly hack
}


selected = component; selected = component;
// Repaint of the selected component is needed as only the selected // Repaint of the selected component is needed as only the selected

+ 2
- 0
uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java Переглянути файл



editorMenu.addItem("Save", i -> grid.getEditor().save()); editorMenu.addItem("Save", i -> grid.getEditor().save());
editorMenu.addItem("Cancel edit", i -> grid.getEditor().cancel()); editorMenu.addItem("Cancel edit", i -> grid.getEditor().cancel());
editorMenu.addItem("Hide grid", i -> grid.setVisible(false));
editorMenu.addItem("Show grid", i -> grid.setVisible(true));


Stream.of(0, 5, 100).forEach(i -> editorMenu.addItem("Edit row " + i, Stream.of(0, 5, 100).forEach(i -> editorMenu.addItem("Edit row " + i,
menuItem -> grid.getEditor().editRow(i))); menuItem -> grid.getEditor().editRow(i)));

+ 12
- 4
uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridEditorTest.java Переглянути файл

*/ */
package com.vaadin.tests.components.grid.basics; package com.vaadin.tests.components.grid.basics;


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Ignore;
import com.vaadin.testbench.elements.GridElement.GridCellElement; import com.vaadin.testbench.elements.GridElement.GridCellElement;
import com.vaadin.testbench.elements.GridElement.GridEditorElement; import com.vaadin.testbench.elements.GridElement.GridEditorElement;


import static org.junit.Assert.*;

public abstract class GridEditorTest extends GridBasicsTest { public abstract class GridEditorTest extends GridBasicsTest {


protected static final org.openqa.selenium.By BY_EDITOR_CANCEL = By protected static final org.openqa.selenium.By BY_EDITOR_CANCEL = By
assertEditorClosed(); assertEditorClosed();
} }


public void testEditorReopenAfterHide() {
editRow(5);
assertEditorOpen();
selectMenuPath("Component", "Editor", "Hide grid");
selectMenuPath("Component", "Editor", "Show grid");
assertEditorClosed();
editRow(5);
assertEditorOpen();
}

@Test @Test
public void testKeyboardOpeningClosing() { public void testKeyboardOpeningClosing() {



Завантаження…
Відмінити
Зберегти