use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.
the class SecuritiesTable method addAttributeColumns.
private void addAttributeColumns() {
//
getClient().getSettings().getAttributeTypes().filter(//
a -> a.supports(Security.class)).forEach(attribute -> {
Column column = new AttributeColumn(attribute);
column.setVisible(false);
column.getEditingSupport().addListener(this);
support.addColumn(column);
});
}
use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.
the class SecuritiesTable method addMasterDataColumns.
private void addMasterDataColumns() {
// $NON-NLS-1$
Column column = new Column("0", Messages.ColumnName, SWT.LEFT, 400);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
return ((Security) e).getName();
}
@Override
public Image getImage(Object e) {
return ((Security) e).isRetired() ? Images.SECURITY_RETIRED.image() : Images.SECURITY.image();
}
});
// $NON-NLS-1$
ColumnViewerSorter.create(Security.class, "name").attachTo(column, SWT.DOWN);
// $NON-NLS-1$
new StringEditingSupport(Security.class, "name").setMandatory(true).addListener(this).attachTo(column);
support.addColumn(column);
column = new NoteColumn();
column.getEditingSupport().addListener(this);
support.addColumn(column);
// $NON-NLS-1$
column = new IsinColumn("1");
column.getEditingSupport().addListener(this);
support.addColumn(column);
// $NON-NLS-1$
column = new Column("2", Messages.ColumnTicker, SWT.LEFT, 80);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
return ((Security) e).getTickerSymbol();
}
});
// $NON-NLS-1$
column.setSorter(ColumnViewerSorter.create(Security.class, "tickerSymbol"));
// $NON-NLS-1$
new StringEditingSupport(Security.class, "tickerSymbol").addListener(this).attachTo(column);
support.addColumn(column);
// $NON-NLS-1$
column = new Column("7", Messages.ColumnWKN, SWT.LEFT, 60);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
return ((Security) e).getWkn();
}
});
// $NON-NLS-1$
column.setSorter(ColumnViewerSorter.create(Security.class, "wkn"));
// $NON-NLS-1$
new StringEditingSupport(Security.class, "wkn").addListener(this).attachTo(column);
column.setVisible(false);
support.addColumn(column);
column = new CurrencyColumn();
column.setVisible(false);
support.addColumn(column);
// $NON-NLS-1$
column = new Column("8", Messages.ColumnRetired, SWT.LEFT, 40);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
// $NON-NLS-1$
return "";
}
@Override
public Image getImage(Object e) {
return ((Security) e).isRetired() ? Images.CHECK.image() : null;
}
});
// $NON-NLS-1$
column.setSorter(ColumnViewerSorter.create(Security.class, "retired"));
// $NON-NLS-1$
new BooleanEditingSupport(Security.class, "retired").addListener(this).attachTo(column);
column.setVisible(false);
support.addColumn(column);
}
use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.
the class SecuritiesTable method addQuoteFeedColumns.
private void addQuoteFeedColumns() {
Function<Object, String> quoteFeed = e -> {
String feedId = ((Security) e).getFeed();
if (feedId == null || feedId.isEmpty())
return null;
QuoteFeed feed = Factory.getQuoteFeedProvider(feedId);
return feed != null ? feed.getName() : null;
};
// $NON-NLS-1$
Column column = new Column("qf-historic", Messages.ColumnQuoteFeedHistoric, SWT.LEFT, 200);
column.setGroupLabel(Messages.GroupLabelQuoteFeed);
column.setVisible(false);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
return quoteFeed.apply(e);
}
});
column.setSorter(ColumnViewerSorter.create(quoteFeed::apply));
support.addColumn(column);
Function<Object, String> latestQuoteFeed = e -> {
Security security = (Security) e;
String feedId = security.getLatestFeed();
if (feedId == null || feedId.isEmpty())
return security.getFeed() != null ? Messages.EditWizardOptionSameAsHistoricalQuoteFeed : null;
QuoteFeed feed = Factory.getQuoteFeedProvider(feedId);
return feed != null ? feed.getName() : null;
};
// $NON-NLS-1$
column = new Column("qf-latest", Messages.ColumnQuoteFeedLatest, SWT.LEFT, 200);
column.setGroupLabel(Messages.GroupLabelQuoteFeed);
column.setVisible(false);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
return latestQuoteFeed.apply(e);
}
});
column.setSorter(ColumnViewerSorter.create(latestQuoteFeed::apply));
support.addColumn(column);
// $NON-NLS-1$
column = new Column("url-history", Messages.ColumnFeedURLHistoric, SWT.LEFT, 200);
column.setGroupLabel(Messages.GroupLabelQuoteFeed);
column.setVisible(false);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
Security security = (Security) e;
return security.getFeedURL();
}
});
// $NON-NLS-1$
column.setSorter(ColumnViewerSorter.create(Security.class, "feedURL"));
support.addColumn(column);
// $NON-NLS-1$
column = new Column("url-latest", Messages.ColumnFeedURLLatest, SWT.LEFT, 200);
column.setGroupLabel(Messages.GroupLabelQuoteFeed);
column.setVisible(false);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object e) {
Security security = (Security) e;
return security.getLatestFeedURL();
}
});
// $NON-NLS-1$
column.setSorter(ColumnViewerSorter.create(Security.class, "latestFeedURL"));
support.addColumn(column);
}
use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.
the class SecuritiesTable method addDeltaColumn.
private // NOSONAR
void addDeltaColumn() {
Column column;
// $NON-NLS-1$
column = new Column("5", Messages.ColumnChangeOnPrevious, SWT.RIGHT, 60);
column.setMenuLabel(Messages.ColumnChangeOnPrevious_MenuLabel);
column.setLabelProvider(new NumberColorLabelProvider<>(Values.Percent2, element -> {
SecurityPrice price = ((Security) element).getSecurityPrice(LocalDate.now());
if (!(price instanceof LatestSecurityPrice))
return null;
LatestSecurityPrice latest = (LatestSecurityPrice) price;
if (latest.getPreviousClose() == LatestSecurityPrice.NOT_AVAILABLE)
return null;
return (latest.getValue() - latest.getPreviousClose()) / (double) latest.getPreviousClose();
}));
column.setSorter(ColumnViewerSorter.create((o1, o2) -> {
// NOSONAR
SecurityPrice p1 = ((Security) o1).getSecurityPrice(LocalDate.now());
SecurityPrice p2 = ((Security) o2).getSecurityPrice(LocalDate.now());
if (!(p1 instanceof LatestSecurityPrice))
p1 = null;
if (!(p2 instanceof LatestSecurityPrice))
p2 = null;
if (p1 == null)
return p2 == null ? 0 : -1;
if (p2 == null)
return 1;
LatestSecurityPrice l1 = (LatestSecurityPrice) p1;
LatestSecurityPrice l2 = (LatestSecurityPrice) p2;
double v1 = ((double) (l1.getValue() - l1.getPreviousClose())) / l1.getPreviousClose() * 100;
double v2 = ((double) (l2.getValue() - l2.getPreviousClose())) / l2.getPreviousClose() * 100;
return Double.compare(v1, v2);
}));
support.addColumn(column);
}
use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.
the class SecuritiesTable method addQuoteDeltaColumn.
private // NOSONAR
void addQuoteDeltaColumn() {
// create a modifiable copy as all menus share the same list of
// reporting periods
List<ReportingPeriod> options = new ArrayList<>(view.getPart().loadReportingPeriods());
BiFunction<Object, ReportingPeriod, Double> valueProvider = (element, option) -> {
Security security = (Security) element;
SecurityPrice latest = security.getSecurityPrice(option.getEndDate());
SecurityPrice previous = security.getSecurityPrice(option.getStartDate());
if (latest == null || previous == null)
return null;
if (previous.getValue() == 0)
return null;
if (previous.getDate().isAfter(option.getStartDate()))
return null;
return new Double((latest.getValue() - previous.getValue()) / (double) previous.getValue());
};
// $NON-NLS-1$
Column column = new Column("delta-w-period", Messages.ColumnQuoteChange, SWT.RIGHT, 80);
column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnQuoteChange_Option, options));
column.setDescription(Messages.ColumnQuoteChange_Description);
column.setLabelProvider(new QuoteReportingPeriodLabelProvider(valueProvider));
column.setVisible(false);
column.setSorter(ColumnViewerSorter.create((o1, o2) -> {
ReportingPeriod option = (ReportingPeriod) ColumnViewerSorter.SortingContext.getColumnOption();
Double v1 = valueProvider.apply(o1, option);
Double v2 = valueProvider.apply(o2, option);
if (v1 == null && v2 == null)
return 0;
else if (v1 == null)
return -1;
else if (v2 == null)
return 1;
return Double.compare(v1.doubleValue(), v2.doubleValue());
}));
support.addColumn(column);
}
Aggregations