我正在开发一个 Eclipse 插件,它有一个首选项页面,performOk()
方法会更改其他一些插件的首选项以适应更改。到目前为止效果很好。
但是,如果用户手动更改我的插件的首选项文件或更新插件,他必须进入首选项页面并手动按“确定”,否则其他插件的首选项将过时。
我想通过在每次启动 Eclipse 时调整其他插件的首选项来避免这个问题。我已经让我的插件类实现了 IStartup
接口(interface)及其earlyStartup()
方法来改变那里的首选项,但我有两个问题:
在更改其他插件的首选项之前,我需要从自己的插件中读取设置,但是
getPreferenceStore()
该方法在earlyStartup()
范围内不起作用方法。我能够通过实现earlyStartup()
来解决这个问题空并在插件的start()
中执行我想要的操作方法,这种行为可靠吗?实际更改
start()
中的首选项时,我收到无效线程访问异常方法。我读过start()
由自己的作业执行,作业可以改变偏好吗?
如果有其他方法可以实现我想要的目标,我自然也想知道。
最佳答案
如果您主要担心的是有人从某些导出的 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
关于Eclipse:启动时更改首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4638458/