blob: 24a29c5bc704376a91ca4ccbca85e1f80a938ef2 [file] [log] [blame]
/**
*
* 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();
}
}