首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

rcp 惯用代码

2012-10-27 
rcp常用代码注册空的弹出菜单?MenuManager?menuManagernew?MenuManager()Menu menumenuManager.createC

rcp 常用代码

注册空的弹出菜单

?

MenuManager?menuManager=new?MenuManager();

Menu menu=menuManager.createContextMenu(treeViewer.getControl());

treeViewer.getControl().setMenu(menu);

?//设置选择提供者和弹出菜单??

??????getSite().setSelectionProvider(treeViewer);?

??????getSite().registerContextMenu(menuManager,?treeViewer);?

?

?

对viewer ?实现过来

import java.io.*;
import org.eclipse.jface.viewers.*;
public class AllowOnlyFoldersFilter extends ViewerFilter
{
 public boolean select(Viewer viewer, Object parent, Object element)
 {

? ?这里我只显示 目录
  return ((File) element).isDirectory();
 }
}

?

为viewer 实现 ? ? 排序。

?

class NameSorter extends ViewerSorter {

?

@Override

public int compare(Viewer viewer, Object e1, Object e2) {

return e1.toString().compareTo(e2.toString());

//return super.compare(viewer, e1, e2);

}

}

?

?

?

?

?

这里是对数组的排序,这里用到了泛型,可以对任何集合进行排序

Arrays.sort(a, c)

Collections.sort(list, c)

?

?

为属性栏设置 验证。

?

?propertyDescriptor.setValidator(new EmailAddressValidator());

public class EmailAddressValidator1 implements ICellEditorValidator {

? ? /**?

? ? ?* The <code>EmailAddressValidator</code> implementation of this

? ? ?* <code>ICellEditorValidator</code> method?

? ? ?* determines if the value is a valid email address.

? ? ?* (check to see if it is non-null and contains an @)

? ? ?*/

? ? public String isValid(Object value) {

? ? ? ? 。。没有错误

? ? ? ? ? ? return null;

? ? ? ? ?有错误,返回错误信息

? ? ? ? return MessageUtil

? ? ? ? ? ? ? ? .getString("email_address_does_not_have_a_valid_format"); //$NON-NLS-1$

? ? }

}

?

?

?

可以看一下源码

使用rcp内部的类,来实现treeviewer

不过模型要求实现 ?IWorkbenchAdapter ?

? ? viewer.setContentProvider(new WorkbenchContentProvider());

? ? ? viewer.setLabelProvider(new WorkbenchLabelProvider());

内部提供了很多机制。

?

?

ComboBoxPropertyDescriptor ?通过 这个类来实现 属性栏下拉列表。

?

public class CustomDescriptor extends PropertyDescriptor {

? ? //重写

? ? public CellEditor createPropertyEditor(Composite parent) {

? ? ? ? 默认这里是空的,你可以扩展自己的对话框

? ? ? ? CellEditor editor = new ColorCellEditor(parent);

? ? ? ? if (getValidator() != null) {

editor.setValidator(getValidator());

}

? ? ? ? return editor;

? ? }

}

?

这样结构的可以在 PropertySheet中作为一个page显示。

public class PropertySheetPage extends Page implements IPropertySheetPage, IAdaptable?

?

?

org.eclipse.ui.preferencePages ?通过该扩展点 实现首先项的扩展。

public class RootPreferencePage extends PreferencePage

implements IWorkbenchPreferencePage

?

?

打开属性页面的动作

PropertyDialogAction

?

?SamplePropertyPage extends PropertyPage?

?<extension

? ? ? ? ?point="org.eclipse.ui.propertyPages">

? ? ? <page

? ? ? ? ? ? name="属性页面test"

? ? ? ? ? ? nameFilter="*.*"

? ? ? ? ? ? class="plugin.properties.SamplePropertyPage"

? ? ? ? ? ? id="plugin.properties.samplePropertyPage">

? ? ? ? ?<enabledWhen>

? ? ? ? ? ? <instanceof

? ? ? ? ? ? ? ? ? value="org.eclipse.core.resources.IFile">

? ? ? ? ? ? </instanceof>

? ? ? ? ?</enabledWhen>

? ? ? </page>

? ?</extension>

学习http://blog.csdn.net/vwpolo/archive/2008/03/04/2147078.aspx

?

?

jface 设计

http://blog.csdn.net/hansoft/archive/2005/06/18/397584.aspx

?

org.eclipse.ui.popupMenus ?可以通过该扩展点对eclipse已经有点弹出菜单进行扩展。

?

HandlerUtil ? 是handler的工具类,很有用。

?

jface已经封装了一个选择文件的一个组件,不需要自己再去写了。

org.eclipse.jface.preference

FileFieldEditor editor = new FileFieldEditor("fileSelect","Select File: ",shell);?

?

IWizard ?相关子接口,相关类

INewWizard

WizardNewFileCreationPage ?项目中的新建文件 /导入文件 都可以用这个 page通过wizard来实现。

?

org.eclipse.help.toc ? 实现帮助的扩展点。

?

org.eclipse.ui.decorators 可以根据文件的不同状态,添加对应的图标对原有图标的装饰。

? ? ? ? ? ? ? ? ? ? ? ? ? svn就是用这种方式实现的。

?

?

?

IResourceChangeListener

ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);

?

FieldEditor ?它的子类中封装了常用的一下基本组件。

FieldEditorPreferencePage ? 可以使用FieldEditor 来实现一个IWorkbenchPreferencePage

?

?

org.eclipse.core.runtime.preferences ?初始化IPreferenceStore中的值

?

?

org.eclipse.ui.splashHandlers ? AbstractSplashHandler ?可以自定义启动界面。

?

?

org.eclipse.ui.intro ?org.eclipse.ui.intro.config ? 来制作欢迎界面。

?

service 扩展点 sourceProvider 子节点 ?

org.eclipse.ui.internal.services.WorkbenchSourceProvider ??

这个类可以在with(这里使用里面的属性名)

例如:with(selection)

http://blog.eclipse-tips.com/2009/02/commands-part-5-authentication-in-rcp.html

?

1、重启RCP应用

  PlatformUI.getWorkbench().restart();

  2、在插件资源库中查找Perspective(其它extend point资源的获得类似)

?

?

IPerspectiveDescriptoripd=PlatformUI.getWorkbench().getPerspectiveRegistry().findPerspectiveWithId(FavoritePerspective.ID); //根据plugin.xml中的ID查找

  3、获得当前RCP应用的shell

  Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();

  4、显示帮助信息

  PlatformUI.getWorkbench().getHelpSystem().displayHelp();

?

?

PlatformUI ?Platform ?AbstractUIPlugin ?WorkbenchPlugin

?

?

org.eclipse.ui.presentationFactories ?改变Eclipse的外观

http://blog.csdn.net/bradwoo8621/archive/2007/04/25/1584018.aspx

热点排行