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

📄 accountsview.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.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Observable;import java.util.Observer;import net.sourceforge.eclipsetrader.core.CorePlugin;import net.sourceforge.eclipsetrader.core.CurrencyConverter;import net.sourceforge.eclipsetrader.core.ICollectionObserver;import net.sourceforge.eclipsetrader.core.db.Account;import net.sourceforge.eclipsetrader.core.db.AccountGroup;import net.sourceforge.eclipsetrader.core.db.Security;import net.sourceforge.eclipsetrader.core.transfers.SecurityTransfer;import net.sourceforge.eclipsetrader.core.ui.AccountGroupSelection;import net.sourceforge.eclipsetrader.core.ui.AccountSelection;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.actions.NewAccountAction;import net.sourceforge.eclipsetrader.trading.actions.NewAccountGroupAction;import net.sourceforge.eclipsetrader.trading.dialogs.TransactionDialog;import net.sourceforge.eclipsetrader.trading.internal.DeleteAccountAction;import net.sourceforge.eclipsetrader.trading.internal.TransactionAction;import net.sourceforge.eclipsetrader.trading.views.transactions.TransactionsView;import net.sourceforge.eclipsetrader.trading.wizards.accounts.AccountSettingsAction;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.preference.IPreferenceStore;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.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.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.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.part.ViewPart;public class AccountsView extends ViewPart implements Observer, ICollectionObserver{    public static final String VIEW_ID = "net.sourceforge.eclipsetrader.views.accounts";    public static final String PREFS_ACCOUNT_COLUMNS_SIZE = "ACCOUNT_COLUMNS_SIZE";    public static final String PREFS_ACCOUNT_EXPANDED_ITEMS = "ACCOUNT_EXPANDED_ITEMS";    private Tree tree;    private NumberFormat nf = NumberFormat.getInstance();    private Action newTransactionAction = new TransactionAction(this);    private Action deleteAction = new DeleteAccountAction(this);    private Action propertiesAction = new AccountSettingsAction(this);    private AccountTreeItemTransfer _accountTreeItemTransfer = new AccountTreeItemTransfer();    private Map expandMap = new HashMap();    private ControlListener columnControlListener = new ControlAdapter() {        public void controlResized(ControlEvent e)        {            StringBuffer sizes = new StringBuffer();            for (int i = 0; i < tree.getColumnCount(); i++)                sizes.append(String.valueOf(tree.getColumn(i).getWidth()) + ";");            TradingPlugin.getDefault().getPreferenceStore().setValue(PREFS_ACCOUNT_COLUMNS_SIZE, sizes.toString());        }    };    private Comparator groupComparator = new Comparator() {        public int compare(Object arg0, Object arg1)        {            return ((AccountGroup)arg0).getDescription().compareTo(((AccountGroup)arg1).getDescription());        }    };    private Comparator accountComparator = new Comparator() {        public int compare(Object arg0, Object arg1)        {            return ((Account)arg0).getDescription().compareTo(((Account)arg1).getDescription());        }    };        public AccountsView()    {        nf.setGroupingUsed(true);        nf.setMinimumIntegerDigits(1);        nf.setMinimumFractionDigits(2);        nf.setMaximumFractionDigits(2);    }    /* (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);                tree = new Tree(content, SWT.FULL_SELECTION|SWT.SINGLE);        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.addTreeListener(new TreeListener() {            public void treeCollapsed(TreeEvent e)            {                if (e.item instanceof GroupTreeItem)                {                    AccountGroup group = (AccountGroup)e.item.getData();                    expandMap.remove("G" + String.valueOf(group.getId()));                }                else if (e.item instanceof AccountTreeItem)                {                    Account group = (Account)e.item.getData();                    expandMap.remove("A" + String.valueOf(group.getId()));                }                saveExpandedStatus();            }            public void treeExpanded(TreeEvent e)            {                if (e.item instanceof GroupTreeItem)                {                    AccountGroup group = (AccountGroup)e.item.getData();                    expandMap.put(String.valueOf(group.getId()), new Boolean(true));                }                saveExpandedStatus();            }                        private void saveExpandedStatus()            {                StringBuffer sb = new StringBuffer();                for (Iterator iter = expandMap.keySet().iterator(); iter.hasNext(); )                {                    if (sb.length() != 0)                        sb.append(";");                    sb.append((String)iter.next());                }                TradingPlugin.getDefault().getPreferenceStore().setValue(PREFS_ACCOUNT_EXPANDED_ITEMS, sb.toString());                updateItemColors();            }        });        TreeColumn column = new TreeColumn(tree, SWT.NONE);        column.addControlListener(columnControlListener);        column = new TreeColumn(tree, SWT.RIGHT);        column.setText("Balance");        column.addControlListener(columnControlListener);        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)            {                ISelection selection = getSite().getSelectionProvider().getSelection();                if (selection instanceof AccountSelection)                {                    IWorkbenchPage page = getViewSite().getPage();                    try {                        page.showView(TransactionsView.VIEW_ID, String.valueOf(((AccountSelection)selection).getAccount().getId()), IWorkbenchPage.VIEW_ACTIVATE);                    } catch (PartInitException e1) {                        CorePlugin.logException(e1);                    }                }            }        });        getSite().setSelectionProvider(new SelectionProvider());        DragSource dragSource = new DragSource(tree, DND.DROP_COPY|DND.DROP_MOVE);        dragSource.setTransfer(new Transfer[] { _accountTreeItemTransfer });        dragSource.addDragListener(new DragSourceListener() {            private TreeItem[] selection;            public void dragStart(DragSourceEvent event)            {                selection = tree.getSelection();                if (selection.length == 0)                    event.doit = false;            }            public void dragSetData(DragSourceEvent event)            {                int count = 0;                for (int i = 0; i < selection.length; i++)                {                    if (selection[i] instanceof AccountTreeItem)                        count++;                }                                AccountTreeItem[] items = new AccountTreeItem[count];                count = 0;                for (int i = 0; i < selection.length; i++)                {                    if (selection[i] instanceof AccountTreeItem)                        items[count++] = (AccountTreeItem)selection[i];                 }                event.data = items;            }            public void dragFinished(DragSourceEvent event)            {            }        });        DropTarget target = new DropTarget(parent, DND.DROP_COPY|DND.DROP_MOVE);        target.setTransfer(new Transfer[] { SecurityTransfer.getInstance(), _accountTreeItemTransfer });        target.addDropListener(new DropTargetListener() {            public void dragEnter(DropTargetEvent event)            {                event.detail = DND.DROP_COPY;                event.currentDataType = null;                                TransferData[] data = event.dataTypes;                for (int i = 0; i < data.length; i++)                {                    if (SecurityTransfer.getInstance().isSupportedType(data[i]))                    {                        event.currentDataType = data[i];                        break;                    }                }                if (event.currentDataType == null)                {                    for (int i = 0; i < data.length; i++)                    {                        if (_accountTreeItemTransfer.isSupportedType(data[i]))                        {                            event.currentDataType = data[i];                            break;                        }                    }                }            }            public void dragOver(DropTargetEvent event)            {                TreeItem item = tree.getItem(tree.toControl(event.x, event.y));                if (item != null && (item.getData() instanceof Account || _accountTreeItemTransfer.isSupportedType(event.currentDataType)))                {                    event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;                    TreeItem[] selection = { item };                    tree.setSelection(selection);                    updateSelection();                }                else                {                    event.feedback = DND.FEEDBACK_NONE;                    tree.deselectAll();                    updateSelection();                }            }            public void dragOperationChanged(DropTargetEvent event)            {            }

⌨️ 快捷键说明

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