package com.thingtrack.konekti.view.module.configuration.internal;
import org.vaadin.dialogs.ConfirmDialog;
import com.thingtrack.konekti.domain.Configuration;
import com.thingtrack.konekti.service.api.ConfigurationService;
import com.thingtrack.konekti.view.addon.data.BindingSource;
import com.thingtrack.konekti.view.addon.ui.AbstractView;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar.ClickFilterButtonListener;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar.ClickPrintButtonListener;
import com.thingtrack.konekti.view.addon.ui.DataGridView;
import com.thingtrack.konekti.view.addon.ui.EditionToolbar;
import com.thingtrack.konekti.view.addon.ui.EditionToolbar.ClickAddButtonListener;
import com.thingtrack.konekti.view.addon.ui.EditionToolbar.ClickEditButtonListener;
import com.thingtrack.konekti.view.addon.ui.EditionToolbar.ClickNavigationEvent;
import com.thingtrack.konekti.view.addon.ui.EditionToolbar.ClickRemoveButtonListener;
import com.thingtrack.konekti.view.addon.ui.NavigationToolbar;
import com.thingtrack.konekti.view.addon.ui.NavigationToolbar.ClickRefreshButtonListener;
import com.thingtrack.konekti.view.addon.ui.WindowDialog;
import com.thingtrack.konekti.view.addon.ui.WindowDialog.DialogResult;
import com.thingtrack.konekti.view.kernel.IWorkbenchContext;
import com.thingtrack.konekti.view.kernel.ui.layout.IViewContainer;
import com.thingtrack.konekti.view.web.form.ConfigurationViewForm;
import com.vaadin.annotations.AutoGenerated;
import com.vaadin.ui.VerticalLayout;
@SuppressWarnings("serial")
public class ConfigurationView extends AbstractView implements
ClickRefreshButtonListener,
ClickAddButtonListener, ClickEditButtonListener,
ClickRemoveButtonListener, ClickFilterButtonListener,
ClickPrintButtonListener {
@AutoGenerated
private VerticalLayout mainLayout;
@AutoGenerated
private DataGridView dgConfiguration;
/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
private ConfigurationService configurationService;
private BindingSource<Configuration> bsConfiguration = new BindingSource<Configuration>(Configuration.class, 0);
private NavigationToolbar navigationToolbar;
private EditionToolbar editionToolbar;
private BoxToolbar boxToolbar;
private IViewContainer viewContainer;
private IWorkbenchContext context;
/**
* 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 ConfigurationView(IWorkbenchContext context, IViewContainer viewContainer) {
buildMainLayout();
setCompositionRoot(mainLayout);
// TODO add user code here
this.context = context;
// set Slide View Services and ViewContainer to navigate
this.viewContainer = viewContainer;
this.configurationService = ConfigurationViewContainer.getConfigurationService();
// initialize datasource views
initView();
}
private void initView() {
try {
// initialize Slide View Organization View
dgConfiguration.setImmediate(true);
dgConfiguration.setSelectable(true);
// add nested columns
bsConfiguration.addNestedContainerProperty("organization.name");
bsConfiguration.addNestedContainerProperty("menuCommandResource.caption");
// bind datasource
dgConfiguration.setBindingSource(bsConfiguration);
// set visible and collapsed columns
dgConfiguration.setVisibleColumns(new String[] { "configurationId", "organization.name", "tag", "description", "type", "value", "menuCommandResource.caption" });
dgConfiguration.setColumnHeaders(new String[] { "Id", "Organizacion", "Tag", "Descripción", "Tipo", "Valor", "Modulo" });
dgConfiguration.setColumnCollapsed("configurationId", true);
} catch (Exception ex) {
ex.getMessage();
}
refreshBindindSource();
injectConfigurationBindingSource();
}
private void refreshBindindSource() {
try {
bsConfiguration.removeAllItems();
bsConfiguration.addAll(configurationService.getAll(context.getUser()));
// select the first item if exist
if (bsConfiguration.size() > 0)
bsConfiguration.setItemId(bsConfiguration.getIdByIndex(0));
} catch (IllegalArgumentException e) {
throw new RuntimeException("¡No se pudo refrescar las Configuraciones!", e);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo refrescar las Configuraciones!", e);
}
}
private void injectConfigurationBindingSource() {
navigationToolbar = new NavigationToolbar(0, bsConfiguration, viewContainer);
editionToolbar = new EditionToolbar(1, bsConfiguration);
boxToolbar = new BoxToolbar(2, bsConfiguration);
navigationToolbar.addListenerRefreshButton(this);
navigationToolbar.setUpButton(false);
navigationToolbar.setDownButton(false);
editionToolbar.addListenerAddButton(this);
editionToolbar.addListenerEditButton(this);
editionToolbar.addListenerDeleteButton(this);
editionToolbar.setPermission(context.getUser(), viewContainer.getModule().getSymbolicName(), viewContainer.getModule().getVersion());
boxToolbar.addListenerFilterButton(this);
boxToolbar.addListenerPrintButton(this);
dgConfiguration.addListenerAddButton(this);
dgConfiguration.addListenerEditButton(this);
dgConfiguration.addListenerDeleteButton(this);
removeAllToolbar();
addToolbar(navigationToolbar);
addToolbar(editionToolbar);
addToolbar(boxToolbar);
}
@Override
public void refreshButtonClick(NavigationToolbar.ClickNavigationEvent event) {
refreshBindindSource();
}
private void refreshDataGridView(Configuration configurationSaved) {
if(bsConfiguration.containsId(configurationSaved)){
Configuration configurationSupplier = bsConfiguration.prevItemId(configurationSaved);
bsConfiguration.removeItem(configurationSaved);
bsConfiguration.addItemAfter(configurationSupplier, configurationSaved);
bsConfiguration.setItemId(configurationSaved);
}
else
bsConfiguration.addItem(configurationSaved);
}
@Override
public void addButtonClick(ClickNavigationEvent event) {
Configuration configuration = null;
try {
configuration = configurationService.createNewEntity(context.getUser().getActiveOrganization());
} catch (Exception e) {
throw new RuntimeException(
"¡No se pudo crear el nueva configuration!",
e);
}
try {
@SuppressWarnings("unused")
WindowDialog<Configuration> windowDialog = new WindowDialog<Configuration>(
getWindow(), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.add.tittle"), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.button.left"),
DialogResult.SAVE, getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.button.right"), DialogResult.CANCEL,
new ConfigurationViewForm(), configuration,
new WindowDialog.CloseWindowDialogListener<Configuration>() {
public void windowDialogClose(
WindowDialog<Configuration>.CloseWindowDialogEvent<Configuration> event) {
if (event.getDialogResult() != WindowDialog.DialogResult.SAVE)
return;
try {
Configuration savingConfiguration = event.getDomainEntity();
Configuration savedConfiguration = configurationService.save(savingConfiguration);
savingConfiguration.setConfigurationId(savedConfiguration.getConfigurationId());
refreshDataGridView(savingConfiguration);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo crear el nueva configuración!", e);
}
}
});
} catch (IllegalArgumentException e) {
throw new RuntimeException("¡No se pudo abrir el formulario Nueva Configuración!", e);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo abrir el formulario Nueva Configuración!", e);
}
}
@Override
public void editButtonClick(ClickNavigationEvent event) {
Configuration editingConfiguration = (Configuration) event.getRegister();
try {
@SuppressWarnings("unused")
WindowDialog<Configuration> windowDialog = new WindowDialog<Configuration>(
getWindow(), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.edit.tittle"), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.button.left"),
DialogResult.SAVE, getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.button.right"), DialogResult.CANCEL,
new ConfigurationViewForm(), editingConfiguration,
new WindowDialog.CloseWindowDialogListener<Configuration>() {
public void windowDialogClose(
WindowDialog<Configuration>.CloseWindowDialogEvent<Configuration> event) {
if (event.getDialogResult() != WindowDialog.DialogResult.SAVE)
return;
try {
Configuration savingConfiguration = event.getDomainEntity();
Configuration savedConfiguration = configurationService.save(savingConfiguration);
refreshDataGridView(savingConfiguration);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo modificar la configuración!", e);
}
}
});
} catch (IllegalArgumentException e) {
throw new RuntimeException("¡No se pudo abrir el formulario Editor Configuración!", e);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo abrir el formulario Editor Configuración!", e);
}
}
@Override
public void deleteButtonClick(ClickNavigationEvent event) {
final Configuration editingConfiguration = (Configuration) event.getRegister();
if (editingConfiguration == null)
return;
ConfirmDialog.show(getWindow(), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.remove.tittle"), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.remove.confirmation"),
getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.remove.confirmation.yes"), getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.windowDialog.remove.confirmation.no"), new ConfirmDialog.Listener() {
public void onClose(ConfirmDialog dialog) {
if (dialog.isConfirmed()) {
try {
configurationService.delete(editingConfiguration);
bsConfiguration.removeItem(editingConfiguration);
} catch (IllegalArgumentException e) {
throw new RuntimeException("¡No se pudo borrar la configuracion!", e);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo borrar la configuracion!", e);
}
}
}
});
}
@AutoGenerated
private VerticalLayout buildMainLayout() {
// common part: create layout
mainLayout = new VerticalLayout();
mainLayout.setImmediate(false);
mainLayout.setWidth("100%");
mainLayout.setHeight("100%");
mainLayout.setMargin(false);
// top-level component properties
setWidth("100.0%");
setHeight("100.0%");
// dgEmployee
dgConfiguration = new DataGridView();
dgConfiguration.setImmediate(false);
dgConfiguration.setWidth("100.0%");
dgConfiguration.setHeight("100.0%");
mainLayout.addComponent(dgConfiguration);
mainLayout.setExpandRatio(dgConfiguration, 1.0f);
return mainLayout;
}
@Override
public void filterButtonClick(BoxToolbar.ClickNavigationEvent event) {
dgConfiguration.setFilterBarVisible();
}
@Override
public void printButtonClick(BoxToolbar.ClickNavigationEvent event) {
try {
dgConfiguration.print("Maestro Configuraciones");
}
catch (Exception e) {
throw new RuntimeException("¡No se pudo imprimir el informe!", e);
}
}
@Override
protected void updateLabels() {
dgConfiguration.setColumnHeaders(new String[] { getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.dgConfiguration.column.configurationId"),
getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.dgConfiguration.column.organization.description"),
getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.dgConfiguration.column.tag"),
getI18N().getMessage("com.thingtrack.konekti.view.module.supplier.internal.ConfigurationView.dgConfiguration.column.description"),
getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.dgConfiguration.column.type"),
getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.dgConfiguration.column.value"),
getI18N().getMessage("com.thingtrack.konekti.view.module.configuration.internal.ConfigurationView.dgConfiguration.column.resourceName")});
}
}