posts - 36, comments - 30, trackbacks - 0, articles - 3

Eclipse插件开发中的问题一

Posted on 2008-04-23 19:41 笑看人生 阅读(2127) 评论(1)  编辑  收藏 所属分类: Java插件开发
  问题描述:

最近在Eclipse插件开发中遇到这样的问题,我使用如入扩展点

<extension
       
point="org.eclipse.debug.ui.launchConfigurationTabs">
    
<tab
          
class="com.example.launch.SqlDebugTab"
          group
="org.eclipse.jdt.debug.ui.launchConfigurationTabGroup.localJavaApplication"
          id
=" com.example.launchs.SqlDebugTab"
          name
="SqlDebugTab">
       
<associatedDelegate
             
delegate=" com.example.launch.SqlDebugLaunchDelegate">
       
</associatedDelegate>
    
</tab>
 
</extension>

<extension
          
point="org.eclipse.debug.core.launchDelegates">
       
<launchDelegate
             
delegate=" com.example.launch.SqlDebugLaunchDelegate"
             id
=" com.example.launch.SqlDebugLaunchDelegate"
             modes
="debug"
             type
="org.eclipse.jdt.launching.localJavaApplication">
       
</launchDelegate>
    
</extension>

 

也就是在调式Java Application的对话框中,增加一个Tab页,Tab页的名字为SqlDebugTab,在这个Tab页上增加几个复选框,复选框要显示视图的名称,如果用户选择某个复选框,点“Debug”后,将显示指定的视图,可是在com.example.launch.SqlDebugLaunchDelegate类中的launch方法中调用PlatformUI.getWorkbench().getActiveWorkbenchWindow(),得到的对象却为null,调试程序才发现,运行com.example.launch.SqlDebugLaunchDelegate类是,走的是新线程,也就是说点“Debug”按钮时,Eclipse平台启动的是新的线程(非UI线程),而在新线程中是取不到ActiveWorkbenchWindow对象,为了解决这个问题,花费了很多时间,最后终于找到解决方法,launch方法通过如下程序来显示视图,就可以解决上面遇到的问题:

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
            
public void run() {
                IWorkbenchWindow window 
= PlatformUI.getWorkbench()
                        .getActiveWorkbenchWindow();
                
if (window != null){
                    window.getActivePage().showView(
"……");
}

}

}

Feedback

# re: Eclipse插件开发中的问题一[未登录]  回复  更多评论   

2009-03-23 13:55 by david
你好!我将你的示例改成多页的MultiPageEditorPart,怎么键盘事件无法响应了

只有注册用户登录后才能发表评论。


网站导航: