package name.abuchen.portfolio.ui.views.columns; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import name.abuchen.portfolio.model.Account; import name.abuchen.portfolio.model.Adaptor; import name.abuchen.portfolio.model.Classification; import name.abuchen.portfolio.model.InvestmentPlan; import name.abuchen.portfolio.model.Named; import name.abuchen.portfolio.model.Portfolio; import name.abuchen.portfolio.model.Security; import name.abuchen.portfolio.ui.Images; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.util.viewers.Column; import name.abuchen.portfolio.ui.util.viewers.ColumnViewerSorter; import name.abuchen.portfolio.ui.util.viewers.StringEditingSupport; import name.abuchen.portfolio.util.TextUtil; public class NameColumn extends Column { public static class NameColumnLabelProvider extends ColumnLabelProvider { @Override public String getText(Object e) { Named n = Adaptor.adapt(Named.class, e); return n != null ? n.getName() : null; } @Override public Image getImage(Object e) { Named n = Adaptor.adapt(Named.class, e); if (n instanceof Security) return Images.SECURITY.image(); else if (n instanceof Account) return Images.ACCOUNT.image(); else if (n instanceof Portfolio) return Images.PORTFOLIO.image(); else if (n instanceof InvestmentPlan) return Images.INVESTMENTPLAN.image(); else if (n instanceof Classification) return Images.CATEGORY.image(); else return null; } @Override public String getToolTipText(Object e) { Named element = Adaptor.adapt(Named.class, e); if (element == null) return null; else if (element instanceof Security) return TextUtil.tooltip(((Security) element).toInfoString()); else return TextUtil.tooltip(element.getName()); } } public NameColumn() { this("name"); //$NON-NLS-1$ } public NameColumn(String id) { this(id, Messages.ColumnName, SWT.LEFT, 300); } public NameColumn(String id, String label, int style, int defaultWidth) { super(id, label, style, defaultWidth); setLabelProvider(new NameColumnLabelProvider()); setSorter(ColumnViewerSorter.create(Named.class, "name")); //$NON-NLS-1$ new StringEditingSupport(Named.class, "name").setMandatory(true).attachTo(this); //$NON-NLS-1$ } }