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

📄 tradingsystemview.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * 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.views;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.HashMap;import java.util.Iterator;import java.util.Map;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.trading.TradingSystem;import net.sourceforge.eclipsetrader.core.db.trading.TradingSystemGroup;import net.sourceforge.eclipsetrader.core.ui.NullSelection;import net.sourceforge.eclipsetrader.core.ui.SelectionProvider;import net.sourceforge.eclipsetrader.trading.TradingPlugin;import net.sourceforge.eclipsetrader.trading.TradingSystemGroupSelection;import net.sourceforge.eclipsetrader.trading.TradingSystemPlugin;import net.sourceforge.eclipsetrader.trading.TradingSystemSelection;import net.sourceforge.eclipsetrader.trading.dialogs.TestPeriodDialog;import net.sourceforge.eclipsetrader.trading.internal.DeleteAction;import net.sourceforge.eclipsetrader.trading.internal.PropertiesAction;import net.sourceforge.eclipsetrader.trading.internal.TreeLayout;import net.sourceforge.eclipsetrader.trading.wizards.systems.TradingSystemSettingsDialog;import net.sourceforge.eclipsetrader.trading.wizards.systems.TradingSystemWizard;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.InputDialog;import org.eclipse.jface.dialogs.MessageDialog;import org.eclipse.jface.preference.IPreferenceStore;import org.eclipse.jface.viewers.ColumnPixelData;import org.eclipse.jface.viewers.ISelection;import org.eclipse.swt.SWT;import org.eclipse.swt.dnd.ByteArrayTransfer;import org.eclipse.swt.dnd.DND;import org.eclipse.swt.dnd.DragSource;import org.eclipse.swt.dnd.DragSourceEvent;import org.eclipse.swt.dnd.DragSourceListener;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.DisposeEvent;import org.eclipse.swt.events.DisposeListener;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.events.TreeEvent;import org.eclipse.swt.events.TreeListener;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.Font;import org.eclipse.swt.graphics.FontData;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.Tree;import org.eclipse.swt.widgets.TreeColumn;import org.eclipse.swt.widgets.TreeItem;import org.eclipse.ui.IActionBars;import org.eclipse.ui.IViewSite;import org.eclipse.ui.IWorkbenchActionConstants;import org.eclipse.ui.IWorkbenchPage;import org.eclipse.ui.PartInitException;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.ViewPart;public class TradingSystemView extends ViewPart implements ICollectionObserver{    public static final String VIEW_ID = "net.sourceforge.eclipsetrader.views.system";    private Tree tree;    private NumberFormat amountFormat = NumberFormat.getInstance();    private NumberFormat priceFormat = NumberFormat.getInstance();    private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); //$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, 224, 224, 255);    private Action createGroupAction;    private Action createSystemAction;    private Action deleteAction;    private Action propertiesAction;    private Action runTestAction;    private Map expandMap = new HashMap();    private TradingSystemTreeItemTransfer _tradingSystemTreeItemTransfer = new TradingSystemTreeItemTransfer();    public TradingSystemView()    {        amountFormat.setGroupingUsed(true);        amountFormat.setMinimumIntegerDigits(1);        amountFormat.setMinimumFractionDigits(2);        amountFormat.setMaximumFractionDigits(2);        priceFormat.setGroupingUsed(true);        priceFormat.setMinimumIntegerDigits(1);        priceFormat.setMinimumFractionDigits(4);        priceFormat.setMaximumFractionDigits(4);    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)     */    public void init(IViewSite site) throws PartInitException    {        createGroupAction = new Action() {            public void run()            {                InputDialog dlg = new InputDialog(getViewSite().getShell(), getText(), "Enter the name of the group to create:", null, null);                if (dlg.open() == InputDialog.OK && dlg.getValue() != null)                {                    TradingSystemGroup group = new TradingSystemGroup();                    group.setDescription(dlg.getValue());                    ISelection selection = getViewSite().getSelectionProvider().getSelection();                    if (selection instanceof TradingSystemGroupSelection)                        group.setParent(((TradingSystemGroupSelection)selection).getGroup());                                        CorePlugin.getRepository().save(group);                }            }        };        createGroupAction.setText("Create Group");        createSystemAction = new Action() {            public void run()            {                TradingSystemWizard wizard = new TradingSystemWizard();                ISelection selection = getViewSite().getSelectionProvider().getSelection();                if (selection instanceof TradingSystemGroupSelection)                    wizard.setGroup(((TradingSystemGroupSelection)selection).getGroup());                wizard.open();            }        };        createSystemAction.setText("Create Trading System");        createSystemAction.setImageDescriptor(TradingPlugin.getImageDescriptor("icons/eview16/server_database.png"));                deleteAction = new DeleteAction() {            public void run()            {                TreeItem[] selection = tree.getSelection();                if (selection.length != 0)                {                    if (MessageDialog.openConfirm(getViewSite().getShell(), getPartName(), "Do you really want to delete the selected item(s) ?"))                    {                        for (int i = 0; i < selection.length; i++)                        {                            if (selection[i] instanceof TradingSystemItem)                                CorePlugin.getRepository().delete(((TradingSystemItem)selection[i]).getSystem());                            else if (selection[i] instanceof GroupTreeItem)                                CorePlugin.getRepository().delete(((GroupTreeItem)selection[i]).getGroup());                        }                    }                }            }        };        propertiesAction = new PropertiesAction() {            public void run()            {                TreeItem[] selection = tree.getSelection();                if (selection.length == 1)                {                    if (selection[0] instanceof TradingSystemItem)                    {                        TradingSystem system = ((TradingSystemItem)selection[0]).getSystem();                        TradingSystemSettingsDialog dlg = new TradingSystemSettingsDialog(system, getViewSite().getShell());                        dlg.open();                    }                    else if (selection[0] instanceof GroupTreeItem)                    {                        TradingSystemGroup group = ((GroupTreeItem)selection[0]).getGroup();                        InputDialog dlg = new InputDialog(getViewSite().getShell(), "Edit Group", "Enter the name of the group to edit:", group.getDescription(), null);                        if (dlg.open() == InputDialog.OK && dlg.getValue() != null)                        {                            group.setDescription(dlg.getValue());                            CorePlugin.getRepository().save(group);                        }                    }                }            }        };                runTestAction = new Action() {            public void run()            {                TreeItem[] selection = tree.getSelection();                if (selection.length == 1 && selection[0] instanceof TradingSystemItem)                {                    TradingSystem system = ((TradingSystemItem)selection[0]).getSystem();                                        TestPeriodDialog dlg = new TestPeriodDialog(getViewSite().getShell(), system.getSecurity().getHistory());                    if (dlg.open() == TestPeriodDialog.OK)                    {                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();                        try {                            TestRunnerView view = (TestRunnerView)page.showView(TestRunnerView.VIEW_ID);                            view.runTradingSystem(system, dlg.getBeginDate(), dlg.getEndDate());                        }                        catch (PartInitException e1) {                            CorePlugin.logException(e1);                        }                    }                }            }        };        runTestAction.setText("Run Test");        IMenuManager menuManager = site.getActionBars().getMenuManager();        menuManager.add(new Separator("top")); //$NON-NLS-1$        menuManager.add(new Separator("internal.top")); //$NON-NLS-1$        menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); //$NON-NLS-1$        menuManager.add(new Separator("clipboard.top")); //$NON-NLS-1$        menuManager.add(new Separator("clipboard.bottom")); //$NON-NLS-1$        menuManager.add(new Separator("bottom")); //$NON-NLS-1$        menuManager.add(new Separator("internal.bottom")); //$NON-NLS-1$        menuManager.appendToGroup("internal.top", createGroupAction);        menuManager.appendToGroup("internal.top", createSystemAction);        menuManager.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, runTestAction);        menuManager.appendToGroup("clipboard.bottom", deleteAction);        menuManager.appendToGroup("internal.bottom", propertiesAction);                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);                tree = new Tree(content, SWT.FULL_SELECTION|SWT.MULTI);        tree.setHeaderVisible(true);        tree.setLinesVisible(false);        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));        tree.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                updateSelection();            }        });        tree.addMouseListener(new MouseAdapter() {            public void mouseDown(MouseEvent e)            {                if (tree.getItem(new Point(e.x, e.y)) == null)                {                    tree.deselectAll();                    updateSelection();                }            }            public void mouseDoubleClick(MouseEvent e)            {            }        });        tree.addTreeListener(new TreeListener() {            public void treeCollapsed(TreeEvent e)            {                if (e.item instanceof GroupTreeItem)                {                    TradingSystemGroup group = ((GroupTreeItem)e.item).getGroup();                    expandMap.remove(String.valueOf(group.getId()));                }                updateItemColors();            }            public void treeExpanded(TreeEvent e)            {                if (e.item instanceof GroupTreeItem)                {                    TradingSystemGroup group = ((GroupTreeItem)e.item).getGroup();                    expandMap.put(String.valueOf(group.getId()), new Boolean(true));                }                updateItemColors();            }        });        TreeLayout layout = new TreeLayout();        tree.setLayout(layout);        TreeColumn column = new TreeColumn(tree, SWT.NONE);        layout.addColumnData(new ColumnPixelData(200, true, false));        column = new TreeColumn(tree, SWT.LEFT);        column.setText("Account");        layout.addColumnData(new ColumnPixelData(100, true, false));        column = new TreeColumn(tree, SWT.RIGHT);        column.setText("Position");        layout.addColumnData(new ColumnPixelData(60, true, false));

⌨️ 快捷键说明

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