📄 patternsearchview.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.trading.views;import java.text.NumberFormat;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.trading.TradingPlugin;import net.sourceforge.eclipsetrader.trading.dialogs.SearchPageSelectionDialog;import org.eclipse.core.runtime.IProgressMonitor;import org.eclipse.core.runtime.IStatus;import org.eclipse.core.runtime.Status;import org.eclipse.core.runtime.jobs.Job;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuCreator;import org.eclipse.jface.action.IToolBarManager;import org.eclipse.jface.action.Separator;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.MenuItem;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.PartInitException;import org.eclipse.ui.part.ViewPart;/** */public class PatternSearchView extends ViewPart implements SelectionListener{ public static final String VIEW_ID = "net.sourceforge.eclipsetrader.patternSearch"; private Table table; 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, 240, 240, 240); private Color negativeForeground = new Color(null, 240, 0, 0); private Color positiveForeground = new Color(null, 0, 192, 0); private SimpleDateFormat dateFormat = CorePlugin.getDateFormat(); private NumberFormat priceFormat = NumberFormat.getInstance(); private List pages = new ArrayList(); private IPatternSearchPage currentPage; private Action historyMenu; private Action refreshAction; private Action removeCurrentAction; private Action removeAllAction; private IMenuCreator menuCreator = new IMenuCreator() { private Menu menu; public void dispose() { } public Menu getMenu(Control parent) { if (menu != null) menu.dispose(); menu = new Menu(parent); for (Iterator iter = pages.iterator(); iter.hasNext(); ) { IPatternSearchPage page = (IPatternSearchPage) iter.next(); MenuItem item = new MenuItem(menu, SWT.CHECK); item.setText(page.getShortDescription()); item.setData(page); item.addSelectionListener(PatternSearchView.this); if (page == currentPage) item.setSelection(true); } return menu; } public Menu getMenu(Menu parent) { return menu; } }; public PatternSearchView() { 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 { 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("additions")); //$NON-NLS-1$ toolBarManager.add(new Separator("end")); //$NON-NLS-1$ removeCurrentAction = new Action() { public void run() { if (currentPage != null) { int index = pages.indexOf(currentPage); pages.remove(currentPage); if (index > 0) index--; else index = 0; currentPage = pages.size() > 0 ? (IPatternSearchPage) pages.get(index) : null; updateView(); } } }; removeCurrentAction.setToolTipText("Remove Current Search"); removeCurrentAction.setImageDescriptor(TradingPlugin.getImageDescriptor("icons/elcl16/search_rem.gif")); removeCurrentAction.setDisabledImageDescriptor(TradingPlugin.getImageDescriptor("icons/dlcl16/search_rem.gif")); removeCurrentAction.setEnabled(false); toolBarManager.appendToGroup("group5", removeCurrentAction); removeAllAction = new Action() { public void run() { pages.clear(); currentPage = null; updateView(); } }; removeAllAction.setToolTipText("Remove All Searches"); removeAllAction.setImageDescriptor(TradingPlugin.getImageDescriptor("icons/elcl16/search_remall.gif")); removeAllAction.setDisabledImageDescriptor(TradingPlugin.getImageDescriptor("icons/dlcl16/search_remall.gif")); removeAllAction.setEnabled(false); toolBarManager.appendToGroup("group5", removeAllAction); refreshAction = new Action() { public void run() { if (currentPage != null) { Job job = new Job("Search pattern") { protected IStatus run(IProgressMonitor monitor) { currentPage.run(monitor); table.getDisplay().asyncExec(new Runnable() { public void run() { updateView(); } }); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } } }; refreshAction.setToolTipText("Search Again"); refreshAction.setImageDescriptor(TradingPlugin.getImageDescriptor("icons/etool16/refresh.gif")); refreshAction.setDisabledImageDescriptor(TradingPlugin.getImageDescriptor("icons/dtool16/refresh.gif")); refreshAction.setEnabled(false); toolBarManager.appendToGroup("end", refreshAction); historyMenu = new Action("History", Action.AS_DROP_DOWN_MENU) { public void run() { SearchPageSelectionDialog dlg = new SearchPageSelectionDialog(getViewSite().getShell(), pages, currentPage); if (dlg.open() == SearchPageSelectionDialog.OK) { currentPage = dlg.getSelectedPage(); updateView();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -