2 Stimmen

Eclipse RCP freistehende Ansichten: Wie steuert man den Z-Index?

Nehmen wir an, ich habe 2 Ansichten (A, B) losgelöst. Ansicht A oben auf Ansicht B oben auf der Werkbankschale.

Frage 1: Wie kann man den Benutzer auf eine Ansicht klicken lassen, um sie in den Vordergrund zu bringen?

Frage 2: Jetzt verwende ich ein Fenster einer anderen Anwendung, z. B. Notepad, um Ansicht A zu verdecken. Ist es möglich, dass der Benutzer einfach auf die Ansicht A klickt, um sie über den Notizblock zu spiegeln, während Ansicht B und das Hauptfenster hinter dem Notizblock erhalten bleiben?

Vielen Dank für Ihre Antwort

2voto

Leung Wang Hei Punkte 67

Ich habe endlich etwas Drecksarbeit gemacht:

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

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

}

0voto

Tonny Madsen Punkte 12428

Auf diese Frage gibt es keine allgemeine Antwort. Das Verhalten des Fenstermanagers hängt sehr stark von dem nativen Fenstermanager ab. Z.B. verhält sich Windows 7 und OSX unterschiedlich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X