View EclipseRCP分离视图:如何控制z索引?

View EclipseRCP分离视图:如何控制z索引?,view,focus,eclipse-rcp,rcp,detach,View,Focus,Eclipse Rcp,Rcp,Detach,假设我有两个分离的视图(A,B)。视图A位于工作台外壳顶部视图B的顶部 问题1: 如何让用户单击视图使其位于顶部 问题2: 现在我使用其他应用程序的窗口,比如记事本,来覆盖视图a。 是否可以让用户只需单击视图A将其翻转到记事本顶部,同时将视图B和主视图保持在记事本后面 谢谢你的回答这个问题没有一般的答案。窗口管理器的行为在很大程度上取决于本机窗口管理器。例如,Windows 7和OSX的行为不同。我最后做了一些肮脏的工作: <extension point="org

假设我有两个分离的视图(A,B)。视图A位于工作台外壳顶部视图B的顶部

问题1: 如何让用户单击视图使其位于顶部

问题2: 现在我使用其他应用程序的窗口,比如记事本,来覆盖视图a。 是否可以让用户只需单击视图A将其翻转到记事本顶部,同时将视图B和主视图保持在记事本后面


谢谢你的回答

这个问题没有一般的答案。窗口管理器的行为在很大程度上取决于本机窗口管理器。例如,Windows 7和OSX的行为不同。

我最后做了一些肮脏的工作:

   <extension
         point="org.eclipse.ui.internalTweaklets">
      <tweaklet

definition="org.eclipse.ui.internal.tweaklets.WorkbenchImplementation"
            description="Customized Detached View"
            id="id1"
            implementation="tweaklets.WorkbenchImplementation"
            name="Customized Detached View">
      </tweaklet>
   </extension> 
public class WorkbenchImplementation extends Workbench3xImplementation {

    private static final Logger logger = LoggerFactory.getLogger(WorkbenchImplementation.class);

    @Override
    public WorkbenchWindow createWorkbenchWindow(int newWindowNumber) {
        // return super.createWorkbenchWindow(newWindowNumber);
        return new WorkbenchWindow(newWindowNumber) {

            @Override
            protected void configureShell(Shell shell) {
                super.configureShell(shell);

                try {
                    Field field = WorkbenchWindow.class.getDeclaredField("detachedWindowShells");
                    field.setAccessible(true);
                    field.set(this, createShellPool(shell));
                } catch (Exception e) {
                    logger.error("Error tweaking WorkbenchWindow", e);
                }
            }

        };
    }

    protected ShellPool createShellPool(Shell shell) {
        // return new ShellPool(null, SWT.TOOL | SWT.TITLE | SWT.MAX | SWT.RESIZE | Window.getDefaultOrientation());
        return new ShellPool(null, SWT.NO_TRIM | Window.getDefaultOrientation());
    }

}