List of usage examples for com.vaadin.ui FormLayout FormLayout
public FormLayout()
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.IssueTypeComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);/*from w w w . j a va 2 s. c o m*/ addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(it.getClass()); binder.setItemDataSource(it); Field<?> name = binder.buildAndBind(TRANSLATOR.translate("general.name"), "typeName"); layout.addComponent(name); Field<?> desc = binder.buildAndBind(TRANSLATOR.translate("general.description"), "description"); layout.addComponent(desc); if (edit) { Button update = new Button(it.getId() == null ? TRANSLATOR.translate("general.create") : TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { IssueTypeJpaController c = new IssueTypeJpaController(DataBaseManager.getEntityManagerFactory()); if (it.getId() == null) { it.setDescription((String) desc.getValue()); it.setTypeName((String) name.getValue()); c.create(it); } else { try { binder.commit(); } catch (FieldGroup.CommitException ex) { LOG.log(Level.SEVERE, null, ex); } } }); Button cancel = new Button( Lookup.getDefault().lookup(InternationalizationProvider.class).translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); ((VMUI) UI.getCurrent()).updateScreen(); }); binder.setReadOnly(!edit); binder.setBuffered(true); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(cancel); layout.addComponent(hl); } }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.LoginDialog.java
License:Apache License
public void init() { //Layout/*from ww w.ja va2 s .co m*/ FormLayout layout = new FormLayout(); setContent(layout); HorizontalLayout hlayout = new HorizontalLayout(); hlayout.addComponent(loginButton); hlayout.addComponent(cancelButton); layout.addComponent(name); layout.addComponent(password); name.focus(); name.setWidth(100, Unit.PERCENTAGE); StringLengthValidator nameVal = new StringLengthValidator(Lookup.getDefault() .lookup(InternationalizationProvider.class).translate("password.length.message")); nameVal.setMinLength(5); name.addValidator(nameVal); name.setImmediate(true); StringLengthValidator passVal = new StringLengthValidator( Lookup.getDefault().lookup(InternationalizationProvider.class).translate("password.empty.message")); passVal.setMinLength(3); password.addValidator(passVal); password.setImmediate(true); password.setWidth(100, Unit.PERCENTAGE); layout.addComponent(hlayout); layout.setComponentAlignment(name, Alignment.TOP_LEFT); layout.setComponentAlignment(password, Alignment.MIDDLE_LEFT); layout.setComponentAlignment(hlayout, Alignment.BOTTOM_LEFT); layout.setSpacing(true); layout.setMargin(true); // Keyboard navigation - enter key is a shortcut to login addActionHandler(new Handler() { @Override public Action[] getActions(Object target, Object sender) { return new Action[] { enterKey }; } @Override public void handleAction(Action action, Object sender, Object target) { tryToLogIn(); } }); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.ProjectComponent.java
License:Apache License
private void init() { addStyleName(ValoTheme.FORMLAYOUT_LIGHT); type = new ComboBox(TRANSLATOR.translate("general.type")); FormLayout layout = new FormLayout(); setContent(layout);//www .j a v a 2 s. c om BeanFieldGroup binder = new BeanFieldGroup(getProject().getClass()); binder.setItemDataSource(getProject()); name = (TextField) binder.buildAndBind(TRANSLATOR.translate("general.name"), "name", TextField.class); name.setNullRepresentation(""); notes = (TextArea) binder.buildAndBind(TRANSLATOR.translate("general.notes"), "notes", TextArea.class); getNotes().setNullRepresentation(""); getNotes().setSizeFull(); getName().setRequired(true); getName().setRequiredError(TRANSLATOR.translate("missing.name.message")); layout.addComponent(getName()); layout.addComponent(getNotes()); type.setNewItemsAllowed(false); type.setTextInputAllowed(false); type.addValidator(new NullValidator(TRANSLATOR.translate("message.required.field.missing").replaceAll("%f", TRANSLATOR.translate("general.type")), false)); BeanItemContainer<ProjectType> container = new BeanItemContainer<>(ProjectType.class, new ProjectTypeJpaController(DataBaseManager.getEntityManagerFactory()).findProjectTypeEntities()); type.setContainerDataSource(container); type.getItemIds().forEach(id -> { ProjectType temp = ((ProjectType) id); type.setItemCaption(id, TRANSLATOR.translate(temp.getTypeName())); }); layout.addComponent(type); binder.bind(type, "projectTypeId"); Button cancel = new Button(TRANSLATOR.translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); if (getProject().getId() == null) { ((VMUI) UI.getCurrent()).displayObject(((VMUI) UI.getCurrent()).getSelectdValue()); } else { ((VMUI) UI.getCurrent()).displayObject(getProject(), false); } }); if (edit) { if (getProject().getId() == null) { //Creating a new one getSave().addClickListener((Button.ClickEvent event) -> { if (getName().getValue() == null) { Notification.show(getName().getRequiredError(), Notification.Type.ERROR_MESSAGE); return; } getProject().setName(getName().getValue()); if (getNotes().getValue() != null) { getProject().setNotes(getNotes().getValue()); } if (type.getValue() == null) { Notification.show(type.getRequiredError(), Notification.Type.ERROR_MESSAGE); return; } getProject().setProjectTypeId((ProjectType) type.getValue()); new ProjectJpaController(DataBaseManager.getEntityManagerFactory()).create(getProject()); //Recreate the tree to show the addition ((VMUI) UI.getCurrent()).updateProjectList(); ((VMUI) UI.getCurrent()).buildProjectTree(getProject()); ((VMUI) UI.getCurrent()).displayObject(getProject(), false); ((VMUI) UI.getCurrent()).updateScreen(); }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(getSave()); hl.addComponent(cancel); layout.addComponent(hl); } else { //Editing existing one getUpdate().addClickListener((Button.ClickEvent event) -> { ((VMUI) UI.getCurrent()).handleVersioning(getProject(), null); try { getProject().setName(getName().getValue()); if (getNotes().getValue() != null) { getProject().setNotes(getNotes().getValue()); } if (type.getValue() == null) { Notification.show(type.getRequiredError(), Notification.Type.ERROR_MESSAGE); return; } getProject().setProjectTypeId((ProjectType) type.getValue()); new ProjectJpaController(DataBaseManager.getEntityManagerFactory()).edit(getProject()); } catch (NonexistentEntityException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } //Recreate the tree to show the addition ((VMUI) UI.getCurrent()).updateProjectList(); ((VMUI) UI.getCurrent()).buildProjectTree(getProject()); ((VMUI) UI.getCurrent()).displayObject(getProject(), false); ((VMUI) UI.getCurrent()).updateScreen(); }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(getUpdate()); hl.addComponent(cancel); layout.addComponent(hl); } } binder.setBuffered(true); binder.setReadOnly(!edit); binder.bindMemberFields(this); setSizeFull(); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.RequirementComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);/* w w w. j av a 2s . co m*/ addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(req.getClass()); binder.setItemDataSource(req); TextField id = (TextField) binder.buildAndBind(TRANSLATOR.translate("requirement.id"), "uniqueId", TextField.class); id.setNullRepresentation(""); layout.addComponent(id); TextArea desc = (TextArea) binder.buildAndBind(TRANSLATOR.translate("general.description"), "description", TextArea.class); desc.setNullRepresentation(""); desc.setSizeFull(); layout.addComponent(desc); TextArea notes = (TextArea) binder.buildAndBind(TRANSLATOR.translate("general.notes"), "notes", TextArea.class); notes.setNullRepresentation(""); notes.setSizeFull(); layout.addComponent(notes); if (req.getParentRequirementId() != null) { TextField tf = new TextField(TRANSLATOR.translate("general.parent")); tf.setValue(req.getParentRequirementId().getUniqueId()); tf.setReadOnly(true); layout.addComponent(tf); } if (req.getRequirementList() == null) { req.setRequirementList(new ArrayList<>()); } if (!req.getRequirementList().isEmpty() && !edit) { layout.addComponent(((VMUI) UI.getCurrent()).getDisplayRequirementList( TRANSLATOR.translate("related.requirements"), req.getRequirementList())); } else if (edit) { //Allow user to add children AbstractSelect as = ((VMUI) UI.getCurrent()).getRequirementSelectionComponent(); req.getRequirementList().forEach(sub -> { as.select(sub); }); as.addValueChangeListener(event -> { Set<Requirement> selected = (Set<Requirement>) event.getProperty().getValue(); req.getRequirementList().clear(); selected.forEach(r -> { req.getRequirementList().add(r); }); }); layout.addComponent(as); } Button cancel = new Button(TRANSLATOR.translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); if (req.getId() == null) { ((VMUI) UI.getCurrent()).displayObject(req.getRequirementSpecNode()); } else { ((VMUI) UI.getCurrent()).displayObject(req, false); } }); if (edit) { if (req.getId() == null) { //Creating a new one Button save = new Button(TRANSLATOR.translate("general.save")); save.addClickListener((Button.ClickEvent event) -> { req.setUniqueId(id.getValue().toString()); req.setNotes(notes.getValue().toString()); req.setDescription(desc.getValue().toString()); req.setRequirementSpecNode((RequirementSpecNode) ((VMUI) UI.getCurrent()).getSelectdValue()); new RequirementJpaController(DataBaseManager.getEntityManagerFactory()).create(req); setVisible(false); //Recreate the tree to show the addition ((VMUI) UI.getCurrent()).buildProjectTree(req); ((VMUI) UI.getCurrent()).displayObject(req, true); }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(save); hl.addComponent(cancel); layout.addComponent(hl); } else { //Editing existing one Button update = new Button(TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { try { RequirementServer rs = new RequirementServer(req); rs.setDescription(((TextArea) desc).getValue()); rs.setNotes(((TextArea) notes).getValue()); rs.setUniqueId(((TextField) id).getValue()); ((VMUI) UI.getCurrent()).handleVersioning(rs, () -> { try { rs.write2DB(); //Recreate the tree to show the addition ((VMUI) UI.getCurrent()).buildProjectTree(rs.getEntity()); ((VMUI) UI.getCurrent()).displayObject(rs.getEntity(), false); } catch (NonexistentEntityException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); setVisible(false); } catch (VMException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(cancel); layout.addComponent(hl); } } try { //Add a history section if (req.getId() != null) { List<History> versions = new RequirementServer(req).getHistoryList(); if (!versions.isEmpty()) { layout.addComponent(((VMUI) UI.getCurrent()).createRequirementHistoryTable( TRANSLATOR.translate("general.history"), versions, true)); } } } catch (VMException ex) { LOG.log(Level.SEVERE, null, ex); } binder.setBuffered(true); binder.setReadOnly(!edit); binder.bindMemberFields(this); setSizeFull(); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.RequirementSpecComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);//from w ww. ja v a 2s.co m addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(rs.getClass()); binder.setItemDataSource(rs); Field<?> name = binder.buildAndBind(TRANSLATOR.translate("general.name"), "name"); layout.addComponent(name); Field desc = binder.buildAndBind(TRANSLATOR.translate("general.description"), "description", TextArea.class); desc.setSizeFull(); layout.addComponent(desc); Field<?> date = binder.buildAndBind(TRANSLATOR.translate("general.modification.data"), "modificationDate"); layout.addComponent(date); date.setEnabled(false); SpecLevelJpaController controller = new SpecLevelJpaController(DataBaseManager.getEntityManagerFactory()); List<SpecLevel> levels = controller.findSpecLevelEntities(); BeanItemContainer<SpecLevel> specLevelContainer = new BeanItemContainer<>(SpecLevel.class, levels); ComboBox level = new ComboBox(TRANSLATOR.translate("spec.level")); level.setContainerDataSource(specLevelContainer); level.getItemIds().forEach(id -> { level.setItemCaption(id, TRANSLATOR.translate(((SpecLevel) id).getName())); }); binder.bind(level, "specLevel"); layout.addComponent(level); Button cancel = new Button(TRANSLATOR.translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); if (rs.getRequirementSpecPK() == null) { ((VMUI) UI.getCurrent()).displayObject(rs.getProject()); } else { ((VMUI) UI.getCurrent()).displayObject(rs, false); } }); if (edit) { if (rs.getRequirementSpecPK() == null) { //Creating a new one Button save = new Button(TRANSLATOR.translate("general.save")); save.addClickListener((Button.ClickEvent event) -> { try { rs.setName(name.getValue().toString()); rs.setModificationDate(new Date()); rs.setSpecLevel((SpecLevel) level.getValue()); rs.setProject(((Project) ((VMUI) UI.getCurrent()).getSelectdValue())); rs.setRequirementSpecPK( new RequirementSpecPK(rs.getProject().getId(), rs.getSpecLevel().getId())); new RequirementSpecJpaController(DataBaseManager.getEntityManagerFactory()).create(rs); setVisible(false); //Recreate the tree to show the addition ((VMUI) UI.getCurrent()).updateProjectList(); ((VMUI) UI.getCurrent()).buildProjectTree(rs); ((VMUI) UI.getCurrent()).displayObject(rs, true); ((VMUI) UI.getCurrent()).updateScreen(); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.creation"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(save); hl.addComponent(cancel); layout.addComponent(hl); } else { //Editing existing one Button update = new Button(TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { try { rs.setName(name.getValue().toString()); rs.setModificationDate(new Date()); rs.setSpecLevel((SpecLevel) level.getValue()); ((VMUI) UI.getCurrent()).handleVersioning(rs, () -> { try { new RequirementSpecJpaController(DataBaseManager.getEntityManagerFactory()) .edit(rs); ((VMUI) UI.getCurrent()).displayObject(rs, true); } catch (NonexistentEntityException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(cancel); layout.addComponent(hl); } } binder.setReadOnly(!edit); binder.bindMemberFields(this); layout.setSizeFull(); setSizeFull(); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.RequirementSpecNodeComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);//from w w w. j av a 2s . c o m addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(rsn.getClass()); binder.setItemDataSource(rsn); Field<?> name = binder.buildAndBind(TRANSLATOR.translate("general.name"), "name"); layout.addComponent(name); Field desc = binder.buildAndBind(TRANSLATOR.translate("general.description"), "description", TextArea.class); desc.setSizeFull(); layout.addComponent(desc); Field<?> scope = binder.buildAndBind(TRANSLATOR.translate("general.scope"), "scope"); layout.addComponent(scope); Button cancel = new Button(TRANSLATOR.translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); if (rsn.getRequirementSpecNodePK() == null) { ((VMUI) UI.getCurrent()).displayObject(rsn.getRequirementSpec()); } else { ((VMUI) UI.getCurrent()).displayObject(rsn, false); } }); if (edit) { if (rsn.getRequirementSpecNodePK() == null) { //Creating a new one Button save = new Button(TRANSLATOR.translate("general.save")); save.addClickListener((Button.ClickEvent event) -> { try { rsn.setName(name.getValue().toString()); rsn.setDescription(desc.getValue().toString()); rsn.setScope(scope.getValue().toString()); rsn.setRequirementSpec((RequirementSpec) ((VMUI) UI.getCurrent()).getSelectdValue()); new RequirementSpecNodeJpaController(DataBaseManager.getEntityManagerFactory()).create(rsn); setVisible(false); //Recreate the tree to show the addition ((VMUI) UI.getCurrent()).updateProjectList(); ((VMUI) UI.getCurrent()).buildProjectTree(rsn); ((VMUI) UI.getCurrent()).displayObject(rsn, true); ((VMUI) UI.getCurrent()).updateScreen(); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.creation"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(save); hl.addComponent(cancel); layout.addComponent(hl); } else { //Editing existing one Button update = new Button(TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { rsn.setName(name.getValue().toString()); rsn.setDescription(desc.getValue().toString()); rsn.setScope(scope.getValue().toString()); ((VMUI) UI.getCurrent()).handleVersioning(rsn, () -> { try { new RequirementSpecNodeJpaController(DataBaseManager.getEntityManagerFactory()) .edit(rsn); ((VMUI) UI.getCurrent()).displayObject(rsn, true); } catch (NonexistentEntityException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(cancel); layout.addComponent(hl); } } binder.setReadOnly(!edit); binder.bindMemberFields(this); layout.setSizeFull(); setSizeFull(); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.RequirementTypeComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);/* ww w. java2 s .c om*/ addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(rt.getClass()); binder.setItemDataSource(rt); Field<?> name = binder.buildAndBind(TRANSLATOR.translate("general.name"), "name"); layout.addComponent(name); Field<?> desc = binder.buildAndBind(TRANSLATOR.translate("general.description"), "description"); layout.addComponent(desc); if (edit) { Button update = new Button(rt.getId() == null ? TRANSLATOR.translate("general.create") : TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { RequirementTypeJpaController c = new RequirementTypeJpaController( DataBaseManager.getEntityManagerFactory()); if (rt.getId() == null) { rt.setName((String) name.getValue()); rt.setDescription((String) desc.getValue()); c.create(rt); } else { try { binder.commit(); } catch (FieldGroup.CommitException ex) { LOG.log(Level.SEVERE, null, ex); } } }); Button cancel = new Button( Lookup.getDefault().lookup(InternationalizationProvider.class).translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); ((VMUI) UI.getCurrent()).updateScreen(); }); binder.setReadOnly(!edit); binder.setBuffered(true); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(cancel); layout.addComponent(hl); } }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.StepComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);// ww w . j a v a 2 s . co m addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(s.getClass()); binder.setItemDataSource(s); Field<?> sequence = binder.buildAndBind(TRANSLATOR.translate("general.sequence"), "stepSequence"); layout.addComponent(sequence); TextArea text = new TextArea(TRANSLATOR.translate("general.text")); text.setConverter(new ByteToStringConverter()); binder.bind(text, "text"); layout.addComponent(text); TextArea result = new TextArea(TRANSLATOR.translate("expected.result")); result.setConverter(new ByteToStringConverter()); binder.bind(result, "expectedResult"); layout.addComponent(result); Field notes = binder.buildAndBind(TRANSLATOR.translate("general.notes"), "notes", TextArea.class); notes.setSizeFull(); layout.addComponent(notes); if (!s.getRequirementList().isEmpty() && !edit) { layout.addComponent(((ValidationManagerUI) UI.getCurrent()).getDisplayRequirementList( TRANSLATOR.translate("related.requirements"), s.getRequirementList())); } else { AbstractSelect requirements = ((ValidationManagerUI) UI.getCurrent()) .getRequirementSelectionComponent(); //Select the exisitng ones. if (s.getRequirementList() != null) { s.getRequirementList().forEach((r) -> { requirements.select(r); }); } requirements.addValueChangeListener(event -> { Set<Requirement> selected = (Set<Requirement>) event.getProperty().getValue(); s.getRequirementList().clear(); selected.forEach(r -> { s.getRequirementList().add(r); }); }); layout.addComponent(requirements); } DataEntryComponent fields = new DataEntryComponent(edit); binder.bind(fields, "dataEntryList"); layout.addComponent(fields); binder.setReadOnly(edit); Button cancel = new Button(TRANSLATOR.translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); if (s.getStepPK() == null) { ((ValidationManagerUI) UI.getCurrent()) .displayObject(((ValidationManagerUI) UI.getCurrent()).getTree().getValue()); } else { ((ValidationManagerUI) UI.getCurrent()).displayObject(s, false); } }); if (edit) { Button add = new Button(TRANSLATOR.translate("add.field")); add.addClickListener(listener -> { VMWindow w = new VMWindow(); FormLayout fl = new FormLayout(); ComboBox newType = new ComboBox(TRANSLATOR.translate("general.type")); newType.setNewItemsAllowed(false); newType.setTextInputAllowed(false); newType.addValidator(new NullValidator(TRANSLATOR.translate("message.required.field.missing") .replaceAll("%f", TRANSLATOR.translate("general.type")), false)); BeanItemContainer<DataEntryType> container = new BeanItemContainer<>(DataEntryType.class, new DataEntryTypeJpaController(DataBaseManager.getEntityManagerFactory()) .findDataEntryTypeEntities()); newType.setContainerDataSource(container); newType.getItemIds().forEach(id -> { DataEntryType temp = ((DataEntryType) id); newType.setItemCaption(id, TRANSLATOR.translate(temp.getTypeName())); }); fl.addComponent(newType); TextField tf = new TextField(TRANSLATOR.translate("general.name")); fl.addComponent(tf); HorizontalLayout hl = new HorizontalLayout(); Button a = new Button(TRANSLATOR.translate("general.add")); a.addClickListener(l -> { DataEntryType det = (DataEntryType) newType.getValue(); DataEntry de = null; switch (det.getId()) { case 1: de = DataEntryServer.getStringField(tf.getValue()); break; case 2: de = DataEntryServer.getNumericField(tf.getValue(), null, null); break; case 3: de = DataEntryServer.getBooleanField(tf.getValue()); break; case 4: de = DataEntryServer.getAttachmentField(tf.getValue()); break; } if (de != null) { s.getDataEntryList().add(de); ((ValidationManagerUI) UI.getCurrent()).displayObject(s); } UI.getCurrent().removeWindow(w); }); hl.addComponent(a); Button c = new Button(TRANSLATOR.translate("general.cancel")); c.addClickListener(l -> { UI.getCurrent().removeWindow(w); }); hl.addComponent(c); fl.addComponent(hl); w.setContent(fl); UI.getCurrent().addWindow(w); }); if (s.getStepPK() == null) { //Creating a new one Button save = new Button(TRANSLATOR.translate("general.save")); save.addClickListener(listener -> { try { s.setExpectedResult(((TextArea) result).getValue().getBytes(encoding)); s.setNotes(notes.getValue() == null ? "" : notes.getValue().toString()); s.setStepSequence(Integer.parseInt(sequence.getValue().toString())); s.setTestCase((TestCase) ((ValidationManagerUI) UI.getCurrent()).getTree().getValue()); s.setText(text.getValue().getBytes(encoding)); if (s.getRequirementList() == null) { s.setRequirementList(new ArrayList<>()); } new StepJpaController(DataBaseManager.getEntityManagerFactory()).create(s); setVisible(false); //Recreate the tree to show the addition ((ValidationManagerUI) UI.getCurrent()).updateProjectList(); ((ValidationManagerUI) UI.getCurrent()).updateScreen(); ((ValidationManagerUI) UI.getCurrent()).displayObject(s); ((ValidationManagerUI) UI.getCurrent()).buildProjectTree(s); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.creation"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(save); hl.addComponent(add); hl.addComponent(cancel); layout.addComponent(hl); } else { //Editing existing one Button update = new Button(TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { try { s.setExpectedResult(((TextArea) result).getValue().getBytes(encoding)); s.setNotes(notes.getValue().toString()); s.setStepSequence(Integer.parseInt(sequence.getValue().toString())); s.setText(text.getValue().getBytes(encoding)); if (s.getRequirementList() == null) { s.setRequirementList(new ArrayList<>()); } ((ValidationManagerUI) UI.getCurrent()).handleVersioning(s, () -> { try { new StepJpaController(DataBaseManager.getEntityManagerFactory()).edit(s); } catch (NonexistentEntityException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); ((ValidationManagerUI) UI.getCurrent()).displayObject(s); } catch (UnsupportedEncodingException | NumberFormatException ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.creation"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(add); hl.addComponent(cancel); layout.addComponent(hl); } } binder.setReadOnly(!edit); binder.bindMemberFields(this); layout.setSizeFull(); setSizeFull(); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.component.UserComponent.java
License:Apache License
private void init() { FormLayout layout = new FormLayout(); setContent(layout);/*from www. ja va 2s . c o m*/ addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(user.getClass()); binder.setItemDataSource(user); Field<?> fn = binder.buildAndBind(TRANSLATOR.translate("general.first.name"), "firstName", TextField.class); layout.addComponent(fn); Field<?> ln = binder.buildAndBind(TRANSLATOR.translate("general.last.name"), "lastName", TextField.class); layout.addComponent(ln); Field<?> username = binder.buildAndBind(TRANSLATOR.translate("general.username"), "username", TextField.class); layout.addComponent(username); PasswordField pw = (PasswordField) binder.buildAndBind(TRANSLATOR.translate("general.password"), "password", PasswordField.class); PasswordChangeListener listener = new PasswordChangeListener(); pw.addTextChangeListener(listener); pw.setConverter(new UserPasswordConverter()); layout.addComponent(pw); Field<?> email = binder.buildAndBind(TRANSLATOR.translate("general.email"), "email", TextField.class); layout.addComponent(email); ComboBox locale = new ComboBox(TRANSLATOR.translate("general.locale")); locale.setTextInputAllowed(false); ValidationManagerUI.getAvailableLocales().forEach(l -> { locale.addItem(l.toString()); }); if (user.getLocale() != null) { locale.setValue(user.getLocale()); } binder.bind(locale, "locale"); layout.addComponent(locale); //Status ComboBox status = new ComboBox(TRANSLATOR.translate("general.status")); new UserStatusJpaController(DataBaseManager.getEntityManagerFactory()).findUserStatusEntities() .forEach(us -> { status.addItem(us); status.setItemCaption(us, TRANSLATOR.translate(us.getStatus())); }); binder.bind(status, "userStatusId"); status.setTextInputAllowed(false); layout.addComponent(status); List<UserHasRole> userRoles = new ArrayList<>(); //Project specific roles if (!user.getUserHasRoleList().isEmpty()) { Tree roles = new Tree(TRANSLATOR.translate("project.specific.role")); user.getUserHasRoleList().forEach(uhr -> { if (uhr.getProjectId() != null) { Project p = uhr.getProjectId(); if (!roles.containsId(p)) { roles.addItem(p); roles.setItemCaption(p, p.getName()); roles.setItemIcon(p, VMUI.PROJECT_ICON); } roles.addItem(uhr); roles.setItemCaption(uhr, TRANSLATOR.translate(uhr.getRole().getRoleName())); roles.setChildrenAllowed(uhr, false); roles.setItemIcon(uhr, VaadinIcons.USER_CARD); roles.setParent(uhr, p); } }); if (!roles.getItemIds().isEmpty()) { layout.addComponent(roles); } } //Roles if (edit && ((VMUI) UI.getCurrent()).checkRight("system.configuration")) { Button projectRole = new Button(TRANSLATOR.translate("manage.project.role")); projectRole.addClickListener(l -> { VMWindow w = new VMWindow(TRANSLATOR.translate("manage.project.role")); w.setContent(getProjectRoleManager()); ((VMUI) UI.getCurrent()).addWindow(w); }); layout.addComponent(projectRole); List<Role> list = new RoleJpaController(DataBaseManager.getEntityManagerFactory()).findRoleEntities(); Collections.sort(list, (Role r1, Role r2) -> TRANSLATOR.translate(r1.getRoleName()) .compareTo(TRANSLATOR.translate(r2.getRoleName()))); BeanItemContainer<Role> roleContainer = new BeanItemContainer<>(Role.class, list); TwinColSelect roles = new TwinColSelect(TRANSLATOR.translate("general.role")); roles.setContainerDataSource(roleContainer); roles.setRows(5); roles.setLeftColumnCaption(TRANSLATOR.translate("available.roles")); roles.setRightColumnCaption(TRANSLATOR.translate("current.roles")); roles.setImmediate(true); list.forEach(r -> { roles.setItemCaption(r, TRANSLATOR.translate(r.getDescription())); }); if (user.getUserHasRoleList() != null) { Set<Role> rs = new HashSet<>(); user.getUserHasRoleList().forEach(uhr -> { if (uhr.getProjectId() == null) { rs.add(uhr.getRole()); } }); roles.setValue(rs); } roles.addValueChangeListener(event -> { Set<Role> selected = (Set<Role>) event.getProperty().getValue(); selected.forEach(r -> { UserHasRole temp = new UserHasRole(); temp.setRole(r); temp.setVmUser(user); userRoles.add(temp); }); }); layout.addComponent(roles); } else { if (!user.getUserHasRoleList().isEmpty()) { Table roles = new Table(TRANSLATOR.translate("general.role")); user.getUserHasRoleList().forEach(role -> { roles.addItem(role.getRole()); roles.setItemCaption(role.getRole(), TRANSLATOR.translate(role.getRole().getRoleName())); roles.setItemIcon(role.getRole(), VaadinIcons.USER_STAR); }); layout.addComponent(roles); } } Button update = new Button(user.getId() == null ? TRANSLATOR.translate("general.create") : TRANSLATOR.translate("general.update")); update.addClickListener((Button.ClickEvent event) -> { try { VMUserServer us; String password = (String) pw.getValue(); if (user.getId() == null) { us = new VMUserServer((String) username.getValue(), password, (String) fn.getValue(), (String) ln.getValue(), (String) email.getValue()); } else { us = new VMUserServer(user); us.setFirstName((String) fn.getValue()); us.setLastName((String) ln.getValue()); us.setEmail((String) email.getValue()); us.setUsername((String) username.getValue()); } us.setLocale((String) locale.getValue()); if (user.getUserHasRoleList() == null) { user.setUserHasRoleList(new ArrayList<>()); } user.getUserHasRoleList().clear(); userRoles.forEach(uhr -> { UserHasRoleJpaController c = new UserHasRoleJpaController( DataBaseManager.getEntityManagerFactory()); try { c.create(uhr); user.getUserHasRoleList().add(uhr); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); } }); if (listener.isChanged() && !password.equals(user.getPassword())) { //Different password. Prompt for confirmation MessageBox mb = MessageBox.create(); VerticalLayout vl = new VerticalLayout(); Label l = new Label(TRANSLATOR.translate("password.confirm.pw.message")); vl.addComponent(l); PasswordField np = new PasswordField(Lookup.getDefault() .lookup(InternationalizationProvider.class).translate("general.password")); vl.addComponent(np); mb.asModal(true) .withCaption(Lookup.getDefault().lookup(InternationalizationProvider.class) .translate("password.confirm.pw")) .withMessage(vl).withButtonAlignment(Alignment.MIDDLE_CENTER).withOkButton(() -> { try { if (password.equals(MD5.encrypt(np.getValue()))) { us.setHashPassword(true); us.setPassword(np.getValue()); us.write2DB(); Notification.show( TRANSLATOR.translate("audit.user.account.password.change"), Notification.Type.ASSISTIVE_NOTIFICATION); ((VMUI) UI.getCurrent()).updateScreen(); } else { Notification.show(TRANSLATOR.translate("password.does.not.match"), Notification.Type.WARNING_MESSAGE); } mb.close(); } catch (VMException ex) { Exceptions.printStackTrace(ex); } }, ButtonOption.focus(), ButtonOption.closeOnClick(false), ButtonOption.icon(VaadinIcons.CHECK)) .withCancelButton(ButtonOption.icon(VaadinIcons.CLOSE)).getWindow() .setIcon(ValidationManagerUI.SMALL_APP_ICON); mb.open(); } else { us.write2DB(); } ((VMUI) UI.getCurrent()).getUser().update(); ((VMUI) UI.getCurrent()).setLocale(new Locale(us.getLocale())); ((VMUI) UI.getCurrent()).updateScreen(); } catch (Exception ex) { LOG.log(Level.SEVERE, null, ex); Notification.show(TRANSLATOR.translate("general.error.record.update"), ex.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE); } }); Button cancel = new Button( Lookup.getDefault().lookup(InternationalizationProvider.class).translate("general.cancel")); cancel.addClickListener((Button.ClickEvent event) -> { binder.discard(); ((VMUI) UI.getCurrent()).updateScreen(); }); binder.setReadOnly(!edit); binder.setBuffered(true); HorizontalLayout hl = new HorizontalLayout(); hl.addComponent(update); hl.addComponent(cancel); layout.addComponent(hl); }
From source file:net.sourceforge.javydreamercsw.validation.manager.web.execution.ExecutionWizardStep.java
License:Apache License
@Override public Component getContent() { Panel form = new Panel(TRANSLATOR.translate("step.detail")); if (getExecutionStep().getExecutionStart() == null) { //Set the start date. getExecutionStep().setExecutionStart(new Date()); }/*from w w w . j a va2 s .c om*/ FormLayout layout = new FormLayout(); form.setContent(layout); form.addStyleName(ValoTheme.FORMLAYOUT_LIGHT); BeanFieldGroup binder = new BeanFieldGroup(getExecutionStep().getStep().getClass()); binder.setItemDataSource(getExecutionStep().getStep()); TextArea text = new TextArea(TRANSLATOR.translate("general.text")); text.setConverter(new ByteToStringConverter()); binder.bind(text, "text"); text.setSizeFull(); layout.addComponent(text); Field notes = binder.buildAndBind(TRANSLATOR.translate("general.notes"), "notes", TextArea.class); notes.setSizeFull(); layout.addComponent(notes); if (getExecutionStep().getExecutionStart() != null) { start = new DateField(TRANSLATOR.translate("start.date")); start.setResolution(Resolution.SECOND); start.setDateFormat(VMSettingServer.getSetting("date.format").getStringVal()); start.setValue(getExecutionStep().getExecutionStart()); start.setReadOnly(true); layout.addComponent(start); } if (getExecutionStep().getExecutionEnd() != null) { end = new DateField(TRANSLATOR.translate("end.date")); end.setDateFormat(VMSettingServer.getSetting("date.format").getStringVal()); end.setResolution(Resolution.SECOND); end.setValue(getExecutionStep().getExecutionEnd()); end.setReadOnly(true); layout.addComponent(end); } binder.setReadOnly(true); //Space to record result if (getExecutionStep().getResultId() != null) { result.setValue(getExecutionStep().getResultId().getResultName()); } layout.addComponent(result); if (reviewer) {//Space to record review if (getExecutionStep().getReviewResultId() != null) { review.setValue(getExecutionStep().getReviewResultId().getReviewName()); } layout.addComponent(review); } //Add Reviewer name if (getExecutionStep().getReviewer() != null) { TextField reviewerField = new TextField(TRANSLATOR.translate("general.reviewer")); reviewerField.setValue(getExecutionStep().getReviewer().getFirstName() + " " + getExecutionStep().getReviewer().getLastName()); reviewerField.setReadOnly(true); layout.addComponent(reviewerField); } if (getExecutionStep().getReviewDate() != null) { reviewDate = new DateField(TRANSLATOR.translate("review.date")); reviewDate.setDateFormat(VMSettingServer.getSetting("date.format").getStringVal()); reviewDate.setResolution(Resolution.SECOND); reviewDate.setValue(getExecutionStep().getReviewDate()); reviewDate.setReadOnly(true); layout.addComponent(reviewDate); } if (VMSettingServer.getSetting("show.expected.result").getBoolVal()) { TextArea expectedResult = new TextArea(TRANSLATOR.translate("expected.result")); expectedResult.setConverter(new ByteToStringConverter()); binder.bind(expectedResult, "expectedResult"); expectedResult.setSizeFull(); layout.addComponent(expectedResult); } //Add the fields fields.clear(); getExecutionStep().getStep().getDataEntryList().forEach(de -> { switch (de.getDataEntryType().getId()) { case 1://String TextField tf = new TextField(TRANSLATOR.translate(de.getEntryName())); tf.setRequired(true); tf.setData(de.getEntryName()); if (VMSettingServer.getSetting("show.expected.result").getBoolVal()) { //Add expected result DataEntryProperty stringCase = DataEntryServer.getProperty(de, "property.match.case"); DataEntryProperty r = DataEntryServer.getProperty(de, "property.expected.result"); if (r != null && !r.getPropertyValue().equals("null")) { String error = TRANSLATOR.translate("expected.result") + ": " + r.getPropertyValue(); tf.setRequiredError(error); tf.setRequired(DataEntryServer.getProperty(de, "property.required").getPropertyValue() .equals("true")); tf.addValidator((Object val) -> { //We have an expected result and a match case requirement if (stringCase != null && stringCase.getPropertyValue().equals("true") ? !((String) val).equals(r.getPropertyValue()) : !((String) val).equalsIgnoreCase(r.getPropertyValue())) { throw new InvalidValueException(error); } }); } } fields.add(tf); //Set value if already recorded updateValue(tf); layout.addComponent(tf); break; case 2://Numeric NumberField field = new NumberField(TRANSLATOR.translate(de.getEntryName())); field.setSigned(true); field.setUseGrouping(true); field.setGroupingSeparator(','); field.setDecimalSeparator('.'); field.setConverter(new StringToDoubleConverter()); field.setRequired( DataEntryServer.getProperty(de, "property.required").getPropertyValue().equals("true")); field.setData(de.getEntryName()); Double min = null, max = null; for (DataEntryProperty prop : de.getDataEntryPropertyList()) { String value = prop.getPropertyValue(); if (prop.getPropertyName().equals("property.max")) { try { max = Double.parseDouble(value); } catch (NumberFormatException ex) { //Leave as null } } else if (prop.getPropertyName().equals("property.min")) { try { min = Double.parseDouble(value); } catch (NumberFormatException ex) { //Leave as null } } } //Add expected result if (VMSettingServer.getSetting("show.expected.result").getBoolVal() && (min != null || max != null)) { String error = TRANSLATOR.translate("error.out.of.range") + " " + (min == null ? " " : (TRANSLATOR.translate("property.min") + ": " + min)) + " " + (max == null ? "" : (TRANSLATOR.translate("property.max") + ": " + max)); field.setRequiredError(error); field.addValidator(new DoubleRangeValidator(error, min, max)); } fields.add(field); //Set value if already recorded updateValue(field); layout.addComponent(field); break; case 3://Boolean CheckBox cb = new CheckBox(TRANSLATOR.translate(de.getEntryName())); cb.setData(de.getEntryName()); cb.setRequired( DataEntryServer.getProperty(de, "property.required").getPropertyValue().equals("true")); if (VMSettingServer.getSetting("show.expected.result").getBoolVal()) { DataEntryProperty r = DataEntryServer.getProperty(de, "property.expected.result"); if (r != null) { //Add expected result String error = TRANSLATOR.translate("expected.result") + ": " + r.getPropertyValue(); cb.addValidator((Object val) -> { if (!val.toString().equals(r.getPropertyValue())) { throw new InvalidValueException(error); } }); } } fields.add(cb); //Set value if already recorded updateValue(cb); layout.addComponent(cb); break; case 4://Attachment Label l = new Label(TRANSLATOR.translate(de.getEntryName())); layout.addComponent(l); break; default: LOG.log(Level.SEVERE, "Unexpected field type: {0}", de.getDataEntryType().getId()); } }); //Add the Attachments HorizontalLayout attachments = new HorizontalLayout(); attachments.setCaption(TRANSLATOR.translate("general.attachment")); HorizontalLayout comments = new HorizontalLayout(); comments.setCaption(TRANSLATOR.translate("general.comments")); HorizontalLayout issues = new HorizontalLayout(); issues.setCaption(TRANSLATOR.translate("general.issue")); int commentCounter = 0; int issueCounter = 0; for (ExecutionStepHasIssue ei : getExecutionStep().getExecutionStepHasIssueList()) { issueCounter++; Button a = new Button("Issue #" + issueCounter); a.setIcon(VaadinIcons.BUG); a.addClickListener((Button.ClickEvent event) -> { displayIssue(new IssueServer(ei.getIssue())); }); a.setEnabled(!step.getLocked()); issues.addComponent(a); } for (ExecutionStepHasAttachment attachment : getExecutionStep().getExecutionStepHasAttachmentList()) { switch (attachment.getAttachment().getAttachmentType().getType()) { case "comment": { //Comments go in a different section commentCounter++; Button a = new Button("Comment #" + commentCounter); a.setIcon(VaadinIcons.CLIPBOARD_TEXT); a.addClickListener((Button.ClickEvent event) -> { if (!step.getLocked()) { //Prompt if user wants this removed MessageBox mb = getDeletionPrompt(attachment); mb.open(); } else { displayComment(new AttachmentServer(attachment.getAttachment().getAttachmentPK())); } }); a.setEnabled(!step.getLocked()); comments.addComponent(a); break; } default: { Button a = new Button(attachment.getAttachment().getFileName()); a.setEnabled(!step.getLocked()); a.setIcon(VaadinIcons.PAPERCLIP); a.addClickListener((Button.ClickEvent event) -> { if (!step.getLocked()) { //Prompt if user wants this removed MessageBox mb = getDeletionPrompt(attachment); mb.open(); } else { displayAttachment(new AttachmentServer(attachment.getAttachment().getAttachmentPK())); } }); attachments.addComponent(a); break; } } } if (attachments.getComponentCount() > 0) { layout.addComponent(attachments); } if (comments.getComponentCount() > 0) { layout.addComponent(comments); } if (issues.getComponentCount() > 0) { layout.addComponent(issues); } //Add the menu HorizontalLayout hl = new HorizontalLayout(); attach = new Button(TRANSLATOR.translate("add.attachment")); attach.setIcon(VaadinIcons.PAPERCLIP); attach.addClickListener((Button.ClickEvent event) -> { //Show dialog to upload file. Window dialog = new VMWindow(TRANSLATOR.translate("attach.file")); VerticalLayout vl = new VerticalLayout(); MultiFileUpload multiFileUpload = new MultiFileUpload() { @Override protected void handleFile(File file, String fileName, String mimeType, long length) { try { LOG.log(Level.FINE, "Received file {1} at: {0}", new Object[] { file.getAbsolutePath(), fileName }); //Process the file //Create the attachment AttachmentServer a = new AttachmentServer(); a.addFile(file, fileName); //Overwrite the default file name set in addFile. It'll be a temporary file name a.setFileName(fileName); a.write2DB(); //Now add it to this Execution Step if (getExecutionStep().getExecutionStepHasAttachmentList() == null) { getExecutionStep().setExecutionStepHasAttachmentList(new ArrayList<>()); } getExecutionStep().addAttachment(a); getExecutionStep().write2DB(); w.updateCurrentStep(); } catch (Exception ex) { LOG.log(Level.SEVERE, "Error creating attachment!", ex); } } }; multiFileUpload.setCaption(TRANSLATOR.translate("select.files.attach")); vl.addComponent(multiFileUpload); dialog.setContent(vl); dialog.setHeight(25, Sizeable.Unit.PERCENTAGE); dialog.setWidth(25, Sizeable.Unit.PERCENTAGE); ValidationManagerUI.getInstance().addWindow(dialog); }); hl.addComponent(attach); bug = new Button(TRANSLATOR.translate("create.issue")); bug.setIcon(VaadinIcons.BUG); bug.addClickListener((Button.ClickEvent event) -> { displayIssue(new IssueServer()); }); hl.addComponent(bug); comment = new Button(TRANSLATOR.translate("add.comment")); comment.setIcon(VaadinIcons.CLIPBOARD_TEXT); comment.addClickListener((Button.ClickEvent event) -> { AttachmentServer as = new AttachmentServer(); //Get comment type AttachmentType type = AttachmentTypeServer.getTypeForExtension("comment"); as.setAttachmentType(type); displayComment(as); }); hl.addComponent(comment); step.update(); attach.setEnabled(!step.getLocked()); bug.setEnabled(!step.getLocked()); comment.setEnabled(!step.getLocked()); result.setEnabled(!step.getLocked()); layout.addComponent(hl); return layout; }