JFace TitleAreaDialog ändert das Layout bei Doppelklick

  • Themenstarter Themenstarter kopinsky
  • Beginndatum Beginndatum
K

kopinsky

Hallo zusammen, ich habe das folgende seltsame Phänomen, das ich nicht verstehe und nicht weiss, wie man es abstellen kann.

Ich habe einen JFace TitleAreaDialog geschrieben. Hier ist der Code dazu, falls es jemand nachstellen möchte:

Code:
public class LoginDialog extends TitleAreaDialog {

	private Text passwordText;
	private Text userIdText;
	private Label passwortLabel;
	private Label benutzerkennungLabel;

	public LoginDialog(Shell parentShell) {
		super(parentShell);
	}

	@Override
	protected Control createDialogArea(Composite parent) {
		final FormData formData;
		final FormData formData_1;
		final FormData formData_2;
		final FormData formData_3;
		final GridData gridData;
		Composite area = (Composite) super.createDialogArea(parent);
		Composite container = new Composite(area, SWT.NONE);
		gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
		container.setLayoutData(gridData);
		container.setLayout(new FormLayout());

		benutzerkennungLabel = new Label(container, SWT.NONE);
		benutzerkennungLabel.setFont(SWTResourceManager.getFont("", 9, SWT.BOLD));
		formData = new FormData();
		formData.right = new FormAttachment(0, 140);
		formData.left = new FormAttachment(0, 20);
		benutzerkennungLabel.setLayoutData(formData);
		benutzerkennungLabel.setText("Benutzerkennung:");

		passwortLabel = new Label(container, SWT.NONE);
		passwortLabel.setFont(SWTResourceManager.getFont("", 9, SWT.BOLD));
		formData_1 = new FormData();
		formData_1.bottom = new FormAttachment(100, -24);
		formData_1.top = new FormAttachment(55, 0);
		formData_1.right = new FormAttachment(37, 0);
		formData_1.left = new FormAttachment(0, 20);
		passwortLabel.setLayoutData(formData_1);
		passwortLabel.setText("Passwort:");

		userIdText = new Text(container, SWT.BORDER);
		userIdText.setDoubleClickEnabled(false);
		userIdText.addKeyListener(new KeyAdapter() {
			public void keyReleased(KeyEvent e) {
				handleTextKeyReleased(1,e);
			}
		});
		formData.top = new FormAttachment(userIdText, -19, SWT.BOTTOM);
		formData.bottom = new FormAttachment(userIdText, 0, SWT.BOTTOM);
		formData_2 = new FormData();
		formData_2.bottom = new FormAttachment(0, 39);
		formData_2.top = new FormAttachment(19, 0);
		formData_2.left = new FormAttachment(0, 140);
		formData_2.right = new FormAttachment(0, 363);
		userIdText.setLayoutData(formData_2);

		passwordText = new Text(container, SWT.BORDER);
		passwordText.setDoubleClickEnabled(false);
		passwordText.setEchoChar('*');
		passwordText.addKeyListener(new KeyAdapter() {
			public void keyReleased(KeyEvent e) {
				handleTextKeyReleased(2,e);
			}
		});
		formData_3 = new FormData();
		formData_3.left = new FormAttachment(0, 140);
		formData_3.bottom = new FormAttachment(100, -22);
		formData_3.top = new FormAttachment(54, 0);
		formData_3.right = new FormAttachment(100, -16);
		passwordText.setLayoutData(formData_3);
		container.setTabList(new Control[] {userIdText, passwordText});
		setTitle("Anmeldung");
		setMessage("Bitte geben Sie Ihre Kennung und Ihr Passwort ein.");
		return area;
	}

	@Override
	protected void createButtonsForButtonBar(Composite parent) {
		createButton(parent, IDialogConstants.OK_ID, "&Anmelden",true);
		createButton(parent, IDialogConstants.CANCEL_ID, "Ab&brechen ", false);
	}


	@Override
	protected Point getInitialSize() {
		return new Point(385, 232);
	}
	
	protected void configureShell(Shell newShell) {
		super.configureShell(newShell);
		newShell.setText("Geplan");
	}

	@Override
	protected void okPressed() {
		String userId = userIdText.getText();
		String password = passwordText.getText();
		if (userId.equals("")) {
			this.setErrorMessage("Bitte geben Sie Ihre Benutzerkennung an.");
			return;
		}
		if (password.equals("")) {
			this.setErrorMessage("Bitte geben Sie Ihr Passwort an.");
			return;
		}
		super.okPressed();
	}

	@Override
	public boolean isHelpAvailable() {
		return false;
	}
	
	protected void handleTextKeyReleased(int field_id, KeyEvent e) {
		switch (field_id){
		case 1:
			if (userIdText.getText().length()>0) {
				this.setErrorMessage("");
			}
			break;
		case 2:
			if (passwordText.getText().length()>0) this.setErrorMessage("");
			break;
		}
	}
	
}

Der wird auch wunderbar angezeigt und funktioniert super. Nur wenn ich im unteren linken Bereich (also links neben der ButtonBar) mit der Maus doppelklicke verändert sich das Layout komplett und alles wird anders angezeigt. Es passiert nur in diesem Bereich, überall sonst kann ich soviel doppelklicken wie ich will. Kennt jemand dieses Phänomen. Ich würde es nämlich gerne unterbinden, weiss aber nicht wie ich das hinbekomme.

Vielen Dank für jede Hilfe.
Christoph
 
Zurück