2012-08-01 175 views
3

我有一个RCP应用程序,当RCP作为应用程序运行时,我需要在首选项页面中将某些值设置为默认值。我需要隐藏快速视图栏和某些菜单,这就是为什么我需要从首选项页面设置这些设置的原因。如何在Eclipse RCP应用程序中为首选项设置默认值

我的应用程序还不是产品,所以我不能使用plugin_customization.ini文件进行更改。

任何人都可以告诉我一种方法来通过偏好页面或任何其他方式以编程方式更改默认值?

回答

7

您可以使用扩展点org.eclipse.core.runtime.preferences

<extension 
     point="org.eclipse.core.runtime.preferences"> 
     <scope name="SamplePreferencePage" class="com.example.SamlePreferencePage"/> 
     <initializer 
      class="com.example.PreferenceInitializer"> 
     </initializer> 
    </extension> 
+0

我使用这个扩展点,但我不知道偏好名字来设置它的值当我使用setValues(String PreferenceName,布尔值) – Shereen 2012-08-02 09:15:58

+0

如果我想隐藏快速查看酒吧布尔由true我应该写为偏好名称? – Shereen 2012-08-02 09:17:09

+0

这是您的应用程序的首选项;你可以随心所欲地调用它。称之为“HideFastViewBar”。 – stracka 2012-08-02 15:24:50

10

定义扩展点为您偏好页面,该页面的初始化类:

一个例子首选项页面实现可能看起来像:

public class MyPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { 
    public static final String PREF_USE_METRIC_UNITS = "PREF_USE_METRIC_UNITS"; 
    public static final String PREF_AUTO_UPDATE = "PREF_AUTO_UPDATE"; 
    public static final String PREF_USER_FILES_DIR = "PREF_USER_FILES_DIR"; 
    public static final String PREF_FAVORITE_ANIMAL = "PREF_FAVORITE_ANIMAL"; 

    public MyPreferencePage() { 
     super(GRID); 
    } 

    public void createFieldEditors() { 
     Composite parent = getFieldEditorParent(); 
     addField(new BooleanFieldEditor(PREF_USE_METRIC_UNITS, "Use &metric units", parent)); 
     addField(new BooleanFieldEditor(PREF_AUTO_UPDATE, "&Auto update", parent)); 

     addField(new DirectoryFieldEditor(PREF_USER_FILES_DIR, "User files &path:", parent)); 

     addField(new StringFieldEditor(PREF_FAVORITE_ANIMAL, "Favorite &animal:", parent)); 
    } 

    public void init(IWorkbench workbench) { 
     setPreferenceStore(Plugin.getPlugin().getPreferenceStore()); 
    } 
} 

然后你设置你的AbstractPreferenceInitializer类实际的默认值:

public class MyPreferenceInitializer extends AbstractPreferenceInitializer { 
    @Override 
    public void initializeDefaultPreferences() { 
     IPreferenceStore store = Plugin.getPlugin().getPreferenceStore(); 

     store.setDefault(MyPreferencePage.PREF_USE_METRIC_UNITS, true); 
     store.setDefault(MyPreferencePage.PREF_AUTO_UPDATE, false); 

     String userHome = System.getProperty("user.home"); 
     String defaultPath = userHome + "\\Local Settings\\Temp\\"; 
     store.setDefault(MyPreferencePage.PREF_USER_FILES_DIR, defaultPath); 

     store.setDefault(MyPreferencePage.PREF_FAVORITE_ANIMAL, "platypus"); 
    } 
} 
+0

因为你的答案是延伸我的,我会给你一个+1;) – aphex 2012-08-03 08:17:42

+0

我喜欢提供的代码示例。但是“为您的首选项页面定义扩展点”的措辞有点含糊。看起来实际上有两个可以限定的扩展点(org.eclipse.core.runtime.preferences或org.eclipse.ui.preferencePages)。如果你确切地命名了扩展点,答案会更好。幸运的是,我在@aphex的回答中找到了问题部分的答案。我猜这两个答案在提供一个完整的图片方面有点互补:-) – Kris 2018-02-02 18:13:46

相关问题