Search in sources :

Example 1 with Values

use of name.abuchen.portfolio.money.Values in project portfolio by buchen.

the class SecuritiesChart method addInvestmentMarkers.

private void addInvestmentMarkers(List<PortfolioTransaction> transactions, String seriesLabel, Color color) {
    if (transactions.isEmpty())
        return;
    customTooltipEvents.addAll(transactions);
    if (chartConfig.contains(ChartDetails.SHOW_MARKER_LINES)) {
        transactions.forEach(t -> {
            String label = Values.Share.format(t.getType().isPurchase() ? t.getShares() : -t.getShares());
            double value = t.getGrossPricePerShare(converter.with(t.getSecurity().getCurrencyCode())).getAmount() / Values.Quote.divider();
            chart.addMarkerLine(t.getDateTime().toLocalDate(), color, label, value);
        });
    } else {
        Date[] dates = transactions.stream().map(PortfolioTransaction::getDateTime).map(d -> Date.from(d.atZone(ZoneId.systemDefault()).toInstant())).collect(Collectors.toList()).toArray(new Date[0]);
        double[] values = transactions.stream().mapToDouble(t -> t.getGrossPricePerShare(converter.with(t.getSecurity().getCurrencyCode())).getAmount() / Values.Quote.divider()).toArray();
        // $NON-NLS-1$
        ILineSeries border = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, seriesLabel + "2");
        border.setYAxisId(0);
        border.setSymbolColor(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
        border.setSymbolType(PlotSymbolType.DIAMOND);
        border.setSymbolSize(7);
        configureSeriesPainter(border, dates, values, null, 0, LineStyle.NONE, false, false);
        ILineSeries background = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, // $NON-NLS-1$
        seriesLabel + "1");
        background.setYAxisId(0);
        background.setSymbolType(PlotSymbolType.DIAMOND);
        background.setSymbolSize(6);
        background.setSymbolColor(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
        configureSeriesPainter(background, dates, values, null, 0, LineStyle.NONE, false, false);
        ILineSeries inner = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, seriesLabel);
        inner.setYAxisId(0);
        inner.setSymbolType(PlotSymbolType.DIAMOND);
        inner.setSymbolSize(4);
        inner.setSymbolColor(color);
        configureSeriesPainter(inner, dates, values, color, 0, LineStyle.NONE, false, true);
        if (chartConfig.contains(ChartDetails.SHOW_DATA_LABELS)) {
            customPaintListeners.add(event -> {
                IAxis xAxis = chart.getAxisSet().getXAxis(0);
                IAxis yAxis = chart.getAxisSet().getYAxis(0);
                for (int index = 0; index < dates.length; index++) {
                    int x = xAxis.getPixelCoordinate(dates[index].getTime());
                    int y = yAxis.getPixelCoordinate(values[index]);
                    PortfolioTransaction t = transactions.get(index);
                    String label = Values.Share.format(t.getType().isPurchase() ? t.getShares() : -t.getShares());
                    Point textExtent = event.gc.textExtent(label);
                    event.gc.setForeground(Colors.BLACK);
                    event.gc.drawText(label, x - (textExtent.x / 2), y + 10, true);
                }
            });
        }
    }
}
Also used : Arrays(java.util.Arrays) Client(name.abuchen.portfolio.model.Client) Transaction(name.abuchen.portfolio.model.Transaction) Date(java.util.Date) ZonedDateTime(java.time.ZonedDateTime) LineStyle(org.swtchart.LineStyle) Point(org.eclipse.swt.graphics.Point) Composite(org.eclipse.swt.widgets.Composite) ILineSeries(org.swtchart.ILineSeries) Interval(name.abuchen.portfolio.util.Interval) EnumSet(java.util.EnumSet) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Separator(org.eclipse.jface.action.Separator) Button(org.eclipse.swt.widgets.Button) MenuManager(org.eclipse.jface.action.MenuManager) Security(name.abuchen.portfolio.model.Security) Display(org.eclipse.swt.widgets.Display) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) List(java.util.List) Colors(name.abuchen.portfolio.ui.util.Colors) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) LocalDate(java.time.LocalDate) RowLayoutFactory(org.eclipse.jface.layout.RowLayoutFactory) SWT(org.eclipse.swt.SWT) ClientSecurityFilter(name.abuchen.portfolio.snapshot.filter.ClientSecurityFilter) SeriesType(org.swtchart.ISeries.SeriesType) Optional(java.util.Optional) Label(org.eclipse.swt.widgets.Label) ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) SelectionListener(org.eclipse.swt.events.SelectionListener) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) PaintListener(org.eclipse.swt.events.PaintListener) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) IAxis(org.swtchart.IAxis) Images(name.abuchen.portfolio.ui.Images) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition) ArrayUtils(org.apache.commons.lang3.ArrayUtils) ISeries(org.swtchart.ISeries) TimelineChartToolTip(name.abuchen.portfolio.ui.util.chart.TimelineChartToolTip) Range(org.swtchart.Range) ArrayList(java.util.ArrayList) MessageFormat(com.ibm.icu.text.MessageFormat) Messages(name.abuchen.portfolio.ui.Messages) TemporalAmount(java.time.temporal.TemporalAmount) Period(java.time.Period) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) GridDataFactory(org.eclipse.jface.layout.GridDataFactory) DecimalFormat(java.text.DecimalFormat) SimpleAction(name.abuchen.portfolio.ui.util.SimpleAction) ILegend(org.swtchart.ILegend) Action(org.eclipse.jface.action.Action) TimelineChart(name.abuchen.portfolio.ui.util.chart.TimelineChart) PlotSymbolType(org.swtchart.ILineSeries.PlotSymbolType) PortfolioPlugin(name.abuchen.portfolio.ui.PortfolioPlugin) Color(org.eclipse.swt.graphics.Color) Unit(name.abuchen.portfolio.model.Transaction.Unit) IMenuManager(org.eclipse.jface.action.IMenuManager) DateTimeFormatter(java.time.format.DateTimeFormatter) SecurityPrice(name.abuchen.portfolio.model.SecurityPrice) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Menu(org.eclipse.swt.widgets.Menu) Collections(java.util.Collections) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) ILineSeries(org.swtchart.ILineSeries) Point(org.eclipse.swt.graphics.Point) Date(java.util.Date) LocalDate(java.time.LocalDate) IAxis(org.swtchart.IAxis) Point(org.eclipse.swt.graphics.Point)

Example 2 with Values

use of name.abuchen.portfolio.money.Values in project portfolio by buchen.

the class SecuritiesChart method addDividendMarkerLines.

private void addDividendMarkerLines() {
    List<AccountTransaction> dividends = client.getAccounts().stream().flatMap(a -> a.getTransactions().stream()).filter(t -> t.getSecurity() == security).filter(t -> t.getType() == AccountTransaction.Type.DIVIDENDS).filter(t -> chartPeriod == null || chartPeriod.isBefore(t.getDateTime().toLocalDate())).sorted(new Transaction.ByDate()).collect(Collectors.toList());
    if (dividends.isEmpty())
        return;
    customTooltipEvents.addAll(dividends);
    if (chartConfig.contains(ChartDetails.SHOW_MARKER_LINES)) {
        dividends.forEach(t -> chart.addMarkerLine(t.getDateTime().toLocalDate(), colorEventDividend, getDividendLabel(t)));
    } else {
        Date[] dates = dividends.stream().map(AccountTransaction::getDateTime).map(d -> Date.from(d.atZone(ZoneId.systemDefault()).toInstant())).collect(Collectors.toList()).toArray(new Date[0]);
        IAxis yAxis1st = chart.getAxisSet().getYAxis(0);
        double yAxis1stAxisPrice = yAxis1st.getRange().lower;
        double[] values = new double[dates.length];
        Arrays.fill(values, yAxis1stAxisPrice);
        ILineSeries border = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, // $NON-NLS-1$
        Messages.LabelChartDetailDividends + "2");
        border.setYAxisId(0);
        border.setSymbolType(PlotSymbolType.SQUARE);
        border.setSymbolSize(6);
        border.setSymbolColor(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
        configureSeriesPainter(border, dates, values, null, 0, LineStyle.NONE, false, false);
        ILineSeries background = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, // $NON-NLS-1$
        Messages.LabelChartDetailDividends + "1");
        background.setYAxisId(0);
        background.setSymbolType(PlotSymbolType.SQUARE);
        background.setSymbolSize(5);
        background.setSymbolColor(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
        configureSeriesPainter(background, dates, values, null, 0, LineStyle.NONE, false, false);
        ILineSeries inner = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, Messages.LabelChartDetailDividends);
        inner.setYAxisId(0);
        inner.setSymbolType(PlotSymbolType.SQUARE);
        inner.setSymbolSize(3);
        inner.setSymbolColor(colorEventDividend);
        configureSeriesPainter(inner, dates, values, null, 0, LineStyle.NONE, false, true);
        if (chartConfig.contains(ChartDetails.SHOW_DATA_LABELS)) {
            customPaintListeners.add(event -> {
                IAxis xAxis = chart.getAxisSet().getXAxis(0);
                IAxis yAxis = chart.getAxisSet().getYAxis(0);
                for (int index = 0; index < dates.length; index++) {
                    int x = xAxis.getPixelCoordinate(dates[index].getTime());
                    int y = yAxis.getPixelCoordinate(values[index]);
                    String label = getDividendLabel(dividends.get(index));
                    Point textExtent = event.gc.textExtent(label);
                    event.gc.setForeground(Colors.BLACK);
                    event.gc.drawText(label, x - (textExtent.x / 2), y - 22, true);
                }
            });
        }
    }
}
Also used : Arrays(java.util.Arrays) Client(name.abuchen.portfolio.model.Client) Transaction(name.abuchen.portfolio.model.Transaction) Date(java.util.Date) ZonedDateTime(java.time.ZonedDateTime) LineStyle(org.swtchart.LineStyle) Point(org.eclipse.swt.graphics.Point) Composite(org.eclipse.swt.widgets.Composite) ILineSeries(org.swtchart.ILineSeries) Interval(name.abuchen.portfolio.util.Interval) EnumSet(java.util.EnumSet) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Separator(org.eclipse.jface.action.Separator) Button(org.eclipse.swt.widgets.Button) MenuManager(org.eclipse.jface.action.MenuManager) Security(name.abuchen.portfolio.model.Security) Display(org.eclipse.swt.widgets.Display) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) List(java.util.List) Colors(name.abuchen.portfolio.ui.util.Colors) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) LocalDate(java.time.LocalDate) RowLayoutFactory(org.eclipse.jface.layout.RowLayoutFactory) SWT(org.eclipse.swt.SWT) ClientSecurityFilter(name.abuchen.portfolio.snapshot.filter.ClientSecurityFilter) SeriesType(org.swtchart.ISeries.SeriesType) Optional(java.util.Optional) Label(org.eclipse.swt.widgets.Label) ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) SelectionListener(org.eclipse.swt.events.SelectionListener) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) PaintListener(org.eclipse.swt.events.PaintListener) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) IAxis(org.swtchart.IAxis) Images(name.abuchen.portfolio.ui.Images) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition) ArrayUtils(org.apache.commons.lang3.ArrayUtils) ISeries(org.swtchart.ISeries) TimelineChartToolTip(name.abuchen.portfolio.ui.util.chart.TimelineChartToolTip) Range(org.swtchart.Range) ArrayList(java.util.ArrayList) MessageFormat(com.ibm.icu.text.MessageFormat) Messages(name.abuchen.portfolio.ui.Messages) TemporalAmount(java.time.temporal.TemporalAmount) Period(java.time.Period) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) GridDataFactory(org.eclipse.jface.layout.GridDataFactory) DecimalFormat(java.text.DecimalFormat) SimpleAction(name.abuchen.portfolio.ui.util.SimpleAction) ILegend(org.swtchart.ILegend) Action(org.eclipse.jface.action.Action) TimelineChart(name.abuchen.portfolio.ui.util.chart.TimelineChart) PlotSymbolType(org.swtchart.ILineSeries.PlotSymbolType) PortfolioPlugin(name.abuchen.portfolio.ui.PortfolioPlugin) Color(org.eclipse.swt.graphics.Color) Unit(name.abuchen.portfolio.model.Transaction.Unit) IMenuManager(org.eclipse.jface.action.IMenuManager) DateTimeFormatter(java.time.format.DateTimeFormatter) SecurityPrice(name.abuchen.portfolio.model.SecurityPrice) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Menu(org.eclipse.swt.widgets.Menu) Collections(java.util.Collections) ILineSeries(org.swtchart.ILineSeries) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) Point(org.eclipse.swt.graphics.Point) Date(java.util.Date) LocalDate(java.time.LocalDate) IAxis(org.swtchart.IAxis) Point(org.eclipse.swt.graphics.Point)

Example 3 with Values

use of name.abuchen.portfolio.money.Values in project portfolio by buchen.

the class SecuritiesChart method addMovingAveragePurchasePrice.

private void addMovingAveragePurchasePrice() {
    // no purchase price
    if (security.getCurrencyCode() == null)
        return;
    // create a list of dates that are relevant for floating avg purchase price
    // changes (i.e. all purchase and sell events)
    Client filteredClient = new ClientSecurityFilter(security).filter(client);
    CurrencyConverter securityCurrency = converter.with(security.getCurrencyCode());
    LocalDate today = LocalDate.now();
    List<LocalDate> candidates = // 
    client.getPortfolios().stream().flatMap(// 
    p -> p.getTransactions().stream()).filter(t -> t.getSecurity().equals(security)).filter(t -> !(t.getType() == PortfolioTransaction.Type.TRANSFER_IN || t.getType() == PortfolioTransaction.Type.TRANSFER_OUT)).filter(t -> t.getDateTime().toLocalDate().isBefore(today)).map(t -> (chartPeriod == null || t.getDateTime().toLocalDate().isAfter(chartPeriod)) ? t.getDateTime().toLocalDate() : chartPeriod).distinct().sorted().collect(Collectors.toList());
    // calculate floating avg purchase price for each event - separate lineSeries
    // per holding period
    List<Double> values = new ArrayList<>();
    List<LocalDate> dates = new ArrayList<>();
    int seriesCounter = 0;
    for (LocalDate eventDate : candidates) {
        Optional<Double> purchasePrice = getMovingAveragePurchasePrice(filteredClient, securityCurrency, eventDate);
        if (purchasePrice.isPresent()) {
            dates.add(eventDate);
            values.add(purchasePrice.get());
        } else {
            if (!dates.isEmpty()) {
                // add previous value if the data series ends here (no more
                // future events)
                dates.add(eventDate);
                values.add(values.get(values.size() - 1));
                createMovingAveragePurchaseLineSeries(values, dates, seriesCounter++);
                values.clear();
                dates.clear();
            } else if (dates.isEmpty()) {
            // if no holding period exists, then do not add the event at
            // all
            }
        }
    }
    // add today if needed
    getMovingAveragePurchasePrice(filteredClient, securityCurrency, today).ifPresent(price -> {
        dates.add(today);
        values.add(price);
    });
    if (!dates.isEmpty())
        createMovingAveragePurchaseLineSeries(values, dates, seriesCounter);
}
Also used : Arrays(java.util.Arrays) Client(name.abuchen.portfolio.model.Client) Transaction(name.abuchen.portfolio.model.Transaction) Date(java.util.Date) ZonedDateTime(java.time.ZonedDateTime) LineStyle(org.swtchart.LineStyle) Point(org.eclipse.swt.graphics.Point) Composite(org.eclipse.swt.widgets.Composite) ILineSeries(org.swtchart.ILineSeries) Interval(name.abuchen.portfolio.util.Interval) EnumSet(java.util.EnumSet) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Separator(org.eclipse.jface.action.Separator) Button(org.eclipse.swt.widgets.Button) MenuManager(org.eclipse.jface.action.MenuManager) Security(name.abuchen.portfolio.model.Security) Display(org.eclipse.swt.widgets.Display) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) List(java.util.List) Colors(name.abuchen.portfolio.ui.util.Colors) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) LocalDate(java.time.LocalDate) RowLayoutFactory(org.eclipse.jface.layout.RowLayoutFactory) SWT(org.eclipse.swt.SWT) ClientSecurityFilter(name.abuchen.portfolio.snapshot.filter.ClientSecurityFilter) SeriesType(org.swtchart.ISeries.SeriesType) Optional(java.util.Optional) Label(org.eclipse.swt.widgets.Label) ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) SelectionListener(org.eclipse.swt.events.SelectionListener) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) PaintListener(org.eclipse.swt.events.PaintListener) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) IAxis(org.swtchart.IAxis) Images(name.abuchen.portfolio.ui.Images) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition) ArrayUtils(org.apache.commons.lang3.ArrayUtils) ISeries(org.swtchart.ISeries) TimelineChartToolTip(name.abuchen.portfolio.ui.util.chart.TimelineChartToolTip) Range(org.swtchart.Range) ArrayList(java.util.ArrayList) MessageFormat(com.ibm.icu.text.MessageFormat) Messages(name.abuchen.portfolio.ui.Messages) TemporalAmount(java.time.temporal.TemporalAmount) Period(java.time.Period) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) GridDataFactory(org.eclipse.jface.layout.GridDataFactory) DecimalFormat(java.text.DecimalFormat) SimpleAction(name.abuchen.portfolio.ui.util.SimpleAction) ILegend(org.swtchart.ILegend) Action(org.eclipse.jface.action.Action) TimelineChart(name.abuchen.portfolio.ui.util.chart.TimelineChart) PlotSymbolType(org.swtchart.ILineSeries.PlotSymbolType) PortfolioPlugin(name.abuchen.portfolio.ui.PortfolioPlugin) Color(org.eclipse.swt.graphics.Color) Unit(name.abuchen.portfolio.model.Transaction.Unit) IMenuManager(org.eclipse.jface.action.IMenuManager) DateTimeFormatter(java.time.format.DateTimeFormatter) SecurityPrice(name.abuchen.portfolio.model.SecurityPrice) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Menu(org.eclipse.swt.widgets.Menu) Collections(java.util.Collections) ClientSecurityFilter(name.abuchen.portfolio.snapshot.filter.ClientSecurityFilter) ArrayList(java.util.ArrayList) Client(name.abuchen.portfolio.model.Client) LocalDate(java.time.LocalDate) Point(org.eclipse.swt.graphics.Point) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter)

Example 4 with Values

use of name.abuchen.portfolio.money.Values in project portfolio by buchen.

the class SecuritiesChart method addFIFOPurchasePrice.

private void addFIFOPurchasePrice() {
    // no purchase price
    if (security.getCurrencyCode() == null)
        return;
    // create a list of dates that are relevant for FIFO purchase price
    // changes (i.e. all purchase and sell events)
    Client filteredClient = new ClientSecurityFilter(security).filter(client);
    CurrencyConverter securityCurrency = converter.with(security.getCurrencyCode());
    LocalDate today = LocalDate.now();
    List<LocalDate> candidates = // 
    client.getPortfolios().stream().flatMap(// 
    p -> p.getTransactions().stream()).filter(t -> t.getSecurity().equals(security)).filter(t -> !(t.getType() == PortfolioTransaction.Type.TRANSFER_IN || t.getType() == PortfolioTransaction.Type.TRANSFER_OUT)).filter(t -> t.getDateTime().toLocalDate().isBefore(today)).map(t -> (chartPeriod == null || t.getDateTime().toLocalDate().isAfter(chartPeriod)) ? t.getDateTime().toLocalDate() : chartPeriod).distinct().sorted().collect(Collectors.toList());
    // calculate FIFO purchase price for each event - separate lineSeries
    // per holding period
    List<Double> values = new ArrayList<>();
    List<LocalDate> dates = new ArrayList<>();
    int seriesCounter = 0;
    for (LocalDate eventDate : candidates) {
        Optional<Double> purchasePrice = getPurchasePrice(filteredClient, securityCurrency, eventDate);
        if (purchasePrice.isPresent()) {
            dates.add(eventDate);
            values.add(purchasePrice.get());
        } else {
            if (!dates.isEmpty()) {
                // add previous value if the data series ends here (no more
                // future events)
                dates.add(eventDate);
                values.add(values.get(values.size() - 1));
                createFIFOPurchaseLineSeries(values, dates, seriesCounter++);
                values.clear();
                dates.clear();
            } else if (dates.isEmpty()) {
            // if no holding period exists, then do not add the event at
            // all
            }
        }
    }
    // add today if needed
    getPurchasePrice(filteredClient, securityCurrency, today).ifPresent(price -> {
        dates.add(today);
        values.add(price);
    });
    if (!dates.isEmpty())
        createFIFOPurchaseLineSeries(values, dates, seriesCounter);
}
Also used : Arrays(java.util.Arrays) Client(name.abuchen.portfolio.model.Client) Transaction(name.abuchen.portfolio.model.Transaction) Date(java.util.Date) ZonedDateTime(java.time.ZonedDateTime) LineStyle(org.swtchart.LineStyle) Point(org.eclipse.swt.graphics.Point) Composite(org.eclipse.swt.widgets.Composite) ILineSeries(org.swtchart.ILineSeries) Interval(name.abuchen.portfolio.util.Interval) EnumSet(java.util.EnumSet) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Separator(org.eclipse.jface.action.Separator) Button(org.eclipse.swt.widgets.Button) MenuManager(org.eclipse.jface.action.MenuManager) Security(name.abuchen.portfolio.model.Security) Display(org.eclipse.swt.widgets.Display) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) List(java.util.List) Colors(name.abuchen.portfolio.ui.util.Colors) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) LocalDate(java.time.LocalDate) RowLayoutFactory(org.eclipse.jface.layout.RowLayoutFactory) SWT(org.eclipse.swt.SWT) ClientSecurityFilter(name.abuchen.portfolio.snapshot.filter.ClientSecurityFilter) SeriesType(org.swtchart.ISeries.SeriesType) Optional(java.util.Optional) Label(org.eclipse.swt.widgets.Label) ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) SelectionListener(org.eclipse.swt.events.SelectionListener) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) PaintListener(org.eclipse.swt.events.PaintListener) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) IAxis(org.swtchart.IAxis) Images(name.abuchen.portfolio.ui.Images) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition) ArrayUtils(org.apache.commons.lang3.ArrayUtils) ISeries(org.swtchart.ISeries) TimelineChartToolTip(name.abuchen.portfolio.ui.util.chart.TimelineChartToolTip) Range(org.swtchart.Range) ArrayList(java.util.ArrayList) MessageFormat(com.ibm.icu.text.MessageFormat) Messages(name.abuchen.portfolio.ui.Messages) TemporalAmount(java.time.temporal.TemporalAmount) Period(java.time.Period) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) GridDataFactory(org.eclipse.jface.layout.GridDataFactory) DecimalFormat(java.text.DecimalFormat) SimpleAction(name.abuchen.portfolio.ui.util.SimpleAction) ILegend(org.swtchart.ILegend) Action(org.eclipse.jface.action.Action) TimelineChart(name.abuchen.portfolio.ui.util.chart.TimelineChart) PlotSymbolType(org.swtchart.ILineSeries.PlotSymbolType) PortfolioPlugin(name.abuchen.portfolio.ui.PortfolioPlugin) Color(org.eclipse.swt.graphics.Color) Unit(name.abuchen.portfolio.model.Transaction.Unit) IMenuManager(org.eclipse.jface.action.IMenuManager) DateTimeFormatter(java.time.format.DateTimeFormatter) SecurityPrice(name.abuchen.portfolio.model.SecurityPrice) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Menu(org.eclipse.swt.widgets.Menu) Collections(java.util.Collections) ClientSecurityFilter(name.abuchen.portfolio.snapshot.filter.ClientSecurityFilter) ArrayList(java.util.ArrayList) Client(name.abuchen.portfolio.model.Client) LocalDate(java.time.LocalDate) Point(org.eclipse.swt.graphics.Point) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter)

Aggregations

MessageFormat (com.ibm.icu.text.MessageFormat)4 DecimalFormat (java.text.DecimalFormat)4 Instant (java.time.Instant)4 LocalDate (java.time.LocalDate)4 Period (java.time.Period)4 ZoneId (java.time.ZoneId)4 ZonedDateTime (java.time.ZonedDateTime)4 DateTimeFormatter (java.time.format.DateTimeFormatter)4 TemporalAmount (java.time.temporal.TemporalAmount)4 ArrayList (java.util.ArrayList)4 Arrays (java.util.Arrays)4 Collections (java.util.Collections)4 Date (java.util.Date)4 EnumSet (java.util.EnumSet)4 List (java.util.List)4 Optional (java.util.Optional)4 Collectors (java.util.stream.Collectors)4 AccountTransaction (name.abuchen.portfolio.model.AccountTransaction)4 Client (name.abuchen.portfolio.model.Client)4 PortfolioTransaction (name.abuchen.portfolio.model.PortfolioTransaction)4