⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portfoliolabelprovider.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
字号:
/* * Copyright (c) 2004-2007 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     Marco Maccaferri - initial API and implementation */package net.sourceforge.eclipsetrader.trading.portfolio;import java.text.NumberFormat;import net.sourceforge.eclipsetrader.core.db.PortfolioPosition;import net.sourceforge.eclipsetrader.core.db.feed.Quote;import org.eclipse.jface.viewers.IFontProvider;import org.eclipse.jface.viewers.ITableColorProvider;import org.eclipse.jface.viewers.ITableLabelProvider;import org.eclipse.jface.viewers.LabelProvider;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.Font;import org.eclipse.swt.graphics.Image;public class PortfolioLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider, IFontProvider{    NumberFormat numberFormat = NumberFormat.getInstance();    NumberFormat priceFormat = NumberFormat.getInstance();    NumberFormat valueFormat = NumberFormat.getInstance();    NumberFormat percentageFormat = NumberFormat.getInstance();    Color negativeForeground;    Color positiveForeground;    Font boldFont;    public PortfolioLabelProvider()    {        numberFormat.setGroupingUsed(true);        numberFormat.setMinimumIntegerDigits(1);        numberFormat.setMinimumFractionDigits(0);        numberFormat.setMaximumFractionDigits(0);        priceFormat.setGroupingUsed(true);        priceFormat.setMinimumIntegerDigits(1);        priceFormat.setMinimumFractionDigits(4);        priceFormat.setMaximumFractionDigits(4);        percentageFormat.setGroupingUsed(true);        percentageFormat.setMinimumIntegerDigits(1);        percentageFormat.setMinimumFractionDigits(2);        percentageFormat.setMaximumFractionDigits(2);        valueFormat.setGroupingUsed(true);        valueFormat.setMinimumIntegerDigits(1);        valueFormat.setMinimumFractionDigits(2);        valueFormat.setMaximumFractionDigits(2);    }    /* (non-Javadoc)     * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)     */    public String getText(Object element)    {        if (element instanceof AccountGroupTreeNode)            return ((AccountGroupTreeNode)element).value.getDescription();        if (element instanceof AccountTreeNode)            return ((AccountTreeNode)element).value.getDescription();        if (element instanceof PositionTreeNode)            return ((PositionTreeNode)element).value.getSecurity().getDescription();        return null;    }    /* (non-Javadoc)     * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)     */    public Image getColumnImage(Object element, int columnIndex)    {        return null;    }    /* (non-Javadoc)     * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)     */    public String getColumnText(Object element, int columnIndex)    {        if (element instanceof AccountGroupTreeNode)        {            if (columnIndex == 0)                return ((AccountGroupTreeNode)element).value.getDescription();        }        if (element instanceof AccountTreeNode)        {            if (columnIndex == 0)                return ((AccountTreeNode)element).value.getDescription();        }        if (element instanceof PositionTreeNode)        {            PortfolioPosition position = ((PositionTreeNode)element).value;             Quote quote = ((PositionTreeNode)element).quote;            switch(columnIndex)            {                case 0:                    return position.getSecurity().toString();                case 1:                    return numberFormat.format(position.getQuantity());                case 2:                    return priceFormat.format(position.getPrice());                case 3:                    return quote == null ? "" : priceFormat.format(quote.getLast());                case 4:                    return quote == null ? "" : valueFormat.format(position.getMarketValue());                case 5:                {                    double gain = (position.getQuantity() > 0) ? position.getMarketValue() - position.getValue() : position.getValue() - position.getMarketValue();                    String s1 = valueFormat.format(gain);                    String s2 = percentageFormat.format(gain / position.getValue() * 100.0);                    if (gain > 0)                        return "+" + s1 + " (+" + s2 + "%)";                    else                        return s1 + " (" + s2 + "%)";                }            }        }        return null;    }    /* (non-Javadoc)     * @see org.eclipse.jface.viewers.ITableColorProvider#getBackground(java.lang.Object, int)     */    public Color getBackground(Object element, int columnIndex)    {        return null;    }    /* (non-Javadoc)     * @see org.eclipse.jface.viewers.ITableColorProvider#getForeground(java.lang.Object, int)     */    public Color getForeground(Object element, int columnIndex)    {        if (element instanceof PositionTreeNode)        {            PortfolioPosition position = ((PositionTreeNode)element).value;             if (columnIndex == 5)            {                double gain = (position.getQuantity() > 0) ? position.getMarketValue() - position.getValue() : position.getValue() - position.getMarketValue();                if (gain > 0)                    return positiveForeground;                else if (gain < 0)                    return negativeForeground;            }        }        return null;    }    /* (non-Javadoc)     * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)     */    public Font getFont(Object element)    {        if (element instanceof AccountGroupTreeNode || element instanceof AccountTreeNode)            return boldFont;        return null;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -