- 浏览: 75661 次
- 性别:
- 来自: 深圳
文章分类
最新评论
一、同时关闭所有打开的view
在view中,只有一个close,每次只能关闭当前窗口
在eclipse的编辑窗口的标题上点右键,里面有 close All
可以使用遍历的方法,遍历所有打开的View,然后将其隐藏:
AsyncUtil.asyncExec(new Runnable()
{
public void run()
{
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewReference[] iViewReferences = page.getViewReferences();
for (IViewReference iViewReference: iViewReferences)
if (!ID.equals(iViewReference.getId()))
page.hideView(iViewReference);
}
});
二、RCP中产生目标区的Bar
产生红线区域的Bar,实现方法如下:
1、这个是perspective,要创建多个perspective,然后设置某个为active
2、在WorkbenchWindowAdvisor中preWindowOpen内,加下面这段代码
public void preWindowOpen() {
IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
apiStore.setValue(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
IWorkbenchPreferenceConstants.TOP_RIGHT);
apiStore.setValue(
IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
false);
}
3、需要加 config.setShowPespectivebar(true);
三、RCP项目--窗口关闭事件
在ApplicationWorkbenchWindowAdvisor中override
public boolean preWindowShellClose() {
// do nothing, but allow the close() to proceed
MessageBox msgBox = new MessageBox(new Shell(), SWT.YES|SWT.NO|SWT.ICON_QUESTION);
msgBox.setText("退出系统");
msgBox.setMessage("确定退出系统?");
if(msgBox.open()==SWT.YES){
return true;
}
return false;
}
以后使用IWorkbenchWindow的getShell().close();都会调用该处代码.
四、在RCP中设计界面适合桌面大小
final int screenWidth = Display.getCurrent().getBounds().width;
final int screenHeight = Display.getCurrent().getBounds().height;
五、Treeviewer中通过代码,选中树上的某个node节点
StructuredSelection sel=new StructuredSelection(node);
tree.setSelected(sel);
六、TreeViewer实现双击展开、关闭
private class DoubleEventPro implements MouseListener {
public void mouseDoubleClick(MouseEvent e) {
TreeItem item = viewer.getTree().getItem(new Point(e.x, e.y));
if (item != null && item.getItem(0).getText().trim().length() == 0) {
viewer.expandToLevel(item.getData(), 1);
return;
}
if (item != null && item.getItemCount() > 0
&& item.getItem(0).getText().trim().length() > 0) {
item.setExpanded(!item.getExpanded());
}
}
public void mouseDown(MouseEvent e) {
}
public void mouseUp(MouseEvent e) {
}
}
七、 如何屏蔽掉视图窗口上的右键弹出菜单?
方法一:在 postWindowOpen() 中执行下面语句:
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.MouseUp, new Listener() {
public void handleEvent(final Event event) {
if(event.widget == your editor && event.button == 3) {
int hwndCursor = OS.GetCapture ();
OS.PostMessage(hwndCursor, OS.WM_LBUTTONDOWN, hwndCursor, OS.HTCLIENT | (OS.WM_MOUSEMOVE << 16));
}
}
});
其它:org.eclipse.ui.internal.presentations.util包中的StandardViewSystemMenu类控制着这些菜单,还没来得急仔细研究,研究过后再补充
八、在使用tableviewer的时候导入大量数据的问题
创建了一个tableviewer,然后使用setInput方法导入数据,如果数据量很大的话根本就无效率可言了,以下是几种解决的方法:
方法一:通过移动滚动条来达到自动加载的目的,在滚动条的事件中加入翻页的代码,可以参考《Eclipse从入门到精通》第二版的P383
方法二:分页显示(http://www.eclipseworld.org/bbs/read-cec-tid-11678-keyword-table.html)
方法三:使用 Virtual Tables,JFace3.2的Viewer已经支持SWT.VIRTUAL样式
http://www.eclipse.org/articles/Article-SWT-Virtual/Virtual-in-SWT.html
1 int COUNT = 10000;
2 final String [] itemStrings = new String [COUNT];
3 for (int i = 0; i < COUNT; i++) {
4 itemStrings = "item " + i;
5 }
6 final Table table = new Table(parent, SWT.BORDER | SWT.VIRTUAL);
7 table.addListener(SWT.SetData, new Listener() {
8 public void handleEvent(Event event) {
9 TableItem item = (TableItem)event.item;
10 int index = event.index;
11 item.setText(itemStrings [index]);
12 }
13 });
14 table.setItemCount(COUNT);
九、在透视图快捷方式栏中同时显示多个透视图快捷方式
如果在程序中做了多个个透视图,默认只显示初始透视图快捷方式,每次都要 打开透视图——other,特麻烦,所以,一下提供两种方法:
1、在切换栏中显示
public class PIMWorkbenchAdvisor extends WorkbenchAdvisor {
@Override
public void postStartup() {
super.postStartup();
IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
//2007.01.11 设置同时显示多个透视图标
PerspectiveBarManager barManager=((WorkbenchWindow)activeWorkbenchWindow).getPerspectiveBar();
if(barManager != null){
IPerspectiveDescriptor mailPerspective = WorkbenchPlugin.getDefault().getPerspectiveRegistry ().findPerspectiveWithId("MyWork_mail.perspective");
PerspectiveBarContributionItem item=new PerspectiveBarContributionItem(mailPerspective,activeWorkbenchWindow.getActivePage());
barManager.addItem(item);
}
}
2、在下拉框中(shortcut)显示
public class UiPerspective implements IPerspectiveFactory
{
public void createInitialLayout(IPageLayout layout){
....
//增加透视图
layout.addPerspectiveShortcut("net.sf.pim.plugin.UiPerspective");
layout.addPerspectiveShortcut("MyWork_mail.perspective");
}
}
十、控制“最近打开文档”的个数
RCP中在继承ActionBarAdvisor的类中定义:
private IContributionItem reOpenAction = ContributionItemFactory.REOPEN_EDITORS.create(window);
然后在fillMenuBar(IMenuManager menuBar)方法中添加上面的aciton
运行时“最近打开的文档”只有4个,如果想自己控制“最近打开的文档”的数量,则设置一下Workbench中的初始化首选项时RECENT_FILES的默认参数值如:
WorkbenchPlugin.getDefault().getPreferenceStore().setDefault(IPreferenceConstants.RECENT_FILES,10);
十一、设置Eclipse RCP程序的外观和首选项
RCP应用程序的缺省外观是一个空白窗口,一般我们要通过一个WorkbenchAdvisor类对界面进行定制。 WorkbenchAdvisor有很多回调方法,可以在preWindowOpen()方法里设置菜单、工具条、状态栏、进度栏、透视图切换工具是否可见,在fillActionBars()方法里添加菜单和工具条项,在getInitialWindowPerspectiveId()方法里指定首选的透视图。
缺省情况下,透视图切换工具位于窗口左上角,在Eclipse里可以通过Window->Preferences-> Workbench->Appearance改变它的位置,那么怎样用程序控制它呢?有两个方法,第一个是使用如下代码设置 IPreferenceStore中的变量:
IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
apiStore.setValue(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR, IWorkbenchPreferenceConstants.TOP_RIGHT);
另一个方法是在plugin所在目录建一个名为plugin_customization.ini的文件,里面写如下内容:
your.plugin.id/DOCK_PERSPECTIVE_BAR=topRight
其他与plugin相关的Preference值可以用同样方法设置。
Update:在最新的Eclipse 3.1M5a版本中,对RCP应用程序菜单和工具条的定制方法有所改变,应该使用新加入的ActionBarAdvisor类来完成此项工作。
十二、获得自己开发的plugin被安装的目录
/** *//**
* @return 本插件的安装路径
*/
public String getInstallDir() ...{
if (installPath == null) ...{
URL localUrl = null;
try ...{
localUrl = FileLocator.toFileURL(getDefault().getBundle()
.getEntry("/"));
installPath = localUrl.getFile().substring(1);
} catch (Exception e) ...{
log(e);
}
}
return installPath;
}
轉自http://duguanglong002.blog.163.com/blog/static/26955626200955415545/
发表评论
-
EditorPart
2011-04-13 16:26 9841、设置editor标题 @Override publi ... -
RCP控制View 特性配置(如移动、最大化、最小化、关闭等)
2011-03-26 17:34 46921、我们可以添加org.eclipse.ui.perspect ... -
RCP 程序类
2011-03-07 10:21 8821、ApplicationWorkbenchAdvisor ... -
RCP掌握技术
2011-01-13 11:16 965RCP Application Plugin JFac ... -
GMF学习纪要
2010-12-20 15:23 1267创建GEF工程,具体创建步骤可以参考http://www.ib ... -
重命名Action
2010-12-17 10:22 851File selected_file = (File) sel ... -
控制只能开启一个rcp应用程序
2010-11-25 15:22 858private boolean isAreadyRun ... -
开发环境
2010-05-17 16:39 0http://download.eclipse.org/rel ... -
插件国际化
2010-02-09 14:39 1053第三方国际化插件工具 1.sourceforge.net ... -
在透视图显示工作台视图
2010-02-09 09:16 913public class Perspective implem ... -
preWindowOpen 设置样式
2010-01-14 17:08 1397public void preWindowOpen() { ... -
TableViewer, TreeViewer双击编辑
2009-11-05 23:15 3279在TreeViewer或TableViewer中 ... -
RCP 动态 改变 主窗体标题
2009-10-31 09:23 1148在视图或编辑器触发事件中 IWorkbenchWind ... -
Java: applet+jfreechart动态显示方法的执行时间
2009-10-18 23:03 2658public ActionForward execute(Ac ... -
JFreechart综合
2009-10-13 23:13 4604JFreeChart是一个Java开源项目,是一款优秀的J ... -
jfreechart1
2009-08-23 22:54 0? 一、JFreeChart的介绍与获取 JFre ... -
Eclipse RCP(转)
2009-08-05 22:56 2412简单地讲, 一个RCP应用就是一个可独立于Eclispe I ... -
初学RCP开发
2009-07-28 09:37 14341、以前用过AWT,对SWT掌握不难! 2、必须掌握3个概念 ... -
PreferencePage自定义运行时空指针异常疑惑
2009-07-27 16:19 1142PreferenceManager mgr = new P ...
相关推荐
**Eclipse RCP 开发详解** Eclipse RCP(Rich Client Platform)是Eclipse IDE提供的一种强大的客户端应用程序框架,它允许开发者构建功能丰富的、可扩展的桌面应用。本培训PPT将带你深入理解Eclipse RCP的核心概念...
### Eclipse RCP 教程知识点概述 #### 一、Eclipse RCP 概览 - **定义**:Eclipse RCP(Rich Client Platform)是一种基于Java的框架和技术集合,允许开发者构建灵活且可扩展的桌面应用程序。 - **目标**:通过提供...
6. **第20章:富客户端平台(RCP)技术** - 本章深入讨论了RCP的技术基础,可能包括了窗口小部件、视图、编辑器、透视图的概念,以及如何利用这些构建应用程序的用户界面。 7. **第21章:Draw2d** - Draw2d是Eclipse...
6. **视图管理**:RCP小技巧可能包括如何添加、移除和调整视图的位置,这通常涉及到`IViewPart`和`IWorkbenchPage`的相关API。 7. **透视图设置代码**:一些常用的设置代码可能包括如何初始化透视图,调整视图的...
**1.2 ECLIPSERCP 建设风格——插件,扩展和扩展点** - **插件(Plugin)**: Eclipse RCP 应用由多个插件组成,每个插件可以提供特定的功能或服务。 - **扩展(Extension)**: 插件可以通过定义扩展来修改或增强其他...
"Eclipse学习笔记"很显然是为了帮助开发者深入理解和熟练掌握Eclipse的各项功能和使用技巧。这个压缩包包含两份文档——"Eclipse的Rich Client Platform1.doc"和"Eclipse的Rich Client Platform2.doc",它们很可能是...
制作包含JRE的最小RCP程序压缩包,不仅需要理解RCP与JRE的工作原理,还需要掌握一定的压缩技巧。通过合理地去除不必要的类库、使用Pack200工具压缩以及优化RCP运行时环境,可以有效地减小程序包的大小,提高分发效率...
3. **图形绘制**:掌握在Eclipse环境中进行图形绘制的API和技巧。 4. **图形事件**:处理图形元素的鼠标和键盘事件,实现交互功能。 5. **图形布局**:使用各种布局策略来自动调整图形元素的位置和大小。 6. **...
通过深入学习和实践这些Eclipse SWT Form开发实例代码,开发者能够掌握创建高效、原生且用户友好的GUI应用程序的技巧,同时提升在Eclipse平台上的开发能力。无论是对于初学者还是经验丰富的开发者,这些实例都提供了...
因此,掌握Eclipse RCP界面美化技巧对于提高最终产品的吸引力至关重要。 #### Eclipse RCP界面美化的重要性 随着用户对软件美观度和易用性的要求日益提高,良好的界面设计不仅能够提升用户体验,还能增强软件的...
**RCP(Rich Client Platform)入门知识详解** ...综上所述,RCP为开发复杂桌面应用提供了强大的框架,新手可以通过学习相关教程和实践案例,逐步掌握RCP的开发技巧,从而创建出功能丰富且用户体验良好的应用程序。
- **安装PDE相关组件**: 通过Eclipse的帮助菜单安装了PDE相关的组件,包括CVS Client、JDT、PDE、RCP等相关源码包。 #### 四、PDE环境配置详解 - **安装过程**: 在Eclipse的帮助菜单下选择"Install New Software......
此外,还会分享一些提高开发效率的小技巧,如快捷键设置、自定义工作空间布局等。 《技术宝典》部分则包含了Eclipse的高级特性和最新发展,例如Eclipse RCP( Rich Client Platform)用于构建桌面应用程序,以及...
同时,文章最后也提到了关于Eclipse相关的其他技巧文章,如“Eclipse代码格式化设置简单介绍”、“eclipse联想功能设置技巧”、“Eclipse Debug模式的开启与关闭问题简析”,这些内容可以进一步帮助开发者深入了解...
【Fita.RCP-开源】是一款专为射箭爱好者和专业人士设计的开源应用程序,它基于Eclipse Rich Client Platform (RCP) 构建。Eclipse RCP 是一个强大的开发框架,用于构建桌面应用程序,它提供了丰富的用户界面组件和...
本篇内容将深入解析Eclipse SWT和JFace的开发实践,帮助读者理解这两个库的核心概念和应用技巧。 首先,SWT是Eclipse项目中的一个重要组成部分,它的设计目标是提供高性能、与平台无关的用户界面组件。SWT通过本地...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...
9. **Eclipse IDE for RCP and RAP Developers**:除了标准的Java开发版本,Eclipse还提供了RCP(Rich Client Platform)和RAP(Rich Ajax Platform)版本,用于构建桌面和Web应用程序。 10. **持续集成与自动化**...
SWT(Standard Widget Toolkit)是Eclipse平台的一部分,它提供了一组基于本地GUI库的跨平台小部件,可以创建高性能的用户界面。SWT的目标是提供一个高效、可移植且功能丰富的图形界面,同时保持对底层操作系统的...