2009-07-09 2 views
4

Как мне настроить диалог настроек для открытия на определенной странице? Выполнение этого открывается прив. Диалог на первой странице по умолчанию:Eclipse RCP: Как OpenPreferencesAction на определенной странице?

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

Как я могу сказать ему, чтобы отобразить некоторую другую страницу из дерева настроек?

ответ

9

Вам необходимо создать собственное действие, расширяющее OpenPreferencesAction и переопределив метод run(), передав идентификатор страницы, которая будет открыта. Если вы посмотрите на OpenPreferencesAction вы увидите метод запуска, как это:

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

Вторые и третьи параметры определяют идентификатор страницы для отображения и критерии фильтрации.

+0

Отлично! Спасибо :) – Dima

+0

Добро пожаловать –

0

Диалоговое окно «Открыть страницу предпочтений» (кнопка «Кнопка меню») в 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()); 
    } 
}