1 package com.proalpha.java.oea.plugins.querygenerator.runtime;
5 import org.eclipse.core.resources.IProject;
6 import org.eclipse.core.resources.ProjectScope;
7 import org.eclipse.core.resources.ResourcesPlugin;
8 import org.eclipse.core.runtime.preferences.IScopeContext;
9 import org.eclipse.core.runtime.preferences.InstanceScope;
10 import org.eclipse.jface.preference.IPreferenceStore;
11 import org.eclipse.jface.window.Window;
12 import org.eclipse.ui.IWorkbenchWindow;
13 import org.eclipse.ui.PlatformUI;
14 import org.osgi.service.prefs.BackingStoreException;
15 import org.osgi.service.prefs.Preferences;
17 import com.openedge.core.runtime.IAVMClient;
18 import com.openedge.core.runtime.ProgressCommand;
19 import com.openedge.pdt.project.IOpenEdgeProject;
20 import com.openedge.pdt.project.OEProjectPlugin;
21 import com.openedge.pdt.text.OEutil;
22 import com.openedge.pdt.text.dialogs.OEProjectSelectionDialog;
23 import com.proalpha.java.oea.plugins.querygenerator.Activator;
24 import com.proalpha.java.oea.plugins.querygenerator.preferences.QueryGeneratorPreferenceConstants;
29 public static char PARAM_SPLITTER = 3;
39 if (handlerTools ==
null)
46 public String getPluginFilePath(String fileName) {
48 File file = OEutil.getPluginFile(PLUGIN_ID, fileName);
51 return file.getAbsolutePath();
57 public String runProgram(IAVMClient runtime,
QueryGeneratorPrograms program, String parameter,
boolean expectResult) {
61 if (runtime !=
null) {
66 String commandProcedure = program.getAbsoluteFilename();
67 String commandParameter = String.format(
72 ProgressCommand progressCommand =
new ProgressCommand(
78 runtime.runProgressCommand(progressCommand);
81 result = progressCommand.getResult();
93 IAVMClient runtime = getRuntime();
94 return runProgram(runtime, program, parameter, expectResult);
98 private Preferences getPrefs(String projectName) {
100 Preferences prefs =
null;
102 if (projectName !=
null && !projectName.isEmpty()) {
104 IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
106 if (project !=
null && project.exists()) {
108 IScopeContext projectScope =
new ProjectScope(project);
109 prefs = projectScope.getNode(PLUGIN_ID);
116 prefs = InstanceScope.INSTANCE.getNode(PLUGIN_ID);
122 public String readParamString(String paramString, String paramName) {
124 if (paramString ==
null || paramName ==
null)
127 String[] parameters = paramString.split(String.valueOf(PARAM_SPLITTER));
129 for (
int i = 0; i < parameters.length; i++) {
131 String parameter = parameters[i];
132 int eqPos = parameter.indexOf(
"=");
134 if (eqPos >= 0 && (parameter.substring(0, eqPos).equals(paramName)))
135 return parameter.substring(eqPos + 1);
142 public boolean savePluginSetting(String projectName, String name, String value) {
144 Preferences prefs = getPrefs(projectName);
149 prefs.put(name, value);
153 }
catch(BackingStoreException e) {
161 public String loadPluginSetting(String projectName, String name) {
163 Preferences prefs = getPrefs(projectName);
168 return prefs.get(name,
"");
171 public IAVMClient getRuntime() {
173 IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
174 IProject project =
null;
179 if (window.getActivePage().getEditorReferences().length > 0)
180 project = OEutil.getProjectSelection();
182 if (project !=
null && OEutil.isOpenEdgeProject(project)) {
184 OEProjectPlugin projectPlugin = OEProjectPlugin.getDefault();
185 IOpenEdgeProject oeProject = projectPlugin.getOpenEdgeModel().getOpenEdgeProject(project);
187 return oeProject.getRuntime();
191 OEProjectSelectionDialog dialog =
new OEProjectSelectionDialog(window.getShell());
193 if (dialog.open() == Window.OK) {
195 String projectName = dialog.getProjectName();
196 OEProjectPlugin projectPlugin = OEProjectPlugin.getDefault();
197 return projectPlugin.getOpenEdgeModel().getOpenEdgeProject(projectName).getRuntime();
static Activator getDefault()