RCP Statusline von per Button über eine Shell aktualisieren

ScoopDTN

Grünschnabel
Hallo,

ich bin gerade dabei mit RCP ein Programm zu erstellen, wo der User sich über ein Login Screen anmelden muss. Jetzt ist meine Frage: Ich würde gerne in der Statusline von meiner Anwendung den Text: "Sie sind angemeldet als" mit dem Benutzernamen anzeigen lassen, sobald der User den Button "Anmelden" gedrückt hat. Wie geht das? Kann ich meine Statusbar von einer Shell aus aktualisieren, wenn ja wie?

Habe mir das RCP Tutorial von Vogella schon angeschaut da wird das ganze beschrieben. Aber leider nur die Aktualisierung von einer View aus. Da wird die Statusline über

Code:
IActionBars bars = getViewSite().getActionBars();
		bars.getStatusLineManager().setMessage(message);

aktualisiert. Aber da ja ich ja eine eigene Login Shell haben funktioniert das ganze nicht.

Bin noch relativ ungeübt in RCP.

Vielen Dank für die Hilfe

Gruß Scoop
 
Hallo,

das WorkbenchWindow hat auch eine entsprechende Methode, die den StatusLineManager liefert:

Java:
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if ( window instanceof WorkbenchWindow )
{
    WorkbenchWindow workbenchWindow = ( WorkbenchWindow ) window;
    StatusLineManager statusLineManager = workbenchWindow.getStatusLineManager();
    statusLineManager.setMessage(message );
}

Der Nachteil ist, die Klasse WorkbenchWindow ist in einem internal Package und daher sollte eigentlich nicht benutzt werden. Aber wenn man die Warnungen ignoriert, dann geht es schon. ;)

Grüße
Vincent
 
So jetzt habe ich nur ein Problem und zwar wenn ich meine Perspektive Wechsel dann löscht er die Statusbar immer wieder weil er ja quasi jedes mal bei einem Perspektiven Wechsel das Window neu aufbaut. Irgendwelche Idee wie ich das lösen kann?
 
Hallo,

du könntest z.B. einen PerspectiveListener an das WorkbenchWindow anhängen und, jedes mal wenn eine andere Perspektive angezeigt wird, den Statustext setzen:

Java:
IPerspectiveListener perspectiveListener = new PerspectiveAdapter()
{
    @Override
    public void perspectiveActivated( IWorkbenchPage page, IPerspectiveDescriptor perspective )
    {
        // setze hier deine message in die status line
    }
};
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
window.addPerspectiveListener( perspectiveListener );

Grüße
Vincent
 
Zurück