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

📄 currencyexchangeview.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
字号:
/* * 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.core.ui.views;import java.text.NumberFormat;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.List;import java.util.Observable;import java.util.Observer;import net.sourceforge.eclipsetrader.core.CurrencyConverter;import net.sourceforge.eclipsetrader.core.ui.dialogs.CurrencyConversionDialog;import org.eclipse.jface.action.IToolBarManager;import org.eclipse.jface.action.Separator;import org.eclipse.swt.SWT;import org.eclipse.swt.events.MouseAdapter;import org.eclipse.swt.events.MouseEvent;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;import org.eclipse.swt.widgets.TableItem;import org.eclipse.ui.IViewSite;import org.eclipse.ui.IWorkbenchActionConstants;import org.eclipse.ui.PartInitException;import org.eclipse.ui.part.ViewPart;/** */public class CurrencyExchangeView extends ViewPart implements Observer{    public static final String VIEW_ID = "net.sourceforge.eclipsetrader.views.currencies"; //$NON-NLS-1$    private Color evenForeground = new Color(null, 0, 0, 0);    private Color evenBackground = new Color(null, 255, 255, 255);    private Color oddForeground = new Color(null, 0, 0, 0);    private Color oddBackground = new Color(null, 210, 240, 210);    private Table table;    private NumberFormat nf = NumberFormat.getInstance();        public CurrencyExchangeView()    {        nf.setGroupingUsed(true);        nf.setMinimumIntegerDigits(1);        nf.setMinimumFractionDigits(4);        nf.setMaximumFractionDigits(4);    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)     */    public void init(IViewSite site) throws PartInitException    {        IToolBarManager toolBarManager = site.getActionBars().getToolBarManager();        toolBarManager.add(new Separator("begin")); //$NON-NLS-1$        toolBarManager.add(new Separator("group1")); //$NON-NLS-1$        toolBarManager.add(new Separator("group2")); //$NON-NLS-1$        toolBarManager.add(new Separator("group3")); //$NON-NLS-1$        toolBarManager.add(new Separator("group4")); //$NON-NLS-1$        toolBarManager.add(new Separator("group5")); //$NON-NLS-1$        toolBarManager.add(new Separator("group6")); //$NON-NLS-1$        toolBarManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));        toolBarManager.add(new Separator("end")); //$NON-NLS-1$                super.init(site);    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)     */    public void createPartControl(Composite parent)    {        Composite content = new Composite(parent, SWT.NONE);        GridLayout gridLayout = new GridLayout();        gridLayout.marginWidth = gridLayout.marginHeight = 0;        gridLayout.horizontalSpacing = gridLayout.verticalSpacing = 0;        content.setLayout(gridLayout);                table = new Table(content, SWT.MULTI);        table.setHeaderVisible(true);        table.setLinesVisible(false);        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));        table.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                table.deselectAll();            }        });        table.addMouseListener(new MouseAdapter() {            public void mouseDown(MouseEvent e)            {                table.deselectAll();            }            public void mouseDoubleClick(MouseEvent e)            {                Point pt = new Point(e.x, e.y);                TableItem tableItem = table.getItem(pt);                if (tableItem != null)                {                    int columnIndex = -1;                                        int x = 0;                    for (int i = 0; i < table.getColumnCount(); i++)                    {                        if (pt.x >= x && pt.x < (x + table.getColumn(i).getWidth()))                            columnIndex = i;                        x += table.getColumn(i).getWidth();                    }                                        if (columnIndex != -1)                    {                        String from = tableItem.getText(0);                        String to = table.getColumn(columnIndex).getText();                        if (!from.equals(to) && from.length() != 0 && to.length() != 0)                        {                            CurrencyConversionDialog dlg = new CurrencyConversionDialog(getSite().getShell(), from, to);                            dlg.open();                        }                    }                }            }        });        new TableColumn(table, SWT.NONE);        parent.getDisplay().asyncExec(new Runnable() {            public void run()            {                updateView();                CurrencyConverter.getInstance().addObserver(CurrencyExchangeView.this);            }        });    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()     */    public void setFocus()    {        table.getParent().setFocus();    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#dispose()     */    public void dispose()    {        CurrencyConverter.getInstance().deleteObserver(this);        evenForeground.dispose();        evenBackground.dispose();        oddForeground.dispose();        oddBackground.dispose();        super.dispose();    }    public void updateView()    {        table.setRedraw(false);                List currencies = CurrencyConverter.getInstance().getCurrencies();        Collections.sort(currencies, new Comparator() {            public int compare(Object arg0, Object arg1)            {                return ((String)arg0).compareTo((String)arg1);            }        });        int index = 1;        for (Iterator iter = currencies.iterator(); iter.hasNext(); )        {            TableColumn column = null;            if (index < table.getColumnCount())                column = table.getColumn(index);            else                column = new TableColumn(table, SWT.RIGHT);            column.setText((String)iter.next());            index++;        }        while(table.getColumnCount() > index)            table.getColumn(index).dispose();                index = 0;        for (Iterator iter = currencies.iterator(); iter.hasNext(); )        {            String symbol = (String)iter.next();            TableItem tableItem = null;            if (index < table.getItemCount())                tableItem = table.getItem(index);            else                tableItem = new TableItem(table, SWT.NONE);            tableItem.setText(0, symbol);            for (int i = 0; i < currencies.size(); i++)            {                if (i != index)                    tableItem.setText(i + 1, nf.format(CurrencyConverter.getInstance().convert(1, symbol, (String)currencies.get(i))));            }            tableItem.setBackground(0, tableItem.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));            tableItem.setBackground(((index & 1) == 1) ? oddBackground : evenBackground);            tableItem.setForeground(((index & 1) == 1) ? oddForeground : evenForeground);            index++;        }        table.setItemCount(index);        table.setRedraw(true);                for (int i = 0; i < table.getColumnCount(); i++)            table.getColumn(i).pack();        table.getColumn(0).setWidth(table.getColumn(0).getWidth() + 5);    }    /* (non-Javadoc)     * @see java.util.Observer#update(java.util.Observable, java.lang.Object)     */    public void update(Observable o, Object arg)    {        table.getDisplay().asyncExec(new Runnable() {            public void run()            {                if (!table.isDisposed())                    updateView();            }        });    }}

⌨️ 快捷键说明

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