package com.thingtrack.konekti.view.addon.ui; import java.io.Serializable; import org.vaadin.peter.buttongroup.ButtonGroup; import com.thingtrack.konekti.domain.Action; import com.thingtrack.konekti.domain.Permission; import com.thingtrack.konekti.domain.Role; import com.thingtrack.konekti.domain.User; 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.vaadin.annotations.AutoGenerated; import com.vaadin.terminal.ThemeResource; import com.vaadin.ui.Button; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; import com.vaadin.ui.HorizontalLayout; @SuppressWarnings("serial") public class EditionToolbar extends AbstractToolbar { @AutoGenerated private HorizontalLayout toolbarLayout; @AutoGenerated private Button btnRemoveRegister; @AutoGenerated private Button btnEditRegister; @AutoGenerated private Button btnAddRegister; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ private User user; private Object register; private int position = 0; // navigator button listeners private ClickAddButtonListener listenerAddButton = null; private ClickEditButtonListener listenerEditButton = null; private ClickRemoveButtonListener listenerRemoveButton = 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 EditionToolbar(int position, final BindingSource<?> bindingSource) { this(position, bindingSource, null); } public EditionToolbar(int position, final BindingSource<?> bindingSource, User user) { super(position, bindingSource); buildMainLayout(); this.user = user; // TODO add user code here btnAddRegister.setDescription("AƱadir Registro"); btnEditRegister.setDescription("Editar Registro"); btnRemoveRegister.setDescription("Borrar Registro"); this.position = position; // set add button listener btnAddRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { if (listenerAddButton != null) listenerAddButton.addButtonClick(new ClickNavigationEvent(event.getComponent(), register, 0)); } }); // set edit button listener btnEditRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { int index = bindingSource.getIndex(); if (index == 0) return; register = bindingSource.getItemId(); if (listenerEditButton != null) listenerEditButton.editButtonClick(new ClickNavigationEvent(event.getComponent() , register, index)); } }); // set delete button listener btnRemoveRegister.addListener(new Button.ClickListener() { public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { int index = bindingSource.getIndex(); if (index == 0) return; register = bindingSource.getItemId(); if (listenerRemoveButton != null) listenerRemoveButton.deleteButtonClick(new ClickNavigationEvent(event.getComponent(), register, index)); } }); //setWidth("250px"); } public void setAddButtonEnabled(boolean enabled) { btnAddRegister.setEnabled(enabled); } public void setEditButtonEnabled(boolean enabled) { btnEditRegister.setEnabled(enabled); } public void setRemoveButtonEnabled(boolean enabled) { btnRemoveRegister.setEnabled(enabled); } public void setPermission(User user, String symbolicName, String version) { btnAddRegister.setEnabled(false); btnEditRegister.setEnabled(false); btnRemoveRegister.setEnabled(false); for (Role role : user.getRoles()) { if (role.getArea().equals(user.getActiveArea())) { for (Permission permission : role.getPermissions()) { if (permission.getMenuCommandResource() != null && permission.getMenuCommandResource().getModuleId().equals(symbolicName) && permission.getMenuCommandResource().getModuleVersion().equals(version)) { for (Action action : permission.getActions()) { if (action.getCode().equals(Action.ACTION.CREATE.name())) btnAddRegister.setEnabled(action.isActive()); else if (action.getCode().equals(Action.ACTION.UPDATE.name()) && action.isActive()) btnEditRegister.setEnabled(action.isActive()); else if (action.getCode().equals(Action.ACTION.REMOVE.name()) && action.isActive()) btnRemoveRegister.setEnabled(action.isActive()); } } } } } } public void addListenerAddButton(ClickAddButtonListener listener) { this.listenerAddButton = listener; } public void addListenerEditButton(ClickEditButtonListener listener) { this.listenerEditButton = listener; } public void addListenerDeleteButton(ClickRemoveButtonListener listener) { this.listenerRemoveButton = listener; } public interface ClickAddButtonListener extends Serializable { public void addButtonClick(ClickNavigationEvent event); } public interface ClickEditButtonListener extends Serializable { public void editButtonClick(ClickNavigationEvent event); } public interface ClickRemoveButtonListener extends Serializable { public void deleteButtonClick(ClickNavigationEvent event); } public class ClickNavigationEvent extends Event { private int index; private Object register; public ClickNavigationEvent(Component source, Object register, int index) { super(source); this.index = index; this.register = register; } public int getIndex() { return this.index; } public Object getRegister() { return this.register; } } @Override public int getPosition() { return this.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) { // TODO add user code here } } @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); ButtonGroup editionButtonGroup = new ButtonGroup(); toolbarLayout.addComponent(editionButtonGroup); // btnAddRegister btnAddRegister = new Button(); btnAddRegister.setImmediate(true); btnAddRegister.setWidth("-1px"); btnAddRegister.setHeight("-1px"); btnAddRegister.setIcon(new ThemeResource("../konekti/images/icons/edition-toolbar/plus.png")); editionButtonGroup.addButton(btnAddRegister); // btnEditRegister btnEditRegister = new Button(); btnEditRegister.setImmediate(true); btnEditRegister.setWidth("-1px"); btnEditRegister.setHeight("-1px"); btnEditRegister.setIcon(new ThemeResource("../konekti/images/icons/edition-toolbar/pencil.png")); editionButtonGroup.addButton(btnEditRegister); // btnRemoveRegister btnRemoveRegister = new Button(); btnRemoveRegister.setImmediate(true); btnRemoveRegister.setWidth("-1px"); btnRemoveRegister.setHeight("-1px"); btnRemoveRegister.setIcon(new ThemeResource("../konekti/images/icons/edition-toolbar/minus.png")); editionButtonGroup.addButton(btnRemoveRegister); return toolbarLayout; } @Override protected void updateLabels() { btnAddRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.EditionToolbar.btnAddRegister.description")); btnEditRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.EditionToolbar.btnEditRegister.description")); btnRemoveRegister.setDescription(getI18N().getMessage("com.thingtrack.konekti.view.addon.ui.EditionToolbar.btnRemoveRegister.description")); } }