|
From: <caw...@us...> - 2006-12-21 16:35:17
|
Revision: 1717
http://svn.sourceforge.net/rubyeclipse/?rev=1717&view=rev
Author: cawilliams
Date: 2006-12-21 08:35:14 -0800 (Thu, 21 Dec 2006)
Log Message:
-----------
extract an IInterpreter interface for RubyInterpreter (and try to use that everywhere possible).
Fix the annopying (and simple to fix) bug where users complained that their interpreter preferences weren't being persisted - setInstalledInterpreters wasn't calling saveRuntimeConfiguration. So if a user set up new interpreters (but didn't chnage the selected one) the changes weren't persisted.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.debug.core.tests/src/org/rubypeople/rdt/debug/core/tests/FTC_DebuggerLaunch.java
trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/launcher/RubyEnvironmentTab.java
trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/EditInterpreterDialog.java
trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterLabelProvider.java
trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterPreferencePage.java
trunk/org.rubypeople.rdt.debug.ui.tests/src/org/rubypeople/rdt/internal/debug/ui/launcher/TC_RubyApplicationShortcut.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunner.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunnerConfiguration.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyInterpreter.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyRuntime.java
trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyInterpreter.java
trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyRuntime.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rdocexport/RDocUtility.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/PreferenceConstants.java
Added Paths:
-----------
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IInterpreter.java
Modified: trunk/org.rubypeople.rdt.debug.core.tests/src/org/rubypeople/rdt/debug/core/tests/FTC_DebuggerLaunch.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.core.tests/src/org/rubypeople/rdt/debug/core/tests/FTC_DebuggerLaunch.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.debug.core.tests/src/org/rubypeople/rdt/debug/core/tests/FTC_DebuggerLaunch.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -19,6 +19,7 @@
import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyLaunchConfigurationAttribute;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
+import org.rubypeople.rdt.launching.IInterpreter;
/*
*
@@ -35,7 +36,7 @@
// to be set accordingly
String rubyInterpreterPath = FTC_ClassicDebuggerCommunicationTest.RUBY_INTERPRETER ;
System.out.println("Using interpreter: " + rubyInterpreterPath) ;
- RubyInterpreter rubyInterpreter = new RubyInterpreter("RubyInterpreter", new Path(rubyInterpreterPath));
+ IInterpreter rubyInterpreter = new RubyInterpreter("RubyInterpreter", new Path(rubyInterpreterPath));
RubyRuntime.getDefault().addInstalledInterpreter(rubyInterpreter) ;
}
Modified: trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/launcher/RubyEnvironmentTab.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/launcher/RubyEnvironmentTab.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/launcher/RubyEnvironmentTab.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -35,6 +35,7 @@
import org.rubypeople.rdt.internal.launching.RubyLaunchConfigurationAttribute;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
import org.rubypeople.rdt.internal.ui.RubyPluginImages;
+import org.rubypeople.rdt.launching.IInterpreter;
public class RubyEnvironmentTab extends AbstractLaunchConfigurationTab {
protected ListViewer loadPathListViewer;
@@ -115,7 +116,7 @@
interpreterAddButton.setText(RdtDebugUiMessages.getString("LaunchConfigurationTab.RubyEnvironment.interpreterAddButton.label"));
interpreterAddButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt) {
- RubyInterpreter newInterpreter = new RubyInterpreter(null, null);
+ IInterpreter newInterpreter = new RubyInterpreter(null, null);
EditInterpreterDialog editor = new EditInterpreterDialog(getShell(), RdtDebugUiMessages.getString("LaunchConfigurationTab.RubyEnvironment.editInterpreterDialog.title"));
editor.create();
editor.setInterpreterToEdit(newInterpreter);
@@ -148,7 +149,7 @@
}
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
- RubyInterpreter defaultInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter defaultInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (defaultInterpreter != null) {
configuration.setAttribute(RubyLaunchConfigurationAttribute.SELECTED_INTERPRETER, defaultInterpreter.getName());
}
@@ -201,12 +202,12 @@
String[] interpreterNames = new String[installedInterpretersWorkingCopy.size()];
for (int interpreterIndex = 0; interpreterIndex < installedInterpretersWorkingCopy.size(); interpreterIndex++) {
- RubyInterpreter interpreter = (RubyInterpreter) installedInterpretersWorkingCopy.get(interpreterIndex);
+ IInterpreter interpreter = (IInterpreter) installedInterpretersWorkingCopy.get(interpreterIndex);
interpreterNames[interpreterIndex] = interpreter.getName();
}
interpreterCombo.setItems(interpreterNames);
- RubyInterpreter selectedInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter selectedInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (selectedInterpreter != null)
interpreterCombo.select(interpreterCombo.indexOf(selectedInterpreter.getName()));
}
Modified: trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/EditInterpreterDialog.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/EditInterpreterDialog.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/EditInterpreterDialog.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -26,9 +26,10 @@
import org.rubypeople.rdt.internal.debug.ui.RdtDebugUiPlugin;
import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.ui.dialogs.StatusDialog;
+import org.rubypeople.rdt.launching.IInterpreter;
public class EditInterpreterDialog extends StatusDialog {
- protected RubyInterpreter interpreterToEdit;
+ protected IInterpreter interpreterToEdit;
protected Text interpreterNameText, interpreterLocationText;
protected IStatus[] allStatus = new IStatus[2];
@@ -37,7 +38,7 @@
setTitle(aDialogTitle);
}
- public void setInterpreterToEdit(RubyInterpreter anInterpreter) {
+ public void setInterpreterToEdit(IInterpreter anInterpreter) {
interpreterToEdit = anInterpreter;
String interpreterName = interpreterToEdit.getName();
Modified: trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterLabelProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterLabelProvider.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterLabelProvider.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -4,7 +4,7 @@
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;
-import org.rubypeople.rdt.internal.launching.RubyInterpreter;
+import org.rubypeople.rdt.launching.IInterpreter;
public class RubyInterpreterLabelProvider implements ITableLabelProvider {
@@ -17,7 +17,7 @@
}
public String getColumnText(Object element, int columnIndex) {
- RubyInterpreter interpreter = (RubyInterpreter) element;
+ IInterpreter interpreter = (IInterpreter) element;
switch (columnIndex) {
case 0 :
return interpreter.getName();
Modified: trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterPreferencePage.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterPreferencePage.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.debug.ui/src/org/rubypeople/rdt/internal/debug/ui/preferences/RubyInterpreterPreferencePage.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -28,6 +28,7 @@
import org.rubypeople.rdt.internal.debug.ui.RdtDebugUiMessages;
import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
+import org.rubypeople.rdt.launching.IInterpreter;
public class RubyInterpreterPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
protected CheckboxTableViewer tableViewer;
@@ -48,7 +49,7 @@
createButtonGroup(composite);
tableViewer.setInput(RubyRuntime.getDefault().getInstalledInterpreters());
- RubyInterpreter selectedInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter selectedInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (selectedInterpreter != null)
tableViewer.setChecked(selectedInterpreter, true);
@@ -146,7 +147,7 @@
}
protected void addInterpreter() {
- RubyInterpreter newInterpreter = new RubyInterpreter(null, null);
+ IInterpreter newInterpreter = new RubyInterpreter(null, null);
EditInterpreterDialog editor = new EditInterpreterDialog(getShell(), RdtDebugUiMessages.getString("RubyInterpreterPreferencePage.EditInterpreterDialog.addInterpreter.title")); //$NON-NLS-1$
editor.create();
editor.setInterpreterToEdit(newInterpreter);
@@ -186,15 +187,15 @@
EditInterpreterDialog editor = new EditInterpreterDialog(getShell(), RdtDebugUiMessages.getString("RubyInterpreterPreferencePage.EditInterpreterDialog.editInterpreter.title")); //$NON-NLS-1$
editor.create();
- RubyInterpreter anInterpreter = getSelectedInterpreter();
+ IInterpreter anInterpreter = getSelectedInterpreter();
editor.setInterpreterToEdit(anInterpreter);
if (EditInterpreterDialog.OK == editor.open())
tableViewer.update(anInterpreter, null);
}
- protected RubyInterpreter getSelectedInterpreter() {
+ protected IInterpreter getSelectedInterpreter() {
IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
- return (RubyInterpreter) selection.getFirstElement();
+ return (IInterpreter) selection.getFirstElement();
}
public boolean performOk() {
@@ -206,7 +207,7 @@
Object[] checkedElements = tableViewer.getCheckedElements();
if (checkedElements.length > 0)
- RubyRuntime.getDefault().setSelectedInterpreter((RubyInterpreter) checkedElements[0]);
+ RubyRuntime.getDefault().setSelectedInterpreter((IInterpreter) checkedElements[0]);
return super.performOk();
}
Modified: trunk/org.rubypeople.rdt.debug.ui.tests/src/org/rubypeople/rdt/internal/debug/ui/launcher/TC_RubyApplicationShortcut.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.ui.tests/src/org/rubypeople/rdt/internal/debug/ui/launcher/TC_RubyApplicationShortcut.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.debug.ui.tests/src/org/rubypeople/rdt/internal/debug/ui/launcher/TC_RubyApplicationShortcut.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -29,6 +29,7 @@
import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyLaunchConfigurationAttribute;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
+import org.rubypeople.rdt.launching.IInterpreter;
import org.rubypeople.rdt.ui.IRubyConstants;
public class TC_RubyApplicationShortcut extends TestCase {
@@ -97,14 +98,14 @@
Assert.assertEquals("All configurations deleted.", 0, this.getLaunchConfigurations().length);
ShamApplicationLaunchConfigurationDelegate.resetLaunches();
- RubyInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("C:/RubyInstallRootOne"));
- RubyRuntime.getDefault().setInstalledInterpreters(Arrays.asList(new Object[] { interpreterOne}));
+ IInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("C:/RubyInstallRootOne"));
+ RubyRuntime.getDefault().setInstalledInterpreters(Arrays.asList(new IInterpreter[] { interpreterOne}));
}
public void testNoInterpreterInstalled() throws Exception {
- RubyRuntime.getDefault().setInstalledInterpreters(Arrays.asList(new Object[] { }));
+ RubyRuntime.getDefault().setInstalledInterpreters(Arrays.asList(new IInterpreter[] { }));
ISelection selection = new StructuredSelection(rubyFile);
shortcut.launch(selection, ILaunchManager.RUN_MODE);
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunner.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunner.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunner.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -10,6 +10,7 @@
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.model.IProcess;
+import org.rubypeople.rdt.launching.IInterpreter;
public class InterpreterRunner {
@@ -19,7 +20,7 @@
List commandLine = renderCommandLine(configuration);
File workingDirectory = configuration.getAbsoluteWorkingDirectory();
- RubyInterpreter interpreter = convertInterpreter(configuration.getInterpreter()) ;
+ IInterpreter interpreter = convertInterpreter(configuration.getInterpreter());
Process nativeRubyProcess = interpreter.exec(commandLine, workingDirectory);
Map defaultAttributes = new HashMap();
defaultAttributes.put(IProcess.ATTR_PROCESS_TYPE, "ruby");
@@ -28,15 +29,15 @@
return process ;
}
- protected RubyInterpreter convertInterpreter(RubyInterpreter rubyInterpreter) {
- return rubyInterpreter ;
+ protected IInterpreter convertInterpreter(IInterpreter rubyInterpreter) {
+ return rubyInterpreter;
}
protected String renderLabel(InterpreterRunnerConfiguration configuration) {
StringBuffer buffer = new StringBuffer();
try {
- RubyInterpreter interpreter = configuration.getInterpreter();
+ IInterpreter interpreter = configuration.getInterpreter();
buffer.append("Ruby ");
buffer.append(interpreter.getCommand());
buffer.append(" : ");
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunnerConfiguration.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunnerConfiguration.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/InterpreterRunnerConfiguration.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -11,6 +11,7 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.rubypeople.rdt.internal.core.RubyProject;
+import org.rubypeople.rdt.launching.IInterpreter;
public class InterpreterRunnerConfiguration {
protected ILaunchConfiguration configuration;
@@ -90,7 +91,7 @@
return "";
}
- public RubyInterpreter getInterpreter() {
+ public IInterpreter getInterpreter() {
String selectedInterpreter = null;
try {
selectedInterpreter = configuration.getAttribute(RubyLaunchConfigurationAttribute.SELECTED_INTERPRETER, "");
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyInterpreter.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyInterpreter.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyInterpreter.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -10,8 +10,9 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.rubypeople.rdt.launching.IInterpreter;
-public class RubyInterpreter {
+public class RubyInterpreter implements IInterpreter {
public static final String END_OF_OPTIONS_DELIMITER = "--";
protected IPath installLocation;
@@ -29,18 +30,30 @@
this.commandExecutor = commandExecutor;
}
+ /* (non-Javadoc)
+ * @see org.rubypeople.rdt.internal.launching.IInterpreter#getInstallLocation()
+ */
public IPath getInstallLocation() {
return installLocation;
}
+ /* (non-Javadoc)
+ * @see org.rubypeople.rdt.internal.launching.IInterpreter#setInstallLocation(org.eclipse.core.runtime.IPath)
+ */
public void setInstallLocation(IPath validInstallLocation) {
installLocation = validInstallLocation;
}
+ /* (non-Javadoc)
+ * @see org.rubypeople.rdt.internal.launching.IInterpreter#getName()
+ */
public String getName() {
return name;
}
+ /* (non-Javadoc)
+ * @see org.rubypeople.rdt.internal.launching.IInterpreter#setName(java.lang.String)
+ */
public void setName(String newName) {
name = newName;
}
@@ -54,7 +67,6 @@
}
public Process exec(List args, File workingDirectory) throws CoreException {
-
try {
RdtLaunchingPlugin.debug("Launching: " + args) ;
RdtLaunchingPlugin.debug("Working Dir: " + workingDirectory) ;
@@ -76,7 +88,7 @@
public boolean equals(Object other) {
if (other instanceof RubyInterpreter) {
- RubyInterpreter otherInterpreter = (RubyInterpreter) other;
+ IInterpreter otherInterpreter = (IInterpreter) other;
if (name.equals(otherInterpreter.getName()))
return installLocation.equals(otherInterpreter.getInstallLocation());
}
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyRuntime.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyRuntime.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/RubyRuntime.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -19,6 +19,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
+import org.rubypeople.rdt.launching.IInterpreter;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
@@ -27,11 +28,16 @@
import org.xml.sax.XMLReader;
public class RubyRuntime {
+ private static final String TAG_INTERPRETER = "interpreter";
+ private static final String ATTR_PATH = "path";
+ private static final String ATTR_NAME = "name";
+ private static final String ATTR_SELECTED = "selected";
+
protected static RubyRuntime runtime;
- protected List installedInterpreters;
- protected RubyInterpreter selectedInterpreter;
- private List listeners = new ArrayList();
+ protected List<IInterpreter> installedInterpreters;
+ protected IInterpreter selectedInterpreter;
+ private List<Listener> listeners = new ArrayList<Listener>();
public static interface Listener {
void selectedInterpreterChanged();
@@ -56,17 +62,17 @@
listeners.remove(listener);
}
- public RubyInterpreter getSelectedInterpreter() {
+ public IInterpreter getSelectedInterpreter() {
if (selectedInterpreter == null) {
loadRuntimeConfiguration();
}
return selectedInterpreter;
}
- public RubyInterpreter getInterpreter(String name) {
+ public IInterpreter getInterpreter(String name) {
Iterator interpreters = getInstalledInterpreters().iterator();
while(interpreters.hasNext()) {
- RubyInterpreter each = (RubyInterpreter) interpreters.next();
+ IInterpreter each = (IInterpreter) interpreters.next();
if (each.getName().equals(name))
return each;
}
@@ -74,7 +80,7 @@
return getSelectedInterpreter();
}
- public void setSelectedInterpreter(RubyInterpreter anInterpreter) {
+ public void setSelectedInterpreter(IInterpreter anInterpreter) {
if (selectedInterpreter == anInterpreter) return;
selectedInterpreter = anInterpreter;
saveRuntimeConfiguration();
@@ -84,26 +90,27 @@
}
}
- public void addInstalledInterpreter(RubyInterpreter anInterpreter) {
+ public void addInstalledInterpreter(IInterpreter anInterpreter) {
getInstalledInterpreters().add(anInterpreter);
if (getInstalledInterpreters().size() == 1)
setSelectedInterpreter((RubyInterpreter) getInstalledInterpreters().get(0));
-
- saveRuntimeConfiguration();
+ else
+ saveRuntimeConfiguration();
}
- public List getInstalledInterpreters() {
+ public List<IInterpreter> getInstalledInterpreters() {
if (installedInterpreters == null)
loadRuntimeConfiguration();
return installedInterpreters;
}
- public void setInstalledInterpreters(List newInstalledInterpreters) {
+ public void setInstalledInterpreters(List<IInterpreter> newInstalledInterpreters) {
installedInterpreters = newInstalledInterpreters;
if (installedInterpreters.size() > 0)
- setSelectedInterpreter((RubyInterpreter)installedInterpreters.get(0));
+ setSelectedInterpreter((IInterpreter)installedInterpreters.get(0));
else
setSelectedInterpreter(null);
+ saveRuntimeConfiguration();
}
protected void saveRuntimeConfiguration() {
@@ -120,7 +127,7 @@
}
protected void loadRuntimeConfiguration() {
- installedInterpreters = new ArrayList();
+ installedInterpreters = new ArrayList<IInterpreter>();
try {
XMLReader reader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
reader.setContentHandler(getRuntimeConfigurationContentHandler());
@@ -143,7 +150,7 @@
} else {
path = new Path("/usr/local/bin/ruby");
}
- RubyInterpreter interpreter = new RubyInterpreter("Default Ruby Interpreter", path);
+ IInterpreter interpreter = new RubyInterpreter("Default Ruby Interpreter", path);
installedInterpreters.add(interpreter);
selectedInterpreter = interpreter;
}
@@ -161,15 +168,24 @@
writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig>");
Iterator interpretersIterator = installedInterpreters.iterator();
while (interpretersIterator.hasNext()) {
- writer.write("<interpreter name=\"");
+ writer.write("<");
+ writer.write(TAG_INTERPRETER);
+ writer.write(" ");
+ writer.write(ATTR_NAME);
+ writer.write("=\"");
- RubyInterpreter entry = (RubyInterpreter) interpretersIterator.next();
+ IInterpreter entry = (IInterpreter) interpretersIterator.next();
writer.write(entry.getName());
- writer.write("\" path=\"");
+ writer.write("\" ");
+ writer.write(ATTR_PATH);
+ writer.write("=\"");
writer.write(entry.getInstallLocation().toString());
writer.write("\"");
- if (entry.equals(selectedInterpreter))
- writer.write(" selected=\"true\"");
+ if (entry.equals(selectedInterpreter)) {
+ writer.write(" ");
+ writer.write(ATTR_SELECTED);
+ writer.write("=\"true\"");
+ }
writer.write("/>");
}
@@ -188,12 +204,12 @@
public void startPrefixMapping(String prefix, String uri) throws SAXException {}
public void endPrefixMapping(String prefix) throws SAXException {}
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
- if ("interpreter".equals(qName)) {
- String interpreterName = atts.getValue("name");
- IPath installLocation = new Path(atts.getValue("path"));
- RubyInterpreter interpreter = new RubyInterpreter(interpreterName, installLocation);
+ if (TAG_INTERPRETER.equals(qName)) {
+ String interpreterName = atts.getValue(ATTR_NAME);
+ IPath installLocation = new Path(atts.getValue(ATTR_PATH));
+ IInterpreter interpreter = new RubyInterpreter(interpreterName, installLocation);
installedInterpreters.add(interpreter);
- if (atts.getValue("selected") != null)
+ if (atts.getValue(ATTR_SELECTED) != null)
selectedInterpreter = interpreter;
}
}
Added: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IInterpreter.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IInterpreter.java (rev 0)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IInterpreter.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -0,0 +1,24 @@
+package org.rubypeople.rdt.launching;
+
+import java.io.File;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.rubypeople.rdt.internal.launching.IllegalCommandException;
+
+public interface IInterpreter {
+
+ public IPath getInstallLocation();
+
+ public void setInstallLocation(IPath validInstallLocation);
+
+ public String getName();
+
+ public void setName(String newName);
+
+ public String getCommand() throws IllegalCommandException;
+
+ public Process exec(List commandLine, File workingDirectory) throws CoreException;
+
+}
\ No newline at end of file
Modified: trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyInterpreter.java
===================================================================
--- trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyInterpreter.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyInterpreter.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -14,6 +14,7 @@
import org.rubypeople.rdt.internal.launching.CommandExecutor;
import org.rubypeople.rdt.internal.launching.IllegalCommandException;
import org.rubypeople.rdt.internal.launching.RubyInterpreter;
+import org.rubypeople.rdt.launching.IInterpreter;
public class TC_RubyInterpreter extends TestCase {
@@ -21,11 +22,11 @@
private static final File WORKING_DIR = new File("/testDir");
public void testEquals() {
- RubyInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("/InterpreterOnePath"));
- RubyInterpreter similarInterpreterOne = new RubyInterpreter("InterpreterOne", new Path("/InterpreterOnePath"));
+ IInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("/InterpreterOnePath"));
+ IInterpreter similarInterpreterOne = new RubyInterpreter("InterpreterOne", new Path("/InterpreterOnePath"));
assertTrue("Interpreters should be equal.", interpreterOne.equals(similarInterpreterOne));
- RubyInterpreter interpreterTwo = new RubyInterpreter("InterpreterTwo", new Path("/InterpreterTwoPath"));
+ IInterpreter interpreterTwo = new RubyInterpreter("InterpreterTwo", new Path("/InterpreterTwoPath"));
assertTrue("Interpreters should not be equal.", !interpreterOne.equals(interpreterTwo));
}
Modified: trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyRuntime.java
===================================================================
--- trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyRuntime.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.launching.tests/src/org/rubypeople/rdt/internal/launching/TC_RubyRuntime.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -32,6 +32,7 @@
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
+import org.rubypeople.rdt.launching.IInterpreter;
public class TC_RubyRuntime extends TestCase {
protected StringWriter runtimeConfigurationWriter = new StringWriter();
@@ -42,8 +43,8 @@
public void testGetInstalledInterpreters() {
ShamRubyRuntime runtime = new ShamRubyRuntime();
- RubyInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("C:/RubyInstallRootOne"));
- RubyInterpreter interpreterTwo = new RubyInterpreter("InterpreterTwo", new Path("C:/RubyInstallRootTwo"));
+ IInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("C:/RubyInstallRootOne"));
+ IInterpreter interpreterTwo = new RubyInterpreter("InterpreterTwo", new Path("C:/RubyInstallRootTwo"));
assertTrue("Runtime should contain all interpreters.", runtime.getInstalledInterpreters().containsAll(Arrays.asList(new Object[] { interpreterOne, interpreterTwo })));
assertTrue("interpreterTwo should be selected interpreter.", runtime.getSelectedInterpreter().equals(interpreterTwo));
@@ -52,18 +53,15 @@
ShamRubyRuntime runtime = new ShamRubyRuntime();
- RubyInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("C:/RubyInstallRootOne"));
- runtime.setInstalledInterpreters(Arrays.asList(new Object[] { interpreterOne }));
- runtime.saveRuntimeConfiguration() ;
+ IInterpreter interpreterOne = new RubyInterpreter("InterpreterOne", new Path("C:/RubyInstallRootOne"));
+ runtime.setInstalledInterpreters(Arrays.asList(new IInterpreter[] { interpreterOne }));
assertEquals("XML should indicate only one interpreter with it being the selected.", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig><interpreter name=\"InterpreterOne\" path=\"C:/RubyInstallRootOne\" selected=\"true\"/></runtimeconfig>", runtimeConfigurationWriter.toString());
RubyInterpreter interpreterTwo = new RubyInterpreter("InterpreterTwo", new Path("C:/RubyInstallRootTwo"));
- runtime.setInstalledInterpreters(Arrays.asList(new Object[] { interpreterOne, interpreterTwo }));
- runtime.saveRuntimeConfiguration() ;
+ runtime.setInstalledInterpreters(Arrays.asList(new IInterpreter[] { interpreterOne, interpreterTwo }));
assertEquals("XML should indicate both interpreters with the first one being selected.", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig><interpreter name=\"InterpreterOne\" path=\"C:/RubyInstallRootOne\" selected=\"true\"/><interpreter name=\"InterpreterTwo\" path=\"C:/RubyInstallRootTwo\"/></runtimeconfig>", runtimeConfigurationWriter.toString());
runtime.setSelectedInterpreter(interpreterTwo);
- runtime.saveRuntimeConfiguration() ;
assertEquals("XML should indicate selected interpreter change.", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig><interpreter name=\"InterpreterOne\" path=\"C:/RubyInstallRootOne\"/><interpreter name=\"InterpreterTwo\" path=\"C:/RubyInstallRootTwo\" selected=\"true\"/></runtimeconfig>", runtimeConfigurationWriter.toString());
}
protected class ShamRubyRuntime extends RubyRuntime {
@@ -77,7 +75,7 @@
protected Writer getRuntimeConfigurationWriter() {
return runtimeConfigurationWriter;
}
- public void setInstalledInterpreters(List newInstalledInterpreters) {
+ public void setInstalledInterpreters(List<IInterpreter> newInstalledInterpreters) {
super.setInstalledInterpreters(newInstalledInterpreters);
}
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -40,12 +40,12 @@
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.ViewPart;
-import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
import org.rubypeople.rdt.internal.ui.RubyPluginImages;
import org.rubypeople.rdt.internal.ui.rdocexport.RDocUtility;
import org.rubypeople.rdt.internal.ui.rdocexport.RdocListener;
+import org.rubypeople.rdt.launching.IInterpreter;
import org.rubypeople.rdt.ui.PreferenceConstants;
public class RIView extends ViewPart implements RdocListener {
@@ -171,7 +171,7 @@
}
private void updatePage() {
- RubyInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (interpreter != null) {
initSearchList();
if( riFound ){
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rdocexport/RDocUtility.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rdocexport/RDocUtility.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rdocexport/RDocUtility.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -17,11 +17,11 @@
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.rubypeople.rdt.internal.launching.RdtLaunchingMessages;
-import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
import org.rubypeople.rdt.internal.ui.RubyUIMessages;
import org.rubypeople.rdt.internal.ui.dialogs.StatusInfo;
+import org.rubypeople.rdt.launching.IInterpreter;
import org.rubypeople.rdt.ui.PreferenceConstants;
/**
@@ -86,7 +86,7 @@
log("Generating RDoc for " + resource.getName());
RdtLaunchingMessages.getString("RdtLaunchingPlugin.noInterpreterSelected");
- RubyInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (interpreter == null) {
MessageDialog.openInformation(RubyPlugin.getActiveWorkbenchShell(), RdtLaunchingMessages.getString("RdtLaunchingPlugin.noInterpreterSelectedTitle"), RdtLaunchingMessages.getString("RdtLaunchingPlugin.noInterpreterSelected"));
return ;
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -12,9 +12,9 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
-import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
+import org.rubypeople.rdt.launching.IInterpreter;
import org.rubypeople.rdt.ui.PreferenceConstants;
import org.rubypeople.rdt.ui.extensions.ITextHoverProvider;
@@ -33,7 +33,7 @@
try {
String symbol = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
args.add(symbol);
- RubyInterpreter selectedInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter selectedInterpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (selectedInterpreter == null) return null;
Process p = selectedInterpreter.exec(args, null);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/PreferenceConstants.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/PreferenceConstants.java 2006-12-18 13:30:32 UTC (rev 1716)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/PreferenceConstants.java 2006-12-21 16:35:14 UTC (rev 1717)
@@ -4,10 +4,10 @@
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.graphics.RGB;
-import org.rubypeople.rdt.internal.launching.RubyInterpreter;
import org.rubypeople.rdt.internal.launching.RubyRuntime;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
import org.rubypeople.rdt.internal.ui.preferences.formatter.ProfileManager;
+import org.rubypeople.rdt.launching.IInterpreter;
public class PreferenceConstants {
@@ -652,7 +652,7 @@
}
private static String getDefaultPath(String programName) {
- RubyInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter();
+ IInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter();
if (interpreter == null) { return programName; }
IPath path = interpreter.getInstallLocation();
path = path.uptoSegment(path.segmentCount() - 1).append(programName);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|