(4)创建SearchViewLabelProvider类
package com.xqtu.google.views; import org.eclipse.jface.viewers.ITableLabelProvider;import org.eclipse.jface.viewers.LabelProvider;import org.eclipse.swt.graphics.Image; import com.google.soap.search.GoogleSearchResultElement; public class SearchViewLabelProvider extends LabelProvider implements
ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) {
return null; } public String getColumnText(Object element, int columnIndex) {
switch (columnIndex) { case 0: return ((GoogleSearchResultElement) element).getTitle(); case 1: return ((GoogleSearchResultElement) element).getURL(); default: return ""; } } }l TableViewer对象调用SearchViewLabelProvider来设置表格每行的列文本内容,第一列是搜索标题,第二列是URL
l SearchViewLabelProvider扩展LabelProvider,实现ItableLabelProvider接口,根据提供的元素对象为每列提供文本和/或图像
l 由于表格不提供图像,getColumnImage方法返回null;getColumnText根据不同的列索引返回不同的文本内容
(5)创建BrowserView视图
package com.xqtu.google.views; import org.eclipse.swt.SWT;import org.eclipse.swt.browser.Browser;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.ui.part.ViewPart; public class BrowserView extends ViewPart {
public static final String ID = "com.xqtu.google.views.BrowserView"; public static Browser browser; public void createPartControl(Composite parent) {
GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; gridLayout.marginHeight = 5; gridLayout.marginWidth = 5; parent.setLayout(gridLayout); browser = new Browser(parent, SWT.NONE); browser.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL)); browser.setUrl("http://blog.youkuaiyun.com/chenyun2000"); } public void setFocus() {
browser.setFocus(); } }l BrowserView视图的创建方法和SearchView视图是一样的:扩展ViewPart基类,实现createPartControl和setFocus方法
l 在createPartControl方法中创建一个SWT浏览器控件,用来显示用户在搜索结果表中选中的Web页面
(6)将SearchView和BrowserView集成到透视图中
package com.xqtu.google; import org.eclipse.ui.IPageLayout;import org.eclipse.ui.IPerspectiveFactory; import com.xqtu.google.views.BrowserView;import com.xqtu.google.views.SearchView; public class GooglePerspective implements IPerspectiveFactory { public static final String ID = "com.xqtu.google.GooglePerspective"; public void createInitialLayout(IPageLayout layout) { layout.setEditorAreaVisible(false);layout.addView(SearchView.ID, IPageLayout.BOTTOM, new Float(0.60)
.floatValue(), IPageLayout.ID_EDITOR_AREA); layout.addView(BrowserView.ID, IPageLayout.TOP, new Float(0.40) .floatValue(), IPageLayout.ID_EDITOR_AREA); } }l 在透视图类GooglePerspective的createInitialLayout方法中调用addView方法添加视图到透视图中
l addView方法需要四个参数,分别是:
Ø 视图的唯一标识,与plugin.xml中定义的一致
Ø 参考部分中的相对位置,可以是IPageLayout.TOP、IPageLayout.BOTTOM、IPageLayout.LEFT或IPageLayout.RIGHT
Ø 参考部分中当前占有的空间比率,值范围在0.05f和0.95f之间
Ø 参考部分唯一标识;例中使用的是编辑区域(IPageLayout.ID_EDITOR_AREA)
博客介绍了SearchView和BrowserView的创建与集成。创建SearchViewLabelProvider类扩展LabelProvider,为表格列提供文本;创建BrowserView视图扩展ViewPart基类,用SWT浏览器控件显示页面;最后将二者集成到透视图中,通过addView方法添加视图并设置参数。
2398

被折叠的 条评论
为什么被折叠?



