Eclipse e4 Kepler:IEclipsePreferences读/写

时间:2013-07-31 09:38:42

标签: eclipse eclipse-kepler

我正在使用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的代码或带参数的处理程序来设置这些值,这可以通过编程方式调用

我一直在尝试this (Vogella) article,但不知怎的,我找不到存储在这些(InstanceConfiguration)范围内的值,但它们会被存储,因为它们会显示在{ {1}}!

注意:我使用的是3.x Handler样式,因此使用旧样式不是问题。

1 个答案:

答案 0 :(得分:1)

试试这个:

@Preference(nodePath =“com.example.e4.rcp.todo”)

这可能是您找不到偏好的原因。