Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.gpstouch.account; import com.vaadin.event.FieldEvents; import com.vaadin.event.SelectionEvent; import com.vaadin.event.SelectionEvent.SelectionListener; import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.CssLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.ValoTheme; import java.util.Collection; import org.gpstouch.gts.backend.model.Account; import org.gpstouch.samples.ResetButtonForTextField; /** * * @author mihai */ public class AccountGridView extends CssLayout implements View { public static String VIEW_NAME = "Account"; private AccountGrid grid; private final AccountGridLogic viewLogic = new AccountGridLogic(this); private Button bnewAccount; public AccountGridView() { setSizeFull(); addStyleName("crud-view"); HorizontalLayout topLayout = createTopBar(); grid = new AccountGrid(); grid.addSelectionListener(new SelectionListener() { @Override public void select(SelectionEvent event) { viewLogic.rowSelected(grid.getSelectedRow()); } }); VerticalLayout barAndGridLayout = new VerticalLayout(); barAndGridLayout.addComponent(topLayout); barAndGridLayout.addComponent(grid); barAndGridLayout.setMargin(true); barAndGridLayout.setSpacing(true); barAndGridLayout.setSizeFull(); barAndGridLayout.setExpandRatio(grid, 1); barAndGridLayout.setStyleName("crud-main-layout"); addComponent(barAndGridLayout); viewLogic.init(); } @Override public void enter(ViewChangeListener.ViewChangeEvent event) { viewLogic.enter(event.getParameters()); } public HorizontalLayout createTopBar() { TextField filter = new TextField(); filter.setStyleName("filter-textfield"); filter.setInputPrompt("Filter"); ResetButtonForTextField.extend(filter); filter.setImmediate(true); filter.addTextChangeListener(new FieldEvents.TextChangeListener() { @Override public void textChange(FieldEvents.TextChangeEvent event) { grid.setFilter(event.getText()); } }); bnewAccount = new Button("New Account"); bnewAccount.addStyleName(ValoTheme.BUTTON_PRIMARY); bnewAccount.setIcon(FontAwesome.PLUS_CIRCLE); bnewAccount.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { viewLogic.newAccount(); } }); HorizontalLayout topLayout = new HorizontalLayout(); topLayout.setSpacing(true); topLayout.setWidth("100%"); topLayout.addComponent(filter); topLayout.addComponent(bnewAccount); topLayout.setComponentAlignment(filter, Alignment.MIDDLE_LEFT); topLayout.setExpandRatio(filter, 1); topLayout.setStyleName("top-bar"); return topLayout; } public void showAccounts(Collection<Account> accounts) { grid.setAccounts(accounts); } }