package com.vaadin.tests.components.window; import com.vaadin.data.Item; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.server.VaadinRequest; import com.vaadin.shared.ui.window.WindowMode; import com.vaadin.tests.components.AbstractTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; 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.CloseEvent; import com.vaadin.ui.Window.CloseListener; import com.vaadin.ui.Window.WindowModeChangeEvent; import com.vaadin.ui.Window.WindowModeChangeListener; public class WindowMaximizeRestoreTest extends AbstractTestUI { Button.ClickListener addListener = new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { addWindow(createNewWindow()); } }; @Override protected void setup(VaadinRequest request) { Button addButton = new Button("Add new Window"); addButton.addListener(addListener); addComponent(addButton); addWindowAgain = new ComboBox("Add Window Again"); addWindowAgain.setBuffered(false); addWindowAgain.setImmediate(true); addWindowAgain.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { Object value = event.getProperty().getValue(); if (value != null && value instanceof Window) { UI.getCurrent().addWindow((Window) value); addWindowAgain.removeItem(value); } } }); addComponent(addWindowAgain); addWindow(createNewWindow()); } private int windowCount = 0; private ComboBox addWindowAgain; 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"); Button.ClickListener listener = new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { if (w.getWindowMode() == WindowMode.MAXIMIZED) { w.setWindowMode(WindowMode.NORMAL); maximize.setCaption("Maximize"); } else { w.setWindowMode(WindowMode.MAXIMIZED); maximize.setCaption("Restore"); } } }; maximize.addClickListener(listener); ((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(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { w.setResizable(resizeable.getValue()); } }); ((ComponentContainer) w.getContent()).addComponent(resizeable); final CheckBox closeable = new CheckBox("Closeable"); closeable.setValue(w.isClosable()); closeable.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { w.setClosable(closeable.getValue()); } }); ((ComponentContainer) w.getContent()).addComponent(closeable); NativeButton contentFull = new NativeButton("Set Content Size Full", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { w.getContent().setSizeFull(); } }); contentFull.setWidth("100%"); ((ComponentContainer) w.getContent()).addComponent(contentFull); NativeButton center = new NativeButton("Center"); center.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { w.center(); } }); ((ComponentContainer) w.getContent()).addComponent(center); w.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { Item item = addWindowAgain.addItem(w); addWindowAgain.setItemCaption(w, "Window " + w.getData().toString()); } }); 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."; } }