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