Eine Seite Benutzervorgaben implementieren

Seite definieren

Die Implementierung einer Benutzervorgabenseite ähnelt der Erstellung einer Seite für einen Assistenten. Die Benutzervorgabenseite stellt eine Methode createContents bereit, die die SWT-Steuerelemente erstellt, mit denen der Seiteninhalt dargestellt wird, und die Listener-Funktionen für alle wichtigen Ereignisse hinzufügt. Die Seite ist für die Erstellung und Rückgabe des kombinierten Steuerelements zuständig, das das übergeordnete Element aller Steuerelemente auf der Seite ist. Der folgende Codeausschnitt enthält die wichtigen Punkte:

protected Control createContents(Composite parent)
{
	...
	//composite_textField << parent
      Composite composite_textField = createComposite(parent, 2);
	Label label_textField = createLabel(composite_textField, MessageUtil.getString("Text_Field"));	 
      textField = createTextField(composite_textField);
	pushButton_textField = createPushButton(composite_textField, MessageUtil.getString("Change")); 

	//composite_tab << parent
      Composite composite_tab = createComposite(parent, 2);
	Label label1 = createLabel(composite_tab, MessageUtil.getString("Radio_Button_Options")); 

	//
      tabForward(composite_tab);
      //radio button composite << tab composite
      Composite composite_radioButton = createComposite(composite_tab, 1);
	radioButton1 = createRadioButton(composite_radioButton, MessageUtil.getString("Radio_button_1")); 
	radioButton2 = createRadioButton(composite_radioButton, MessageUtil.getString("Radio_button_2")); 
	radioButton3 = createRadioButton(composite_radioButton, MessageUtil.getString("Radio_button_3")); 


	//composite_tab2 << parent
	Composite composite_tab2 = createComposite(parent, 2);
	Label label2 = createLabel(composite_tab2, MessageUtil.getString("Check_Box_Options")); //$NON-NLS-1$

	//
	tabForward(composite_tab2);
	//composite_checkBox << composite_tab2
	Composite composite_checkBox = createComposite(composite_tab2, 1);
	checkBox1 = createCheckBox(composite_checkBox, MessageUtil.getString("Check_box_1")); 
	checkBox2 = createCheckBox(composite_checkBox, MessageUtil.getString("Check_box_2")); 
	checkBox3 = createCheckBox(composite_checkBox, MessageUtil.getString("Check_box_3")); 

	initializeValues();

      return new Composite(parent, SWT.NULL);
}

Der meiste Code in dieser Methode dient der Erstellung und Anordnung der Steuerelemente und soll daher an dieser Stelle nicht näher behandelt werden. Die entsprechende Seite für diesen Code sieht folgendermaßen aus:

Benutzervorgabenseite für Readme-Datei-Tool

Eine weitere wichtige Aufgabe einer Benutzervorgabenseite ist die Reaktion auf die Nachricht der Methode performOk. Normalerweise aktualisiert und speichert diese Methode die Benutzervorgaben und aktualisiert gegebenenfalls andere Plug-in-Objekte, um die Änderungen an den Benutzervorgaben umzusetzen.  Mit der Methode performDefaults werden die Benutzervorgaben auf ihre Standardeinstellung zurückgesetzt, wenn der Benutzer die Schaltfläche Standardwerte wiederherstellen auswählt.   

Sie können die Methode performApply überschreiben, wenn Sie bei der Auswahl von Anwenden durch den Benutzer weitere Verarbeitungsschritte ausführen lassen wollen.  In der Standardimplementierung wird performOk aufgerufen.  

Benutzervorgabenseiten sollten die Methode doGetPreferenceStore() überschreiben, damit ein Benutzervorgabenspeicher für ihre Werte zurückgegeben wird.

Benutzervorgabenspeicher des Plug-ins

Benutzervorgabenspeicher sind in vielen Punkten mit Dialogeinstellungen vergleichbar. Im Abschnitt Dialogeinstellungen wurde bereits erläutert, wie die Klasse AbstractUIPlugin die Dialogeinstellung während der Lebensdauer eines Plug-ins verwaltet. Dieselbe Strategie wird bei Benutzervorgaben angewandt. Ihr Plug-in kann Einträge zu einem Benutzervorgabenspeicher hinzufügen und die Werte aktualisieren, wenn der Benutzer die Einstellungen auf der Benutzervorgabenseite ändert. Die Plattform übernimmt das Speichern dieser Werte im Arbeitsverzeichnis des Plug-ins und die Initialisierung des Benutzervorgabenspeichers aus den gespeicherten Einstellungen.

Der folgende Code in ReadmePreferencePage ruft den Benutzervorgabenspeicher für ReadmePlugin ab.

   protected IPreferenceStore doGetPreferenceStore() {
      return ReadmePlugin.getDefault().getPreferenceStore();
   }

Da ReadmePlugin die Klasse AbstractUIPlugin erweitert, wird automatisch ein Benutzervorgabenspeicher übernommen. Dieser Benutzervorgabenspeicher wird aus einer Benutzervorgabendatei initialisiert, die im Verzeichnis des Plug-ins gespeichert ist. ReadmePlugin muss jetzt nur noch eine Methode implementieren, die die Steuerelemente für die Benutzervorgaben mit den Standardwerten initialisiert. Diese Werte werden verwendet, wenn die Benutzervorgabenseite zum ersten Mal angezeigt wird oder der Benutzer auf der Benutzervorgabenseite die Schaltfläche Standardwerte auswählt.

protected void initializeDefaultPreferences(IPreferenceStore store) {
      // Diese Einstellungen werden angezeigt, wenn der Dialog
      // Benutzervorgaben zum ersten Mal geöffnet wird.
      store.setDefault(IReadmeConstants.PRE_CHECK1, true);
      store.setDefault(IReadmeConstants.PRE_CHECK2, true);
      store.setDefault(IReadmeConstants.PRE_CHECK3, false);
      store.setDefault(IReadmeConstants.PRE_RADIO_CHOICE, 2);
	store.setDefault(IReadmeConstants.PRE_TEXT, MessageUtil.getString("Default_text")); //$NON-NLS-1$
}
Hinweis: Wenn für ein Plug-in keine Benutzervorgaben gespeichert wurden, erhält das Plug-in einen leeren Benutzervorgabenspeicher.

Benutzervorgaben abrufen und speichern

Sobald Sie der Benutzervorgabenseite Ihres Plug-ins einen Benutzervorgabenspeicher zugeordnet haben, können Sie die Logik für das Abrufen und Speichern der Benutzervorgaben implementieren.

Benutzervorgabenseiten haben die Aufgabe, die Werte ihrer Steuerelemente mit den Einstellungen aus dem Benutzervorgabenspeicher zu initialisieren. Dieser Prozess ist mit dem Initialisieren von Dialogsteuerelementen mit Werten aus Dialogeinstellungen vergleichbar. ReadmePreferencePage initialisiert alle Steuerelemente in einer einzigen Methode namens initializeValues, die aus der Methode createContents heraus aufgerufen wird.

private void initializeValues() {
      IPreferenceStore store = getPreferenceStore();
      checkBox1.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK1));
      checkBox2.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK2));
      checkBox3.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK3));
	...
}

Sobald die Schaltfläche OK (oder Übernehmen) ausgewählt wird, sollten die aktuellen Werte der Steuerelemente auf der Benutzervorgabenseite wieder im Benutzervorgabenspeicher gespeichert werden. ReadmePreferencePage implementiert diese Logik in einer separaten Methode namens storeValues.

private void storeValues() {
      IPreferenceStore store = getPreferenceStore();
      store.setValue(IReadmeConstants.PRE_CHECK1, checkBox1.getSelection());
      store.setValue(IReadmeConstants.PRE_CHECK2, checkBox2.getSelection());
      store.setValue(IReadmeConstants.PRE_CHECK3, checkBox3.getSelection());
	...
}

Wenn der Benutzer die Schaltfläche Standardwerte auswählt, setzt die Plattform alle Werte im Benutzervorgabenspeicher auf die Standardwerte zurück, die in der Plug-in-Klasse angegeben sind. Die Benutzervorgabenseite muss jedoch dafür sorgen, dass diese Standardwerte in den Steuerelementen der Benutzervorgabenseite wiedergegeben werden. ReadmePreferencePage implementiert diese Aufgabe in der Methode initializeDefaults.

   private void initializeDefaults() {
      IPreferenceStore store = getPreferenceStore();
      checkBox1.setSelection(store.getDefaultBoolean(IReadmeConstants.PRE_CHECK1));
      checkBox2.setSelection(store.getDefaultBoolean(IReadmeConstants.PRE_CHECK2));
      checkBox3.setSelection(store.getDefaultBoolean(IReadmeConstants.PRE_CHECK3));
      ...
   }
Copyright IBM Corporation und Andere 2000, 2003.