package com.thingtrack.konekti.view.module.report.addon; import java.io.Serializable; import org.vaadin.peter.buttongroup.ButtonGroup; import com.thingtrack.konekti.domain.Report; 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.addon.ui.AbstractToolbar; 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.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; import com.vaadin.ui.HorizontalLayout; @SuppressWarnings("serial") public class ReportToolbar extends AbstractToolbar { @AutoGenerated private HorizontalLayout toolbarLayout; @AutoGenerated private Button btnExecuteReport; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ private Object register; private int position = 0; // navigator button listeners private ClickExecuteReportButtonListener listenerExecuteReportButton = null; /** * 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 ReportToolbar(int position, final BindingSource<?> bindingSource) { super(position, bindingSource); buildMainLayout(); //setCompositionRoot(mainLayout); // TODO add user code here this.position = position; setBindingSource(bindingSource); btnExecuteReport.setDescription("Ejecutar Informe"); // set reject button listener btnExecuteReport.addListener(new ClickListener() { public void buttonClick(ClickEvent event) { int index = bindingSource.getIndex(); if (index == 0) return; Report reportSelected = (Report) bindingSource.getItemId(); if (listenerExecuteReportButton != null) listenerExecuteReportButton.executeReportButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, reportSelected, 0)); } }); } @Override public int getPosition() { return this.position; } @Override public ComponentContainer getContent() { return this.toolbarLayout; } public void addListenerExecuteReportButton(ClickExecuteReportButtonListener listener) { this.listenerExecuteReportButton = listener; } public interface ClickExecuteReportButtonListener extends Serializable { public void executeReportButtonClick(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; } } @Override public void setBindingSource(BindingSource<?> bindingSource) { this.bindingSource = bindingSource; // add change index binding source if (bindingSource != null) { bindingSource.addListenerToolBar((IndexChangeListener)this); } } @Override public void bindingSourceIndexChange(IndexChangeEvent event) { if (bindingSource != null) { Report reportSelected = (Report)event.getRegister(); if(reportSelected == null) return; if (reportSelected.isActive()) btnExecuteReport.setEnabled(true); else btnExecuteReport.setEnabled(false); } } @AutoGenerated private void buildMainLayout() { toolbarLayout = buildToolbarLayout(); addComponent(toolbarLayout); } @AutoGenerated private HorizontalLayout buildToolbarLayout() { toolbarLayout = new HorizontalLayout(); toolbarLayout.setImmediate(false); toolbarLayout.setSpacing(true); ButtonGroup editionButtonGroup = new ButtonGroup(); toolbarLayout.addComponent(editionButtonGroup); // btnExecuteReport btnExecuteReport = new Button(); btnExecuteReport.setCaption("Ejecutar Informe"); btnExecuteReport.setImmediate(true); btnExecuteReport.setWidth("-1px"); btnExecuteReport.setHeight("-1px"); btnExecuteReport.setIcon(new ThemeResource("../konekti/images/icons/report-module/report-share.png")); editionButtonGroup.addButton(btnExecuteReport); return toolbarLayout; } @Override protected void updateLabels() { // TODO Auto-generated method stub } }