Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Eclipse RCP中使部件选项卡处于非活动状态(禁用)?_Java_Eclipse Rcp_Desktop Application_E4 - Fatal编程技术网

Java 如何在Eclipse RCP中使部件选项卡处于非活动状态(禁用)?

Java 如何在Eclipse RCP中使部件选项卡处于非活动状态(禁用)?,java,eclipse-rcp,desktop-application,e4,Java,Eclipse Rcp,Desktop Application,E4,我有零件堆栈,选项卡中有很多零件。我想知道如何在不需要选项卡时使其处于非活动状态,在需要时使其处于活动状态 我所说的“非活动”是指选项卡,它是可见的,但我不能单击它,它类似于禁用功能(例如,它上的文本是灰色而不是黑色) 我使用E4RCP(与Application.e4xmi一起使用) 感谢您的帮助。零件堆栈中零件选择的处理由零件堆栈渲染器org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer处理,该渲染器基本上使用CTabFolder 可以

我有零件堆栈,选项卡中有很多零件。我想知道如何在不需要选项卡时使其处于非活动状态,在需要时使其处于活动状态

我所说的“非活动”是指选项卡,它是可见的,但我不能单击它,它类似于禁用功能(例如,它上的文本是灰色而不是黑色)

我使用E4RCP(与Application.e4xmi一起使用)


感谢您的帮助。

零件堆栈中零件选择的处理由零件堆栈渲染器
org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer
处理,该渲染器基本上使用
CTabFolder

可以使用渲染器工厂覆盖堆栈渲染器

您可以扩展现有的
StackRenderer
类并重写方法以更改其行为。在这种情况下,可能是
hookControllerLogic
方法。但是,您必须仔细研究源代码,看看需要做什么。

您可以尝试使用EPartService来操作零件,但我认为活动/非活动零件仅表示可见或不可见


或者您可以自己手动循环并禁用所有swt控件使用渲染器工厂覆盖堆栈渲染器。 扩展现有的StackRenderer类,并使用空实现重写hookControllerLogic()或activate()方法

范例-

public class MyE4Part extends ContributedPartRenderer {

/*
 * Don't activate the Part on part selection. part should not be gain the focus on any
 * selection on part .
 */

@Override
public void hookControllerLogic( MUIElement me )
{
    //Don't do anything.
    //super.hookControllerLogic( me );
}
}

这是e4 RCP(使用Application.e4xmi)还是3.x兼容RCP?我使用e4 RCP(有问题的更新)。