package com.vaadin.tests.components.window; import java.util.ArrayList; import java.util.List; import com.vaadin.server.VaadinRequest; import com.vaadin.shared.ui.window.WindowMode; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.ComponentContainer; import com.vaadin.ui.NativeButton; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; import com.vaadin.ui.Window.WindowModeChangeEvent; import com.vaadin.ui.Window.WindowModeChangeListener; public class WindowMaximizeRestoreTest extends AbstractReindeerTestUI { @Override protected void setup(VaadinRequest request) { Button addButton = new Button("Add new Window"); addButton.addClickListener(event -> { addWindow(createNewWindow()); addWindowAgain.setValue(null); }); addComponent(addButton); addWindowAgain = new ComboBox<>("Add Window Again"); addWindowAgain .setItemCaptionGenerator(window -> window.getData().toString()); addWindowAgain.addValueChangeListener(event -> { Object value = event.getValue(); if (value != null && value instanceof Window) { UI.getCurrent().addWindow((Window) value); windowList.remove(value); addWindowAgain.setItems(windowList); } }); addComponent(addWindowAgain); addWindow(createNewWindow()); } private int windowCount = 0; private ComboBox<Window> addWindowAgain; private List<Window> windowList = new ArrayList<>(); private Window createNewWindow() { final Window w = new Window("Window " + (++windowCount)); final VerticalLayout content = new VerticalLayout(); w.setContent(content); w.setData(windowCount); w.setWidth("200px"); w.setHeight("300px"); w.setPositionX(200); w.setPositionY(200); final NativeButton maximize = new NativeButton("Maximize"); maximize.addClickListener(event -> { if (w.getWindowMode() == WindowMode.MAXIMIZED) { w.setWindowMode(WindowMode.NORMAL); maximize.setCaption("Maximize"); } else { w.setWindowMode(WindowMode.MAXIMIZED); maximize.setCaption("Restore"); } }); ((ComponentContainer) w.getContent()).addComponent(maximize); w.addWindowModeChangeListener(new WindowModeChangeListener() { @Override public void windowModeChanged(WindowModeChangeEvent event) { WindowMode state = (event.getWindow().getWindowMode()); if (state == WindowMode.NORMAL) { w.setCaption("Window " + w.getData() + " Normal"); maximize.setCaption("Maximize"); } else if (state == WindowMode.MAXIMIZED) { w.setCaption("Window " + w.getData() + " Maximized"); maximize.setCaption("Restore"); } } }); final CheckBox resizeable = new CheckBox("Resizeable"); resizeable.setValue(w.isResizable()); resizeable.addValueChangeListener( event -> w.setResizable(resizeable.getValue())); ((ComponentContainer) w.getContent()).addComponent(resizeable); final CheckBox closeable = new CheckBox("Closeable"); closeable.setValue(w.isClosable()); closeable.addValueChangeListener( event -> w.setClosable(closeable.getValue())); ((ComponentContainer) w.getContent()).addComponent(closeable); NativeButton contentFull = new NativeButton("Set Content Size Full", event -> w.getContent().setSizeFull()); contentFull.setWidth("100%"); ((ComponentContainer) w.getContent()).addComponent(contentFull); NativeButton center = new NativeButton("Center"); center.addClickListener(event -> w.center()); ((ComponentContainer) w.getContent()).addComponent(center); w.addCloseListener(e -> { windowList.add(w); addWindowAgain.setItems(windowList); }); return w; } @Override protected Integer getTicketNumber() { return 3400; } @Override protected String getTestDescription() { return "Tests the default maximize & restore funtionality. Max. makes window 100%*100% and pos(0, 0), and restore returns it to the values that are set in windows state."; } }