package com.thingtrack.konekti.view.module.alarm.addon; import java.io.Serializable; import org.vaadin.peter.buttongroup.ButtonGroup; import com.thingtrack.konekti.domain.Job; 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.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.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; import com.vaadin.ui.HorizontalLayout; @SuppressWarnings("serial") public class JobToolbar extends AbstractToolbar { @AutoGenerated private HorizontalLayout toolbarLayout; @AutoGenerated private Button btnStartJob; @AutoGenerated private Button btnStopJob; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ private Object register; private int position = 0; private IViewContainer viewContainer; // navigator button listeners private ClickStartJobButtonListener listenerStartJobButton = null; private ClickStopJobButtonListener listenerStopJobButton = 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 JobToolbar(int position, final BindingSource<?> bindingSource, IViewContainer viewContainer) { super(position, bindingSource); buildMainLayout(); //setCompositionRoot(mainLayout); // TODO add user code here this.position = position; this.viewContainer = viewContainer; setBindingSource(bindingSource); btnStartJob.setDescription("Iniciar Job"); btnStopJob.setDescription("Parar Job"); // set reject button listener btnStartJob.addListener(new ClickListener() { public void buttonClick(ClickEvent event) { int index = bindingSource.getIndex(); if (index == 0) return; Job jobSelected = (Job) bindingSource.getItemId(); if (listenerStartJobButton != null) listenerStartJobButton.startJobButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, jobSelected, 0)); } }); btnStopJob.addListener(new ClickListener() { public void buttonClick(ClickEvent event) { int index = bindingSource.getIndex(); if (index == 0) return; Job jobSelected = (Job) bindingSource.getItemId(); if (listenerStopJobButton != null) listenerStopJobButton.stopJobButtonClick(new ClickNavigationEvent(event.getButton(), event.getComponent() , null, jobSelected, 0)); } }); } @Override public int getPosition() { return this.position; } @Override public ComponentContainer getContent() { return this.toolbarLayout; } public void addListenerStartJobButton(ClickStartJobButtonListener listener) { this.listenerStartJobButton = listener; } public void addListenerStopJobButton(ClickStopJobButtonListener listener) { this.listenerStopJobButton = listener; } public interface ClickStartJobButtonListener extends Serializable { public void startJobButtonClick(ClickNavigationEvent event); } public interface ClickStopJobButtonListener extends Serializable { public void stopJobButtonClick(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) { Job jobSelected = (Job)event.getRegister(); if(jobSelected == null) return; if (jobSelected.getActive()) { btnStartJob.setEnabled(false); btnStopJob.setEnabled(true); } else { btnStartJob.setEnabled(true); btnStopJob.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); // btnStartJob btnStartJob = new Button(); btnStartJob.setCaption("Iniciar Job"); btnStartJob.setImmediate(true); btnStartJob.setWidth("-1px"); btnStartJob.setHeight("-1px"); btnStartJob.setIcon(new ThemeResource("../konekti/images/icons/job-toolbar/gear--arrow.png")); editionButtonGroup.addButton(btnStartJob); // btnStopJob btnStopJob = new Button(); btnStopJob.setCaption("Parar Job"); btnStopJob.setImmediate(true); btnStopJob.setWidth("-1px"); btnStopJob.setHeight("-1px"); btnStopJob.setIcon(new ThemeResource("../konekti/images/icons/job-toolbar/gear--exclamation.png")); editionButtonGroup.addButton(btnStopJob); return toolbarLayout; } @Override protected void updateLabels() { btnStartJob.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.addon.JobToolbar.btnStartJob.caption")); btnStartJob.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.addon.JobToolbar.btnStartJob.description")); btnStopJob.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.addon.JobToolbar.btnStopJob.caption")); btnStopJob.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.addon.JobToolbar.btnStopJob.description")); } }