| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation |
| */ |
| |
| package org.eclipse.osbp.vaadin.addons.absolutelayout; |
| |
| import javax.servlet.annotation.WebServlet; |
| |
| import com.vaadin.annotations.Theme; |
| import com.vaadin.annotations.VaadinServletConfiguration; |
| import com.vaadin.data.Property; |
| import com.vaadin.server.VaadinRequest; |
| import com.vaadin.server.VaadinServlet; |
| import com.vaadin.ui.AbsoluteLayout.ComponentPosition; |
| import com.vaadin.ui.Button; |
| import com.vaadin.ui.CheckBox; |
| import com.vaadin.ui.Component; |
| import com.vaadin.ui.HorizontalLayout; |
| import com.vaadin.ui.Panel; |
| import com.vaadin.ui.TextField; |
| import com.vaadin.ui.UI; |
| import com.vaadin.ui.VerticalLayout; |
| |
| import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode; |
| import fi.jasoft.dragdroplayouts.drophandlers.DefaultAbsoluteLayoutDropHandler; |
| |
| /** |
| * The Class AbsoluteLayoutUI. |
| */ |
| @SuppressWarnings("serial") |
| @Theme("valo") |
| public class AbsoluteLayoutUI extends UI { |
| |
| /** |
| * The Class Servlet. |
| */ |
| @WebServlet(value = "/*", asyncSupported = true) |
| @VaadinServletConfiguration(productionMode = false, ui = AbsoluteLayoutUI.class, widgetset = "org.eclipse.osbp.vaadin.addons.absolutelayout.AbsoluteLayoutWidgetset") |
| public static class Servlet extends VaadinServlet { |
| } |
| |
| /** The layout1. */ |
| private AbsoluteLayout layout1; |
| |
| /** The layout2. */ |
| private AbsoluteLayout layout2; |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.vaadin.ui.UI#init(com.vaadin.server.VaadinRequest) |
| */ |
| @Override |
| protected void init(VaadinRequest request) { |
| |
| HorizontalLayout main = new HorizontalLayout(); |
| main.setSpacing(true); |
| main.setMargin(true); |
| main.setSizeFull(); |
| |
| VerticalLayout buttons = new VerticalLayout(); |
| main.addComponent(buttons); |
| |
| Button b = new Button("new", new Button.ClickListener() { |
| @Override |
| public void buttonClick(Button.ClickEvent event) { |
| TextField f = new TextField("Foo"); |
| f.addStyleName("bar"); |
| layout1.addComponent(f); |
| } |
| }); |
| buttons.addComponent(b); |
| |
| Button allNew = new Button("all new", new Button.ClickListener() { |
| @Override |
| public void buttonClick(Button.ClickEvent event) { |
| layout1.removeAllComponents(); |
| layout2.removeAllComponents(); |
| |
| createLayout(layout1); |
| createLayout(layout2); |
| } |
| }); |
| buttons.addComponent(allNew); |
| buttons.setWidth("120px"); |
| |
| Panel p1 = new Panel(); |
| p1.setSizeFull(); |
| main.addComponent(p1); |
| main.setExpandRatio(p1, 1.0f); |
| |
| HorizontalLayout h1 = new HorizontalLayout(); |
| h1.setSpacing(true); |
| h1.setMargin(true); |
| h1.setSizeFull(); |
| p1.setContent(h1); |
| |
| layout1 = new AbsoluteLayout(); |
| layout1.setSizeFull(); |
| h1.addComponent(layout1); |
| h1.setExpandRatio(layout1, 1.0f); |
| layout1.setDragMode(LayoutDragMode.CLONE); |
| layout1.setDropHandler(new DefaultAbsoluteLayoutDropHandler()); |
| layout1.setResizable(true); |
| layout1.setUseAlignments(true); |
| createLayout(layout1); |
| |
| Panel p2 = new Panel(); |
| p2.setSizeFull(); |
| main.addComponent(p2); |
| main.setExpandRatio(p2, 1.0f); |
| |
| HorizontalLayout h2 = new HorizontalLayout(); |
| h2.setSpacing(true); |
| h2.setMargin(true); |
| h2.setSizeFull(); |
| p2.setContent(h2); |
| |
| layout2 = new AbsoluteLayout(); |
| layout2.setSizeFull(); |
| h2.addComponent(layout2); |
| h2.setExpandRatio(layout2, 1.0f); |
| layout2.setDragMode(LayoutDragMode.CLONE); |
| layout2.setDropHandler(new DefaultAbsoluteLayoutDropHandler()); |
| layout2.setResizable(true); |
| layout2.setUseAlignments(true); |
| createLayout(layout2); |
| |
| setContent(main); |
| } |
| |
| /** |
| * Creates the layout. |
| * |
| * @param layout |
| * the main |
| * @return the absolute layout |
| */ |
| private AbsoluteLayout createLayout(AbsoluteLayout layout) { |
| |
| ComponentPosition pos = layout.new ComponentPosition(); |
| |
| final CheckBox resize = new CheckBox("resize"); |
| resize.setImmediate(true); |
| resize.setValue(true); |
| setSizeFull(resize); |
| resize.addValueChangeListener(new Property.ValueChangeListener() { |
| @Override |
| public void valueChange(Property.ValueChangeEvent event) { |
| layout.setResizable(resize.getValue()); |
| } |
| }); |
| pos.setLeft(30f, Unit.PIXELS); |
| pos.setTop(30f, Unit.PIXELS); |
| layout.addComponent(resize, pos.getCSSString()); |
| |
| final CheckBox drag = new CheckBox("drag"); |
| drag.setImmediate(true); |
| drag.setValue(true); |
| setSizeFull(drag); |
| drag.addValueChangeListener(new Property.ValueChangeListener() { |
| @Override |
| public void valueChange(Property.ValueChangeEvent event) { |
| if (drag.getValue()) { |
| layout.setDragMode(LayoutDragMode.CLONE); |
| } else { |
| layout.setDragMode(LayoutDragMode.NONE); |
| } |
| } |
| }); |
| pos.setLeft(130f, Unit.PIXELS); |
| pos.setTop(30f, Unit.PIXELS); |
| layout.addComponent(drag, pos.getCSSString()); |
| |
| final CheckBox alignments = new CheckBox("alignments"); |
| alignments.setImmediate(true); |
| alignments.setValue(true); |
| setSizeFull(alignments); |
| alignments.addValueChangeListener(new Property.ValueChangeListener() { |
| @Override |
| public void valueChange(Property.ValueChangeEvent event) { |
| layout.setUseAlignments(alignments.getValue()); |
| } |
| }); |
| pos.setLeft(230f, Unit.PIXELS); |
| pos.setTop(30f, Unit.PIXELS); |
| layout.addComponent(alignments, pos.getCSSString()); |
| |
| TextField text = new TextField("Type me"); |
| pos.setLeft(120f, Unit.PIXELS); |
| pos.setTop(200f, Unit.PIXELS); |
| setSizeFull(text); |
| layout.addComponent(text, pos.getCSSString()); |
| |
| Button button2 = new Button("Click Me2"); |
| pos.setLeft(300f, Unit.PIXELS); |
| pos.setTop(300f, Unit.PIXELS); |
| setSizeFull(button2); |
| layout.addComponent(button2, pos.getCSSString()); |
| |
| CheckBox checkbox = new CheckBox("Check me"); |
| pos.setLeft(470f, Unit.PIXELS); |
| pos.setTop(390f, Unit.PIXELS); |
| setSizeFull(checkbox); |
| layout.addComponent(checkbox, pos.getCSSString()); |
| |
| return layout; |
| } |
| |
| /** |
| * Sets the size full. |
| * |
| * @param resize |
| * the new size full |
| */ |
| private void setSizeFull(final Component resize) { |
| // resize.setSizeFull(); |
| } |
| |
| } |