📄 newsview.java
字号:
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$ IToolBarManager toolBarManager = site.getActionBars().getToolBarManager(); toolBarManager.add(new Separator("begin")); //$NON-NLS-1$ toolBarManager.add(new Separator("group1")); //$NON-NLS-1$ toolBarManager.add(showPreviousAction); toolBarManager.add(showNextAction); toolBarManager.add(new Separator("group2")); //$NON-NLS-1$ toolBarManager.add(refreshAction); 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$ settings = NewsPlugin.getDefault().getDialogSettings().getSection(VIEW_ID); if (settings == null) settings = NewsPlugin.getDefault().getDialogSettings().addNewSection(VIEW_ID); if (site.getSecondaryId() != null) { security = (Security) CorePlugin.getRepository().getSecurity(site.getSecondaryId()); if (security != null) setPartName(security.getDescription() + " " + getPartName()); //$NON-NLS-1$ if (settings.getSection(site.getSecondaryId()) != null) settings = settings.getSection(site.getSecondaryId()); else settings = settings.addNewSection(site.getSecondaryId()); } super.init(site); } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ public void createPartControl(Composite parent) { Table table = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION); table.setHeaderVisible(true); table.setLinesVisible(false); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); TableColumn column = new TableColumn(table, SWT.NONE); column.setText(Messages.NewsView_Date); column.setWidth(settings.get("column0.width") == null ? 120 : settings.getInt("column0.width")); //$NON-NLS-1$ //$NON-NLS-2$ column.addControlListener(controlListener); column = new TableColumn(table, SWT.NONE); column.setText(Messages.NewsView_Title); column.setWidth(settings.get("column1.width") == null ? 240 : settings.getInt("column1.width")); //$NON-NLS-1$ //$NON-NLS-2$ column.addControlListener(controlListener); column = new TableColumn(table, SWT.NONE); column.setText(Messages.NewsView_Security); column.setWidth(settings.get("column2.width") == null ? 120 : settings.getInt("column2.width")); //$NON-NLS-1$ //$NON-NLS-2$ column.addControlListener(controlListener); column = new TableColumn(table, SWT.NONE); column.setText(Messages.NewsView_Source); column.setWidth(settings.get("column3.width") == null ? 120 : settings.getInt("column3.width")); //$NON-NLS-1$ //$NON-NLS-2$ column.addControlListener(controlListener); viewer = new TableViewer(table); viewer.setLabelProvider(labelProvider); viewer.setContentProvider(new ArrayContentProvider()); viewer.setComparator(new ViewerComparator() { public int compare(Viewer viewer, Object e1, Object e2) { return ((NewsItem)e2).getDate().compareTo(((NewsItem)e1).getDate()); } }); viewer.addOpenListener(new IOpenListener() { public void open(OpenEvent event) { showSelected(); } }); IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); ITheme theme = themeManager.getCurrentTheme(); if (theme != null) { table.setForeground(theme.getColorRegistry().get(TABLE_FOREGROUND)); table.setBackground(theme.getColorRegistry().get(TABLE_BACKGROUND)); table.setFont(theme.getFontRegistry().get(TABLE_FONT)); labelProvider.setAddedBackground(theme.getColorRegistry().get(NEW_ITEM_BACKGROUND)); labelProvider.setAddedForeground(theme.getColorRegistry().get(NEW_ITEM_FOREGROUND)); labelProvider.setAddedFont(theme.getFontRegistry().get(NEW_ITEM_FONT)); labelProvider.setReadedBackground(theme.getColorRegistry().get(READED_ITEM_BACKGROUND)); labelProvider.setReadedForeground(theme.getColorRegistry().get(READED_ITEM_FOREGROUND)); labelProvider.setReadedFont(theme.getFontRegistry().get(READED_ITEM_FONT)); theme.addPropertyChangeListener(themeChangeListener); } viewer.setInput(newsList); if (security != null) CorePlugin.getRepository().allNews(security).addCollectionObserver(collectionObserver); else CorePlugin.getRepository().allNews().addCollectionObserver(collectionObserver); NewsStartupJob job = new NewsStartupJob(security); job.addJobChangeListener(new JobChangeAdapter() { /* (non-Javadoc) * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core.runtime.jobs.IJobChangeEvent) */ public void done(IJobChangeEvent event) { final NewsStartupJob job = (NewsStartupJob)event.getJob(); try { viewer.getControl().getDisplay().asyncExec(new Runnable() { public void run() { if (!viewer.getControl().isDisposed()) { newsList = job.getList(); viewer.setInput(newsList); for (Iterator iter = newsList.iterator(); iter.hasNext(); ) ((NewsItem)iter.next()).addObserver(newsItemObserver); } } }); } catch(SWTException e) { if (e.code != SWT.ERROR_WIDGET_DISPOSED) throw(e); } } }); job.setUser(false); job.schedule(); } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#setFocus() */ public void setFocus() { if (!viewer.getControl().isDisposed()) viewer.getControl().setFocus(); } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#dispose() */ public void dispose() { if (security != null) CorePlugin.getRepository().allNews(security).removeCollectionObserver(collectionObserver); else CorePlugin.getRepository().allNews().removeCollectionObserver(collectionObserver); for (Iterator iter = newsList.iterator(); iter.hasNext(); ) ((NewsItem)iter.next()).deleteObserver(newsItemObserver); IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); ITheme theme = themeManager.getCurrentTheme(); if (theme != null) theme.removePropertyChangeListener(themeChangeListener); super.dispose(); } public void showNext() { NewsItem news = getSelectedItem(); TableItem[] items = viewer.getTable().getItems(); if (news == null && items.length != 0) { viewer.setSelection(new StructuredSelection(items[0].getData())); viewer.reveal(items[0].getData()); showSelected(); return; } for (int i = 0; i < items.length; i++) { if (items[i].getData() == news) { i++; if (i < items.length) { viewer.setSelection(new StructuredSelection(items[i].getData())); viewer.reveal(items[i].getData()); showSelected(); return; } } } } public void showPrevious() { NewsItem news = getSelectedItem(); TableItem[] items = viewer.getTable().getItems(); if (news == null && items.length != 0) { viewer.setSelection(new StructuredSelection(items[items.length - 1].getData())); viewer.reveal(items[items.length - 1].getData()); showSelected(); return; } for (int i = 0; i < items.length; i++) { if (items[i].getData() == news) { i--; if (i >= 0) { viewer.setSelection(new StructuredSelection(items[i].getData())); viewer.reveal(items[i].getData()); showSelected(); return; } } } } private void showSelected() { NewsItem news = getSelectedItem(); if (news != null) { try { WebBrowser browser = (WebBrowser) getSite().getPage().showView(WebBrowser.VIEW_ID, NewsPlugin.PLUGIN_ID, IWorkbenchPage.VIEW_ACTIVATE); if (browser != null) { browser.setUrl(news.getUrl()); news.setRecent(false); news.setReaded(true); CorePlugin.getRepository().save(news); } } catch (PartInitException e1) { CorePlugin.logException(e1); } } } protected NewsItem getSelectedItem() { if (!viewer.getSelection().isEmpty()) return (NewsItem) ((IStructuredSelection)viewer.getSelection()).getFirstElement(); return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -