我正在使用DI
(依赖注入)IEclipsePreferences
从我的处理程序访问。但我需要IEclipsePreferences
从其他代码部分访问相同的内容来保存/加载这些设置。
这是我如何获取首选项并在对话框中显示 em 的示例:
import java.lang.reflect.InvocationTargetException;
import javax.inject.Inject;
import javax.inject.Named;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.di.extensions.Preference;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.osgi.service.prefs.BackingStoreException;
public class PojoShowPersistencePreferencesHandler {
@Inject
@Preference
IEclipsePreferences preferences;
@Inject
MApplication application;
@Execute
public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell
) throws InvocationTargetException, InterruptedException {
System.out.println(getClass().getSimpleName() + ".execute()");
System.out.println("preferences: " + preferences);
System.out.println("application: " + application);
try {
String msg = "Driver:\t" + preferences.get("jdbc_driver", "404") + "\n" + //
"URL:\t" + preferences.get("jdbc_url", "404") + "\n" + //
"User:\t" + preferences.get("jdbc_user", "404") + "\n" + //
"Password:\t" + preferences.get("jdbc_pwd", "404");
preferences.flush();
MessageDialog.openInformation(shell,
"Info :: Save Persistence Preferences",msg //
);
System.out.println(msg);
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
}
a) 我怎样才能在不使用 的情况下做同样的事情Handler
?b)我需要通过不带参数的代码DI
或作为带参数的处理程序来设置这些值,可以以编程方式调用
我一直在尝试这篇(Vogella)文章,但不知何故我找不到存储在这些 ( Instance
, Configuration
) 范围内的值,但它们被存储了,因为它们显示为Handler
!
注意:我使用的是 3.xPlugin
风格,所以使用旧风格不是问题。