📄 chartview.java
字号:
}; Runnable updateMarketValue = new Runnable() { public void run() { if (!sashForm.isDisposed()) { Control[] rows = sashForm.getChildren(); for (int r = 0; r < rows.length; r++) { if (rows[r] instanceof ChartTabFolder) { CTabItem[] items = ((ChartTabFolder)rows[r]).getItems(); for (int i = 0; i < items.length; i++) { if (items[i] instanceof ChartTabItem) { ChartTab tab = ((ChartTabItem)items[i]).getChartTab(); ChartIndicator[] obj = (ChartIndicator[])tab.getIndicators().toArray(new ChartIndicator[tab.getIndicators().size()]); for (int x = 0; x < obj.length; x++) { if (obj[x].getPluginId().equals("net.sourceforge.eclipsetrader.indicators.bars") || obj[x].getPluginId().equals("net.sourceforge.eclipsetrader.indicators.line")) { Plot plot = ((ChartTabItem)items[i]).getPlot(); if (showMarketValue && security.getQuote() != null) { plot.getScalePlot().setMarketValue(security.getQuote().getLast()); plot.getIndicatorPlot().setMarketValue(security.getQuote().getLast()); } else { plot.getIndicatorPlot().hideMarketValue(); plot.getScalePlot().hideMarketValue(); } break; } } } } } } } } }; Observer quoteObserver = new Observer() { public void update(Observable o, Object arg) { sashForm.getDisplay().syncExec(new Runnable() { public void run() { if (!sashForm.isDisposed()) sashForm.getDisplay().timerExec(200, updateMarketValue); } }); } }; List observedHistories = new ArrayList(); Runnable updateViewRunnable = new Runnable() { public void run() { if (!sashForm.isDisposed()) updateView(); } }; Observer chartUpdateObserver = new Observer() { public void update(Observable o, Object arg) { sashForm.getDisplay().syncExec(new Runnable() { public void run() { if (!sashForm.isDisposed()) { setPartName(chart.getTitle()); sashForm.getDisplay().timerExec(200, updateViewRunnable); } } }); } }; IPropertyChangeListener pluginPropertiesChangeListener = new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals(ChartsPlugin.PREFS_EXTEND_SCALE)) { int range = ((Integer)event.getNewValue()).intValue(); for(Iterator iter = tabGroups.iterator(); iter.hasNext(); ) { CTabFolder folder = (CTabFolder)iter.next(); CTabItem[] items = folder.getItems(); for (int i = 0; i < items.length; i++) ((Plot)items[i].getControl()).getScaler().setExtendRange(range); } redrawView(); } else if (event.getProperty().equals(ChartsPlugin.PREFS_EXTEND_PERIOD)) { datePlot.setExtendPeriod(((Integer)event.getNewValue()).intValue()); updateView(); } } }; public static IPath getPreferenceStoreLocation(Chart chart) { return ChartsPlugin.getDefault().getStateLocation().append("chart." + String.valueOf(chart.getId()) + ".prefs"); } /* (non-Javadoc) * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite) */ public void init(IViewSite site) throws PartInitException { IMenuManager menuManager = site.getActionBars().getMenuManager(); menuManager.add(new Separator("top")); //$NON-NLS-1$ menuManager.add(new Separator("group1")); //$NON-NLS-1$ 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(new Separator("group6")); //$NON-NLS-1$ menuManager.add(new Separator("additions")); //$NON-NLS-1$ menuManager.add(new Separator("bottom")); //$NON-NLS-1$ IMenuManager newObjectMenu = new MenuManager(Messages.ChartView_NewObject, "newObject"); //$NON-NLS-2$ menuManager.appendToGroup("group2", newObjectMenu); //$NON-NLS-1$ IExtensionRegistry registry = Platform.getExtensionRegistry(); IExtensionPoint extensionPoint = registry.getExtensionPoint(ChartsPlugin.OBJECTS_EXTENSION_POINT); if (extensionPoint != null) { IConfigurationElement[] members = extensionPoint.getConfigurationElements(); java.util.List plugins = Arrays.asList(members); Collections.sort(plugins, new Comparator() { public int compare(Object arg0, Object arg1) { if ((arg0 instanceof IConfigurationElement) && (arg1 instanceof IConfigurationElement)) { String s0 = ((IConfigurationElement) arg0).getAttribute("name"); //$NON-NLS-1$ String s1 = ((IConfigurationElement) arg1).getAttribute("name"); //$NON-NLS-1$ return s0.compareTo(s1); } return 0; } }); for (Iterator iter = plugins.iterator(); iter.hasNext(); ) { IConfigurationElement element = (IConfigurationElement)iter.next(); Action action = new Action(element.getAttribute("name")) { //$NON-NLS-1$ public void run() { ChartObject object = new ChartObject(); object.setPluginId(getId()); setNewChartObject(object); } }; action.setId(element.getAttribute("id")); //$NON-NLS-1$ newObjectMenu.add(action); } } IMenuManager periodMenu = new MenuManager(Messages.ChartView_Period, "period"); //$NON-NLS-2$ menuManager.appendToGroup("group3", periodMenu); //$NON-NLS-1$ periodMenu.add(viewAll); periodMenu.add(viewLast2Years); periodMenu.add(viewLastYear); periodMenu.add(viewLast6Months); periodMenu.add(viewCustom); IMenuManager intervalMenu = new MenuManager(Messages.ChartView_SetInterval, "interval"); //$NON-NLS-2$ menuManager.appendToGroup("group3", intervalMenu); //$NON-NLS-1$ intervalMenu.add(monthlyAction); intervalMenu.add(weeklyAction); intervalMenu.add(dailyAction); intervalMenu.add(minute60Action); intervalMenu.add(minute30Action); intervalMenu.add(minute15Action); intervalMenu.add(minute10Action); intervalMenu.add(minute5Action); intervalMenu.add(minute2Action); intervalMenu.add(minute1Action); menuManager.appendToGroup("group3", new Separator()); //$NON-NLS-1$ menuManager.appendToGroup("group3", autoScaleAction); //$NON-NLS-1$ toggleAdjustedValuesAction = new Action("Show adjusted values", Action.AS_CHECK_BOX) { public void run() { showAdjustedValues = toggleAdjustedValuesAction.isChecked(); preferences.setValue(PREFS_SHOW_ADJUSTED_VALUES, showAdjustedValues); updateView(); } }; menuManager.appendToGroup("group3", toggleAdjustedValuesAction); //$NON-NLS-1$ toggleMarketValueAction = new Action("Show market value", Action.AS_CHECK_BOX) { public void run() { showMarketValue = toggleMarketValueAction.isChecked(); preferences.setValue(PREFS_SHOW_MARKETVALUE, showMarketValue); if (showMarketValue) { security.getQuoteMonitor().addObserver(quoteObserver); quoteObserver.update(security, security.getQuote()); FeedMonitor.monitor(security); } else { security.getQuoteMonitor().deleteObserver(quoteObserver); FeedMonitor.cancelMonitor(security); } quoteObserver.update(security, security.getQuote()); } }; menuManager.appendToGroup("group3", toggleMarketValueAction); //$NON-NLS-1$ toggleFollowSelectionAction = new Action("Follow Security Selection", Action.AS_CHECK_BOX) { public void run() { followSelection = toggleFollowSelectionAction.isChecked(); preferences.setValue(PREFS_FOLLOW_SELECTION, followSelection); setContentDescription(followSelection ? security.getDescription() : ""); } }; menuManager.appendToGroup("group3", toggleFollowSelectionAction); //$NON-NLS-1$ 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("refresh")); //$NON-NLS-1$ toolBarManager.add(new Separator("group3")); //$NON-NLS-1$ toolBarManager.add(new Separator("group4")); //$NON-NLS-1$ toolBarManager.add(new Separator("objects")); //$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$ site.getActionBars().updateActionBars(); super.init(site); } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ public void createPartControl(Composite parent) { DropTarget target = new DropTarget(parent, DND.DROP_COPY|DND.DROP_MOVE); target.setTransfer(new Transfer[] { SecurityTransfer.getInstance() }); target.addDropListener(dropTargetListener); IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); themeManager.addPropertyChangeListener(themeChangeListener); theme = themeManager.getCurrentTheme(); theme.addPropertyChangeListener(themeChangeListener); Composite content = new Composite(parent, SWT.H_SCROLL); GridLayout gridLayout = new GridLayout(); gridLayout.marginWidth = gridLayout.marginHeight = 2; gridLayout.horizontalSpacing = gridLayout.verticalSpacing = 0; content.setLayout(gridLayout); content.addTraverseListener(new TraverseListener() { public void keyTraversed(TraverseEvent e) { if (e.detail == SWT.TRAVERSE_ESCAPE) { newChartObject = null; sashForm.setCursor(null); } } }); sashForm = new SashForm(content, SWT.VERTICAL); sashForm.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 1, 1)); datePlot = new DatePlot(content, SWT.NONE); GridData gridData = new GridData(); gridData.heightHint = 24; gridData.grabExcessHorizontalSpace = true; gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; datePlot.setLayoutData(gridData); datePlot.setForeground(theme.getColorRegistry().get(ChartView.THEME_PERIOD_FOREGROUND)); datePlot.setBackground(theme.getColorRegistry().get(ChartView.THEME_PERIOD_BACKGROUND)); datePlot.getIndicatorPlot().addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { updateScrollbar(); } }); datePlot.getIndicatorPlot().addPlotListener(new PlotListener() { public void plotResized(PlotEvent e) { updateScrollbar(); } }); hBar = content.getHorizontalBar(); hBar.setVisible(false); hBar.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -