package com.thingtrack.konekti.view.addon.ui; import java.io.Serializable; import org.vaadin.peter.buttongroup.ButtonGroup; import com.thingtrack.konekti.view.addon.data.BindingSource; import com.thingtrack.konekti.view.addon.data.BindingSource.IndexChangeEvent; import com.thingtrack.konekti.view.addon.data.BindingSource.IndexChangeListener; import com.thingtrack.konekti.view.kernel.ui.layout.IViewContainer; import com.vaadin.annotations.AutoGenerated; import com.vaadin.terminal.ThemeResource; import com.vaadin.terminal.gwt.client.MouseEventDetails; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; import com.vaadin.ui.HorizontalLayout; @SuppressWarnings("serial") public class NavigationToolbar extends AbstractToolbar { @AutoGenerated private HorizontalLayout toolbarLayout; @AutoGenerated private Button btnRefreshRegister; @AutoGenerated private Button btnUpRegister; @AutoGenerated private Button btnDownRegister; @AutoGenerated private Button btnLastRegister; @AutoGenerated private Button btnNextRegister; @AutoGenerated private Button lblCountRegister; @AutoGenerated private Button btnPreviousRegister; @AutoGenerated private Button btnFirstRegister; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ private Object register; private int position = 0; private boolean navigationButtons; // navigator button listeners private ClickFirstButtonListener listenerFirstButton = null; private ClickPreviousButtonListener listenerPreviousButton = null; private ClickNextButtonListener listenerNextButton = null; private ClickLastButtonListener listenerLastButton = null; private ClickDownButtonListener listenerDownButton = null; private ClickUpButtonListener listenerUpButton = null; private ClickRefreshButtonListener listenerRefreshButton = null; private IViewContainer viewContainer; /** * The constructor should first build the main layout, set the * composition root and then do any custom initialization. * * The constructor will not be automatically regenerated by the * visual editor. */ public NavigationToolbar(int position, final BindingSource<?> bindingSource, IViewContainer viewContainer) { super(position, bindingSource); buildMainLayout(); // TODO add user code here this.viewContainer = viewContainer; btnFirstRegister.setDescription("Primer Registro"); btnNextRegister.setDescription("Siguiente Registro"); btnPreviousRegister.setDescription("Anterior Registro"); btnLastRegister.setDescription("Ăšltimo Registro"); btnRefreshRegister.setDescription("Refrescar Registros"); btnDownRegister.setDescription("Registros Detalle"); btnUpRegister.setDescription("Registros Maestro"); setBindingSource(bindingSource); btnFirstRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { // set status register register = bindingSource.firstItem(); int index = bindingSource.getIndex(); lblCountRegister.setCaption(bindingSource.getIndex() + "/" + bindingSource.size()); btnFirstRegister.setEnabled(false); btnPreviousRegister.setEnabled(false); btnNextRegister.setEnabled(true); btnLastRegister.setEnabled(true); // fire event if (listenerFirstButton != null) listenerFirstButton.firstButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, index)); } }); // set previous button listener btnPreviousRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { // set status register register = bindingSource.prevItem(); int index = bindingSource.getIndex(); lblCountRegister.setCaption(index + "/" + bindingSource.size()); if (index == 1) { btnFirstRegister.setEnabled(false); btnPreviousRegister.setEnabled(false); btnNextRegister.setEnabled(true); btnLastRegister.setEnabled(true); } else { btnFirstRegister.setEnabled(true); btnPreviousRegister.setEnabled(true); btnNextRegister.setEnabled(true); btnLastRegister.setEnabled(true); } // fire event if (listenerPreviousButton != null) listenerPreviousButton.previousButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, index)); } }); // set next button listener btnNextRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { // set status register register = bindingSource.nextItem(); int index = bindingSource.getIndex(); lblCountRegister.setCaption(index + "/" + bindingSource.size()); if (index == bindingSource.size()) { btnFirstRegister.setEnabled(true); btnPreviousRegister.setEnabled(true); btnNextRegister.setEnabled(false); btnLastRegister.setEnabled(false); } else { btnFirstRegister.setEnabled(true); btnPreviousRegister.setEnabled(true); btnNextRegister.setEnabled(true); btnLastRegister.setEnabled(true); } // fire event if (listenerNextButton != null) listenerNextButton.nextButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, index)); } }); // set last button listener btnLastRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { // set status register register = bindingSource.lastItem(); int index = bindingSource.getIndex(); lblCountRegister.setCaption(bindingSource.getIndex() + "/" + bindingSource.size()); btnFirstRegister.setEnabled(true); btnPreviousRegister.setEnabled(true); btnNextRegister.setEnabled(false); btnLastRegister.setEnabled(false); // fire event if (listenerLastButton != null) listenerLastButton.lastButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, index)); } }); btnDownRegister.addListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { // fire the index change if exist any register if (bindingSource.getItemIds().size() > 0) bindingSource.setItemId(this, true, bindingSource.getItemId()); // fire the app event if it's implemented if (listenerDownButton != null) listenerDownButton.downButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, 0)); } }); btnUpRegister.addListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { // fire the app event if it's implemented if (listenerUpButton != null) listenerUpButton.upButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, 0)); } }); btnRefreshRegister.addListener(new Button.ClickListener() { public void buttonClick(ClickEvent event) { if (listenerRefreshButton != null) listenerRefreshButton.refreshButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, register, 0)); } }); //setWidth("425px"); } @Override public int getPosition() { return position; } @Override public ComponentContainer getContent() { return this.toolbarLayout; } @Override public BindingSource<?> getBindingSource() { return this.bindingSource; } @Override public void setBindingSource(BindingSource<?> bindingSource) { this.bindingSource = bindingSource; // add change index binding source if (bindingSource != null) { bindingSource.addListenerToolBar((IndexChangeListener)this); // initialize binding source //bindingSource.Initialize(); } } @Override public void bindingSourceIndexChange(IndexChangeEvent event) { if (bindingSource != null) { lblCountRegister.setCaption(Integer.toString(event.getIndex() + 1) + "/" + bindingSource.size()); // set horizontal status navigation buttons if (event.getIndex() == -1) { btnFirstRegister.setEnabled(false); btnPreviousRegister.setEnabled(false); btnNextRegister.setEnabled(false); btnLastRegister.setEnabled(false); } else if (event.getIndex() == 0) { btnFirstRegister.setEnabled(false); btnPreviousRegister.setEnabled(false); btnNextRegister.setEnabled(true); btnLastRegister.setEnabled(true); } else if (event.getIndex() == bindingSource.size() - 1){ btnFirstRegister.setEnabled(true); btnPreviousRegister.setEnabled(true); btnNextRegister.setEnabled(false); btnLastRegister.setEnabled(false); } else { btnFirstRegister.setEnabled(true); btnPreviousRegister.setEnabled(true); btnNextRegister.setEnabled(true); btnLastRegister.setEnabled(true); } // TODO: check the slide level // set level status navigation buttons if (viewContainer != null && bindingSource.getLevel() == viewContainer.getSliderView().getViewCount() - 1) { btnDownRegister.setEnabled(false); btnUpRegister.setEnabled(true); } else if (bindingSource.getLevel() == 0) { btnDownRegister.setEnabled(true); btnUpRegister.setEnabled(false); } else { btnDownRegister.setEnabled(true); btnUpRegister.setEnabled(true); } } } public boolean getNavigationButtons() { return this.navigationButtons; } public void setNavigationButtons(boolean visible) { this.navigationButtons = visible; btnFirstRegister.setVisible(visible); btnPreviousRegister.setVisible(visible); btnNextRegister.setVisible(visible); btnLastRegister.setVisible(visible); lblCountRegister.setVisible(visible); } public void setDownButton(boolean visible) { this.btnDownRegister.setVisible(visible); } public boolean getDownButton() { return this.btnDownRegister.isVisible(); } public void setUpButton(boolean visible) { this.btnUpRegister.setVisible(visible); } public boolean getUpButton() { return this.btnUpRegister.isVisible(); } public void addListenerFirstButton(ClickFirstButtonListener listener) { this.listenerFirstButton = listener; } public void addListenerPreviousButton(ClickPreviousButtonListener listener) { this.listenerPreviousButton = listener; } public void addListenerNextButton(ClickNextButtonListener listener) { this.listenerNextButton = listener; } public void addListenerLastButton(ClickLastButtonListener listener) { this.listenerLastButton = listener; } public void addListenerDownButton(ClickDownButtonListener listener) { this.listenerDownButton = listener; } public void addListenerUpButton(ClickUpButtonListener listener) { this.listenerUpButton = listener; } public void addListenerRefreshButton(ClickRefreshButtonListener listener) { this.listenerRefreshButton = listener; } // navigation listener toolbar public interface ClickFirstButtonListener extends Serializable { public void firstButtonClick(ClickNavigationEvent event); } public interface ClickPreviousButtonListener extends Serializable { public void previousButtonClick(ClickNavigationEvent event); } public interface ClickNextButtonListener extends Serializable { public void nextButtonClick(ClickNavigationEvent event); } public interface ClickLastButtonListener extends Serializable { public void lastButtonClick(ClickNavigationEvent event); } public interface ClickDownButtonListener extends Serializable { public void downButtonClick(ClickNavigationEvent event); } public interface ClickUpButtonListener extends Serializable { public void upButtonClick(ClickNavigationEvent event); } public interface ClickRefreshButtonListener extends Serializable { public void refreshButtonClick(ClickNavigationEvent event); } public class ClickNavigationEvent extends ClickEvent { private int index; private Object register; public ClickNavigationEvent(Button button, Component source) { button.super(source); } public ClickNavigationEvent(Button button, Component source, MouseEventDetails details) { button.super(source, details); } public ClickNavigationEvent(Button button, Component source, MouseEventDetails details, Object register, int index) { button.super(source, details); this.index = index; this.register = register; } public int getIndex() { return this.index; } public Object getRegister() { return this.register; } } @AutoGenerated private void buildMainLayout() { // toolbarLayout toolbarLayout = buildToolbarLayout(); addComponent(toolbarLayout); } @AutoGenerated private HorizontalLayout buildToolbarLayout() { // common part: create layout toolbarLayout = new HorizontalLayout(); toolbarLayout.setImmediate(false); toolbarLayout.setSpacing(true); // btnFirstRegister ButtonGroup rowNav = new ButtonGroup(); toolbarLayout.addComponent(rowNav); btnFirstRegister = new Button(); btnFirstRegister .setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow-stop-180.png")); btnFirstRegister.setImmediate(true); btnFirstRegister.setWidth("-1px"); btnFirstRegister.setHeight("-1px"); rowNav.addButton(btnFirstRegister); // btnPreviousRegister btnPreviousRegister = new Button(); btnPreviousRegister.setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow-180.png")); btnPreviousRegister.setImmediate(true); btnPreviousRegister.setWidth("-1px"); btnPreviousRegister.setHeight("-1px"); rowNav.addButton(btnPreviousRegister); // lblCountRegister lblCountRegister = new Button(); lblCountRegister.setImmediate(false); lblCountRegister.setCaption("1/1"); lblCountRegister.setStyleName("counter"); lblCountRegister.setEnabled(false); rowNav.addButton(lblCountRegister); // btnNextRegister btnNextRegister = new Button(); btnNextRegister.setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow.png")); btnNextRegister.setImmediate(true); btnNextRegister.setWidth("-1px"); btnNextRegister.setHeight("-1px"); rowNav.addButton(btnNextRegister); // btnLastRegister btnLastRegister = new Button(); btnLastRegister.setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow-stop.png")); btnLastRegister.setImmediate(true); btnLastRegister.setWidth("-1px"); btnLastRegister.setHeight("-1px"); rowNav.addButton(btnLastRegister); // btnDownRegister ButtonGroup masterDetailNav = new ButtonGroup(); toolbarLayout.addComponent(masterDetailNav); btnDownRegister = new Button(); btnDownRegister.setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow-270.png")); btnDownRegister.setImmediate(true); btnDownRegister.setWidth("-1px"); btnDownRegister.setHeight("-1px"); masterDetailNav.addButton(btnDownRegister); // btnUpRegister btnUpRegister = new Button(); btnUpRegister.setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow-090.png")); btnUpRegister.setImmediate(true); btnUpRegister.setWidth("-1px"); btnUpRegister.setHeight("-1px"); masterDetailNav.addButton(btnUpRegister); // btnRefreshRegister btnRefreshRegister = new Button(); btnRefreshRegister .setIcon(new ThemeResource( "../konekti/images/icons/navigation-toolbar/arrow-circle-double.png")); btnRefreshRegister.setImmediate(true); btnRefreshRegister.setWidth("-1px"); btnRefreshRegister.setHeight("-1px"); toolbarLayout.addComponent(btnRefreshRegister); toolbarLayout.setExpandRatio(btnRefreshRegister, 1.0f); return toolbarLayout; } @Override protected void updateLabels() { btnFirstRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnFirstRegister.description")); btnNextRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnFirstRegister.description")); btnPreviousRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnPreviousRegister.description")); btnLastRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnLastRegister.description")); btnRefreshRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnRefreshRegister.description")); btnDownRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnDownRegister.description")); btnUpRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.NavigationToolbar.btnUpRegister.description")); } }