easylayout
Completely unorthodox but extremely productive API wrappers for Vaadin Layouts
A completely unorthodox but extremely productive API wrappers for Vaadin Layouts
Currently, it only supports Horizontal and Vertical Layouts. Ideally, the unorthodoxy way of working may catch up in other layouts too :)
Using the addon for Vertial and Horizontal layouts
import net.hdavid.easylayout.L.*;
// ...
TextField name;
TextField lastName;
Button save;
Button cancel;
// ...
val vl = ve(name, lastName, ho(save, cancel));
// that is it!
A more complex full size view
Button newb = new Button("New");
Button modb = new Button("Modify");
Button delb = new Button("Delete");
Grid grid = new Grid(
new BeanItemContainer(Arrays.asList(
new PersonDTO("David Hofmann",
new Date(1986, 07, 29),
30),
new PersonDTO("Vaadin Is Awesome!",
new Date(),
10))));
protected void init(VaadinRequest request) {
VerticalLayout vl =
ve(_FULL_SIZE, _MARGIN, // 1
ho(_FULL_WIDTH, // 2
_EXPANDER, // 3
delb, ValoTheme.BUTTON_DANGER, // 4
modb, // 5
newb, ValoTheme.BUTTON_PRIMARY),// 6
grid, _FULL_SIZE, _EXPAND); // 7
setContent(vl); // hard :D ?
}
- creating a vertical layout with full size and margin
- it's first component is a horizontal layout of full width
- the first horizontal layout component is an expander component
- the second one is the delete button and a css style is added to it
- third component is the modify button
- forth component is the new button with a css style added to it
- second component of the vertical layout is the grid with its full size and expand ratio to 1f
##FAQ
###Are you completely crazy and lost all your human traits and your oath to code hygiene?
Yeap! It will take me more time to explain you how much it helped me, though. But this "guide" will be updated if you don't get it yet :)
###This code is stupid! Are you aware of static evil and that your code is crappy and totally NOT OOP?
Yes! But for this particular case, it is safe, though, and you'll be okay using it "if" you like brevity in your H/V Layouts.
For rule explanations see the github page for more details.
Sample code
import static net.hdavid.easylayout.L.*; @Theme("valo") public class MYLayoutUI extends UI { static class MyLayout extends VerticalLayout { TextField search = new TextField("Search"); Grid grid = new Grid(new BeanItemContainer<PersonDTO>(Arrays.asList( new PersonDTO("David Hofmann", new Date(1986, 07, 29), 30), new PersonDTO("Vaadin Is Awesome!", new Date(), 10) ))); public MyLayout () { ve(this, _MARGIN, _FULL_SIZE, search, Alignment.TOP_LEFT, grid, _FULL_SIZE, _EXPAND); } } @Override protected void init(VaadinRequest request) { setContent(new MyLayout()); } }
import static net.hdavid.easylayout.L.*; @Theme("valo") public class SimpleLayoutTestUI extends UI { Button newb = new Button("New"); Button modb = new Button("Modify"); Button delb = new Button("Delete"); Grid grid = new Grid(new BeanItemContainer<PersonDTO>(Arrays.asList( new PersonDTO("David Hofmann", new Date(1986, 07, 29), 30), new PersonDTO("Vaadin Is Awesome!", new Date(), 10) ))); @Override protected void init(VaadinRequest request) { VerticalLayout vl = ve(_FULL_SIZE, _MARGIN, ho(_FULL_WIDTH, _EXPANDER, delb, ValoTheme.BUTTON_DANGER, modb, newb, ValoTheme.BUTTON_PRIMARY), grid, _FULL_SIZE, _EXPAND); setContent(vl); } }
class MyEditWindow extends Window { Button checkout = new Button("Checkout"); Button viewContacts = new Button("View Contacts"); Button download = new Button("Download"); Button viewRecords = new Button("View Records"); Button interested = new Button("Interested"); Button delete = new Button("Delete"); Button save = new Button("Save"); TextArea textArea1 = new TextArea(); TextArea textArea2 = new TextArea(); OptionGroup type = new OptionGroup("", Arrays.asList("D2D", "Business", "Phone", "Letter")); TextField number = new TextField(""); TextField description = new TextField(""); MyEditWindow() { setModal(true); center(); setCaption("Edit Territory"); setWidth("70%"); setHeight("80%"); // setSizeFull(); setContent( ve(_NOOP, _FULL_SIZE, _MARGIN, ho(_FULL_WIDTH, number, _FULL_WIDTH, 2f, description, _FULL_WIDTH, 8f), type, ValoTheme.OPTIONGROUP_HORIZONTAL, ho(_NOOP, _FULL_SIZE, ve(_FULL_SIZE, textArea1,_FULL_SIZE, _EXPAND, textArea2, _FULL_SIZE, _EXPAND), 8f, ve(_FULL_SIZE, //Alignment.MIDDLE_CENTER, checkout, _FULL_WIDTH, ValoTheme.BUTTON_FRIENDLY, viewContacts, _FULL_WIDTH, download, _FULL_WIDTH, viewRecords, _FULL_WIDTH, interested, _FULL_WIDTH), 2f ), _EXPAND, ho(_FULL_WIDTH, save, _FULL_WIDTH, 8f, ValoTheme.BUTTON_PRIMARY, delete, _FULL_WIDTH, 2f, ValoTheme.BUTTON_DANGER)) ); } }
Links
Compatibility
Was this helpful? Need more help?
Leave a comment or a question below. You can also join
the chat on Discord or
ask questions on StackOverflow.
Version
Initial release to gather feedback
- Released
- 2016-10-20
- Maturity
- BETA
- License
- Apache License 2.0
Compatibility
- Framework
- Vaadin 7.0+
- Vaadin 8.0+
- Browser
- Browser Independent
easylayout - Vaadin Add-on Directory
Completely unorthodox but extremely productive API wrappers for Vaadin LayoutsSource Code
easylayout version 1.0
Initial release to gather feedback