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

📄 level2view.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * 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.views;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import java.util.Observable;import java.util.Observer;import net.sourceforge.eclipsetrader.core.CorePlugin;import net.sourceforge.eclipsetrader.core.Level2FeedMonitor;import net.sourceforge.eclipsetrader.core.db.Level2;import net.sourceforge.eclipsetrader.core.db.Security;import net.sourceforge.eclipsetrader.core.transfers.SecurityTransfer;import net.sourceforge.eclipsetrader.core.ui.SecuritySelection;import net.sourceforge.eclipsetrader.trading.TradingPlugin;import net.sourceforge.eclipsetrader.trading.actions.ToggleFollowSelectionAction;import net.sourceforge.eclipsetrader.trading.actions.ToggleLevelColorsAction;import net.sourceforge.eclipsetrader.trading.actions.TogglePriceGroupingAction;import net.sourceforge.eclipsetrader.trading.internal.CellTicker;import net.sourceforge.eclipsetrader.trading.internal.Trendbar;import org.apache.commons.logging.LogFactory;import org.eclipse.core.runtime.IPath;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.preference.PreferenceStore;import org.eclipse.jface.util.IPropertyChangeListener;import org.eclipse.jface.util.PropertyChangeEvent;import org.eclipse.jface.viewers.ISelection;import org.eclipse.swt.SWT;import org.eclipse.swt.dnd.DND;import org.eclipse.swt.dnd.DropTarget;import org.eclipse.swt.dnd.DropTargetEvent;import org.eclipse.swt.dnd.DropTargetListener;import org.eclipse.swt.dnd.Transfer;import org.eclipse.swt.dnd.TransferData;import org.eclipse.swt.events.ControlAdapter;import org.eclipse.swt.events.ControlEvent;import org.eclipse.swt.events.DisposeEvent;import org.eclipse.swt.events.DisposeListener;import org.eclipse.swt.events.FocusAdapter;import org.eclipse.swt.events.FocusEvent;import org.eclipse.swt.events.PaintEvent;import org.eclipse.swt.events.PaintListener;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.GC;import org.eclipse.swt.graphics.Rectangle;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;import org.eclipse.swt.widgets.TableItem;import org.eclipse.ui.IMemento;import org.eclipse.ui.ISelectionListener;import org.eclipse.ui.IViewSite;import org.eclipse.ui.IWorkbenchPart;import org.eclipse.ui.PartInitException;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.ViewPart;import org.eclipse.ui.themes.ITheme;import org.eclipse.ui.themes.IThemeManager;public class Level2View extends ViewPart implements Observer, ISelectionListener{    public static final String VIEW_ID = "net.sourceforge.eclipsetrader.trading.level2";    /**     * @deprecated use the instance area preference store instead     */    public static final String PREFERENCES_ID = "LEVEL2_PREFS_";    public static final String PREFS_SECURITY = "security";    public static final String PREFS_SECONDARY_ID = "secondaryId";    public static final String PREFS_GROUP_PRICES = "groupPrices";    public static final String PREFS_COLOR_LEVELS = "colorLevels";    public static final String PREFS_FOLLOW_SELECTION = "followSelection";    public static final String TRENDBAR_INDICATOR = "TRENDBAR_INDICATOR";    public static final String LEVEL_1_BACKGROUND = "LEVEL_1_BACKGROUND";    public static final String LEVEL_2_BACKGROUND = "LEVEL_2_BACKGROUND";    public static final String LEVEL_3_BACKGROUND = "LEVEL_3_BACKGROUND";    public static final String LEVEL_4_BACKGROUND = "LEVEL_4_BACKGROUND";    public static final String LEVEL_5_BACKGROUND = "LEVEL_5_BACKGROUND";    public static final String LEVEL_1_FOREGROUND = "LEVEL_1_FOREGROUND";    public static final String LEVEL_2_FOREGROUND = "LEVEL_2_FOREGROUND";    public static final String LEVEL_3_FOREGROUND = "LEVEL_3_FOREGROUND";    public static final String LEVEL_4_FOREGROUND = "LEVEL_4_FOREGROUND";    public static final String LEVEL_5_FOREGROUND = "LEVEL_5_FOREGROUND";    static boolean DEFAULT_GROUP_PRICES = false;    static boolean DEFAULT_COLOR_LEVELS = true;    static boolean DEFAULT_FOLLOW_SELECTION = false;    static int UPDATE_DELAY = 200;    Security security;    Composite info;    Label time;    Label volume;    Label last;    Label high;    Label change;    Label low;    Trendbar trendbar;    Table table;    boolean groupPrices = DEFAULT_GROUP_PRICES;    boolean colorLevels = DEFAULT_COLOR_LEVELS;    boolean followSelection = DEFAULT_FOLLOW_SELECTION;    private NumberFormat numberFormatter = NumberFormat.getInstance();    private NumberFormat priceFormatter = NumberFormat.getInstance();    private NumberFormat priceFormatter2 = NumberFormat.getInstance();    private NumberFormat percentFormatter = NumberFormat.getInstance();    private SimpleDateFormat dateFormatter = new SimpleDateFormat("HH:mm:ss"); //$NON-NLS-1$    private Color background;    private Color emptyBackground;    private Color negativeForeground = new Color(null, 224, 0, 0);    private Color positiveForeground = new Color(null, 0, 224, 0);    private Color[] bandBackground = new Color[5];    private Color[] bandForeground = new Color[5];    private ITheme theme;    PreferenceStore preferences;    Action toggleLevelColorsAction;    Action togglePriceGroupingAction;    Action toggleFollowSelectionAction;    private IPropertyChangeListener themeChangeListener = new IPropertyChangeListener() {        public void propertyChange(PropertyChangeEvent event)        {            if (event.getProperty().equals(LEVEL_1_BACKGROUND))            {                bandBackground[0] = theme.getColorRegistry().get(LEVEL_1_BACKGROUND);                trendbar.setBandColor(0, bandBackground[0]);            }            else if (event.getProperty().equals(LEVEL_1_FOREGROUND))                bandForeground[0] = theme.getColorRegistry().get(LEVEL_1_FOREGROUND);            else if (event.getProperty().equals(LEVEL_2_BACKGROUND))            {                bandBackground[1] = theme.getColorRegistry().get(LEVEL_2_BACKGROUND);                trendbar.setBandColor(1, bandBackground[1]);            }            else if (event.getProperty().equals(LEVEL_2_FOREGROUND))                bandForeground[1] = theme.getColorRegistry().get(LEVEL_2_FOREGROUND);            else if (event.getProperty().equals(LEVEL_3_BACKGROUND))            {                bandBackground[2] = theme.getColorRegistry().get(LEVEL_3_BACKGROUND);                trendbar.setBandColor(2, bandBackground[2]);            }            else if (event.getProperty().equals(LEVEL_3_FOREGROUND))                bandForeground[2] = theme.getColorRegistry().get(LEVEL_3_FOREGROUND);            else if (event.getProperty().equals(LEVEL_4_BACKGROUND))            {                bandBackground[3] = theme.getColorRegistry().get(LEVEL_4_BACKGROUND);                trendbar.setBandColor(3, bandBackground[3]);            }            else if (event.getProperty().equals(LEVEL_4_FOREGROUND))                bandForeground[3] = theme.getColorRegistry().get(LEVEL_4_FOREGROUND);            else if (event.getProperty().equals(LEVEL_5_BACKGROUND))            {                bandBackground[4] = theme.getColorRegistry().get(LEVEL_5_BACKGROUND);                trendbar.setBandColor(4, bandBackground[4]);            }            else if (event.getProperty().equals(LEVEL_5_FOREGROUND))                bandForeground[4] = theme.getColorRegistry().get(LEVEL_5_FOREGROUND);            else if (event.getProperty().equals(TRENDBAR_INDICATOR))                trendbar.setIndicatorColor(theme.getColorRegistry().get(TRENDBAR_INDICATOR));            updateTable();        }    };    DropTargetListener dropTargetListener = new DropTargetListener() {        public void dragEnter(DropTargetEvent event)        {            event.detail = DND.DROP_COPY;            event.currentDataType = null;                        TransferData[] data = event.dataTypes;            if (event.currentDataType == null)            {                for (int i = 0; i < data.length; i++)                {                    if (SecurityTransfer.getInstance().isSupportedType(data[i]))                    {                        event.currentDataType = data[i];                        break;                    }                }            }        }        public void dragOver(DropTargetEvent event)        {            event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;        }        public void dragOperationChanged(DropTargetEvent event)        {        }        public void dragLeave(DropTargetEvent event)        {        }        public void dropAccept(DropTargetEvent event)        {        }        public void drop(DropTargetEvent event)        {            if (SecurityTransfer.getInstance().isSupportedType(event.currentDataType))            {                Security[] securities = (Security[]) event.data;                setSecurity(securities[0]);            }        }    };    boolean tableUpdaterScheduled = false;    Runnable tableUpdater = new Runnable() {        public void run()        {            tableUpdaterScheduled = false;            if (!table.isDisposed())                updateTable();        }    };    boolean infoUpdaterScheduled = false;    Runnable infoUpdater = new Runnable() {        public void run()        {            infoUpdaterScheduled = false;            if (!info.isDisposed())                updateInfo();        }    };    public Level2View()    {        numberFormatter.setGroupingUsed(true);        numberFormatter.setMinimumIntegerDigits(1);        numberFormatter.setMinimumFractionDigits(0);        numberFormatter.setMaximumFractionDigits(0);        priceFormatter.setGroupingUsed(true);        priceFormatter.setMinimumIntegerDigits(1);        priceFormatter.setMinimumFractionDigits(2);        priceFormatter.setMaximumFractionDigits(4);        priceFormatter2.setGroupingUsed(true);        priceFormatter2.setMinimumIntegerDigits(1);        priceFormatter2.setMinimumFractionDigits(4);        priceFormatter2.setMaximumFractionDigits(4);        percentFormatter.setGroupingUsed(false);        percentFormatter.setMinimumIntegerDigits(1);        percentFormatter.setMinimumFractionDigits(2);        percentFormatter.setMaximumFractionDigits(2);    }        public static IPath getPreferenceStoreLocation(Security security)    {        return TradingPlugin.getDefault().getStateLocation().append("level2." + String.valueOf(security.getId()) + ".prefs");    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento)     */    public void init(IViewSite site, IMemento memento) throws PartInitException    {        super.init(site, memento);        toggleLevelColorsAction = new ToggleLevelColorsAction(this);        togglePriceGroupingAction = new TogglePriceGroupingAction(this);        toggleFollowSelectionAction = new ToggleFollowSelectionAction(this);        Integer id = null;        if (memento != null)            id = memento.getInteger(PREFS_SECURITY);        if (id == null)            try {                id = new Integer(getViewSite().getSecondaryId());            } catch(Exception e) {            }        if (id != null)            security = (Security)CorePlugin.getRepository().load(Security.class, id);    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.ViewPart#saveState(org.eclipse.ui.IMemento)     */    public void saveState(IMemento memento)    {        if (security != null)            memento.putInteger(PREFS_SECURITY, security.getId().intValue());

⌨️ 快捷键说明

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