Отдельные представления Eclipse RCP: как управлять z-индексом? - PullRequest
2 голосов
/ 08 августа 2011

Допустим, у меня есть 2 вида (A, B) отдельно.Представление A сверху представления B сверху оболочки рабочей среды.

Вопрос 1: Как позволить пользователю щелкнуть мышью на представлении, чтобы сделать его сверху?

Вопрос 2: Теперь я использую окнодругого приложения, скажем, блокнота, чтобы покрыть вид A. Можно ли позволить пользователю просто щелкнуть мышью на виде A, чтобы перевернуть его поверх блокнота, сохраняя вид B и главное за блокнотом?

Спасибо завсе ваши ответы

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

Наконец-то я выполнил грязную работу:

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

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

}
0 голосов
/ 08 августа 2011

На этот вопрос нет общего ответа. Поведение оконного менеджера во многом зависит от собственного оконного менеджера. Например. Windows 7 и OSX ведут себя по-разному.

...