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
}
}