2016-03-28 3 views
4

Ich verwende die Klasse FieldEditorPreferencePage, um eine Einstellungsseite für mein Eclipse-Plug-in zu erstellen. Ich konnte der Seite alle Steuerelemente hinzufügen, die ich brauche, aber es gibt mehrere Steuerelemente, die ich mithilfe eines Steuerfelds gruppieren möchte.Hinzufügen eines Panel-Containers zu einer PreferencePage in einem Eclipse-PDE-Projekt

Hier ist ein Beispiel aus der Dokumentation von Eclipse. Es gibt jedoch keine Informationen darüber, wie der Bereich "Open-Modus" zur Seite hinzugefügt wurde und wie Steuerelemente dazu hinzugefügt wurden.

Wie füge ich ein Panel zu einem Eclipse PreferencePage hinzu?

enter image description here

+0

Sie eine Gruppe von Optionsfeldern auf einem Feld-Editor Präferenz tun kann Seite aber ich denke, es wäre ein Kampf, die Kontrollkästchen aktiviert/deaktiviert zu machen. Die spezielle Vorgabeseite, die Sie anzeigen, erweitert nur die Voreinstellungsebene und erstellt normale SWT-Steuerelemente, anstatt Feldeditoren zu verwenden. –

+1

Ich vermisse Windows XP –

Antwort

1

ich endete meine eigene GroupFieldEditor Klasse bis zu schreiben, basierend auf zwei Implementierungen fand ich, dass nicht genau meine Anforderungen erfüllen. FieldEditor s kann zu diesem Steuerelement hinzugefügt werden, und die Gruppe kann dann zu einem Objekt FieldEditorPreferencePage mit der Methode addField() hinzugefügt werden.

Die Implementierung ist here

Zum Beispiel zur Verfügung, das ist, wie die Gruppe in meinem Plug-In-Projekt sieht:

enter image description here

0

Eine kurze Schritte zum Hinzufügen eines preferencePage:

  1. offen plugin.xml und gehen Sie zu Erweiterung Registerkarte.
  2. Erweiterungspunkt hinzufügen org.eclipse.ui.preferencePages
  3. Geben Sie die ID/den Namen und andere Attribute an.
  4. Gerät Klasse erweitern von PreferencePage.

Wenn Sie zu einer Gruppe in einem Panel mehr Kontrollen wollen und verwenden Sie es in FieldEditorPreferencePage, können Sie neue Klasse von org.eclipse.jface.preference.FieldEditor erweitert erstellen. Zum Beispiel:

public class MyFieldEditor extends FieldEditor { 
    public MyFieldEditor(String name, String labelText, Composite parent) { 
     super(name, labelText, parent); 
    } 

    protected void doFillIntoGrid(Composite parent, int numColumns) { 
     //...add your controls to panel 
     Group grpOpenMode = new Group(parent, SWT.NONE); 
     grpOpenMode.setText("Open mode"); 
     grpOpenMode.setBounds(10, 10, 230, 117); 

     btnDoubleClick = new Button(grpOpenMode, SWT.RADIO); 
     btnDoubleClick.setBounds(10, 21, 90, 16); 
     btnDoubleClick.setText("Double click"); 

     btnSingleClick = new Button(grpOpenMode, SWT.RADIO); 
     btnSingleClick.setBounds(10, 43, 90, 16); 
     btnSingleClick.setText("Single Click"); 

     Button btnSelectOnHover = new Button(grpOpenMode, SWT.CHECK); 
     btnSelectOnHover.setBounds(20, 63, 123, 16); 
     btnSelectOnHover.setText("Select on hover"); 

     Button btnOpenUsingArrowKey = new Button(grpOpenMode, SWT.CHECK); 
     btnOpenUsingArrowKey.setBounds(20, 85, 188, 16); 
     btnOpenUsingArrowKey.setText("Open when using arrow keys"); 
    } 

    protected void doLoad() { 
     // get preference value, and set data to UI, Invoked after doFillIntoGrid(...) 
     String prefix = getPreferenceName(); 
     boolean isDoubleClick = getPreferenceStore().getBoolean(prefix+"_isDoubleClick"); 
     btnDoubleClick.setSelection(isDoubleClick); 
     btnSingleClick.setSelection(!isDoubleClick); 
     btnSelectOnHoverget.setSelection(getPreferenceStore().getBoolean(prefix+"_selectOnHover"); 
    } 

    protected void doLoadDefault() { 
     //Invoked in preferencePages.performDefaults() - user click "Restore Default" button 
    } 

    protected void doStore() { 
     //save data of UI to preference store. Invoked in preferencePages.performOk() - user click "OK"/"Apply" button 
     getPreferenceStore().setValue(getPreferenceName()+"_isDoubleClick",btnDoubleClick.getSelection()); 
    } 
} 
+0

Danke für die Antwort, aber es ist nicht umfassend genug, um meine spezifische Frage zu beantworten – mittelmania

+0

Ich bearbeite die Antwort.Bitte überprüfen Sie es. Eigentlich, wenn das * Panel * nur einmal benutzt wird. Ich bevorzuge die Implementierung der Klasse extend von PreferencePage. Genau wie im "Open-Modus" -Panel. Ich denke, es ist erstellt von ** geschützte void createOpenModeGroup (Composite Composite) **. Der Quellcode befindet sich in org.eclipse.ui.ide.source _ ???. Jar \ org \ eclipse \ ui \ internal \ dialogs \ WorkbenchPreferencePage.java –

0

können Sie RadioGroupFieldEditor verwenden, um eine Gruppe von Optionsfeldern durch eine Gruppensteuerung umgeben hinzuzufügen.

Etwas wie:

RadioGroupFieldEditor groupPref = new RadioGroupFieldEditor("preference key", 
     "Group title message", 3, 
     new String[][] { 
     {"radio 1 text", "preference value 1"}, 
     {"radio 2 text", "preference value 2"}, 
     {"radio 3 text", "preference value 3"}}, 
    getFieldEditorParent(), true /* use a group */); 
addField(groupPref); 
+0

Meine Felder sind keine Optionsfelder – mittelmania

Verwandte Themen