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

📄 newsview.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * 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.news.views;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Observable;import java.util.Observer;import net.sourceforge.eclipsetrader.core.CorePlugin;import net.sourceforge.eclipsetrader.core.ICollectionObserver;import net.sourceforge.eclipsetrader.core.db.NewsItem;import net.sourceforge.eclipsetrader.core.db.Security;import net.sourceforge.eclipsetrader.core.ui.views.WebBrowser;import net.sourceforge.eclipsetrader.news.NewsPlugin;import org.eclipse.core.runtime.jobs.IJobChangeEvent;import org.eclipse.core.runtime.jobs.JobChangeAdapter;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.action.IToolBarManager;import org.eclipse.jface.action.Separator;import org.eclipse.jface.dialogs.IDialogSettings;import org.eclipse.jface.util.IPropertyChangeListener;import org.eclipse.jface.util.PropertyChangeEvent;import org.eclipse.jface.viewers.ArrayContentProvider;import org.eclipse.jface.viewers.IOpenListener;import org.eclipse.jface.viewers.IStructuredSelection;import org.eclipse.jface.viewers.OpenEvent;import org.eclipse.jface.viewers.StructuredSelection;import org.eclipse.jface.viewers.TableViewer;import org.eclipse.jface.viewers.Viewer;import org.eclipse.jface.viewers.ViewerComparator;import org.eclipse.swt.SWT;import org.eclipse.swt.SWTException;import org.eclipse.swt.events.ControlAdapter;import org.eclipse.swt.events.ControlEvent;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.widgets.Composite;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.IWorkbenchPage;import org.eclipse.ui.PartInitException;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.ViewPart;import org.eclipse.ui.themes.ITheme;import org.eclipse.ui.themes.IThemeManager;public class NewsView extends ViewPart {	public static final String VIEW_ID = "net.sourceforge.eclipsetrader.newslist"; //$NON-NLS-1$	static final String TABLE_BACKGROUND = "NEWS_TABLE_BACKGROUND"; //$NON-NLS-1$	static final String TABLE_FOREGROUND = "NEWS_TABLE_FOREGROUND"; //$NON-NLS-1$	static final String TABLE_FONT = "NEWS_TABLE_FONT"; //$NON-NLS-1$	static final String READED_ITEM_BACKGROUND = "NEWS_READED_ITEM_BACKGROUND"; //$NON-NLS-1$	static final String READED_ITEM_FOREGROUND = "NEWS_READED_ITEM_FOREGROUND"; //$NON-NLS-1$	static final String READED_ITEM_FONT = "NEWS_READED_ITEM_FONT"; //$NON-NLS-1$	static final String NEW_ITEM_BACKGROUND = "NEWS_NEW_ITEM_BACKGROUND"; //$NON-NLS-1$	static final String NEW_ITEM_FOREGROUND = "NEWS_NEW_ITEM_FOREGROUND"; //$NON-NLS-1$	static final String NEW_ITEM_FONT = "NEWS_NEW_ITEM_FONT"; //$NON-NLS-1$		IDialogSettings settings;		Security security;	TableViewer viewer;		NewsLabelProvider labelProvider = new NewsLabelProvider();	List newsList = new ArrayList();	IPropertyChangeListener themeChangeListener = new IPropertyChangeListener() {		public void propertyChange(PropertyChangeEvent event) {			ITheme theme = (ITheme)event.getSource();            if (event.getProperty().equals(TABLE_BACKGROUND))                viewer.getControl().setBackground(theme.getColorRegistry().get(TABLE_BACKGROUND));            else if (event.getProperty().equals(TABLE_FOREGROUND))            	viewer.getControl().setForeground(theme.getColorRegistry().get(TABLE_FOREGROUND));            else if (event.getProperty().equals(TABLE_FONT))            	viewer.getControl().setFont(theme.getFontRegistry().get(TABLE_FONT));            else if (event.getProperty().equals(NEW_ITEM_BACKGROUND)) {            	labelProvider.setAddedBackground(theme.getColorRegistry().get(NEW_ITEM_BACKGROUND));            	viewer.refresh();            }            else if (event.getProperty().equals(NEW_ITEM_FOREGROUND)) {            	labelProvider.setAddedForeground(theme.getColorRegistry().get(NEW_ITEM_FOREGROUND));            	viewer.refresh();            }            else if (event.getProperty().equals(NEW_ITEM_FONT)) {            	labelProvider.setAddedFont(theme.getFontRegistry().get(NEW_ITEM_FONT));            	viewer.refresh();            }            else if (event.getProperty().equals(READED_ITEM_BACKGROUND)) {            	labelProvider.setReadedBackground(theme.getColorRegistry().get(READED_ITEM_BACKGROUND));            	viewer.refresh();            }            else if (event.getProperty().equals(READED_ITEM_FOREGROUND)) {            	labelProvider.setReadedForeground(theme.getColorRegistry().get(READED_ITEM_FOREGROUND));            	viewer.refresh();            }            else if (event.getProperty().equals(READED_ITEM_FONT)) {            	labelProvider.setReadedFont(theme.getFontRegistry().get(READED_ITEM_FONT));            	viewer.refresh();            }		}	};		ICollectionObserver collectionObserver = new ICollectionObserver() {        public void itemAdded(Object o) {    		final NewsItem newsItem = (NewsItem)o;        	if (security == null || newsItem.isSecurity(security)) {        		newsList.add(newsItem);            	try {            		viewer.getControl().getDisplay().asyncExec(new Runnable() {                        public void run() {            	            if (!viewer.getControl().isDisposed()) {            	        		viewer.add(newsItem);            	        		newsItem.addObserver(newsItemObserver);            	            }                        }            		});            	} catch(SWTException e) {            		if (e.code != SWT.ERROR_WIDGET_DISPOSED)            			throw(e);            	}        	}        }        public void itemRemoved(Object o) {    		final NewsItem newsItem = (NewsItem)o;        	if (security == null || newsItem.isSecurity(security)) {        		newsList.remove(newsItem);            	try {            		viewer.getControl().getDisplay().asyncExec(new Runnable() {                        public void run() {            	            if (!viewer.getControl().isDisposed()) {            	        		viewer.remove(newsItem);            	        		newsItem.deleteObserver(newsItemObserver);            	            }                        }            		});            	} catch(SWTException e) {            		if (e.code != SWT.ERROR_WIDGET_DISPOSED)            			throw(e);            	}        	}        }	};		Observer newsItemObserver = new Observer() {        public void update(final Observable o, Object arg) {        	try {        		viewer.getControl().getDisplay().asyncExec(new Runnable() {                    public void run() {        	            if (!viewer.getControl().isDisposed())        	            	viewer.update(o, null);                    }        		});        	} catch(SWTException e) {        		if (e.code != SWT.ERROR_WIDGET_DISPOSED)        			throw(e);        	}        }	};	ControlAdapter controlListener = new ControlAdapter() {        public void controlResized(ControlEvent e) {	        TableColumn column = (TableColumn)e.widget;	        int index = viewer.getTable().indexOf(column);	        settings.put("column" + String.valueOf(index) + ".width", column.getWidth()); //$NON-NLS-1$ //$NON-NLS-2$	    }	};		Action refreshAction = new Action(Messages.NewsView_UpdateAction) {        public void run() {            if (security != null)                NewsPlugin.getDefault().startFeedSnapshot(security);            else                NewsPlugin.getDefault().startFeedSnapshot();        }	};		Action showNextAction = new Action(Messages.NewsView_NextAction) {        public void run() {        	showNext();        }	};		Action showPreviousAction = new Action(Messages.NewsView_PreviousAction) {        public void run() {        	showPrevious();        }	};		/* (non-Javadoc)	 * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)	 */	public void init(IViewSite site) throws PartInitException {		refreshAction.setImageDescriptor(NewsPlugin.getImageDescriptor("icons/elcl16/refresh.gif")); //$NON-NLS-1$		refreshAction.setDisabledImageDescriptor(NewsPlugin.getImageDescriptor("icons/dlcl16/refresh.gif")); //$NON-NLS-1$		showNextAction.setImageDescriptor(NewsPlugin.getImageDescriptor("icons/elcl16/next_nav.gif")); //$NON-NLS-1$		showNextAction.setDisabledImageDescriptor(NewsPlugin.getImageDescriptor("icons/dlcl16/next_nav.gif")); //$NON-NLS-1$		showPreviousAction.setImageDescriptor(NewsPlugin.getImageDescriptor("icons/elcl16/prev_nav.gif")); //$NON-NLS-1$		showPreviousAction.setDisabledImageDescriptor(NewsPlugin.getImageDescriptor("icons/dlcl16/prev_nav.gif")); //$NON-NLS-1$		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$

⌨️ 快捷键说明

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