如何从首选项页面获取文件的路径,并通过Workbench上的Button在控制台上打印输出?
我创建了一个首选项页面,其编程是:
public class SAML extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public SAML() { super(GRID); setPreferenceStore(RmpPlugin.getDefault().getPreferenceStore()); setDescription("Browse Appropriate files"); } public FileFieldEditor f; public FileFieldEditor f1; public void createFieldEditors() { f=new FileFieldEditor(PreferenceConstants.P_PATH, "&Prism.bat File:", getFieldEditorParent()); addField(f); f1=new FileFieldEditor(PreferenceConstants.P_PATH1, "&NuSMV Application File:", getFieldEditorParent()); addField(f1); }
我想获取FileFieldEditor f
路径,并希望此路径在嵌入工作台的按钮上运行(但该按钮的编程在同一工作区的不同项目中)。 具有“prism.bat”文件的硬编码路径的按钮编程是:
try { //to clear the console on every click of button IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(IConsoleConstants.ID_CONSOLE_VIEW); if (view != null) { (myConsole).clearConsole(); } ProcessBuilder pb=new ProcessBuilder("C:\\Program Files\\prism-4.0\\bin\\prism.bat"); pb.directory(new File("C:\\Program Files\\prism-4.0\\bin")); Process p=pb.start(); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String in; while((in = input.readLine()) != null) { out.println(in); } int exitVal=p.waitFor(); if(exitVal==0) { out.println("Process Successful"); out.println("Printing on console with Exitvalue =0"); } else {out.println("Process failed"); out.println("Exitvalue = 1"); } } catch (Exception e) { out.println(e.toString()); e.printStackTrace(); }
但我想从我的首选项页面FileFieldEditor f
获取文件,并希望此路径嵌入按钮编程中,以便在按下按钮时显示结果。
你需要两个部分:
- 初始化首选项默认值的代码
- 使用当前值的代码
要设置默认值,请在Activator
使用以下代码:
public class Activator extends AbstractUIPlugin { @Override public void start(BundleContext context) throws Exception { super.start(context); IPreferenceStore ps = getPreferenceStore(); ps.setDefault(SHOW_IMAGE, true); } public static final String SHOW_IMAGE = "showImage"; }
或者,您可以使用org.eclipse.core.runtime.preferences
扩展点…
请注意,上面的代码假设首选项的类型是Boolean
– 还有其他数字,字符串等方法……文件名是一个字符串。
要使用当前值,只需使用
if (Activator.getDefault().getPreferenceStore().getBoolean(Activator.SHOW_IMAGE)) { … }
以下幻灯片包含更多信息……
- 为什么Eclipse不更新类?
- 在web.xml中映射servlet
- Eclipse Maven插件配置问题
- 从Eclipse导出的JAR中排除JUnit
- 如何在Eclipse中获取所选代码?
- 无法打开数据库/无法将(数据库)的区域设置更改为“en_US”
- 使用objectContribution(弹出窗口)到CVS历史记录视图的任何已知问题/错误? 它不起作用
- eclipse中的Maven错误(pom.xml):无法转移org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4
- Tomcat为其他开放日食项目中的类抛出ClassNotFoundexception