Richtige Art und Weise zu binden, der radio-button Gruppe mit JFace data binding

Ich Frage mich, wenn jemand könnte mir erklären, wie ich konnte richtig binden, eine Gruppe von radio-buttons, um eine Boolesche variable, die im Modell Verwendung von JFace data binding.

Lassen Sie mich erklären, die situation zuerst: ich habe eine Klasse repräsentiert eine Gruppe von SWT-buttons (mit dem Stil 'SWT.RADIO') , besteht aus drei Elementen: Ein label mit der Frage und zwei buttons, einer für "ja" zu beantworten und eine für "Nein". Ich möchte erstellen Sie eine Bindung an eine Boolesche variable in das Modell in der Weise, dass, wenn ein Benutzer wählt "ja" radio-button der boolean auf true gesetzt ist, und wenn er/Sie wählt die Schaltfläche "Nein", die boolean auf false gesetzt ist.

Hier ist der code meiner Klasse:

private class YesOrNoRadioButtonGroup {

private static final String YES = "yes";
private static final String NO = "no";
private Button m_yesButton;
private Button m_noButton;

public YesOrNoRadioButtonGroup(final Composite p_parent,
                               final String p_questionText,
                               final IObservableValue p_modelProperty
                               final DataBindingContext p_dbContext) 
{

  Composite radioButtonGroupContainer = new Composite(p_parent, SWT.NONE);
  radioButtonGroupContainer.setLayout(new GridLayout());
  Label question = new Label(radioButtonGroupContainer, SWT.NONE);
  question.setText(p_questionText);


  m_yesButton = new Button(radioButtonGroupContainer, SWT.RADIO);
  m_yesButton.setText(YES);

  m_noButton = new Button(radioButtonGroupContainer, SWT.RADIO);
  m_noButton.setText(NO);
  m_noButton.setSelection(true);

  Listener yesOrNoRadioGroupListener = new Listener() {

    public void handleEvent(Event p_event) {

      Button button = (Button) p_event.widget;

      if (m_yesButton.equals(button)) {
        m_yesButton.setSelection(true);
        m_noButton.setSelection(false);
      }
      else {
        m_yesButton.setSelection(false);
        m_noButton.setSelection(true);
      }
    }
  };

  m_yesButton.addListener(SWT.Selection, yesOrNoRadioGroupListener);
  m_noButton.addListener(SWT.Selection, yesOrNoRadioGroupListener);

  p_dbContext.bindValue(SWTObservables.observeSelection(this.getYesButton()),
      p_modelProperty, null, null);      
}

public Button getYesButton() {
  return m_yesButton;
}

public Button getNoButton() {
  return m_noButton;
}    


}

Nun, wie Sie sehen können, bin ich verbindlich meine "ja" - Taste, um die boolean-Wert. Insbesondere wird der Wert gebunden an die SWT.Auswahl Veranstaltung. Dies ist, so scheint es, die einzige gültige-Ereignis für die Bindung von einem radio-button. Jedoch, weil dieser, sobald der "Nein" - button ausgewählt ist, wird der Wert des booleschen unverändert bleibt (da kein SWT.Auswahl-event auf die Schaltfläche "ja" gefeuert wurde).
Was kann ich tun, um diese so funktionieren, wie es soll, d.h. in der Lage sein, ändern Sie den Wert von der boolean in ein Modell basierend auf dem von den Schaltflächen wird der Benutzer wählt?
Übersehe ich etwas offensichtliches hier?
Danke!

InformationsquelleAutor Sandman | 2009-03-16

Schreibe einen Kommentar