@Override public void valueChange(ValueChangeEvent event) { Object value = event.getProperty().getValue(); if (value == null) return; Item theItem = propertyPairContainer.getItem(value); currentItem = (PropertyPairItem) theItem; // a clone, so a change event won't mess the table selection PropertyPairItem clone = new PropertyPairItem(currentItem.getSourceProperty(), currentItem.getTargetProperty()); propertyToolArea.selectionChanged(clone, reviews.get((String) clone.getKey()), this); keyLabel.setValue(clone.getKey()); translated.setPropertyDataSource(clone.getTarget()); orignal.setPropertyDataSource(clone.getSource()); translatedComment.setPropertyDataSource(clone.getTargetComment()); orignalComment.setPropertyDataSource(clone.getSourceComment()); applyValidation(clone.getTargetProperty()); }
protected Component createMainArea() { layout = new VerticalLayout(); layout.setSpacing(true); layout.setMargin(true); layout.setSizeFull(); HorizontalLayout filterLine = new HorizontalLayout(); TextField filterBox = new TextField(); filterBox.addStyleName(JabylonStyle.SEARCH_FIELD.getCSSName()); filterBox.addListener( new TextChangeListener() { @Override public void textChange(TextChangeEvent event) { propertyFilter.setFilterText(event.getText()); propertyPairContainer.addContainerFilter(propertyFilter); } }); filterBox.setInputPrompt( Messages.getString("PropertiesEditor_FILTER_INPUT_PROMPT")); // $NON-NLS-1$ filterLine.addComponent(filterBox); final CheckBox untranslatedBox = new CheckBox( Messages.getString( "PropertiesEditor_SHOW_ONLY_UNTRANSLATED_BUTTON_CAPTION")); //$NON-NLS-1$ untranslatedBox.addListener( new ClickListener() { @Override public void buttonClick(ClickEvent event) { propertyPairContainer.removeContainerFilter(untranslatedFilter); if (untranslatedBox.getValue().equals(Boolean.TRUE)) propertyPairContainer.addContainerFilter(untranslatedFilter); } }); untranslatedBox.setImmediate(true); filterLine.addComponent(untranslatedBox); layout.addComponent(filterLine); layout.setExpandRatio(filterLine, 0); table = new Table(); table.addStyleName(JabylonStyle.TABLE_STRIPED.getCSSName()); table.setSizeFull(); target = descriptor.loadProperties(); source = descriptor.getMaster().loadProperties(); propertyPairContainer = new PropertyPairContainer(source, target); table.setContainerDataSource(propertyPairContainer); table.setVisibleColumns( propertyPairContainer.getContainerPropertyIds().subList(0, 2).toArray()); table.setWidth(100, Table.UNITS_PERCENTAGE); table.addGeneratedColumn( Messages.getString("PropertiesEditor_PROBLEMS_COLUMN_HEADER"), new ColumnGenerator() { //$NON-NLS-1$ @Override public Object generateCell(Table source, Object itemId, Object columnId) { if (reviews.containsKey(itemId)) { Embedded embedded = new Embedded("", ImageConstants.IMAGE_ERROR); // $NON-NLS-1$ Review review = reviews.get((String) itemId).iterator().next(); // TODO: this can't be the right way to refresh? if (review.cdoInvalid()) { reviews.remove(itemId, review); // the review is // no // longer valid embedded.setIcon(ImageConstants.IMAGE_OK); embedded.setDescription(""); // $NON-NLS-1$ } else { embedded.setDescription(review.getMessage()); } return embedded; } else return new Embedded("", ImageConstants.IMAGE_OK); // $NON-NLS-1$ } }); table.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_EXPLICIT); table.setColumnHeaders( new String[] { Messages.getString("PropertiesEditor_ORIGINAL_COLUMN_HEADER"), Messages.getString("PropertiesEditor_TRANSLATED_COLUMN_HEADER"), Messages.getString("PropertiesEditor_PROBLEMS_COLUMN_HEADER") }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ table.setColumnExpandRatio(propertyPairContainer.getContainerPropertyIds().get(0), 1.0f); table.setColumnExpandRatio(propertyPairContainer.getContainerPropertyIds().get(1), 1.0f); table.setColumnExpandRatio( Messages.getString("PropertiesEditor_PROBLEMS_COLUMN_HEADER"), 0.0f); // $NON-NLS-1$ table.setEditable(false); table.setWriteThrough(false); table.setSelectable(true); table.setMultiSelect(false); table.setImmediate(true); // react at once when something is selected table.addListener(this); layout.addComponent(table); layout.setExpandRatio(table, 2); createEditorArea(); return layout; }