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

📄 eventsview.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.SimpleDateFormat;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.List;import net.sourceforge.eclipsetrader.core.CorePlugin;import net.sourceforge.eclipsetrader.core.ICollectionObserver;import net.sourceforge.eclipsetrader.core.db.Event;import net.sourceforge.eclipsetrader.core.db.PopupEvent;import net.sourceforge.eclipsetrader.core.ui.dialogs.EventDetailsDialog;import net.sourceforge.eclipsetrader.core.ui.internal.Messages;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IToolBarManager;import org.eclipse.jface.action.Separator;import org.eclipse.swt.SWT;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.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Shell;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 EventsView extends ViewPart implements ICollectionObserver{    public static final String VIEW_ID = "net.sourceforge.eclipsetrader.views.events"; //$NON-NLS-1$    Table table;    Action removeSelectedAction;    Action removeAllAction;    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy"); //$NON-NLS-1$    SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss"); //$NON-NLS-1$    ViewEventDetailsDialog dialog;    private Comparator comparator = new Comparator() {        public int compare(Object arg0, Object arg1)        {            return ((Event)arg1).getDate().compareTo(((Event)arg0).getDate());        }    };    private DisposeListener dialogDisposeListener = new DisposeListener() {        public void widgetDisposed(DisposeEvent e)        {            dialog = null;        }    };    /* (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("group5")); //$NON-NLS-1$        toolBarManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));        toolBarManager.add(new Separator("end")); //$NON-NLS-1$        removeSelectedAction = new Action() {            public void run()            {                TableItem[] selection = table.getSelection();                for (int i = 0; i < selection.length; i++)                    CorePlugin.getRepository().delete((Event)selection[i].getData());            }        };        removeSelectedAction.setToolTipText(Messages.EventsView_RemoveActionTooltip);        removeSelectedAction.setImageDescriptor(CorePlugin.getImageDescriptor("icons/elcl16/search_rem.gif")); //$NON-NLS-1$        removeSelectedAction.setDisabledImageDescriptor(CorePlugin.getImageDescriptor("icons/dlcl16/search_rem.gif")); //$NON-NLS-1$        removeSelectedAction.setEnabled(false);        toolBarManager.appendToGroup("group5", removeSelectedAction); //$NON-NLS-1$        removeAllAction = new Action() {            public void run()            {                CorePlugin.getRepository().allEvents().clear();                updateView();            }        };        removeAllAction.setToolTipText(Messages.EventsView_RemoveAllActionTooltip);        removeAllAction.setImageDescriptor(CorePlugin.getImageDescriptor("icons/elcl16/search_remall.gif")); //$NON-NLS-1$        removeAllAction.setDisabledImageDescriptor(CorePlugin.getImageDescriptor("icons/dlcl16/search_remall.gif")); //$NON-NLS-1$        removeAllAction.setEnabled(false);        toolBarManager.appendToGroup("group5", removeAllAction); //$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.SINGLE|SWT.FULL_SELECTION);        table.setHeaderVisible(true);        table.setLinesVisible(false);        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));        table.addMouseListener(new MouseAdapter() {            public void mouseDoubleClick(MouseEvent e)            {                if (table.getSelectionIndex() != -1)                {                    if (dialog == null)                    {                        Event event = (Event) table.getItem(table.getSelectionIndex()).getData();                        dialog = new ViewEventDetailsDialog(event, getViewSite().getShell());                        dialog.open();                    }                }            }        });        table.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                removeSelectedAction.setEnabled(table.getSelectionIndex() != -1);            }        });        TableColumn column = new TableColumn(table, SWT.NONE);        column.setText(Messages.EventsView_Date);        column = new TableColumn(table, SWT.NONE);        column.setText(Messages.EventsView_Time);        column = new TableColumn(table, SWT.NONE);        column.setText(Messages.EventsView_Security);        column = new TableColumn(table, SWT.NONE);        column.setText(Messages.EventsView_Message);                parent.getDisplay().asyncExec(new Runnable() {            public void run()            {                updateView();                CorePlugin.getRepository().allEvents().addCollectionObserver(EventsView.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()    {        CorePlugin.getRepository().allEvents().removeCollectionObserver(this);        super.dispose();    }    private void updateView()    {        table.removeAll();                List list = new ArrayList(CorePlugin.getRepository().allEvents());        Collections.sort(list, comparator);                for (Iterator iter = list.iterator(); iter.hasNext(); )        {            Event event = (Event)iter.next();            TableItem tableItem = new TableItem(table, SWT.NONE);            tableItem.setText(0, dateFormatter.format(event.getDate()));            tableItem.setText(1, timeFormatter.format(event.getDate()));            tableItem.setText(2, event.getSecurity() != null ? event.getSecurity().getDescription() : ""); //$NON-NLS-1$            tableItem.setText(3, event.getMessage());            tableItem.setData(event);        }                for (int i = 0; i < table.getColumnCount(); i++)            table.getColumn(i).pack();                removeSelectedAction.setEnabled(table.getSelectionIndex() != -1);        removeAllAction.setEnabled(table.getItemCount() != 0);    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.core.ICollectionObserver#itemAdded(java.lang.Object)     */    public void itemAdded(Object o)    {        final Event event = (Event)o;                table.getDisplay().asyncExec(new Runnable() {            public void run()            {                if (table.isDisposed())                    return;                                TableItem tableItem = new TableItem(table, SWT.NONE, 0);                tableItem.setText(0, dateFormatter.format(event.getDate()));                tableItem.setText(1, timeFormatter.format(event.getDate()));                tableItem.setText(2, event.getSecurity() != null ? event.getSecurity().getDescription() : ""); //$NON-NLS-1$                tableItem.setText(3, event.getMessage());                tableItem.setData(event);                for (int i = 0; i < table.getColumnCount(); i++)                    table.getColumn(i).pack();                removeSelectedAction.setEnabled(table.getSelectionIndex() != -1);                removeAllAction.setEnabled(table.getItemCount() != 0);                                if (event instanceof PopupEvent)                {                    if (dialog == null)                    {                        dialog = new ViewEventDetailsDialog(event, getViewSite().getShell());                        dialog.open();                    }                }                                if (dialog != null)                    dialog.updateButtonStatus();            }        });    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.core.ICollectionObserver#itemRemoved(java.lang.Object)     */    public void itemRemoved(final Object o)    {        table.getDisplay().asyncExec(new Runnable() {            public void run()            {                TableItem[] items = table.getItems();                for (int i = 0; i < items.length; i++)                {                    if (items[i].getData().equals(o))                        items[i].dispose();                }                                for (int i = 0; i < table.getColumnCount(); i++)                    table.getColumn(i).pack();                removeSelectedAction.setEnabled(table.getSelectionIndex() != -1);                removeAllAction.setEnabled(table.getItemCount() != 0);                if (dialog != null)                    dialog.updateButtonStatus();            }        });    }        public Table getTable()    {        return table;    }    /**     * View-aware event details dialog.     * <p>This object subclasses the standard event details dialog to hilight the currently     * viewed event.</p>     */    class ViewEventDetailsDialog extends EventDetailsDialog    {        public ViewEventDetailsDialog(Event event, Shell parentShell)        {            super(event, parentShell);        }        /* (non-Javadoc)         * @see net.sourceforge.eclipsetrader.core.ui.dialogs.EventDetailsDialog#updateEvent()         */        protected void updateEvent()        {            TableItem[] items = table.getItems();            for (int i = 0; i < items.length; i++)            {                if (getEvent().equals(items[i].getData()))                    table.select(i);            }            super.updateEvent();        }        /* (non-Javadoc)         * @see org.eclipse.jface.window.Window#open()         */        public int open()        {            dialog.setBlockOnOpen(false);            int result = super.open();            dialog.getShell().addDisposeListener(dialogDisposeListener);            return result;        }        /* (non-Javadoc)         * @see net.sourceforge.eclipsetrader.core.ui.dialogs.EventDetailsDialog#updateButtonStatus()         */        public void updateButtonStatus()        {            super.updateButtonStatus();        }    }}

⌨️ 快捷键说明

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