attached is a patch that adds a minimalistic preference page to the Cactus-Eclipse plugin. It let's you specify the context-URL, split up into the URL components. The URL is then used by the launch configuration.
I've coded this while trying to get up to speed with the Eclipse-plugin... it's pretty simple, and probably doesn't represent what will go into the final prefs page, but it's a starting point I guess.
--
Christopher Lenz
/=/ cmlenz at gmx.de
Index: plugin.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/Eclipse-Plugin/plugin.xml,v
retrieving revision 1.8
diff -u -r1.8 plugin.xml
--- plugin.xml 19 Oct 2002 16:54:45 -0000 1.8
+++ plugin.xml 22 Oct 2002 07:53:24 -0000
@@ -72,4 +72,13 @@
</launchConfigurationTabGroup>
</extension>
+ <!-- Registers the Cactus preferences page -->
+ <extension point="org.eclipse.ui.preferencePages">
+ <page id="org.apache.cactus.eclipse.preferencePage"
+ name="%PreferencePage.label"
+ category="org.eclipse.jdt.ui.preferences.JavaBasePreferencePage"
+ class="org.apache.cactus.eclipse.ui.CactusPreferencePage">
+ </page>
+ </extension>
+
</plugin>
Index: src/java/org/apache/cactus/eclipse/launcher/CactusLaunchConfiguration.java
===================================================================
RCS file:
/home/cvs/jakarta-cactus/Eclipse-Plugin/src/java/org/apache/cactus/eclipse/launcher/CactusLaunchConfiguration.java,v
retrieving revision 1.19
diff -u -r1.19 CactusLaunchConfiguration.java
--- src/java/org/apache/cactus/eclipse/launcher/CactusLaunchConfiguration.java 21 Oct
2002 17:18:05 -0000 1.19
+++ src/java/org/apache/cactus/eclipse/launcher/CactusLaunchConfiguration.java 22 Oct
+2002 07:53:24 -0000
@@ -56,6 +56,7 @@
*/
package org.apache.cactus.eclipse.launcher;
+import org.apache.cactus.eclipse.ui.CactusPreferences;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.jdt.core.IType;
@@ -103,10 +104,8 @@
VMRunnerConfiguration configuration =
super.launchTypes(theConfiguration, theMode, theTests, thePort);
- // Compute new VM arguments : JUnit VM argument + Cactus VM arguments
- // TODO: Get this from the plugin preference page.
String[] cactusVMArgs =
- { "-Dcactus.contextURL=http://localhost:8081/test" };
+ { "-Dcactus.contextURL=" + CactusPreferences.getContextURL() };
String[] jUnitArgs = configuration.getVMArguments();
String[] globalArgs = concatenateStringArrays(jUnitArgs, cactusVMArgs);
configuration.setVMArguments(globalArgs);
Index: src/java/org/apache/cactus/eclipse/ui/CactusPreferencePage.java
===================================================================
RCS file: src/java/org/apache/cactus/eclipse/ui/CactusPreferencePage.java
diff -N src/java/org/apache/cactus/eclipse/ui/CactusPreferencePage.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/java/org/apache/cactus/eclipse/ui/CactusPreferencePage.java 22 Oct 2002
+07:53:25 -0000
@@ -0,0 +1,145 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Cactus" and "Apache Software
+ * Foundation" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+package org.apache.cactus.eclipse.ui;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.jface.preference.IntegerFieldEditor;
+
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * This class represents a preference page that is contributed to the
+ * Preferences dialog.
+ * <p>
+ * By subclassing <samp>FieldEditorPreferencePage</samp>, we can use the
+ * field support built into JFace that allows us to create a page that is
+ * small and knows how to save, restore and apply itself.
+ * </p>
+ * <p>
+ * This page is used to modify preferences only. They are stored in the
+ * preference store that belongs to the main plug-in class. That way,
+ * preferences can be accessed directly via the preference store.
+ * </p>
+ *
+ * @version $Id:$
+ * @author <a href="mailto:cmlenz@;apache.org">Christopher Lenz</a>
+ */
+public class CactusPreferencePage
+ extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ /**
+ * Constructor.
+ */
+ public CactusPreferencePage()
+ {
+ super(GRID);
+ setPreferenceStore(CactusPlugin.getDefault().getPreferenceStore());
+ // TODO: externalize
+ setDescription("Preferences of the Apache Cactus plug-in "
+ + "for in-container unit testing");
+ initializeDefaults();
+ }
+
+ /**
+ * Sets the default values of the preferences.
+ */
+ private void initializeDefaults()
+ {
+ IPreferenceStore store = getPreferenceStore();
+ store.setDefault(CactusPreferences.CONTEXT_URL_SCHEME, "http");
+ store.setDefault(CactusPreferences.CONTEXT_URL_HOST, "localhost");
+ store.setDefault(CactusPreferences.CONTEXT_URL_PORT, 8080);
+ store.setDefault(CactusPreferences.CONTEXT_URL_PATH, "test");
+ }
+
+ /**
+ * Creates the field editors. Field editors are abstractions of
+ * the common GUI blocks needed to manipulate various types
+ * of preferences. Each field editor knows how to save and
+ * restore itself.
+ */
+ public void createFieldEditors()
+ {
+ // TODO: externalize labels
+ addField(new RadioGroupFieldEditor(
+ CactusPreferences.CONTEXT_URL_SCHEME, "Protocol:", 1,
+ new String[][] { { "HTTP", "http" }, { "HTTP over SSL", "https" } },
+ getFieldEditorParent()));
+ addField(new StringFieldEditor(
+ CactusPreferences.CONTEXT_URL_HOST, "Host:",
+ getFieldEditorParent()));
+ addField(new IntegerFieldEditor(
+ CactusPreferences.CONTEXT_URL_PORT, "Port:",
+ getFieldEditorParent()));
+ addField(new StringFieldEditor(
+ CactusPreferences.CONTEXT_URL_PATH, "Context:",
+ getFieldEditorParent()));
+ }
+
+ /**
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(IWorkbench)
*/
+ public void init(IWorkbench workbench)
+ {
+ // nothing to do (yet)
+ }
+
+}
Index: src/java/org/apache/cactus/eclipse/ui/CactusPreferences.java
===================================================================
RCS file: src/java/org/apache/cactus/eclipse/ui/CactusPreferences.java
diff -N src/java/org/apache/cactus/eclipse/ui/CactusPreferences.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/java/org/apache/cactus/eclipse/ui/CactusPreferences.java 22 Oct 2002
+07:53:25 -0000
@@ -0,0 +1,111 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Cactus" and "Apache Software
+ * Foundation" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+package org.apache.cactus.eclipse.ui;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+
+/**
+ * Central class for managing the Cactus preferences.
+ *
+ * @version $Id:$
+ * @author <a href="mailto:cmlenz@;apache.org">Christopher Lenz</a>
+ */
+public class CactusPreferences
+{
+ /**
+ * The protocol scheme component of the context URL (either 'http' or
+ * 'https') preference.
+ */
+ public static final String CONTEXT_URL_SCHEME =
+ "contextURL_Scheme";
+
+ /**
+ * The host component of the context URL preference.
+ */
+ public static final String CONTEXT_URL_HOST =
+ "contextURL_Host";
+
+ /**
+ * The port component of the context URL preference.
+ */
+ public static final String CONTEXT_URL_PORT =
+ "contextURL_Port";
+
+ /**
+ * The path component of the context URL preference.
+ */
+ public static final String CONTEXT_URL_PATH =
+ "contextURL_Path";
+
+ /**
+ * Returns the context URL that should be used by the client, as
+ * configured in the plug-in preferences.
+ *
+ * @return the context URL
+ */
+ public static String getContextURL()
+ {
+ IPreferenceStore store = CactusPlugin.getDefault().getPreferenceStore();
+ StringBuffer buf = new StringBuffer()
+ .append(store.getString(CONTEXT_URL_SCHEME)).append("://")
+ .append(store.getString(CONTEXT_URL_HOST)).append(":")
+ .append(store.getInt(CONTEXT_URL_PORT)).append("/")
+ .append(store.getString(CONTEXT_URL_PATH));
+ return buf.toString();
+ }
+
+}-- To unsubscribe, e-mail: <mailto:cactus-dev-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:cactus-dev-help@;jakarta.apache.org>
