注册空的弹出菜单
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