zurück zu RCP: ich kriege keinen LoginDialog hin
In meiner Application (IPlatformRunnable) möchte ich vor Erstellen der Workbench eine Authentifizierung haben:
public Object run(Object args) {
WorkbenchAdvisor workbenchAdvisor = new ApplicationWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
if (authenticate(display)) {
int returnCode = PlatformUI.createAndRunWorkbench(display,
workbenchAdvisor);
if (returnCode == PlatformUI.RETURN_RESTART) {
return IPlatformRunnable.EXIT_RESTART;
} else {
return IPlatformRunnable.EXIT_OK;
}
} else
return IPlatformRunnable.EXIT_OK;
}
private boolean authenticate(Display display) {
Shell shell = new Shell(display, SWT.NONE);
LoginDialog loginDialog = new LoginDialog(shell);
loginDialog.setBlockOnOpen(true);
loginDialog.open();
Application.serverConnection = loginDialog.serverConnection;
return loginDialog.isAuthenticated;
}
Den Login-Dialog erzeuge ich mit dem VisualEditor, geht ganz einfach und sieht genau so aus wie ich mir das vorstelle...Nur leider wird er leer angezeigt wenn meine Anwendung ihn aufruft. Hier ist der Code:
public class LoginDialog extends TitleAreaDialog {
private Shell sShell = null; // @jve:decl-index=0:visual-constraint="0,0"
private Composite composite = null;
private Group logonGroup = null;
public boolean isAuthenticated;
private Label labelServer = null;
public ApiSDSession serverConnection;
public LoginDialog(Shell arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}
/**
* This method initializes sShell
*
*/
private void createSShell() {
sShell = new Shell();
sShell.setLayout(new GridLayout());
sShell.setText("Login Dialog");
createComposite();
sShell.setSize(new Point(447, 260));
}
/**
* This method initializes composite
*
*/
private void createComposite() {
composite = new Composite(sShell, SWT.NONE);
composite.setLayout(new GridLayout());
createLogonGroup();
}
/**
* This method initializes logonGroup
*
*/
private void createLogonGroup() {
logonGroup = new Group(composite, SWT.NONE);
logonGroup.setLayout(new GridLayout());
labelServer = new Label(logonGroup, SWT.NONE);
labelServer.setText("Label");
}
} // @jve:decl-index=0:visual-constraint="0,0"
Komisch ist, dass normalerweise immer createContentArea implementiert wird im TitleAreaDialog, aber der VisualEditor macht das leider anders. Ausserdem habe ich sonne komische JavaBean this im VisualEditor, die mir seit kurzem immer ein NullpointerException(null) anzeigt (der VisualEditor arbeitet aber normal weiter). Also alles Mist mit VE (ich habe übrigens Callisto 3.2) Was fehlt denn an meinem LoginDialog? Kann ich da was ergänzen oder wie schreibe ich den ohne Visual Dreck?