Search in sources :

Example 6 with ShowHideColumnHelper

use of name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper 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 7 with ShowHideColumnHelper

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

the class ConsumerPriceIndexListView method createTopTable.

@Override
protected void createTopTable(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    TableColumnLayout layout = new TableColumnLayout();
    container.setLayout(layout);
    indices = new TableViewer(container, SWT.FULL_SELECTION);
    ColumnEditingSupport.prepare(indices);
    ShowHideColumnHelper support = new ShowHideColumnHelper(// $NON-NLS-1$
    ConsumerPriceIndexListView.class.getSimpleName() + "@bottom", // $NON-NLS-1$
    getPreferenceStore(), // $NON-NLS-1$
    indices, layout);
    Column column = new Column(Messages.ColumnYear, SWT.None, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return String.valueOf(((ConsumerPriceIndex) element).getYear());
        }
    });
    // $NON-NLS-1$ //$NON-NLS-2$
    ColumnViewerSorter.create(ConsumerPriceIndex.class, "year", "month").attachTo(column, SWT.DOWN);
    // $NON-NLS-1$
    new ValueEditingSupport(ConsumerPriceIndex.class, "year", Values.Year).addListener(this).attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnMonth, SWT.None, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            int month = ((ConsumerPriceIndex) element).getMonth();
            return Month.of(month).getDisplayName(TextStyle.FULL, Locale.getDefault());
        }
    });
    // $NON-NLS-1$ //$NON-NLS-2$
    ColumnViewerSorter.create(ConsumerPriceIndex.class, "month", "year").attachTo(column);
    // $NON-NLS-1$
    new MonthEditingSupport(ConsumerPriceIndex.class, "month").addListener(this).attachTo(column);
    support.addColumn(column);
    column = new Column(Messages.ColumnIndex, SWT.RIGHT, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return Values.Index.format(((ConsumerPriceIndex) element).getIndex());
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(ConsumerPriceIndex.class, "index").attachTo(column);
    // $NON-NLS-1$
    new ValueEditingSupport(ConsumerPriceIndex.class, "index", Values.Index).addListener(this).attachTo(column);
    support.addColumn(column);
    support.createColumns();
    indices.getTable().setHeaderVisible(true);
    indices.getTable().setLinesVisible(true);
    indices.setContentProvider(ArrayContentProvider.getInstance());
    indices.setInput(getClient().getConsumerPriceIndices());
    indices.refresh();
    hookContextMenu(indices.getTable(), new IMenuListener() {

        public void menuAboutToShow(IMenuManager manager) {
            fillContextMenu(manager);
        }
    });
}
Also used : Composite(org.eclipse.swt.widgets.Composite) IMenuListener(org.eclipse.jface.action.IMenuListener) ValueEditingSupport(name.abuchen.portfolio.ui.util.viewers.ValueEditingSupport) MonthEditingSupport(name.abuchen.portfolio.ui.util.viewers.MonthEditingSupport) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper) ConsumerPriceIndex(name.abuchen.portfolio.model.ConsumerPriceIndex) Column(name.abuchen.portfolio.ui.util.viewers.Column) IMenuManager(org.eclipse.jface.action.IMenuManager) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 8 with ShowHideColumnHelper

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

the class TransactionsTab method createControl.

@Override
public Control createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    TableColumnLayout layout = new TableColumnLayout();
    container.setLayout(layout);
    tableViewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.MULTI);
    ColumnViewerToolTipSupport.enableFor(tableViewer, ToolTip.NO_RECREATE);
    ShowHideColumnHelper support = new // $NON-NLS-1$
    ShowHideColumnHelper(// $NON-NLS-1$
    TransactionsTab.class.getSimpleName() + "@v2", preferences, tableViewer, layout);
    addColumns(support);
    support.createColumns();
    tableViewer.getTable().setHeaderVisible(true);
    tableViewer.getTable().setLinesVisible(true);
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());
    tableViewer.addSelectionChangedListener(event -> {
        TransactionPair<?> tx = ((TransactionPair<?>) ((IStructuredSelection) event.getSelection()).getFirstElement());
        if (tx != null && tx.getTransaction().getSecurity() != null)
            selectionService.setSelection(new SecuritySelection(model.getClient(), tx.getTransaction().getSecurity()));
    });
    tableViewer.setInput(model.getTransactions());
    model.addUpdateListener(() -> tableViewer.setInput(model.getTransactions()));
    return container;
}
Also used : SecuritySelection(name.abuchen.portfolio.ui.selection.SecuritySelection) Composite(org.eclipse.swt.widgets.Composite) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 9 with ShowHideColumnHelper

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

the class BookmarksListTab method createTab.

@Override
public CTabItem createTab(CTabFolder folder) {
    Composite container = new Composite(folder, SWT.NONE);
    TableColumnLayout layout = new TableColumnLayout();
    container.setLayout(layout);
    bookmarks = new TableViewer(container, SWT.FULL_SELECTION | SWT.MULTI);
    ColumnEditingSupport.prepare(bookmarks);
    ShowHideColumnHelper support = new // $NON-NLS-1$
    ShowHideColumnHelper(// $NON-NLS-1$
    BookmarksListTab.class.getSimpleName() + "@bottom", preferences, bookmarks, layout);
    // Create Column for Bookmark
    Column column = new Column(Messages.BookmarksListView_bookmark, SWT.None, 150);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((Bookmark) element).getLabel();
        }

        @Override
        public Image getImage(Object element) {
            return Images.TEXT.image();
        }
    });
    // $NON-NLS-1$
    new StringEditingSupport(Bookmark.class, "label").addListener(this).attachTo(column);
    support.addColumn(column);
    // Create Column for URL
    column = new Column(Messages.BookmarksListView_url, SWT.None, 500);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((Bookmark) element).getPattern();
        }
    });
    // $NON-NLS-1$
    new StringEditingSupport(Bookmark.class, "pattern").addListener(this).attachTo(column);
    support.addColumn(column);
    support.createColumns();
    bookmarks.getTable().setHeaderVisible(true);
    bookmarks.getTable().setLinesVisible(true);
    bookmarks.setContentProvider(ArrayContentProvider.getInstance());
    bookmarks.setInput(client.getSettings().getBookmarks());
    bookmarks.refresh();
    new ContextMenu(bookmarks.getTable(), this::fillContextMenu).hook();
    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.BookmarksListView_title);
    item.setControl(container);
    return item;
}
Also used : Composite(org.eclipse.swt.widgets.Composite) ContextMenu(name.abuchen.portfolio.ui.util.ContextMenu) StringEditingSupport(name.abuchen.portfolio.ui.util.viewers.StringEditingSupport) Image(org.eclipse.swt.graphics.Image) CTabItem(org.eclipse.swt.custom.CTabItem) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper) Column(name.abuchen.portfolio.ui.util.viewers.Column) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 10 with ShowHideColumnHelper

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

the class AbstractNodeTreeViewer method createControl.

@Override
public final Control createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    TreeColumnLayout layout = new TreeColumnLayout();
    container.setLayout(layout);
    nodeViewer = new TreeViewer(container, SWT.FULL_SELECTION | SWT.MULTI);
    ColumnEditingSupport.prepare(nodeViewer);
    ColumnViewerToolTipSupport.enableFor(nodeViewer, ToolTip.NO_RECREATE);
    support = new ShowHideColumnHelper(getClass().getSimpleName() + '-' + getModel().getTaxonomy().getId(), getPreferenceStore(), nodeViewer, layout);
    addColumns(support);
    support.createColumns();
    nodeViewer.getTree().setHeaderVisible(true);
    nodeViewer.getTree().setLinesVisible(true);
    nodeViewer.setContentProvider(new ItemContentProvider());
    nodeViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { TaxonomyNodeTransfer.getTransfer(), SecurityTransfer.getTransfer() }, new NodeDragListener(nodeViewer));
    nodeViewer.addDropSupport(DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { TaxonomyNodeTransfer.getTransfer() }, new NodeDropListener(this));
    nodeViewer.addFilter(new ViewerFilter() {

        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            TaxonomyNode node = (TaxonomyNode) element;
            for (Predicate<TaxonomyNode> predicate : getModel().getNodeFilters()) if (!predicate.test(node))
                return false;
            return true;
        }
    });
    nodeViewer.addSelectionChangedListener(event -> {
        TaxonomyNode node = ((TaxonomyNode) ((IStructuredSelection) event.getSelection()).getFirstElement());
        if (node != null && node.getBackingSecurity() != null)
            selectionService.setSelection(new SecuritySelection(getModel().getClient(), node.getBackingSecurity()));
    });
    nodeViewer.setInput(getModel());
    new ContextMenu(nodeViewer.getControl(), this::fillContextMenu).hook();
    return container;
}
Also used : SecuritySelection(name.abuchen.portfolio.ui.selection.SecuritySelection) Composite(org.eclipse.swt.widgets.Composite) ViewerFilter(org.eclipse.jface.viewers.ViewerFilter) TreeColumnLayout(org.eclipse.jface.layout.TreeColumnLayout) TreeViewer(org.eclipse.jface.viewers.TreeViewer) TreeViewer(org.eclipse.jface.viewers.TreeViewer) Viewer(org.eclipse.jface.viewers.Viewer) ContextMenu(name.abuchen.portfolio.ui.util.ContextMenu) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Predicate(java.util.function.Predicate) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper)

Aggregations

ShowHideColumnHelper (name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper)22 Composite (org.eclipse.swt.widgets.Composite)22 TableColumnLayout (org.eclipse.jface.layout.TableColumnLayout)20 TableViewer (org.eclipse.jface.viewers.TableViewer)20 Column (name.abuchen.portfolio.ui.util.viewers.Column)19 ColumnLabelProvider (org.eclipse.jface.viewers.ColumnLabelProvider)19 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)16 SecuritySelection (name.abuchen.portfolio.ui.selection.SecuritySelection)14 NoteColumn (name.abuchen.portfolio.ui.views.columns.NoteColumn)14 Image (org.eclipse.swt.graphics.Image)14 Inject (javax.inject.Inject)13 Security (name.abuchen.portfolio.model.Security)13 IMenuManager (org.eclipse.jface.action.IMenuManager)13 CTabItem (org.eclipse.swt.custom.CTabItem)13 Values (name.abuchen.portfolio.money.Values)12 AccountTransaction (name.abuchen.portfolio.model.AccountTransaction)11 Messages (name.abuchen.portfolio.ui.Messages)11 Viewer (org.eclipse.jface.viewers.Viewer)11 SWT (org.eclipse.swt.SWT)11 CTabFolder (org.eclipse.swt.custom.CTabFolder)11