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

📄 dividendspage.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
字号:
/* * 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.core.ui.preferences;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.Iterator;import java.util.List;import net.sourceforge.eclipsetrader.core.CorePlugin;import net.sourceforge.eclipsetrader.core.db.Dividend;import net.sourceforge.eclipsetrader.core.db.Security;import net.sourceforge.eclipsetrader.core.ui.internal.Messages;import net.sourceforge.eclipsetrader.core.ui.widgets.EditableTable;import net.sourceforge.eclipsetrader.core.ui.widgets.EditableTableColumn;import net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem;import org.apache.commons.logging.LogFactory;import org.eclipse.jface.preference.PreferencePage;import org.eclipse.swt.SWT;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.Button;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;/** */public class DividendsPage extends PreferencePage{    Table table;    Button add;    Button delete;    Security security;    NumberFormat numberFormatter = NumberFormat.getInstance();    SimpleDateFormat dateFormat = CorePlugin.getDateFormat();    SimpleDateFormat dateParse = CorePlugin.getDateParse();    public DividendsPage(Security security)    {        super(Messages.DividendsPage_Title);        noDefaultAndApplyButton();        setValid(false);        this.security = security;                numberFormatter.setGroupingUsed(true);        numberFormatter.setMinimumIntegerDigits(1);        numberFormatter.setMinimumFractionDigits(4);        numberFormatter.setMaximumFractionDigits(4);    }    /* (non-Javadoc)     * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)     */    protected Control createContents(Composite parent)    {        Composite content = new Composite(parent, SWT.NONE);        GridLayout gridLayout = new GridLayout(2, false);        gridLayout.marginWidth = gridLayout.marginHeight = 0;        content.setLayout(gridLayout);        content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));        table = new EditableTable(content, SWT.MULTI|SWT.FULL_SELECTION);        table.setHeaderVisible(true);        table.setLinesVisible(false);        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));        table.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                delete.setEnabled(table.getSelectionCount() != 0);            }        });        TableColumn column = new EditableTableColumn(table, SWT.NONE);        column.setText(Messages.DividendsPage_Date);        column.setWidth(70);        column = new EditableTableColumn(table, SWT.NONE);        column.setText(Messages.DividendsPage_Value);        column.setWidth(70);                Composite buttonsComposite = new Composite(content, SWT.NONE);        gridLayout = new GridLayout(1, false);        gridLayout.marginWidth = gridLayout.marginHeight = 0;        buttonsComposite.setLayout(gridLayout);        buttonsComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));                add = new Button(buttonsComposite, SWT.PUSH);        add.setText(Messages.DividendsPage_Add);        setButtonLayoutData(add);        add.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                EditableTableItem tableItem = new EditableTableItem(table, SWT.NONE);                tableItem.setText(0, dateFormat.format(Calendar.getInstance().getTime()));                tableItem.setText(1, numberFormatter.format(0.01));            }        });        delete = new Button(buttonsComposite, SWT.PUSH);        delete.setText(Messages.DividendsPage_Delete);        setButtonLayoutData(delete);        delete.addSelectionListener(new SelectionAdapter() {            public void widgetSelected(SelectionEvent e)            {                TableItem[] selection = table.getSelection();                for (int i = 0; i < selection.length; i++)                    selection[i].dispose();                delete.setEnabled(table.getSelectionCount() != 0);            }        });        if (security != null)        {            for (Iterator iter = security.getDividends().iterator(); iter.hasNext(); )            {                Dividend dividend = (Dividend)iter.next();                EditableTableItem tableItem = new EditableTableItem(table, SWT.NONE);                tableItem.setText(0, dateFormat.format(dividend.getDate()));                tableItem.setText(1, numberFormatter.format(dividend.getValue()));            }        }        setValid(true);        return content;    }        /* (non-Javadoc)     * @see org.eclipse.jface.preference.PreferencePage#performOk()     */    public boolean performOk()    {        if (isValid())        {            security.setDividends(getDividends());            security.setChanged();        }                return super.performOk();    }    public List getDividends()    {        List list = new ArrayList();                TableItem[] items = table.getItems();        for (int i = 0; i < items.length; i++)        {            try {                Dividend dividend = new Dividend();                dividend.setDate(dateParse.parse(items[i].getText(0)));                dividend.setValue(numberFormatter.parse(items[i].getText(1)).doubleValue());                list.add(dividend);            } catch(Exception e) {                LogFactory.getLog(getClass()).error(e);            }        }                return list;    }    class EditableTableItem extends TableItem implements IEditableItem    {        public EditableTableItem(Table parent, int style, int index)        {            super(parent, style, index);        }        public EditableTableItem(Table parent, int style)        {            super(parent, style);        }        /* (non-Javadoc)         * @see org.eclipse.swt.widgets.TableItem#checkSubclass()         */        protected void checkSubclass()        {        }        /* (non-Javadoc)         * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#canEdit(int)         */        public boolean canEdit(int index)        {            return true;        }        /* (non-Javadoc)         * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#isEditable()         */        public boolean isEditable()        {            return true;        }        /* (non-Javadoc)         * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#itemEdited(int, java.lang.String)         */        public void itemEdited(int index, String text)        {            if (index == 0)            {                try {                    Date date = dateParse.parse(text);                    setText(index, dateFormat.format(date));                } catch(Exception e) {                    LogFactory.getLog(getClass()).warn(e);                    setText(index, dateFormat.format(Calendar.getInstance().getTime()));                }            }            else if (index == 1)            {                try {                    double value = numberFormatter.parse(text).doubleValue();                    setText(index, numberFormatter.format(value));                } catch(Exception e) {                    LogFactory.getLog(getClass()).warn(e);                }            }        }    }}

⌨️ 快捷键说明

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