2

假设我分离了 2 个视图(A,B)。工作台外壳顶部视图 B 上的视图 A。

问题1:如何让用户点击视图使其置顶?

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

感谢您的所有回答

4

2 回答 2

2

我终于做了一些肮脏的工作:

   <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> 

我的 WorkbenchImplementation.java

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());
    }

}
于 2011-08-09T01:29:56.280 回答
0

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

于 2011-08-08T09:07:10.237 回答