4 Stimmen

Eclipse RCP: Wie kann man OpenPreferencesAction auf einer bestimmten Seite öffnen?

Wie stelle ich sicher, dass der Einstellungsdialog auf einer bestimmten Seite geöffnet wird? Wenn Sie dies tun, wird der Einstellungsdialog standardmäßig auf der ersten Seite geöffnet:

OpenPreferencesAction action = new OpenPreferencesAction();
action.run();

Wie kann ich festlegen, dass eine andere Seite aus dem Einstellungsbaum angezeigt wird?

9voto

Rich Seller Punkte 81404

Sie müssen Ihre eigene Aktion erstellen, die OpenPreferencesAction erweitert und die run()-Methode überschreibt, wobei Sie die ID der zu öffnenden Seite übergeben. Wenn Sie sich OpenPreferencesAction ansehen, werden Sie sehen, dass die run-Methode wie folgt aussieht:

public void run() {
    if (workbenchWindow == null) {
        // action has been dispose
        return;
    }
    PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, null, null, null);
    dialog.open();
}

Der zweite und dritte Parameter bestimmen die ID der anzuzeigenden Seite und die Filterkriterien.

0voto

Chetan Bhagat Punkte 552

Öffnen Sie den Dialog der Einstellungsseite (klicken Sie auf die Menütaste) in Eclipse RCP.

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferencesUtil;
import com_demo.PreferencePage.PreferencePage_Dialog;

public class Preferences_Dialog_cmd extends AbstractHandler {

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),PreferencePage_Dialog.ID , null, null);
        if (pref != null)
                pref.open();
        return null;
    }   
}

public class PreferencePage_Dialog extends FieldEditorPreferencePage implements IWorkbenchPreferencePage 
{
    public static final String ID="custom_bill.PreferencePage_Dialog";
    @Override
    protected void createFieldEditors() {
        //..........
    }

    @Override
    public void init(IWorkbench workbench) {
        setPreferenceStore(Activator.getDefault().getPreferenceStore());
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X