Search in sources :

Example 16 with Column

use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.

the class PortfolioTransactionsViewer method addColumns.

private void addColumns() {
    Column column = new Column(Messages.ColumnDate, SWT.None, 100);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            return Values.DateTime.format(((PortfolioTransaction) element).getDateTime());
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "dateTime").attachTo(column, SWT.DOWN);
    // $NON-NLS-1$
    new DateTimeEditingSupport(PortfolioTransaction.class, "dateTime").addListener(this).attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnTransactionType, SWT.None, 80);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((PortfolioTransaction) element).getType().toString();
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "type").attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnSecurity, SWT.None, 250);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            PortfolioTransaction t = (PortfolioTransaction) element;
            return t.getSecurity() != null ? String.valueOf(t.getSecurity()) : null;
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "security").attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnShares, SWT.RIGHT, 80);
    column.setLabelProvider(new SharesLabelProvider() {

        private TransactionLabelProvider colors = new TransactionLabelProvider();

        @Override
        public Long getValue(Object element) {
            return ((PortfolioTransaction) element).getShares();
        }

        @Override
        public Color getForeground(Object element) {
            return colors.getForeground(element);
        }

        @Override
        public Color getBackground(Object element) {
            return colors.getBackground(element);
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "shares").attachTo(column);
    // $NON-NLS-1$
    new ValueEditingSupport(PortfolioTransaction.class, "shares", Values.Share).addListener(this).attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnQuote, SWT.RIGHT, 80);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            PortfolioTransaction t = (PortfolioTransaction) element;
            return t.getShares() != 0 ? Values.Quote.format(t.getGrossPricePerShare(), owner.getClient().getBaseCurrency()) : null;
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "grossPricePerShare").attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnAmount, SWT.RIGHT, 80);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            return Values.Money.format(((PortfolioTransaction) element).getGrossValue(), owner.getClient().getBaseCurrency());
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "grossValueAmount").attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnFees, SWT.RIGHT, 80);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            PortfolioTransaction t = (PortfolioTransaction) element;
            return Values.Money.format(t.getUnitSum(Transaction.Unit.Type.FEE), owner.getClient().getBaseCurrency());
        }
    });
    support.addColumn(column);
    column = new Column(Messages.ColumnTaxes, SWT.RIGHT, 80);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            PortfolioTransaction t = (PortfolioTransaction) element;
            return Values.Money.format(t.getUnitSum(Transaction.Unit.Type.TAX), owner.getClient().getBaseCurrency());
        }
    });
    support.addColumn(column);
    column = new Column(Messages.ColumnNetValue, SWT.RIGHT, 80);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object element) {
            PortfolioTransaction t = (PortfolioTransaction) element;
            return Values.Money.format(t.getMonetaryAmount(), owner.getClient().getBaseCurrency());
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "amount").attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnOffsetAccount, SWT.None, 120);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object e) {
            PortfolioTransaction t = (PortfolioTransaction) e;
            return t.getCrossEntry() != null ? t.getCrossEntry().getCrossOwner(t).toString() : null;
        }
    });
    support.addColumn(column);
    column = new Column(Messages.ColumnNote, SWT.None, 200);
    column.setLabelProvider(new TransactionLabelProvider() {

        @Override
        public String getText(Object e) {
            return ((PortfolioTransaction) e).getNote();
        }

        @Override
        public Image getImage(Object e) {
            String note = ((PortfolioTransaction) e).getNote();
            return note != null && note.length() > 0 ? Images.NOTE.image() : null;
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(PortfolioTransaction.class, "note").attachTo(column);
    // $NON-NLS-1$
    new StringEditingSupport(PortfolioTransaction.class, "note").addListener(this).attachTo(column);
    support.addColumn(column);
}
Also used : Color(org.eclipse.swt.graphics.Color) StringEditingSupport(name.abuchen.portfolio.ui.util.viewers.StringEditingSupport) Image(org.eclipse.swt.graphics.Image) DateTimeEditingSupport(name.abuchen.portfolio.ui.util.viewers.DateTimeEditingSupport) SharesLabelProvider(name.abuchen.portfolio.ui.util.viewers.SharesLabelProvider) ValueEditingSupport(name.abuchen.portfolio.ui.util.viewers.ValueEditingSupport) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) Column(name.abuchen.portfolio.ui.util.viewers.Column)

Example 17 with Column

use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.

the class StatementOfAssetsViewer method createColumns.

private // NOSONAR
Control createColumns(// NOSONAR
Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    TableColumnLayout layout = new TableColumnLayout();
    container.setLayout(layout);
    assets = new TableViewer(container, SWT.FULL_SELECTION);
    ColumnViewerToolTipSupport.enableFor(assets, ToolTip.NO_RECREATE);
    ColumnEditingSupport.prepare(assets);
    assets.addSelectionChangedListener(event -> {
        Element element = (Element) ((IStructuredSelection) event.getSelection()).getFirstElement();
        if (element != null && element.isSecurity())
            selectionService.setSelection(new SecuritySelection(client, element.getSecurity()));
    });
    support = new ShowHideColumnHelper(StatementOfAssetsViewer.class.getName(), client, preference, assets, layout);
    // $NON-NLS-1$
    Column column = new Column("0", Messages.ColumnSharesOwned, SWT.RIGHT, 80);
    column.setLabelProvider(new // NOSONAR
    SharesLabelProvider() {

        @Override
        public Long getValue(Object e) {
            Element element = (Element) e;
            return element.isSecurity() ? element.getSecurityPosition().getShares() : null;
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isSecurity() ? ((Element) e).getSecurityPosition().getShares() : null)));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new NameColumn("1");
    column.setLabelProvider(new // NOSONAR
    NameColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            if (((Element) e).isGroupByTaxonomy())
                return Messages.LabelTotalSum;
            return super.getText(e);
        }

        @Override
        public Font getFont(Object e) {
            return ((Element) e).isGroupByTaxonomy() || ((Element) e).isCategory() ? boldFont : null;
        }

        @Override
        public Image getImage(Object e) {
            if (((Element) e).isCategory())
                return null;
            return super.getImage(e);
        }
    });
    column.setEditingSupport(new // $NON-NLS-1$
    StringEditingSupport(// $NON-NLS-1$
    Named.class, // $NON-NLS-1$
    "name") {

        @Override
        public boolean canEdit(Object element) {
            boolean isCategory = ((Element) element).isCategory();
            boolean isUnassignedCategory = isCategory && Classification.UNASSIGNED_ID.equals(((Element) element).getCategory().getClassification().getId());
            return !isUnassignedCategory ? super.canEdit(element) : false;
        }
    }.setMandatory(true).addListener(new MarkDirtyListener(this.owner)));
    column.getSorter().wrap(ElementComparator::new);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("2", Messages.ColumnTicker, SWT.None, 60);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            return element.isSecurity() ? element.getSecurity().getTickerSymbol() : null;
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isSecurity() ? ((Element) e).getSecurity().getTickerSymbol() : null)));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("12", Messages.ColumnWKN, SWT.None, 60);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            return element.isSecurity() ? element.getSecurity().getWkn() : null;
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isSecurity() ? ((Element) e).getSecurity().getWkn() : null)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new IsinColumn("3");
    column.getEditingSupport().addListener(new MarkDirtyListener(this.owner));
    column.getSorter().wrap(ElementComparator::new);
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("4", Messages.ColumnQuote, SWT.RIGHT, 60);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (!element.isSecurity())
                return null;
            Security security = element.getSecurity();
            return Values.Quote.format(security.getCurrencyCode(), element.getSecurityPosition().getPrice().getValue(), client.getBaseCurrency());
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> {
        Element element = (Element) e;
        if (!element.isSecurity())
            return null;
        return Money.of(element.getSecurity().getCurrencyCode(), element.getSecurityPosition().getPrice().getValue());
    })));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("qdate", Messages.ColumnDateOfQuote, SWT.LEFT, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            return element.isSecurity() ? Values.Date.format(element.getSecurityPosition().getPrice().getDate()) : null;
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isSecurity() ? ((Element) e).getSecurityPosition().getPrice().getDate() : null)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("5", Messages.ColumnMarketValue, SWT.RIGHT, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            return Values.Money.format(element.getValuation(), client.getBaseCurrency());
        }

        @Override
        public Font getFont(Object e) {
            return ((Element) e).isGroupByTaxonomy() || ((Element) e).isCategory() ? boldFont : null;
        }
    });
    // $NON-NLS-1$
    column.setSorter(ColumnViewerSorter.create(Element.class, "valuation").wrap(ElementComparator::new));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("6", Messages.ColumnShareInPercent, SWT.RIGHT, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (element.isGroupByTaxonomy())
                return Values.Percent.format(1d);
            if (element.isCategory())
                return Values.Percent.format(element.getCategory().getShare());
            else
                return Values.Percent.format(element.getPosition().getShare());
        }

        @Override
        public Font getFont(Object e) {
            return ((Element) e).isGroupByTaxonomy() || ((Element) e).isCategory() ? boldFont : null;
        }
    });
    // $NON-NLS-1$
    column.setSorter(ColumnViewerSorter.create(Element.class, "valuation").wrap(ElementComparator::new));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("7", Messages.ColumnPurchasePrice, SWT.RIGHT, 60);
    column.setDescription(Messages.ColumnPurchasePrice_Description);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (element.isSecurity()) {
                Money purchasePrice = element.getSecurityPosition().getFIFOPurchasePrice();
                return Values.Money.formatNonZero(purchasePrice, client.getBaseCurrency());
            }
            return null;
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isSecurity() ? ((Element) e).getSecurityPosition().getFIFOPurchasePrice() : null)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("ppmvavg", Messages.ColumnPurchasePriceMovingAverage, SWT.RIGHT, 60);
    column.setDescription(Messages.ColumnPurchasePriceMovingAverage_Description);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (element.isSecurity()) {
                Money purchasePrice = element.getSecurityPosition().getMovingAveragePurchasePrice();
                return Values.Money.formatNonZero(purchasePrice, client.getBaseCurrency());
            }
            return null;
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isSecurity() ? ((Element) e).getSecurityPosition().getMovingAveragePurchasePrice() : null)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("8", Messages.ColumnPurchaseValue, SWT.RIGHT, 80);
    column.setDescription(Messages.ColumnPurchaseValue_Description);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            Money purchaseValue = element.getFIFOPurchaseValue();
            return Values.Money.formatNonZero(purchaseValue, client.getBaseCurrency());
        }

        @Override
        public Font getFont(Object e) {
            return ((Element) e).isGroupByTaxonomy() || ((Element) e).isCategory() ? boldFont : null;
        }
    });
    column.setVisible(false);
    column.setSorter(// $NON-NLS-1$
    ColumnViewerSorter.create(Element.class, "FIFOPurchaseValue").wrap(ElementComparator::new));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("pvmvavg", Messages.ColumnPurchaseValueMovingAverage, SWT.RIGHT, 80);
    column.setDescription(Messages.ColumnPurchaseValueMovingAverage_Description);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            Money purchaseValue = element.getMovingAveragePurchaseValue();
            return Values.Money.formatNonZero(purchaseValue, client.getBaseCurrency());
        }

        @Override
        public Font getFont(Object e) {
            return ((Element) e).isGroupByTaxonomy() || ((Element) e).isCategory() ? boldFont : null;
        }
    });
    column.setVisible(false);
    column.setSorter(// $NON-NLS-1$
    ColumnViewerSorter.create(Element.class, "MovingAveragePurchaseValue").wrap(ElementComparator::new));
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("9", Messages.ColumnProfitLoss, SWT.RIGHT, 80);
    column.setLabelProvider(new // NOSONAR
    ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Money profitLoss = ((Element) e).getProfitLoss();
            return Values.Money.formatNonZero(profitLoss, client.getBaseCurrency());
        }

        @Override
        public Color getForeground(Object e) {
            Money profitLoss = ((Element) e).getProfitLoss();
            return Display.getCurrent().getSystemColor(profitLoss.isNegative() ? SWT.COLOR_DARK_RED : SWT.COLOR_DARK_GREEN);
        }

        @Override
        public Image getImage(Object e) {
            Money profitLoss = ((Element) e).getProfitLoss();
            if (profitLoss.isZero())
                return null;
            return profitLoss.isNegative() ? Images.RED_ARROW.image() : Images.GREEN_ARROW.image();
        }

        @Override
        public Font getFont(Object e) {
            return ((Element) e).isGroupByTaxonomy() || ((Element) e).isCategory() ? boldFont : null;
        }
    });
    column.setVisible(false);
    // $NON-NLS-1$
    column.setSorter(ColumnViewerSorter.create(Element.class, "profitLoss").wrap(ElementComparator::new));
    support.addColumn(column);
    column = new NoteColumn();
    column.getEditingSupport().addListener(new MarkDirtyListener(this.owner));
    column.getSorter().wrap(ElementComparator::new);
    support.addColumn(column);
    // create a modifiable copy as all menus share the same list of
    // reporting periods
    List<ReportingPeriod> options = new ArrayList<>(owner.getPart().loadReportingPeriods());
    addPerformanceColumns(options);
    addDividendColumns(options);
    addTaxonomyColumns();
    addAttributeColumns();
    addCurrencyColumns();
    support.createColumns();
    assets.getTable().setHeaderVisible(true);
    assets.getTable().setLinesVisible(true);
    assets.setContentProvider(new StatementOfAssetsContentProvider());
    // 
    assets.addDragSupport(// 
    DND.DROP_MOVE, // 
    new Transfer[] { SecurityTransfer.getTransfer() }, new SecurityDragListener(assets));
    LocalResourceManager resources = new LocalResourceManager(JFaceResources.getResources(), assets.getTable());
    boldFont = resources.createFont(FontDescriptor.createFrom(assets.getTable().getFont()).setStyle(SWT.BOLD));
    return container;
}
Also used : SecuritySelection(name.abuchen.portfolio.ui.selection.SecuritySelection) LocalResourceManager(org.eclipse.jface.resource.LocalResourceManager) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) MarkDirtyListener(name.abuchen.portfolio.ui.util.viewers.ColumnEditingSupport.MarkDirtyListener) ArrayList(java.util.ArrayList) Image(org.eclipse.swt.graphics.Image) Security(name.abuchen.portfolio.model.Security) Font(org.eclipse.swt.graphics.Font) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) NameColumnLabelProvider(name.abuchen.portfolio.ui.views.columns.NameColumn.NameColumnLabelProvider) Money(name.abuchen.portfolio.money.Money) ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) SecurityDragListener(name.abuchen.portfolio.ui.dnd.SecurityDragListener) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) Column(name.abuchen.portfolio.ui.util.viewers.Column) Named(name.abuchen.portfolio.model.Named) Composite(org.eclipse.swt.widgets.Composite) Color(org.eclipse.swt.graphics.Color) AttributeComparator(name.abuchen.portfolio.ui.util.AttributeComparator) TableViewer(org.eclipse.jface.viewers.TableViewer) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn)

Example 18 with Column

use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.

the class StatementOfAssetsViewer method addTaxonomyColumns.

private void addTaxonomyColumns() {
    for (Taxonomy t : client.getTaxonomies()) {
        Column column = new TaxonomyColumn(t);
        column.setVisible(false);
        if (column.getSorter() != null)
            column.getSorter().wrap(ElementComparator::new);
        support.addColumn(column);
    }
}
Also used : GroupByTaxonomy(name.abuchen.portfolio.snapshot.GroupByTaxonomy) Taxonomy(name.abuchen.portfolio.model.Taxonomy) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) Column(name.abuchen.portfolio.ui.util.viewers.Column) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn)

Example 19 with Column

use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.

the class StatementOfAssetsViewer method addCurrencyColumns.

private // NOSONAR
void addCurrencyColumns() {
    // $NON-NLS-1$
    Column column = new Column("baseCurrency", Messages.ColumnCurrency, SWT.LEFT, 80);
    column.setGroupLabel(Messages.ColumnForeignCurrencies);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (!element.isPosition())
                return null;
            return element.getPosition().getInvestmentVehicle().getCurrencyCode();
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isPosition() ? ((Element) e).getPosition().getInvestmentVehicle().getCurrencyCode() : null)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("exchangeRate", Messages.ColumnExchangeRate, SWT.RIGHT, 80);
    column.setGroupLabel(Messages.ColumnForeignCurrencies);
    column.setLabelProvider(new // NOSONAR
    ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (!element.isPosition())
                return null;
            String baseCurrency = element.getPosition().getInvestmentVehicle().getCurrencyCode();
            CurrencyConverter converter = getCurrencyConverter();
            ExchangeRate rate = converter.getRate(getDate(), baseCurrency);
            if (useIndirectQuotation)
                rate = rate.inverse();
            return Values.ExchangeRate.format(rate.getValue());
        }

        @Override
        public String getToolTipText(Object e) {
            String text = getText(e);
            if (text == null)
                return null;
            String term = getCurrencyConverter().getTermCurrency();
            String base = ((Element) e).getPosition().getInvestmentVehicle().getCurrencyCode();
            return text + ' ' + (useIndirectQuotation ? base + '/' + term : term + '/' + base);
        }
    });
    column.setVisible(false);
    support.addColumn(column);
    column = new // $NON-NLS-1$
    Column(// $NON-NLS-1$
    "marketValueBaseCurrency", Messages.ColumnMarketValue + Messages.BaseCurrencyCue, SWT.RIGHT, 80);
    column.setDescription(Messages.ColumnMarketValueBaseCurrency);
    column.setGroupLabel(Messages.ColumnForeignCurrencies);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (!element.isPosition())
                return null;
            return Values.Money.format(element.getPosition().getPosition().calculateValue(), client.getBaseCurrency());
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isPosition() ? ((Element) e).getPosition().getPosition().calculateValue() : null)));
    column.setVisible(false);
    support.addColumn(column);
    column = new // $NON-NLS-1$
    Column(// $NON-NLS-1$
    "purchaseValueBaseCurrency", Messages.ColumnPurchaseValue + Messages.BaseCurrencyCue, SWT.RIGHT, 80);
    column.setDescription(Messages.ColumnPurchaseValueBaseCurrency);
    column.setGroupLabel(Messages.ColumnForeignCurrencies);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (!element.isPosition())
                return null;
            return Values.Money.formatNonZero(element.getPosition().getPosition().getFIFOPurchaseValue(), client.getBaseCurrency());
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isPosition() ? ((Element) e).getPosition().getPosition().getFIFOPurchaseValue() : null)));
    column.setVisible(false);
    support.addColumn(column);
    column = new // $NON-NLS-1$
    Column(// $NON-NLS-1$
    "profitLossBaseCurrency", Messages.ColumnProfitLoss + Messages.BaseCurrencyCue, SWT.RIGHT, 80);
    column.setDescription(Messages.ColumnProfitLossBaseCurrency);
    column.setGroupLabel(Messages.ColumnForeignCurrencies);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Element element = (Element) e;
            if (!element.isPosition())
                return null;
            return Values.Money.formatNonZero(element.getPosition().getPosition().getProfitLoss(), client.getBaseCurrency());
        }
    });
    column.setComparator(new ElementComparator(new AttributeComparator(e -> ((Element) e).isPosition() ? ((Element) e).getPosition().getPosition().getProfitLoss() : null)));
    column.setVisible(false);
    support.addColumn(column);
}
Also used : ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) NameColumnLabelProvider(name.abuchen.portfolio.ui.views.columns.NameColumn.NameColumnLabelProvider) ExchangeRate(name.abuchen.portfolio.money.ExchangeRate) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) Column(name.abuchen.portfolio.ui.util.viewers.Column) AttributeComparator(name.abuchen.portfolio.ui.util.AttributeComparator) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter)

Example 20 with Column

use of name.abuchen.portfolio.ui.util.viewers.Column in project portfolio by buchen.

the class StatementOfAssetsViewer method addDividendColumns.

private void addDividendColumns(List<ReportingPeriod> options) {
    ReportingPeriodLabelProvider labelProvider;
    // $NON-NLS-1$
    Column column = new Column("sumdiv", Messages.ColumnDividendSum, SWT.RIGHT, 80);
    Function<Stream<Object>, Object> collector = elements -> elements.map(e -> (Money) e).collect(MoneyCollectors.sum(client.getBaseCurrency()));
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getSumOfDividends, collector, false);
    // $NON-NLS-1$
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnDividendSum + " {0}", options));
    column.setGroupLabel(Messages.GroupLabelDividends);
    column.setMenuLabel(Messages.ColumnDividendSum_MenuLabel);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("d%", Messages.ColumnDividendTotalRateOfReturn, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getTotalRateOfReturnDiv, null, false);
    // $NON-NLS-1$
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnDividendTotalRateOfReturn + " {0}", options));
    column.setGroupLabel(Messages.GroupLabelDividends);
    column.setDescription(Messages.ColumnDividendTotalRateOfReturn_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("d%mvavg", Messages.ColumnDividendMovingAverageTotalRateOfReturn, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getTotalRateOfReturnDivMovingAverage, null, false);
    // $NON-NLS-1$
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnDividendMovingAverageTotalRateOfReturn + " {0}", options));
    column.setGroupLabel(Messages.GroupLabelDividends);
    column.setDescription(Messages.ColumnDividendMovingAverageTotalRateOfReturn_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
}
Also used : ReportingPeriodColumnOptions(name.abuchen.portfolio.ui.util.viewers.ReportingPeriodColumnOptions) Adaptable(name.abuchen.portfolio.model.Adaptable) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) Arrays(java.util.Arrays) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) Client(name.abuchen.portfolio.model.Client) TableViewer(org.eclipse.jface.viewers.TableViewer) DND(org.eclipse.swt.dnd.DND) SecurityPosition(name.abuchen.portfolio.snapshot.SecurityPosition) SecurityDragListener(name.abuchen.portfolio.ui.dnd.SecurityDragListener) Classification(name.abuchen.portfolio.model.Classification) AttributeComparator(name.abuchen.portfolio.ui.util.AttributeComparator) ESelectionService(org.eclipse.e4.ui.workbench.modeling.ESelectionService) Composite(org.eclipse.swt.widgets.Composite) MoneyCollectors(name.abuchen.portfolio.money.MoneyCollectors) AbstractFinanceView(name.abuchen.portfolio.ui.AbstractFinanceView) Map(java.util.Map) ColumnViewerToolTipSupport(org.eclipse.jface.viewers.ColumnViewerToolTipSupport) ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) UIConstants(name.abuchen.portfolio.ui.UIConstants) GroupByTaxonomy(name.abuchen.portfolio.snapshot.GroupByTaxonomy) Separator(org.eclipse.jface.action.Separator) Account(name.abuchen.portfolio.model.Account) ClientFilter(name.abuchen.portfolio.snapshot.filter.ClientFilter) MenuManager(org.eclipse.jface.action.MenuManager) Security(name.abuchen.portfolio.model.Security) Display(org.eclipse.swt.widgets.Display) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) ExchangeRate(name.abuchen.portfolio.money.ExchangeRate) SecurityPerformanceRecord(name.abuchen.portfolio.snapshot.security.SecurityPerformanceRecord) Collectors(java.util.stream.Collectors) ColumnEditingSupport(name.abuchen.portfolio.ui.util.viewers.ColumnEditingSupport) PortfolioSnapshot(name.abuchen.portfolio.snapshot.PortfolioSnapshot) Transfer(org.eclipse.swt.dnd.Transfer) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper) Objects(java.util.Objects) OptionLabelProvider(name.abuchen.portfolio.ui.util.viewers.OptionLabelProvider) List(java.util.List) Stream(java.util.stream.Stream) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) LocalDate(java.time.LocalDate) SWT(org.eclipse.swt.SWT) PostConstruct(javax.annotation.PostConstruct) Attributable(name.abuchen.portfolio.model.Attributable) SecurityTransfer(name.abuchen.portfolio.ui.dnd.SecurityTransfer) SecuritySelection(name.abuchen.portfolio.ui.selection.SecuritySelection) LabelOnly(name.abuchen.portfolio.ui.util.LabelOnly) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) InvestmentVehicle(name.abuchen.portfolio.model.InvestmentVehicle) NameColumnLabelProvider(name.abuchen.portfolio.ui.views.columns.NameColumn.NameColumnLabelProvider) Images(name.abuchen.portfolio.ui.Images) Image(org.eclipse.swt.graphics.Image) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition) HashMap(java.util.HashMap) JFaceResources(org.eclipse.jface.resource.JFaceResources) Function(java.util.function.Function) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) SecurityPerformanceSnapshot(name.abuchen.portfolio.snapshot.security.SecurityPerformanceSnapshot) Annotated(name.abuchen.portfolio.model.Annotated) Messages(name.abuchen.portfolio.ui.Messages) IStructuredContentProvider(org.eclipse.jface.viewers.IStructuredContentProvider) StringEditingSupport(name.abuchen.portfolio.ui.util.viewers.StringEditingSupport) Font(org.eclipse.swt.graphics.Font) MarkDirtyListener(name.abuchen.portfolio.ui.util.viewers.ColumnEditingSupport.MarkDirtyListener) Taxonomy(name.abuchen.portfolio.model.Taxonomy) Portfolio(name.abuchen.portfolio.model.Portfolio) FontDescriptor(org.eclipse.jface.resource.FontDescriptor) Shell(org.eclipse.swt.widgets.Shell) Viewer(org.eclipse.jface.viewers.Viewer) AssetCategory(name.abuchen.portfolio.snapshot.AssetCategory) Column(name.abuchen.portfolio.ui.util.viewers.Column) ColumnViewerSorter(name.abuchen.portfolio.ui.util.viewers.ColumnViewerSorter) Action(org.eclipse.jface.action.Action) Preference(org.eclipse.e4.core.di.extensions.Preference) SharesLabelProvider(name.abuchen.portfolio.ui.util.viewers.SharesLabelProvider) Color(org.eclipse.swt.graphics.Color) IMenuManager(org.eclipse.jface.action.IMenuManager) Named(name.abuchen.portfolio.model.Named) ToolTip(org.eclipse.jface.window.ToolTip) LocalResourceManager(org.eclipse.jface.resource.LocalResourceManager) Menu(org.eclipse.swt.widgets.Menu) Comparator(java.util.Comparator) Control(org.eclipse.swt.widgets.Control) Money(name.abuchen.portfolio.money.Money) ReportingPeriodColumnOptions(name.abuchen.portfolio.ui.util.viewers.ReportingPeriodColumnOptions) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) Column(name.abuchen.portfolio.ui.util.viewers.Column) Stream(java.util.stream.Stream)

Aggregations

Column (name.abuchen.portfolio.ui.util.viewers.Column)47 ColumnLabelProvider (org.eclipse.jface.viewers.ColumnLabelProvider)43 NoteColumn (name.abuchen.portfolio.ui.views.columns.NoteColumn)38 Image (org.eclipse.swt.graphics.Image)33 Composite (org.eclipse.swt.widgets.Composite)32 TableColumnLayout (org.eclipse.jface.layout.TableColumnLayout)31 TableViewer (org.eclipse.jface.viewers.TableViewer)31 ShowHideColumnHelper (name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper)30 Security (name.abuchen.portfolio.model.Security)26 Values (name.abuchen.portfolio.money.Values)24 Messages (name.abuchen.portfolio.ui.Messages)24 IMenuManager (org.eclipse.jface.action.IMenuManager)24 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)24 SWT (org.eclipse.swt.SWT)24 Images (name.abuchen.portfolio.ui.Images)23 ColumnViewerSorter (name.abuchen.portfolio.ui.util.viewers.ColumnViewerSorter)23 Color (org.eclipse.swt.graphics.Color)23 AccountTransaction (name.abuchen.portfolio.model.AccountTransaction)21 PortfolioTransaction (name.abuchen.portfolio.model.PortfolioTransaction)21 NameColumn (name.abuchen.portfolio.ui.views.columns.NameColumn)20