Howdy,

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>

Reply via email to