package com.itmill.dev.addressbooktutorial; import com.itmill.dev.addressbooktutorial.ui.HelpWindow; import com.itmill.dev.addressbooktutorial.ui.ListView; import com.itmill.dev.addressbooktutorial.ui.NavigationTree; import com.itmill.dev.addressbooktutorial.ui.PersonForm; import com.itmill.dev.addressbooktutorial.ui.PersonList; import com.itmill.dev.addressbooktutorial.ui.SharingOptions; import com.itmill.toolkit.Application; import com.itmill.toolkit.ui.Button; import com.itmill.toolkit.ui.Component; import com.itmill.toolkit.ui.HorizontalLayout; import com.itmill.toolkit.ui.SplitPanel; import com.itmill.toolkit.ui.VerticalLayout; import com.itmill.toolkit.ui.Window; public class AddressBookApplication extends Application { private NavigationTree tree = new NavigationTree(); private Button newContact = new Button("Add contact"); private Button search = new Button("Search"); private Button share = new Button("Share"); private Button help = new Button("Help"); private SplitPanel horizontalSplit = new SplitPanel( SplitPanel.ORIENTATION_HORIZONTAL); // Lazyly created ui references private ListView listView = null; private PersonList personList = null; private PersonForm personForm = null; private HelpWindow helpWindow = null; private SharingOptions sharingOptions = null; @Override public void init() { buildMainLayout(); setMainComponent(getListView()); // uncomment following lines to test other views and windows // getMainWindow().addWindow(getHelpWindow()); // getMainWindow().addWindow(getSharingOptions()); } private void buildMainLayout() { setMainWindow(new Window("Address Book Demo application")); VerticalLayout layout = new VerticalLayout(); layout.setSizeFull(); layout.addComponent(createToolbar()); layout.addComponent(horizontalSplit); layout.setExpandRatio(horizontalSplit, 1); horizontalSplit.setSplitPosition(200, SplitPanel.UNITS_PIXELS); horizontalSplit.setFirstComponent(tree); getMainWindow().setLayout(layout); } private HorizontalLayout createToolbar() { HorizontalLayout lo = new HorizontalLayout(); lo.addComponent(newContact); lo.addComponent(search); lo.addComponent(share); lo.addComponent(help); return lo; } private void setMainComponent(Component c) { horizontalSplit.setSecondComponent(c); } /* * View getters exist so we can lazily generate the views, resulting in * faster application startup time. */ private ListView getListView() { if (listView == null) { personList = new PersonList(); personForm = new PersonForm(); listView = new ListView(personList, personForm); } return listView; } private HelpWindow getHelpWindow() { if (helpWindow == null) { helpWindow = new HelpWindow(); } return helpWindow; } private SharingOptions getSharingOptions() { if (sharingOptions == null) { sharingOptions = new SharingOptions(); } return sharingOptions; } }