2009-07-09 10 views
4

Comment créer une boîte de dialogue de préférences pour ouvrir une page particulière? Cela ouvre pref. boîte de dialogue sur la première page par défaut:Eclipse RCP: Comment ouvrirPreferencesAction sur une page particulière?

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

Comment puis-je lui indiquer d'afficher une autre page de l'arborescence des préférences?

Répondre

9

Vous devez créer votre propre action en étendant OpenPreferencesAction et en remplaçant la méthode run() en transmettant l'identifiant de la page à ouvrir. Si vous regardez OpenPreferencesAction vous verrez la méthode d'exécution est comme ceci:

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

Les deuxième et troisième paramètres déterminent l'ID de la page pour afficher et les critères de filtrage.

+0

Parfait! Merci :) – Dima

+0

Vous êtes les bienvenus –

0

Boîte de dialogue Ouvrir la page de préférences (cliquez sur le bouton de menu) dans 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()); 
    } 
} 
Questions connexes