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

📄 accountsview.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            public void dragLeave(DropTargetEvent event)            {            }            public void dropAccept(DropTargetEvent event)            {            }            public void drop(DropTargetEvent event)            {                event.detail = DND.DROP_COPY;                TreeItem item = tree.getItem(tree.toControl(event.x, event.y));                if (SecurityTransfer.getInstance().isSupportedType(event.currentDataType))                {                    if (SecurityTransfer.getInstance().isSupportedType(event.currentDataType) && item != null && item.getData() instanceof Account)                    {                        Security[] securities = (Security[]) event.data;                        for (int i = 0; i < securities.length; i++)                        {                            TransactionDialog dlg = new TransactionDialog((Account)item.getData(), getViewSite().getShell());                            dlg.open(securities[i]);                        }                    }                }                if (_accountTreeItemTransfer.isSupportedType(event.currentDataType))                {                    Integer[] items = (Integer[]) event.data;                    if (items != null)                    {                        AccountGroup group = null;                        if (item != null)                        {                            if (item instanceof GroupTreeItem)                                group = ((GroupTreeItem)item).getGroup();                            else if (item instanceof AccountTreeItem)                                group = ((AccountTreeItem)item).getAccount().getGroup();                        }                        for (int i = 0; i < items.length; i++)                        {                            Account account = (Account) CorePlugin.getRepository().load(Account.class, items[i]);                            CorePlugin.getRepository().allAccounts().remove(account);                            if (account.getGroup() != null)                                account.getGroup().getAccounts().remove(account);                            account.setGroup(group);                            if (account.getGroup() != null)                                account.getGroup().getAccounts().add(account);                            CorePlugin.getRepository().allAccounts().add(account);                            CorePlugin.getRepository().save(account);                        }                    }                }            }        });        MenuManager menuMgr = new MenuManager("#popupMenu", "popupMenu"); //$NON-NLS-1$ //$NON-NLS-2$        menuMgr.setRemoveAllWhenShown(true);        menuMgr.addMenuListener(new IMenuListener() {            public void menuAboutToShow(IMenuManager menuManager)            {                menuManager.add(new Separator("top")); //$NON-NLS-1$                menuManager.add(new NewAccountAction(AccountsView.this));                menuManager.add(new NewAccountGroupAction(AccountsView.this));                menuManager.add(new Separator("group1")); //$NON-NLS-1$                menuManager.add(newTransactionAction);                menuManager.add(new Separator("group2")); //$NON-NLS-1$                menuManager.add(new Separator("group3")); //$NON-NLS-1$                menuManager.add(new Separator("group4")); //$NON-NLS-1$                menuManager.add(new Separator("group5")); //$NON-NLS-1$                menuManager.add(deleteAction);                menuManager.add(new Separator("group6")); //$NON-NLS-1$                menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));                menuManager.add(propertiesAction);                menuManager.add(new Separator("bottom")); //$NON-NLS-1$            }        });        tree.setMenu(menuMgr.createContextMenu(tree));        getSite().registerContextMenu(menuMgr, getSite().getSelectionProvider());        IActionBars actionBars = getViewSite().getActionBars();        actionBars.setGlobalActionHandler("delete", deleteAction);        actionBars.setGlobalActionHandler("properties", propertiesAction);                IPreferenceStore preferenceStore = TradingPlugin.getDefault().getPreferenceStore();        String[] values = preferenceStore.getString(PREFS_ACCOUNT_EXPANDED_ITEMS).split(";");        for (int i = 0; i < values.length; i++)            expandMap.put(values[i], new Boolean(true));        parent.getDisplay().asyncExec(new Runnable() {            public void run()            {                updateView();                updateSelection();                CorePlugin.getRepository().allAccountGroups().addCollectionObserver(AccountsView.this);                CorePlugin.getRepository().allAccounts().addCollectionObserver(AccountsView.this);                CurrencyConverter.getInstance().addObserver(AccountsView.this);            }        });    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()     */    public void setFocus()    {        tree.getParent().setFocus();    }    /* (non-Javadoc)     * @see org.eclipse.ui.part.WorkbenchPart#dispose()     */    public void dispose()    {        CurrencyConverter.getInstance().deleteObserver(AccountsView.this);        CorePlugin.getRepository().allAccountGroups().removeCollectionObserver(AccountsView.this);        CorePlugin.getRepository().allAccounts().removeCollectionObserver(AccountsView.this);        super.dispose();    }    private void updateView()    {        List list = CorePlugin.getRepository().allAccountGroups();        Collections.sort(list, groupComparator);        for (Iterator iter = list.iterator(); iter.hasNext(); )        {            AccountGroup account = (AccountGroup)iter.next();            if (account.getParent() == null)                new GroupTreeItem(account, tree, SWT.NONE);        }        list = CorePlugin.getRepository().allAccounts();        Collections.sort(list, accountComparator);        for (Iterator iter = list.iterator(); iter.hasNext(); )        {            Account account = (Account)iter.next();            if (account.getGroup() == null)                new AccountTreeItem(account, tree, SWT.NONE);        }        int index = 0;        TreeItem[] items = tree.getItems();        for (int i = 0; i < items.length; i++)            index = updateItemColors(items[i], index);                String[] sizes = TradingPlugin.getDefault().getPreferenceStore().getString(PREFS_ACCOUNT_COLUMNS_SIZE).split(";");        for (int i = 0; i < tree.getColumnCount(); i++)        {            if (i < sizes.length && sizes[i].length() != 0)                tree.getColumn(i).setWidth(Integer.parseInt(sizes[i]));            else                tree.getColumn(i).setWidth(i == 0 ? 100 : 75);        }        if ("gtk".equals(SWT.getPlatform()))            tree.getColumn(tree.getColumnCount() - 1).pack();    }        private void updateItemColors()    {        tree.getDisplay().asyncExec(new Runnable() {            public void run()            {                if (!tree.isDisposed())                {                    int index = 0;                    TreeItem[] items = tree.getItems();                    for (int i = 0; i < items.length; i++)                        index = updateItemColors(items[i], index);                }            }        });    }        private int updateItemColors(TreeItem treeItem, int index)    {//        treeItem.setBackground((index & 1) == 0 ? evenBackground : oddBackground);//        treeItem.setForeground((index & 1) == 0 ? evenForeground : oddForeground);        index++;        if (treeItem instanceof GroupTreeItem)        {            AccountGroup group = (AccountGroup)treeItem.getData();            if (expandMap.get(String.valueOf(group.getId())) != null)                treeItem.setExpanded(true);        }                if (treeItem.getExpanded())        {            TreeItem[] items = treeItem.getItems();            for (int i = 0; i < items.length; i++)                index = updateItemColors(items[i], index);        }                return index;    }    private void updateSelection()    {        TreeItem[] selection = tree.getSelection();        if (selection != null && selection.length == 1)        {            Object item = selection[0].getData();            if (item instanceof Account)                getSite().getSelectionProvider().setSelection(new AccountSelection((Account)item));            else if (item instanceof AccountGroup)                getSite().getSelectionProvider().setSelection(new AccountGroupSelection((AccountGroup)item));            else                getSite().getSelectionProvider().setSelection(new NullSelection());        }        else            getSite().getSelectionProvider().setSelection(new NullSelection());        newTransactionAction.setEnabled(getSite().getSelectionProvider().getSelection() instanceof AccountSelection);        deleteAction.setEnabled(!(getSite().getSelectionProvider().getSelection() instanceof NullSelection));        propertiesAction.setEnabled(!(getSite().getSelectionProvider().getSelection() instanceof NullSelection));    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.core.ICollectionObserver#itemAdded(java.lang.Object)     */    public void itemAdded(Object o)    {        if (o instanceof Account)        {            Account account = (Account)o;            if (account.getGroup() != null)                return;            TreeItem items[] = tree.getItems();            for (int i = 0; i < items.length; i++)            {                if (!(items[i].getData() instanceof Account))                    continue;                Account arg1 = (Account)items[i].getData();                if (accountComparator.compare(account, arg1) < 0)                {                    new AccountTreeItem(account, tree, SWT.NONE, i);                    updateItemColors();                    updateSelection();                    return;                }            }                        new AccountTreeItem(account, tree, SWT.NONE);            updateItemColors();            updateSelection();        }        else if (o instanceof AccountGroup)        {            AccountGroup group = (AccountGroup)o;            if (group.getParent() != null)                return;            TreeItem items[] = tree.getItems();            for (int i = 0; i < items.length; i++)            {                if (!(items[i].getData() instanceof AccountGroup))                {                    new GroupTreeItem((AccountGroup)o, tree, SWT.NONE, i);                    updateItemColors();                    updateSelection();                    return;                }                AccountGroup arg1 = (AccountGroup)items[i].getData();                if (groupComparator.compare(group, arg1) < 0)                {                    new GroupTreeItem(group, tree, SWT.NONE, i);                    updateItemColors();                    updateSelection();                    return;                }            }                        new GroupTreeItem(group, tree, SWT.NONE);            updateItemColors();            updateSelection();        }    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.core.ICollectionObserver#itemRemoved(java.lang.Object)     */    public void itemRemoved(Object o)    {        TreeItem[] items = tree.getItems();        for (int i = 0; i < items.length; i++)        {            if (items[i].getData().equals(o))                items[i].dispose();        }        updateItemColors();        updateSelection();    }        /* (non-Javadoc)     * @see java.util.Observer#update(java.util.Observable, java.lang.Object)     */    public void update(Observable o, Object arg)    {        tree.getDisplay().asyncExec(new Runnable() {            public void run()            {                if (!tree.isDisposed())                {                    TreeItem[] childs = tree.getItems();                    for (int i = 0; i < childs.length; i++)                        updateTree(childs[i]);                }            }        });    }        void updateTree(TreeItem treeItem)    {        if (treeItem instanceof AccountTreeItem)            ((AccountTreeItem)treeItem).update(null, null);        else        {            TreeItem[] childs = treeItem.getItems();            for (int i = 0; i < childs.length; i++)                updateTree(childs[i]);        }    }    public Tree getTree()    {        return tree;    }        private class AccountTreeItem extends TreeItem implements Observer    {        private Account account;                public AccountTreeItem(Account account, Tree parent, int style, int index)        {            super(parent, style, index);            init(account);

⌨️ 快捷键说明

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