Eclipse:在启动时改变首选项

时间:2011-01-09 09:13:43

标签: eclipse eclipse-plugin preferences

我正在开发一个带有首选项页面的Eclipse插件,performOk()方法会改变其他一些插件的首选项以适应更改。到目前为止工作得很好。

但是,如果用户手动更改我的插件的prefs文件或更新插件,他必须转到首选项页面并手动按“确定”,否则其他插件的首选项将过期。

我想通过调整Eclipse每次启动时的其他插件首选项来避免此问题。我已经让我的插件类实现了IStartup接口及其earlyStartup()方法来改变那里的首选项,但我有两个问题:

  1. 我需要在更改其他插件的首选项之前从我自己的插件中读取设置,但getPreferenceStore()方法在earlyStartup()方法中不起作用。我能够通过实现earlyStartup()清空并在插件的start()方法中执行我想要的操作来解决这个问题,这种行为是否可靠?

  2. 在实际更改start()方法中的偏好设置时,我得到无效的线程访问异常。我已经读过start()由自己的工作执行,工作可以改变偏好吗?

  3. 如果有另一种方法可以实现我想要的,我自然也想知道。

2 个答案:

答案 0 :(得分:3)

如果您主要担心某人是从某个导出的eclipse首选项文件导入某些更改,那么您应该能够通过使用首选项更改的侦听器来解决问题。这将处理您上面提到的情况。如果首选项通过Eclipse更改,并且在eclipse打开时,则会激活您的首选项更改侦听器。

我从来没有听说过有人在eclipse之外手动编辑他们的偏好文件(这是一个偏好改变了侦听器不会捕获的情况)。如果有人这样做,他们就不应该期待可靠的行为。

但是,如果你真的想使用IEarlyStartup,你可以,但你应该使用Display.synchExec()来执行首选项更改代码。请参阅:http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/preferences/AbstractPreferenceInitializer.html

答案 1 :(得分:0)

有一个扩展点org.eclipse.core.runtime.preferences。您可以使用此选项为插件的首选项存储中的任何首选项设置默认值。您可以使用此扩展点在其他插件中设置首选项,这可能是您可以解决您遇到的问题的一种方式。