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

📄 ordersview.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * 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.util.ArrayList;import java.util.Arrays;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.CorePlugin;import net.sourceforge.eclipsetrader.core.ICollectionObserver;import net.sourceforge.eclipsetrader.core.db.Order;import net.sourceforge.eclipsetrader.core.db.OrderStatus;import net.sourceforge.eclipsetrader.core.ui.LabelProvidersRegistry;import net.sourceforge.eclipsetrader.trading.TradingPlugin;import net.sourceforge.eclipsetrader.trading.dialogs.OrdersViewColumnsDialog;import net.sourceforge.eclipsetrader.trading.internal.OrdersCleanupJob;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.eclipse.core.runtime.jobs.Job;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuListener;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.action.IToolBarManager;import org.eclipse.jface.action.MenuManager;import org.eclipse.jface.action.Separator;import org.eclipse.jface.dialogs.MessageDialog;import org.eclipse.jface.util.IPropertyChangeListener;import org.eclipse.jface.util.PropertyChangeEvent;import org.eclipse.jface.viewers.ILabelProvider;import org.eclipse.jface.viewers.ITableLabelProvider;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CTabFolder;import org.eclipse.swt.custom.CTabItem;import org.eclipse.swt.events.ControlAdapter;import org.eclipse.swt.events.ControlEvent;import org.eclipse.swt.events.ControlListener;import org.eclipse.swt.events.DisposeEvent;import org.eclipse.swt.events.DisposeListener;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.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;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 OrdersView extends ViewPart implements IPropertyChangeListener{    public static final String VIEW_ID = "net.sourceforge.eclipsetrader.trading.orders";    public static final String PREFS_ORDERS_COLUMNS = "ORDERSVIEW_COLUMNS";    public static final String PREFS_COLUMNS_SIZE = "ORDERSVIEW_COLUMNS_SIZE";    static final int PROVIDER = 0;    static final int ORDER_ID = 1;    static final int DATE_TIME = 2;    static final int SYMBOL = 3;    static final int SECURITY = 4;    static final int SIDE = 5;    static final int TYPE = 6;    static final int QUANTITY = 7;    static final int PRICE = 8;    static final int STOP_PRICE = 9;    static final int FILLED_QUANTITY = 10;    static final int AVERAGE_PRICE = 11;    static final int STATUS = 12;    CTabFolder tabFolder;    OrdersTable all;    OrdersTable pending;    OrdersTable filled;    OrdersTable canceled;    OrdersTable rejected;    private Color canceledColor = new Color(null, 128, 128, 128);    private Color rejectedColor = new Color(null, 208, 0, 0);    private Color filledColor = new Color(null, 0, 208, 0);    private Color partialColor = new Color(null, 128, 0, 0);    private boolean ignoreResize = true;    Action cancelRequest;    Action editColumnsAction;    Action deleteOrder;    LabelProvidersRegistry registry = new LabelProvidersRegistry(VIEW_ID);    private Log logger = LogFactory.getLog(getClass());    private ControlListener columnControlListener = new ControlAdapter() {        public void controlResized(ControlEvent e)        {            if (!ignoreResize)            {                Table table = all.table;                                TableColumn tableColumn = (TableColumn)e.getSource();                int index = tableColumn.getParent().indexOf(tableColumn);                if (index != STATUS)                {                    ignoreResize = true;                    if (tableColumn.getParent() != all.table)                        all.table.getColumn(index).setWidth(tableColumn.getWidth());                    if (tableColumn.getParent() != pending.table)                        pending.table.getColumn(index).setWidth(tableColumn.getWidth());                    if (tableColumn.getParent() != filled.table)                        filled.table.getColumn(index).setWidth(tableColumn.getWidth());                    if (tableColumn.getParent() != canceled.table)                        canceled.table.getColumn(index).setWidth(tableColumn.getWidth());                    if (tableColumn.getParent() != rejected.table)                        rejected.table.getColumn(index).setWidth(tableColumn.getWidth());                    ignoreResize = false;                }                                StringBuffer sizes = new StringBuffer();                for (int i = 0; i < table.getColumnCount(); i++)                    sizes.append(String.valueOf(table.getColumn(i).getWidth()) + ";");                TradingPlugin.getDefault().getPreferenceStore().setValue(PREFS_COLUMNS_SIZE, sizes.toString());            }        }    };    public OrdersView()    {    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)     */    public void init(IViewSite site) throws PartInitException    {        cancelRequest = new Action() {            public void run()            {                Order[] selection = getSelectedOrders();                for (int i = 0; i < selection.length; i++)                {                    if (!OrderStatus.CANCELED.equals(selection[i].getStatus()))                        selection[i].cancelRequest();                }            }        };        cancelRequest.setText("Cancel");        cancelRequest.setToolTipText("Cancel");        cancelRequest.setImageDescriptor(TradingPlugin.getImageDescriptor("icons/elcl16/delete_edit.gif"));        cancelRequest.setDisabledImageDescriptor(TradingPlugin.getImageDescriptor("icons/dlcl16/delete_edit.gif"));        cancelRequest.setEnabled(false);        deleteOrder = new Action() {            public void run()            {                if (MessageDialog.openConfirm(getViewSite().getShell(), "Orders", "Do you really want to delete this order ?"))                {                    Order[] selection = getSelectedOrders();                    for (int i = 0; i < selection.length; i++)                    {                        if (!OrderStatus.CANCELED.equals(selection[i].getStatus()))                            selection[i].cancelRequest();                        CorePlugin.getRepository().delete(selection[i]);                    }                }            }        };        deleteOrder.setText("Delete");        deleteOrder.setToolTipText("Delete");        deleteOrder.setEnabled(false);        editColumnsAction = new Action() {            public void run()            {                OrdersViewColumnsDialog dlg = new OrdersViewColumnsDialog(getViewSite().getShell());                dlg.open();            }        };        editColumnsAction.setText("Edit Columns...");        editColumnsAction.setEnabled(true);                IMenuManager menuManager = site.getActionBars().getMenuManager();        menuManager.add(new Separator("top")); //$NON-NLS-1$        menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));        menuManager.add(new Separator("bottom")); //$NON-NLS-1$        IToolBarManager toolBarManager = site.getActionBars().getToolBarManager();        toolBarManager.add(new Separator("begin")); //$NON-NLS-1$        toolBarManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));        toolBarManager.add(new Separator("end")); //$NON-NLS-1$                menuManager.appendToGroup("top", editColumnsAction);        menuManager.appendToGroup("bottom", deleteOrder);        toolBarManager.appendToGroup("end", cancelRequest);                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;        content.setLayout(gridLayout);                tabFolder = new CTabFolder(content, SWT.BOTTOM);        tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));                CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);        tabItem.setText("All");        all = new OrdersTable(tabFolder, new ArrayList());        tabItem.setControl(all.getControl());        tabItem = new CTabItem(tabFolder, SWT.NONE);        tabItem.setText("Pending");        OrderStatus[] pendingFilter = {                 OrderStatus.NEW,                 OrderStatus.PARTIAL,                 OrderStatus.PENDING_CANCEL,                 OrderStatus.PENDING_NEW             };        pending = new OrdersTable(tabFolder, Arrays.asList(pendingFilter));        tabItem.setControl(pending.getControl());                tabItem = new CTabItem(tabFolder, SWT.NONE);        tabItem.setText("Filled");        OrderStatus[] filledFilter = {                 OrderStatus.FILLED             };        filled = new OrdersTable(tabFolder, Arrays.asList(filledFilter));        tabItem.setControl(filled.getControl());                tabItem = new CTabItem(tabFolder, SWT.NONE);        tabItem.setText("Canceled");        OrderStatus[] canceledFilter = {                 OrderStatus.CANCELED             };        canceled = new OrdersTable(tabFolder, Arrays.asList(canceledFilter));        tabItem.setControl(canceled.getControl());                tabItem = new CTabItem(tabFolder, SWT.NONE);        tabItem.setText("Rejected");        OrderStatus[] rejectedFilter = {                 OrderStatus.REJECTED             };        rejected = new OrdersTable(tabFolder, Arrays.asList(rejectedFilter));        tabItem.setControl(rejected.getControl());        tabFolder.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                updateActionsEnablement();            }        });        ignoreResize = false;        tabFolder.setSelection(0);        TradingPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);                Job job = new OrdersCleanupJob();        job.setUser(false);        job.schedule(100);    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()     */    public void setFocus()    {    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#dispose()     */    public void dispose()    {        TradingPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this);        super.dispose();    }    void updateActionsEnablement()    {        boolean cancelEnable = false;                Order[] selection = getSelectedOrders();        for (int i = 0; i < selection.length; i++)        {            if (!OrderStatus.CANCELED.equals(selection[i].getStatus()) && !OrderStatus.FILLED.equals(selection[i].getStatus()))                cancelEnable = true;        }        cancelRequest.setEnabled(cancelEnable);        deleteOrder.setEnabled(selection.length != 0);    }        Order[] getSelectedOrders()    {        List orders = new ArrayList();

⌨️ 快捷键说明

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