- 浏览: 378714 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
zxjlwt:
学习论。确实很全啊。欢迎交流http://surenpi.co ...
eclipse dialog 对话框 大全 -
zxjlwt:
很好。http://surenpi.com
eclipse 源码泛读 -
string2020:
有卵用???
activiti 第一个例子 helloworld -
ysj_csdn:
能给个正确的例子?
activiti 第一个例子 helloworld -
zxjlwt:
学习了。http://surenpi.com
Eclipse扩展点介绍
WARNING: Prevented recursive attempt to activate part org.eclipse.ui.views.PropertySheet while still in the middle of activating part VV
代码的错误处:
if (partBeingActivated != null) {
if (partBeingActivated.getPart(false) != newPart) {
WorkbenchPlugin.log(new RuntimeException(NLS.bind(
"WARNING: Prevented recursive attempt to activate part {0} while still in the middle of activating part {1}", //$NON-NLS-1$
getId(newPart), getId(partBeingActivated))));
}
return;
}
解决办法:
在你的view/edior中添加
@Override
public void setFocus() {
这里不能为空,只要为空就会出现那种错误。
界面中的控件.setFocus();
}
原因:
通过对代码的调试:
没选择一次part
WorkbenchPage.setActivePart 方法会调用三次,
三次调用都是内部调用,只有第三次调用完之后才会执行。
setActivePart 方法最后的
finally {
partBeingActivated = null;
Object blame = newPart == null ? (Object)this : newPart;
UIStats.end(UIStats.ACTIVATE_PART, blame, label);
}
这样partBeingActivated的值才为null,
三次调用的流程为:
选择part,出发setActivePart方法,activatePart(newPart); 第一次
setActivePart方法内部又调用自身一次 第二次
第二次的时候就直接return,所以没有进入try里面,不会执行finally
if (partBeingActivated != null) {
if (partBeingActivated.getPart(false) != newPart) {
WorkbenchPlugin.log(new RuntimeException(NLS.bind(
"WARNING: Prevented recursive attempt to activate part {0} while still in the middle of activating part {1}", //$NON-NLS-1$
getId(newPart), getId(partBeingActivated))));
}
return;
}
就在这里return了。
第三次 在 PartPane中 ,这里也是没有进入try里面,不会执行finally
public void setFocus() {
requestActivation(); 这里面已经调用了两次
IWorkbenchPart part = partReference.getPart(true);
if (part != null) {
Control control = getControl();
if (!SwtUtil.isFocusAncestor(control)) {
// First try to call part.setFocus
part.setFocus(); 这里有去重新调用了一次。如何方法体为空,就不会去调用。
关键是这里如果你没有设置setFocus,就会被PropertySheet所调用,这个时候就会报错了。。
}
}
这里是最上层的调用,在这个方法最好结束时,才会去去调用
finally {
partBeingActivated = null;
Object blame = newPart == null ? (Object)this : newPart;
UIStats.end(UIStats.ACTIVATE_PART, blame, label);
}
}
主要就是把这个方法看明白,这问题就清楚了。
private void setActivePart(IWorkbenchPart newPart, boolean force) {
// Optimize it. 如何选择同样的,直接return
if (!force && (getActivePart() == newPart)) {
return;
}
如果准备打开的part为不为null,直接return
if (partBeingActivated != null) {
如果准备打开的和将要打开的不是同一个part,报错。
if (partBeingActivated.getPart(false) != newPart) {
WorkbenchPlugin.log(new RuntimeException(NLS.bind(
"WARNING: Prevented recursive attempt to activate part {0} while still in the middle of activating part {1}", //$NON-NLS-1$
getId(newPart), getId(partBeingActivated))));
}
return;
}
//下面的代码没有准备打开的part时,才去执行。
。。。。。
初始化准备要打开的part
partBeingActivated = realPartRef;
重新调用这个方法。,这次调用就会直接return
activatePart(newPart);
actionSwitcher.updateActivePart(newPart);
partList.setActivePart(partref);
} finally {
partBeingActivated = null;
Object blame = newPart == null ? (Object)this : newPart;
UIStats.end(UIStats.ACTIVATE_PART, blame, label);
}
}
模拟类
public class Test {
public static void main(String[] args) {
test2();
}
private static int count=0;
private static void test2()
{
test(-1);
}
private static void test(int i)
{
count++;
System.out.println("第"+count+"次");
if(i==1)
return;
try {
i=1;
test(1);
test(1);
} catch (Exception e) {
// TODO: handle exception
}finally{
System.out.println("finally");
}
}
}
执行结果
第1次
第2次
第3次 第三次 有可能被propertysheet调用了。
finally
发表评论
-
离线使用tycho对eclipse RCP打包导出
2015-09-02 09:22 1235http://www.bubuko.com/infodetai ... -
RAP源码泛读及分析
2014-01-17 13:27 1148SWT、RWT如何保证大部 ... -
rap 的学习1
2013-10-27 22:02 787RAP 2.2 December 2013 (planne ... -
tycho 打包不同平台的RCP
2013-06-18 10:56 1153<configuration> < ... -
rap web开发
2013-04-10 17:12 894rap项目已经2.0(changelog) 这次改动 ... -
subversion升级到1.7
2012-09-07 15:37 1919http://www.cnblogs.com/xiziy ... -
ubuntu eclipse 中使用jadclipse java反编译
2012-09-07 11:04 11931:net.sf.jadclipse_3.3.0.jar 发 ... -
Nebula Project
2012-08-10 02:42 881http://www.eclipse.org/nebula/ -
Eclipse Plug-in dependencies – Required Bundle vrs. Import-Package
2012-07-19 00:32 3027http://www.vogella.com/blog/200 ... -
rcp培训
2012-07-19 00:22 1239<!-- @pa ... -
No schema found for … extension point 问题
2012-03-13 13:09 1586很多时候在编辑plugin.xml 文件的Extensi ... -
Eclipse中的org.eclipse.core.resources.markers扩展点
2011-11-09 11:26 1938扩展点配置如下:<extension ... -
开发一个调试 JSP 的 Eclipse 插件
2011-10-27 22:34 1571AVA调试框架(JPDA)简介JPDA是一个多层的调试框架 ... -
gmf 优点
2011-09-28 15:09 977http://www.ibm.com/developerwor ... -
gef 与gmf的结合
2011-09-28 14:03 1024以前的项目已经就是直接用gef,自己写模型的。 今天研 ... -
rcp自动加载插件
2011-09-28 13:56 1203http://blog.ixpub.net/html/9 ... -
rcp DialogSettings IPreferenceStore IMemento
2011-09-22 14:31 1136三个不的不同点: IMemento 要求rc ... -
rcp IPreferenceStore
2011-09-22 14:21 1267IPreferenceStore store=Acti ... -
rcp DialogSettings
2011-09-22 14:10 1168Activator.getDefault().getDialo ... -
rcp IMemento 状态的保存
2011-09-22 13:50 1131rcp 可以对每个part进行状态的保存。 保存数据 ...
相关推荐
别忘了实现`setFocus()`方法,以便在需要时获取焦点。 对于Editor,创建一个类,继承自`EditorPart`。同样,你需要重写`createPartControl()`来定义编辑器的界面,但编辑器通常会包含更复杂的编辑功能,如代码编辑...
- **事件(Event)**:SWT组件会触发各种事件,如选择事件(SelectionEvent)和焦点事件(FocusEvent)。 #### 四、创建Eclipse RCP应用 ##### 1. 创建插件项目 - **步骤**: - 首先,创建一个新的Eclipse插件项目。 ...
文档标签为“资料 文档”,暗示我们关注的焦点是关于电机RCP板卡的技术资料或使用文档。这些文档可能包含电路设计原理、工作流程、安装指南、故障排查步骤、维护手册等内容,对理解和使用电机RCP板卡至关重要。 在...
线程剖析则能帮助你发现可能导致应用卡顿或延迟的线程问题,如死锁。 总的来说,JProfiler是调试和优化Java应用,特别是RCP应用的强大工具,它提供了丰富的视图和分析选项,帮助开发者深入理解程序的运行情况,从而...
统计分析模块通过对数据的智能分析,为管理层提供决策支持,如违章热点地图、违规趋势分析等。 在技术实现上,系统充分利用了Eclipse RCP的插件体系,通过插件解耦各个功能模块,使得系统易于维护和升级。此外,...
在这个项目中,`ExplorerManager`被用来管理文件树的焦点和选择状态。 **BeanTreeView**: `BeanTreeView`是Swing的一个组件,它是NetBeans RCP提供的,专门用来展示`Node`的树状视图。它将`Node`对象转换为可视化的...
为了解决金融应用领域系统开发效率低下、系统维护和更新困难等问题,本研究提出了一种基于 Eclipse RCP 和 XML UI 技术的金融交易客户端框架 TRCP(Trading Rich Client Platform)。该框架采用插件作为功能单位的...
在IT领域,特别是Java Swing和Eclipse RCP开发中,TableViewer是经常被用来展示数据的一个组件。"Set TableViewer Cell Focus"这个话题是关于如何在TableViewer中设置焦点到特定单元格上,这对于实现用户交互和数据...
内皮素(endothelin,ET)是一种由21个氨基酸组成的...运动训练对心血管病患者的内皮素调节系统的作用,以及内皮素在运动心脏形成中的角色,是当前研究的热点和难点,也是进一步推动ET在运动医学领域中研究的重要方向。
这里我们关注的焦点是"pluginbuilder",它是一个用于构建和管理插件的工具。从标题和描述中,我们可以看到几个关键概念:CruiseControl、Ant、RCP(Rich Client Platform)以及Headless Build,这些都是与插件开发...
标题“Setting focus cell in TableViewer”涉及到的是在Eclipse RCP(Rich Client Platform)开发中,如何在TableViewer组件中设置焦点单元格。TableViewer是Eclipse JFace库中的一个关键组件,用于显示和操作表格...
总结而言,异构多接口WMN信道管理协议实现的研究,是无线通信领域的一个热点,具有重大的理论价值和实际应用前景。通过合理设计信道管理协议,可以有效利用异构多接口的优势,提高无线Mesh网络的吞吐量和公平性,...
本研究使用中国西部寒区流域的冰川径流及总径流模拟预估数据,从趋势与波动变化视角,分析冰川径流的稳定性,在此基础上依据径流变差系数法定义冰川水文调节指数,量化冰川径流调节功能,分析不同时期、RCP2.6 和RCP...
7. **Mylyn任务焦点**:Mylyn是Eclipse的一个插件,它将任务管理和开发过程紧密结合起来,帮助开发者专注于当前的任务。 8. **RCP(Rich Client Platform)**:Eclipse的RCP允许开发者构建基于Eclipse框架的桌面...
数据挖掘技术因此成为众多学者研究的热点。国外在金融、保险、零售、生物医学等领域已经广泛地应用了数据挖掘技术。在国内,虽然在理论研究上取得了一些成果,但在数据挖掘软件的应用研究方面则相对较新。数据挖掘...
SWT 提供了一套丰富的 GUI 工具箱,使得开发者能够在 Eclipse RCP 或者独立应用程序中构建出美观且功能强大的用户界面。掌握了这些基础知识后,您可以进一步深入学习 SWT 的高级特性,例如自定义控件、布局管理器等...
随着现代通信技术的飞速发展,电磁波在等离子体中的传播特性研究逐渐成为研究者们关注的焦点。等离子体作为一种电离的气体,其自由电子与电磁波之间相互作用的复杂性,使得电磁波在其中的传播特性与普通介质大为不同...
低轨卫星通信系统中的资源分配问题一直是通信领域关注的热点话题之一,特别是在频谱资源日益紧张的背景下。多频时分多址(MF-TDMA)技术作为低轨卫星通信系统中一种重要的多址接入技术,能够在不同用户之间有效地分配...