package name.abuchen.portfolio.ui.views.columns; import java.text.MessageFormat; import name.abuchen.portfolio.model.Adaptor; import name.abuchen.portfolio.model.Security; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.util.viewers.Column; import name.abuchen.portfolio.ui.util.viewers.ColumnEditingSupport; import name.abuchen.portfolio.ui.util.viewers.ColumnViewerSorter; import name.abuchen.portfolio.util.Isin; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.SWT; public class IsinColumn extends Column { public static class IsinEditingSupport extends ColumnEditingSupport { @Override public boolean canEdit(Object element) { Security s = Adaptor.adapt(Security.class, element); return s != null; } @Override public Object getValue(Object element) { Security s = Adaptor.adapt(Security.class, element); return s.getIsin() != null ? s.getIsin() : ""; //$NON-NLS-1$ } @Override public void setValue(Object element, Object value) { String newValue = ((String) value).trim(); if (newValue.length() > 0 && !Isin.isValid(newValue)) throw new IllegalArgumentException(MessageFormat.format(Messages.MsgDialogNotAValidISIN, newValue)); Security security = Adaptor.adapt(Security.class, element); String oldValue = security.getIsin(); if (!newValue.equals(oldValue)) { security.setIsin(newValue); notify(element, newValue, oldValue); } } } public IsinColumn() { this("isin"); //$NON-NLS-1$ } public IsinColumn(String id) { super(id, Messages.ColumnISIN, SWT.LEFT, 100); setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object e) { Security s = Adaptor.adapt(Security.class, e); return s != null ? s.getIsin() : null; } }); setSorter(ColumnViewerSorter.create(Security.class, "isin")); //$NON-NLS-1$ new IsinEditingSupport().attachTo(this); } }