public TableEditorWindow(final Table table, final Object value, Object... dates) { for (Object o : dates) dates2.add(o); VerticalLayout content = new VerticalLayout(); Object[] columns = table.getVisibleColumns(); String[] headers = table.getColumnHeaders(); int n = columns.length; for (int i = 0; i < n; ++i) { HorizontalLayout lay = new HorizontalLayout(); Label l = new Label(headers[i]); lay.addComponent(l); Component field = dates2.contains(columns[i]) ? new DateField() : new TextField(); lay.addComponent(field); map.put(columns[i], field); content.addComponent(lay); lay.setComponentAlignment(l, Alignment.MIDDLE_LEFT); lay.setComponentAlignment(field, Alignment.MIDDLE_RIGHT); } if (value != null) { Item item = table.getItem(value); for (Object o : columns) { Object val = item.getItemProperty(o).getValue(); if (dates2.contains(o)) { ((DateField) map.get(o)).setValue((Date) val); } else { ((TextField) map.get(o)).setValue(val.toString()); } } } save = new Button("Записать"); content.addComponent(save); save.addClickListener( new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent clickEvent) { if (actionPerformed()) close(); } }); setContent(content); }
private void setNotNull(final AbstractField field) { field.setImmediate(true); if (nullorempty(field.getValue())) { errors.add(field); save.setEnabled(false); } field.addValueChangeListener( new Property.ValueChangeListener() { @Override public void valueChange(Property.ValueChangeEvent valueChangeEvent) { if (nullorempty(field.getValue())) errors.add(field); else errors.remove(field); save.setEnabled(errors.isEmpty()); } }); }