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

📄 watchlistboxviewer.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2004-2006 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.internal;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.Iterator;import java.util.Observable;import java.util.Observer;import net.sourceforge.eclipsetrader.core.CurrencyConverter;import net.sourceforge.eclipsetrader.core.db.Security;import net.sourceforge.eclipsetrader.core.db.WatchlistItem;import net.sourceforge.eclipsetrader.core.db.feed.Quote;import net.sourceforge.eclipsetrader.core.ui.NullSelection;import net.sourceforge.eclipsetrader.trading.TradingPlugin;import net.sourceforge.eclipsetrader.trading.WatchlistItemSelection;import net.sourceforge.eclipsetrader.trading.views.WatchlistView;import org.eclipse.jface.action.IMenuListener;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.action.MenuManager;import org.eclipse.jface.action.Separator;import org.eclipse.jface.util.IPropertyChangeListener;import org.eclipse.jface.util.PropertyChangeEvent;import org.eclipse.swt.SWT;import org.eclipse.swt.events.DisposeEvent;import org.eclipse.swt.events.DisposeListener;import org.eclipse.swt.events.MouseAdapter;import org.eclipse.swt.events.MouseEvent;import org.eclipse.swt.events.MouseListener;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.layout.RowLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Event;import org.eclipse.ui.IActionBars;import org.eclipse.ui.IWorkbenchActionConstants;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.themes.ITheme;import org.eclipse.ui.themes.IThemeManager;public class WatchlistBoxViewer extends AbstractLayout{    public static final String FOREGROUND = "BOX_FOREGROUND";    public static final String BACKGROUND = "BOX_BACKGROUND";    public static final String POSITIVE_FOREGROUND = "BOX_POSITIVE_FOREGROUND";    public static final String NEGATIVE_FOREGROUND = "BOX_NEGATIVE_FOREGROUND";    private Image up = TradingPlugin.getImageDescriptor("icons/higher.gif").createImage();    private Image down = TradingPlugin.getImageDescriptor("icons/lower.gif").createImage();    private Image equal = TradingPlugin.getImageDescriptor("icons/equal.gif").createImage();    private Color foreground;    private Color background;    private Color negativeForeground;    private Color positiveForeground;    private NumberFormat numberFormatter = NumberFormat.getInstance();    private NumberFormat percentageFormatter = NumberFormat.getInstance();    private SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");    private Composite content;    WatchlistItem selectedItem;    private IPropertyChangeListener themeChangeListener = new IPropertyChangeListener() {        public void propertyChange(PropertyChangeEvent event)        {            if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME))            {                ((ITheme) event.getOldValue()).removePropertyChangeListener(this);                setTheme((ITheme) event.getNewValue());            }            else            {                IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager();                ITheme theme = themeManager.getCurrentTheme();                if (event.getProperty().equals(BACKGROUND))                    background = theme.getColorRegistry().get(event.getProperty());                else if (event.getProperty().equals(FOREGROUND))                    foreground = theme.getColorRegistry().get(event.getProperty());                else if (event.getProperty().equals(POSITIVE_FOREGROUND))                    positiveForeground = theme.getColorRegistry().get(event.getProperty());                else if (event.getProperty().equals(NEGATIVE_FOREGROUND))                    negativeForeground = theme.getColorRegistry().get(event.getProperty());            }            updateView();        }    };    MouseListener mouseListener = new MouseAdapter() {        public void mouseDown(MouseEvent e)        {            Event event = new Event();            event.display = e.display;            event.x = e.x;            event.y = e.y;            event.widget = content;            event.time = e.time;            SelectionEvent selection = new SelectionEvent(event);            selectionListener.widgetSelected(selection);        }        public void mouseUp(MouseEvent e)        {        }    };    SelectionAdapter selectionListener = new SelectionAdapter() {        public void widgetSelected(SelectionEvent e)        {            boolean enable = false;            selectedItem = null;            if (e.item instanceof BoxViewItem)            {                BoxViewItem viewItem = (BoxViewItem)e.item;                selectedItem = viewItem.getWatchlistItem();                getView().getSite().getSelectionProvider().setSelection(new WatchlistItemSelection(selectedItem));                enable = true;            }            else                getView().getSite().getSelectionProvider().setSelection(new NullSelection());            IActionBars actionBars = getViewSite().getActionBars();            actionBars.getGlobalActionHandler("cut").setEnabled(enable);            actionBars.getGlobalActionHandler("copy").setEnabled(enable);            actionBars.getGlobalActionHandler("delete").setEnabled(enable);        }    };        public WatchlistBoxViewer(WatchlistView view)    {        super(view);        numberFormatter.setGroupingUsed(true);        numberFormatter.setMinimumIntegerDigits(1);        numberFormatter.setMinimumFractionDigits(0);        numberFormatter.setMaximumFractionDigits(4);        percentageFormatter.setGroupingUsed(true);        percentageFormatter.setMinimumIntegerDigits(1);        percentageFormatter.setMinimumFractionDigits(2);        percentageFormatter.setMaximumFractionDigits(2);    }    public Composite createPartControl(Composite parent)    {        content = new Composite(parent, SWT.NONE);        RowLayout rowLayout = new RowLayout();        rowLayout.wrap = true;        rowLayout.pack = true;        rowLayout.fill = true;        rowLayout.justify = false;        rowLayout.type = SWT.HORIZONTAL;        rowLayout.marginLeft = 2;        rowLayout.marginTop = 2;        rowLayout.marginRight = 2;        rowLayout.marginBottom = 2;        rowLayout.spacing = 3;        content.setLayout(rowLayout);                IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager();        themeManager.addPropertyChangeListener(themeChangeListener);        ITheme theme = themeManager.getCurrentTheme();        setTheme(theme);        content.addMouseListener(mouseListener);        return content;    }    public void dispose()    {        IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager();        themeManager.removePropertyChangeListener(themeChangeListener);        ITheme theme = themeManager.getCurrentTheme();        theme.removePropertyChangeListener(themeChangeListener);        if (content != null)            content.dispose();                up.dispose();        down.dispose();        equal.dispose();    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.trading.views.AbstractWatchlistView#updateView()     */    public void updateView()    {        content.setRedraw(false);

⌨️ 快捷键说明

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