You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by aj...@apache.org on 2005/06/13 07:09:30 UTC

svn commit: r190352 - in /webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen: eclipse/CodeGenWizard.java eclipse/ui/OptionsPage.java eclipse/ui/OutputPage.java eclipse/ui/WSDLFileSelectionPage.java resource/Codegen.properties

Author: ajith
Date: Sun Jun 12 22:09:30 2005
New Revision: 190352

URL: http://svn.apache.org/viewcvs?rev=190352&view=rev
Log:
Checking in the following changes by courtesy of Mike Haller
1.Commented the code
2.Added persistent support for the wizard
3.Fixed some minor bugs

Modified:
    webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/CodeGenWizard.java
    webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OptionsPage.java
    webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OutputPage.java
    webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java
    webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/resource/Codegen.properties

Modified: webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/CodeGenWizard.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/CodeGenWizard.java?rev=190352&r1=190351&r2=190352&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/CodeGenWizard.java (original)
+++ webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/CodeGenWizard.java Sun Jun 12 22:09:30 2005
@@ -1,9 +1,11 @@
+
 package org.apache.axis.tool.codegen.eclipse;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -20,6 +22,8 @@
 import org.apache.axis.wsdl.codegen.CommandLineOption;
 import org.apache.axis.wsdl.codegen.CommandLineOptionConstants;
 import org.apache.wsdl.WSDLDescription;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -27,183 +31,254 @@
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
 /**
  * The main wizard for the codegen wizard
  */
 
-public class CodeGenWizard extends Wizard implements INewWizard {
-    private WSDLFileSelectionPage page1;
-
-    private OptionsPage page2;
-
-    private OutputPage page3;
-
-    private ISelection selection;
-
-    private boolean canFinish = false;
-
-    /**
-     * Constructor for CodeGenWizard.
-     */
-    public CodeGenWizard() {
-        super();
-        setNeedsProgressMonitor(true);
-        this.setWindowTitle(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
-                .getResourceString("general.name"));
-    }
-
-    /**
-     * Adding the page to the wizard.
-     */
-
-    public void addPages() {
-        page1 = new WSDLFileSelectionPage(selection);
-        addPage(page1);
-        page2 = new OptionsPage();
-        addPage(page2);
-        page3 = new OutputPage();
-        addPage(page3);
-
-    }
-
-    /**
-     * This method is called when 'Finish' button is pressed in the wizard. We
-     * will create an operation and run it using wizard as execution context.
-     */
-    public boolean performFinish() {
-
-        try {
-            // getContainer().run(true, false, op);
-            doFinish();
-        } catch (Exception e) {
-            e.printStackTrace();
-            MessageDialog.openError(getShell(), CodegenWizardPlugin
-                    .getResourceString("general.Error"), e.getMessage());
-            return false;
-        }
-        MessageDialog.openInformation(this.getShell(), CodegenWizardPlugin
-                .getResourceString("general.name"), CodegenWizardPlugin
-                .getResourceString("wizard.success"));
-        return true;
-    }
-
-    /**
-     * The worker method.
-     */
-
-    private void doFinish() {
-  
-        try {
-            WSDLDescription wom = this.getWOM(page1.getFileName());
-            Map optionsMap = fillOptionMap();
-            CodeGenConfiguration codegenConfig = new CodeGenConfiguration(wom,
-                    optionsMap);
-            new CodeGenerationEngine(codegenConfig).generate();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-    /**
-     *  
-     */
-    private Map fillOptionMap() {
-        Map optionMap = new HashMap();
-
-        optionMap.put(CommandLineOptionConstants.WSDL_LOCATION_URI_OPTION,
-                new CommandLineOption(
-                        CommandLineOptionConstants.WSDL_LOCATION_URI_OPTION,
-                        getStringArray(page1.getFileName())));
-
-        if (page2.isAsyncOnlyOn()) {
-            optionMap
-                    .put(
-                            CommandLineOptionConstants.CODEGEN_ASYNC_ONLY_OPTION,
-                            new CommandLineOption(
-                                    CommandLineOptionConstants.CODEGEN_ASYNC_ONLY_OPTION,
-                                    new String[0]));
-        }
-        if (page2.isSyncOnlyOn()) {
-            optionMap
-                    .put(
-                            CommandLineOptionConstants.CODEGEN_SYNC_ONLY_OPTION,
-                            new CommandLineOption(
-                                    CommandLineOptionConstants.CODEGEN_SYNC_ONLY_OPTION,
-                                    new String[0]));
-        }
-        optionMap.put(CommandLineOptionConstants.PACKAGE_OPTION,
-                new CommandLineOption(
-                        CommandLineOptionConstants.PACKAGE_OPTION,
-                        getStringArray(page2.getPackageName())));
-        optionMap.put(CommandLineOptionConstants.STUB_LANGUAGE_OPTION,
-                new CommandLineOption(
-                        CommandLineOptionConstants.STUB_LANGUAGE_OPTION,
-                        getStringArray(mapLanguagesWithCombo(page2
-                                .getSelectedLanguage()))));
-        optionMap.put(CommandLineOptionConstants.OUTPUT_LOCATION_OPTION,
-                new CommandLineOption(
-                        CommandLineOptionConstants.OUTPUT_LOCATION_OPTION,
-                        getStringArray(page3.getOutputLocation())));
-        if (page2.isServerside()) {
-            optionMap.put(CommandLineOptionConstants.SERVER_SIDE_CODE_OPTION,
-                    new CommandLineOption(
-                            CommandLineOptionConstants.SERVER_SIDE_CODE_OPTION,
-                            new String[0]));
-
-            if (page2.isServerXML()) {
-                optionMap
-                        .put(
-                                CommandLineOptionConstants.GENERATE_SERVICE_DESCRIPTION_OPTION,
-                                new CommandLineOption(
-                                        CommandLineOptionConstants.GENERATE_SERVICE_DESCRIPTION_OPTION,
-                                        new String[0]));
+public class CodeGenWizard extends Wizard implements INewWizard
+{
+   private WSDLFileSelectionPage page1;
+
+   private OptionsPage page2;
+
+   private OutputPage page3;
+
+   private ISelection selection;
+
+   private boolean canFinish = false;
+
+   /**
+    * Constructor for CodeGenWizard.
+    */
+   public CodeGenWizard()
+   {
+      super();
+      setNeedsProgressMonitor(true);
+      this.setWindowTitle(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+         .getResourceString("general.name"));
+   }
+
+   /**
+    * Adding the page to the wizard.
+    */
+
+   public void addPages()
+   {
+      page1 = new WSDLFileSelectionPage(selection);
+      addPage(page1);
+      page2 = new OptionsPage();
+      addPage(page2);
+      page3 = new OutputPage();
+      addPage(page3);
+
+   }
+
+   /**
+    * This method is called when 'Finish' button is pressed in the wizard. We will create an operation and run it using
+    * wizard as execution context.
+    */
+   public boolean performFinish()
+   {
+      try
+      {
+         // getContainer().run(true, false, op);
+         doFinish();
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+         MessageDialog.openError(getShell(), CodegenWizardPlugin.getResourceString("general.Error"), e.getMessage());
+         return false;
+      }
+      MessageDialog.openInformation(this.getShell(), CodegenWizardPlugin.getResourceString("general.name"),
+         CodegenWizardPlugin.getResourceString("wizard.success"));
+      return true;
+   }
+
+   /**
+    * The worker method, generates the code itself.
+    */
+   private void doFinish()
+   {
+
+      WorkspaceModifyOperation op = new WorkspaceModifyOperation()
+      {
+         protected void execute(IProgressMonitor monitor)
+         {
+            if (monitor == null)
+               monitor = new NullProgressMonitor();
+
+            /*
+             * "3" is the total amount of steps, see below monitor.worked(amount)
+             */
+            monitor.beginTask(CodegenWizardPlugin.getResourceString("generator.generating"), 3);
+
+            try
+            {
+               /*
+                * TODO: Introduce a progress monitor interface for CodeGenerationEngine.
+                * Since this monitor here doesn't make much sense, we
+                * should either remove the progress monitor from the CodeGenWizard,
+                * or give a (custom) progress monitor to the generate() method, so
+                * we will be informed by Axis2 about the progress of code generation.  
+                */
+               monitor.subTask(CodegenWizardPlugin.getResourceString("generator.readingWOM"));
+               WSDLDescription wom = getWOM(page1.getFileName());
+               monitor.worked(1);
+               Map optionsMap = fillOptionMap();
+               CodeGenConfiguration codegenConfig = new CodeGenConfiguration(wom, optionsMap);
+               monitor.worked(1);
+               monitor.subTask(CodegenWizardPlugin.getResourceString("generator.generating"));
+               new CodeGenerationEngine(codegenConfig).generate();
+               monitor.worked(1);
+            }
+            catch (Exception e)
+            {
+               throw new RuntimeException(e);
             }
-        }
-        if (page2.isGenerateTestCase()){
-            optionMap
-            .put(
-                    CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
-                    new CommandLineOption(
-                            CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
-                            new String[0])); 
-        }
-        //System.out.println(page3.getOutputLocation());
-        return optionMap;
-    }
-
-    private String mapLanguagesWithCombo(String UILangValue) {
-        if (UIConstants.JAVA.equals(UILangValue)) {
-            return CommandLineOptionConstants.LanguageNames.JAVA;
-        } else if (UIConstants.C_SHARP.equals(UILangValue)) {
-            return CommandLineOptionConstants.LanguageNames.C_SHARP;
-        } else if (UIConstants.C_PLUS_PLUS.equals(UILangValue)) {
-            return CommandLineOptionConstants.LanguageNames.C_PLUS_PLUS;
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * We will accept the selection in the workbench to see if we can initialize
-     * from it.
-     * 
-     * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
-     */
-    public void init(IWorkbench workbench, IStructuredSelection selection) {
-        this.selection = selection;
-    }
-
-    private WSDLDescription getWOM(String wsdlLocation) throws WSDLException,
-            IOException {
-        InputStream in = new FileInputStream(new File(wsdlLocation));
-        return WOMBuilderFactory.getBuilder(WOMBuilderFactory.WSDL11).build(in);
-    }
-
-    private String[] getStringArray(String value) {
-        String[] values = new String[1];
-        values[0] = value;
-        return values;
-    }
+
+            monitor.done();
+         }
+      };
+
+
+      /*
+       * Start the generation as new Workbench Operation, so the user
+       * can see the progress and, if needed, can stop the operation.
+       */
+      try
+      {
+         getContainer().run(false, true, op);
+      }
+      catch (InvocationTargetException e1)
+      {
+         e1.printStackTrace();
+      }
+      catch (InterruptedException e1)
+      {
+         /*
+          * Thrown when the user aborts the progress
+          */
+         e1.printStackTrace();
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+
+   /**
+    * Creates a list of parameters for the code generator based on the decisions made by the user on the OptionsPage
+    * (page2). For each setting, there is a Command-Line option for the Axis2 code generator.
+    * 
+    * @return a Map with keys from CommandLineOptionConstants with the values entered by the user on the Options Page.
+    */
+   private Map fillOptionMap()
+   {
+      Map optionMap = new HashMap();
+
+      optionMap.put(CommandLineOptionConstants.WSDL_LOCATION_URI_OPTION, new CommandLineOption(
+         CommandLineOptionConstants.WSDL_LOCATION_URI_OPTION, getStringArray(page1.getFileName())));
+
+      if (page2.isAsyncOnlyOn())
+      {
+         optionMap.put(CommandLineOptionConstants.CODEGEN_ASYNC_ONLY_OPTION, new CommandLineOption(
+            CommandLineOptionConstants.CODEGEN_ASYNC_ONLY_OPTION, new String[0]));
+      }
+      if (page2.isSyncOnlyOn())
+      {
+         optionMap.put(CommandLineOptionConstants.CODEGEN_SYNC_ONLY_OPTION, new CommandLineOption(
+            CommandLineOptionConstants.CODEGEN_SYNC_ONLY_OPTION, new String[0]));
+      }
+      optionMap.put(CommandLineOptionConstants.PACKAGE_OPTION, new CommandLineOption(
+         CommandLineOptionConstants.PACKAGE_OPTION, getStringArray(page2.getPackageName())));
+      optionMap.put(CommandLineOptionConstants.STUB_LANGUAGE_OPTION, new CommandLineOption(
+         CommandLineOptionConstants.STUB_LANGUAGE_OPTION, getStringArray(mapLanguagesWithCombo(page2
+            .getSelectedLanguage()))));
+      optionMap.put(CommandLineOptionConstants.OUTPUT_LOCATION_OPTION, new CommandLineOption(
+         CommandLineOptionConstants.OUTPUT_LOCATION_OPTION, getStringArray(page3.getOutputLocation())));
+      if (page2.isServerside())
+      {
+         optionMap.put(CommandLineOptionConstants.SERVER_SIDE_CODE_OPTION, new CommandLineOption(
+            CommandLineOptionConstants.SERVER_SIDE_CODE_OPTION, new String[0]));
+
+         if (page2.isServerXML())
+         {
+            optionMap.put(CommandLineOptionConstants.GENERATE_SERVICE_DESCRIPTION_OPTION, new CommandLineOption(
+               CommandLineOptionConstants.GENERATE_SERVICE_DESCRIPTION_OPTION, new String[0]));
+         }
+      }
+      if (page2.isGenerateTestCase())
+      {
+         optionMap.put(CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION, new CommandLineOption(
+            CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION, new String[0]));
+      }
+      // System.out.println(page3.getOutputLocation());
+      return optionMap;
+   }
+
+   /**
+    * Maps a string containing the name of a language to a constant defined in CommandLineOptionConstants.LanguageNames
+    * 
+    * @param UILangValue a string containg a language, e.g. "java", "cs", "cpp" or "vb"
+    * @return a normalized string constant
+    */
+   private String mapLanguagesWithCombo(String UILangValue)
+   {
+      if (UIConstants.JAVA.equals(UILangValue))
+      {
+         return CommandLineOptionConstants.LanguageNames.JAVA;
+      }
+      else if (UIConstants.C_SHARP.equals(UILangValue))
+      {
+         return CommandLineOptionConstants.LanguageNames.C_SHARP;
+      }
+      else if (UIConstants.C_PLUS_PLUS.equals(UILangValue))
+      {
+         return CommandLineOptionConstants.LanguageNames.C_PLUS_PLUS;
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   /**
+    * We will accept the selection in the workbench to see if we can initialize from it.
+    * 
+    * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
+    */
+   public void init(IWorkbench workbench, IStructuredSelection selection)
+   {
+      this.selection = selection;
+   }
+
+   /**
+    * Reads the WSDL Object Model from the given location.
+    * 
+    * @param wsdlLocation the filesystem location (full path) of the WSDL file to read in.
+    * @return the WSDLDescription object containing the WSDL Object Model of the given WSDL file
+    * @throws WSDLException when WSDL File is invalid
+    * @throws IOException on errors reading the WSDL file
+    */
+   private WSDLDescription getWOM(String wsdlLocation) throws WSDLException, IOException
+   {
+      InputStream in = new FileInputStream(new File(wsdlLocation));
+      return WOMBuilderFactory.getBuilder(WOMBuilderFactory.WSDL11).build(in);
+   }
+
+   /**
+    * Converts a single String into a String Array
+    * 
+    * @param value a single string
+    * @return an array containing only one element
+    */
+   private String[] getStringArray(String value)
+   {
+      String[] values = new String[1];
+      values[0] = value;
+      return values;
+   }
 }

Modified: webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OptionsPage.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OptionsPage.java?rev=190352&r1=190351&r2=190352&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OptionsPage.java (original)
+++ webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OptionsPage.java Sun Jun 12 22:09:30 2005
@@ -1,25 +1,26 @@
 /*
  * Copyright 2004,2005 The Apache Software Foundation.
  * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
  * 
  * http://www.apache.org/licenses/LICENSE-2.0
  * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
  */
+
 package org.apache.axis.tool.codegen.eclipse.ui;
 
 import org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
 import org.apache.axis.tool.codegen.eclipse.util.UIConstants;
 import org.apache.axis.wsdl.util.URLProcessor;
+import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
@@ -30,191 +31,415 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
-public class OptionsPage extends WizardPage implements UIConstants {
-
-    private Combo languageSelectionComboBox;
-
-    private Button syncAndAsyncRadioButton;
-
-    private Button syncOnlyRadioButton;
-
-    private Button asyncOnlyRadioButton;
-
-    private Text packageText;
-
-    private Button serverSideCheckBoxButton;
-    
-    private Button testCaseCheckBoxButton;
-
-    private Button serverXMLCheckBoxButton;
-
-    /**
-     * @param pageName
-     */
-    public OptionsPage() {
-        super(CodegenWizardPlugin.getResourceString("page2.name"));
-        setTitle(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page2.title"));
-        setDescription(CodegenWizardPlugin.getResourceString("page2.desc"));
-        setImageDescriptor(CodegenWizardPlugin.getWizardImageDescriptor());
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-     */
-    public void createControl(Composite parent) {
-
-        Composite container = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        container.setLayout(layout);
-        layout.numColumns = 3;
-        layout.verticalSpacing = 9;
-
-        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalSpan = 2;
-
-        Label label = new Label(container, SWT.NULL);
-        label.setText(CodegenWizardPlugin
-                .getResourceString("page2.language.caption"));
-
-        languageSelectionComboBox = new Combo(container, SWT.DROP_DOWN
-                | SWT.BORDER | SWT.READ_ONLY);
-        //fill the combo
-        this.fillLanguageCombo();
-        languageSelectionComboBox.setLayoutData(gd);
-
-        syncAndAsyncRadioButton = new Button(container, SWT.RADIO);
-        syncAndAsyncRadioButton.setText(CodegenWizardPlugin
-                .getResourceString("page2.syncAsync.caption"));
-        syncAndAsyncRadioButton.setSelection(true);
-
-        syncOnlyRadioButton = new Button(container, SWT.RADIO);
-        syncOnlyRadioButton.setText(CodegenWizardPlugin
-                .getResourceString("page2.sync.caption"));
-
-        asyncOnlyRadioButton = new Button(container, SWT.RADIO);
-        asyncOnlyRadioButton.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
-                .getResourceString("page2.async.caption"));
-
-        label = new Label(container, SWT.NULL);
-        label.setText(CodegenWizardPlugin
-                .getResourceString("page2.package.caption"));
-
-        packageText = new Text(container, SWT.BORDER);
-        gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalSpan = 2;
-
-        packageText.setLayoutData(gd);
-        packageText.setText(URLProcessor.getNameSpaceFromURL(""));//get this text from the URLProcessor
-        
-        
-        gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalSpan = 3;
-        testCaseCheckBoxButton = new Button(container, SWT.CHECK);
-        testCaseCheckBoxButton.setLayoutData(gd);
-        testCaseCheckBoxButton.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
-                .getResourceString("page2.testcase.caption"));
-        
-        
-        
-        
-        serverSideCheckBoxButton = new Button(container, SWT.CHECK);
-        serverSideCheckBoxButton.setText(CodegenWizardPlugin
-                .getResourceString("page2.serverside.caption"));
-        serverSideCheckBoxButton.addSelectionListener(new SelectionListener() {
-            public void widgetSelected(SelectionEvent e) {
-                handleServersideSelection();
-            }
-
-            public void widgetDefaultSelected(SelectionEvent e) {
-            }
-        });
-
-        serverXMLCheckBoxButton = new Button(container, SWT.CHECK);
-        serverXMLCheckBoxButton.setText(CodegenWizardPlugin
-                .getResourceString("page2.serviceXML.caption"));
-        serverXMLCheckBoxButton.setEnabled(false);
-
-        setControl(container);
-        setPageComplete(true);
-
-    }
-
-    /**
-     * Fill the combo with proper language names
-     *  
-     */
-    private void fillLanguageCombo() {
-
-        languageSelectionComboBox.add(JAVA);
-        languageSelectionComboBox.add(C_SHARP);
-        languageSelectionComboBox.add(C_PLUS_PLUS);
-
-        languageSelectionComboBox.setText(languageSelectionComboBox.getItem(0));
-    }
-
-    private void handleServersideSelection() {
-        if (this.serverSideCheckBoxButton.getSelection()) {
-            this.serverXMLCheckBoxButton.setEnabled(true);
-        } else {
-            this.serverXMLCheckBoxButton.setEnabled(false);
-        }
-    }
-
-    /**
-     * Get the selected language
-     * 
-     * @return
-     */
-    public String getSelectedLanguage() {
-        return languageSelectionComboBox.getItem(languageSelectionComboBox
-                .getSelectionIndex());
-    }
-
-    /**
-     * the async only status
-     * 
-     * @return
-     */
-    public boolean isAsyncOnlyOn() {
-        return asyncOnlyRadioButton.getSelection();
-    }
-
-    /**
-     * the sync only status
-     * 
-     * @return
-     */
-    public boolean isSyncOnlyOn() {
-        return syncOnlyRadioButton.getSelection();
-    }
-
-    /**
-     * return the package name
-     * 
-     * @return
-     */
-    public String getPackageName() {
-        return this.packageText.getText();
-    }
-
-    /**
-     * The serverside status
-     * @return
-     */
-    public boolean isServerside() {
-        return this.serverSideCheckBoxButton.getSelection();
-    }
-
-    public boolean isServerXML() {
-        if (this.serverXMLCheckBoxButton.isEnabled())
-            return this.serverXMLCheckBoxButton.getSelection();
-        else
-            return false;
-    }
-    public boolean isGenerateTestCase(){
-        return this.testCaseCheckBoxButton.getSelection();
-    }
+/**
+ * Options Page lets the user change general settings on the code generation. It is used in the CodegenWizardPlugin,
+ * CodeGenWizard.
+ * 
+ */
+public class OptionsPage extends WizardPage implements UIConstants
+{
+   /**
+    * Position in the combox for choosing the target programming language. Default is 0
+    */
+   private static final String PREF_LANGUAGE_INDEX = "PREF_LANGUAGE_INDEX";
+
+   /**
+    * Three radio buttons: Generate Code for Sync calls, Async and Both. Both is default.
+    */
+   private static final String PREF_RADIO_SYNC_AND_ASYNC = "PREF_RADIO_SYNC_AND_ASYNC";
+
+   /**
+    * Three radio buttons: Generate Code for Sync calls, Async and Both. Both is default.
+    */
+   private static final String PREF_RADIO_SYNC_ONLY = "PREF_RADIO_SYNC_ONLY";
+
+   /**
+    * Three radio buttons: Generate Code for Sync calls, Async and Both. Both is default.
+    */
+   private static final String PREF_RADIO_ASYNC_ONLY = "PREF_RADIO_ASYNC_ONLY";
+
+   /**
+    * Specifies the full qualified package name for the generated source code.
+    */
+   private static final String PREF_PACKAGE_NAME = "PREF_PACKAGE_NAME";
+
+   /**
+    * A boolean value whether JUnit test classes are generated or not.
+    */
+   private static final String PREF_CHECK_GENERATE_TESTCASE = "PREF_CHECK_GENERATE_TESTCASE";
+
+   /**
+    * A boolean value whether the server-side skeletons are generated or not
+    */
+   private static final String PREF_CHECK_GENERATE_SERVERSIDE = "PREF_CHECK_GENERATE_SERVERSIDE";
+
+   /**
+    * A boolean value whether the server-side configuration file for Axis2 (server.xml) will be generated or not.
+    */
+   private static final String PREF_CHECK_GENERATE_SERVERCONFIG = "PREF_CHECK_GENERATE_SERVERCONFIG";
+
+   /**
+    * Selection list for target languages
+    */
+   private Combo languageSelectionComboBox;
+
+   /**
+    * A radio button to enable/disable code generation for synchronous and asynchronous calls.
+    */
+   private Button syncAndAsyncRadioButton;
+
+   /**
+    * A radio button to choose "synchronous only" code generation
+    */
+   private Button syncOnlyRadioButton;
+
+   /**
+    * A radio button to choose "asynchronous only" code generation
+    */
+   private Button asyncOnlyRadioButton;
+
+   /**
+    * Label holding the full qualified package name for generated code
+    */
+   private Text packageText;
+
+   /**
+    * Checkbox to enable server-side skeleton code generation. If enabled, generates an empty implementation of the
+    * service
+    */
+   private Button serverSideCheckBoxButton;
+
+   /**
+    * Checkbox to enable the generation of test case classes for the generated implementation of the webservice.
+    */
+   private Button testCaseCheckBoxButton;
+
+   /**
+    * Checkbox to enable the generation of a default server.xml configuration file
+    */
+   private Button serverXMLCheckBoxButton;
+
+   /**
+    * Saves the settings in the plugin's default store, so the user doesn't have to type them in all over again next
+    * time he uses the wizard
+    */
+   private IDialogSettings settings;
+
+   /**
+    * Creates the page and initialize some settings
+    */
+   public OptionsPage()
+   {
+      super(CodegenWizardPlugin.getResourceString("page2.name"));
+      setTitle(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page2.title"));
+      setDescription(CodegenWizardPlugin.getResourceString("page2.desc"));
+      setImageDescriptor(CodegenWizardPlugin.getWizardImageDescriptor());
+
+      /*
+       * Get the settings for this page. If there is no section in the Plugin's settings for this OptionsPage, create a
+       * new section
+       */
+      IDialogSettings rootSettings = CodegenWizardPlugin.getDefault().getDialogSettings();
+      IDialogSettings section = rootSettings.getSection(this.getClass().getName());
+      if (section == null)
+      {
+         settings = rootSettings.addNewSection(this.getClass().getName());
+         initializeDefaultSettings();
+      }
+      else
+      {
+         settings = section;
+      }
+   }
+
+   /**
+    * Sets the default values for the Options page
+    * 
+    * @param settings2 the settings store to save the values to
+    */
+   private void initializeDefaultSettings()
+   {
+      settings.put(OptionsPage.PREF_CHECK_GENERATE_SERVERCONFIG, false);
+      settings.put(OptionsPage.PREF_CHECK_GENERATE_SERVERSIDE, false);
+      settings.put(OptionsPage.PREF_CHECK_GENERATE_TESTCASE, false);
+      settings.put(OptionsPage.PREF_LANGUAGE_INDEX, 0);
+      settings.put(OptionsPage.PREF_PACKAGE_NAME, "org.example.webservice");
+      settings.put(OptionsPage.PREF_RADIO_ASYNC_ONLY, false);
+      settings.put(OptionsPage.PREF_RADIO_SYNC_AND_ASYNC, true);
+      settings.put(OptionsPage.PREF_RADIO_SYNC_ONLY, false);
+   }
+
+   /*
+    * (non-Javadoc)
+    * 
+    * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+    */
+   public void createControl(Composite parent)
+   {
+
+      Composite container = new Composite(parent, SWT.NULL);
+      GridLayout layout = new GridLayout();
+      container.setLayout(layout);
+      layout.numColumns = 3;
+      layout.verticalSpacing = 9;
+
+      GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+      gd.horizontalSpan = 2;
+
+      Label label = new Label(container, SWT.NULL);
+      label.setText(CodegenWizardPlugin.getResourceString("page2.language.caption"));
+
+      languageSelectionComboBox = new Combo(container, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+      // fill the combo
+      this.fillLanguageCombo();
+      languageSelectionComboBox.setLayoutData(gd);
+      languageSelectionComboBox.select(settings.getInt(PREF_LANGUAGE_INDEX));
+      languageSelectionComboBox.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            settings.put(PREF_LANGUAGE_INDEX, languageSelectionComboBox.getSelectionIndex());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      syncAndAsyncRadioButton = new Button(container, SWT.RADIO);
+      syncAndAsyncRadioButton.setText(CodegenWizardPlugin.getResourceString("page2.syncAsync.caption"));
+      syncAndAsyncRadioButton.setSelection(settings.getBoolean(PREF_RADIO_SYNC_AND_ASYNC));
+      syncAndAsyncRadioButton.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            settings.put(PREF_RADIO_SYNC_AND_ASYNC, syncAndAsyncRadioButton.getSelection());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      syncOnlyRadioButton = new Button(container, SWT.RADIO);
+      syncOnlyRadioButton.setText(CodegenWizardPlugin.getResourceString("page2.sync.caption"));
+      syncOnlyRadioButton.setSelection(settings.getBoolean(PREF_RADIO_SYNC_ONLY));
+      syncOnlyRadioButton.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            settings.put(PREF_RADIO_SYNC_ONLY, syncOnlyRadioButton.getSelection());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      asyncOnlyRadioButton = new Button(container, SWT.RADIO);
+      asyncOnlyRadioButton.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+         .getResourceString("page2.async.caption"));
+      asyncOnlyRadioButton.setSelection(settings.getBoolean(PREF_RADIO_ASYNC_ONLY));
+      asyncOnlyRadioButton.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            settings.put(PREF_RADIO_ASYNC_ONLY, asyncOnlyRadioButton.getSelection());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      label = new Label(container, SWT.NULL);
+      label.setText(CodegenWizardPlugin.getResourceString("page2.package.caption"));
+
+      packageText = new Text(container, SWT.BORDER);
+      gd = new GridData(GridData.FILL_HORIZONTAL);
+      gd.horizontalSpan = 2;
+
+      packageText.setLayoutData(gd);
+      String packageName;
+      String storedPackageName = settings.get(PREF_PACKAGE_NAME);
+      if (storedPackageName.equals(""))
+      {
+         packageName = URLProcessor.getNameSpaceFromURL("");
+      }
+      else
+      {
+         packageName = storedPackageName;
+      }
+      packageText.setText(packageName); // get this text from the URLProcessor
+      packageText.addModifyListener(new ModifyListener()
+      {
+         public void modifyText(ModifyEvent e)
+         {
+            settings.put(PREF_PACKAGE_NAME, packageText.getText());
+         }
+      });
+
+
+      gd = new GridData(GridData.FILL_HORIZONTAL);
+      gd.horizontalSpan = 3;
+      testCaseCheckBoxButton = new Button(container, SWT.CHECK);
+      testCaseCheckBoxButton.setLayoutData(gd);
+      testCaseCheckBoxButton.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+         .getResourceString("page2.testcase.caption"));
+      testCaseCheckBoxButton.setSelection(settings.getBoolean(PREF_CHECK_GENERATE_TESTCASE));
+      testCaseCheckBoxButton.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            settings.put(PREF_CHECK_GENERATE_TESTCASE, testCaseCheckBoxButton.getEnabled());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      serverSideCheckBoxButton = new Button(container, SWT.CHECK);
+      serverSideCheckBoxButton.setText(CodegenWizardPlugin.getResourceString("page2.serverside.caption"));
+      serverSideCheckBoxButton.setSelection(settings.getBoolean(PREF_CHECK_GENERATE_SERVERSIDE));
+      serverSideCheckBoxButton.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            handleServersideSelection();
+            settings.put(PREF_CHECK_GENERATE_SERVERSIDE, serverSideCheckBoxButton.getEnabled());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      serverXMLCheckBoxButton = new Button(container, SWT.CHECK);
+      serverXMLCheckBoxButton.setSelection(settings.getBoolean(PREF_CHECK_GENERATE_SERVERCONFIG));
+      serverXMLCheckBoxButton.setText(CodegenWizardPlugin.getResourceString("page2.serviceXML.caption"));
+      serverXMLCheckBoxButton.addSelectionListener(new SelectionListener()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            settings.put(PREF_CHECK_GENERATE_SERVERCONFIG, serverXMLCheckBoxButton.getEnabled());
+         }
+
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+         }
+      });
+
+      /*
+       * Check the state of server-side selection, so we can enable/disable
+       * the serverXML checkbox button.
+       */
+      handleServersideSelection();
+
+      
+      setControl(container);
+      setPageComplete(true);
+
+   }
+
+   /**
+    * Fill the combo with proper language names
+    * 
+    */
+   private void fillLanguageCombo()
+   {
+
+      languageSelectionComboBox.add(JAVA);
+      languageSelectionComboBox.add(C_SHARP);
+      languageSelectionComboBox.add(C_PLUS_PLUS);
+
+      languageSelectionComboBox.select(0);
+   }
+
+   /**
+    * Validates the status of the server-side checkbox, and enables/disables
+    * the generation checkbox for XML configuration file
+    */
+   private void handleServersideSelection()
+   {
+      if (this.serverSideCheckBoxButton.getSelection())
+      {
+         this.serverXMLCheckBoxButton.setEnabled(true);
+      }
+      else
+      {
+         this.serverXMLCheckBoxButton.setEnabled(false);
+      }
+   }
+
+   /**
+    * Get the selected language
+    * 
+    * @return a string containing the name of the target language
+    */
+   public String getSelectedLanguage()
+   {
+      return languageSelectionComboBox.getItem(languageSelectionComboBox.getSelectionIndex());
+   }
+
+   /**
+    * the async only status
+    * 
+    * @return true if "Generate asynchronous code only" is checked
+    */
+   public boolean isAsyncOnlyOn()
+   {
+      return asyncOnlyRadioButton.getSelection();
+   }
+
+   /**
+    * the sync only status
+    * 
+    * @return true if "Generate synchronous code only" is checked
+    */
+   public boolean isSyncOnlyOn()
+   {
+      return syncOnlyRadioButton.getSelection();
+   }
+
+   /**
+    * return the package name
+    * 
+    * @return a string containing the package name to use for code generation
+    */
+   public String getPackageName()
+   {
+      return this.packageText.getText();
+   }
+
+   /**
+    * The serverside status
+    * 
+    * @return true if "Generate Server-Side" is checked
+    */
+   public boolean isServerside()
+   {
+      return this.serverSideCheckBoxButton.getSelection();
+   }
+
+   /**
+    * 
+    * @return true if "Generate XML configuration file" is checked
+    */
+   public boolean isServerXML()
+   {
+      if (this.serverXMLCheckBoxButton.isEnabled())
+         return this.serverXMLCheckBoxButton.getSelection();
+      else
+         return false;
+   }
+
+   /**
+    * 
+    * @return true if "Generate test case" is checked
+    */
+   public boolean isGenerateTestCase()
+   {
+      return this.testCaseCheckBoxButton.getSelection();
+   }
 }

Modified: webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OutputPage.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OutputPage.java?rev=190352&r1=190351&r2=190352&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OutputPage.java (original)
+++ webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/OutputPage.java Sun Jun 12 22:09:30 2005
@@ -1,23 +1,22 @@
 /*
  * Copyright 2004,2005 The Apache Software Foundation.
  * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
  * 
  * http://www.apache.org/licenses/LICENSE-2.0
  * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
  */
+
 package org.apache.axis.tool.codegen.eclipse.ui;
 
 import org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
@@ -33,122 +32,184 @@
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.dialogs.ContainerSelectionDialog;
 
-public class OutputPage extends WizardPage {
-    private Text outputLocation;
-    private Button browseButton;
-    private Button locationSelectCheckBox;
-
-    /**
-     * @param pageName
-     */
-    public OutputPage() {
-        super(CodegenWizardPlugin.getResourceString("page3.name"));
-        setTitle(CodegenWizardPlugin.getResourceString("page3.title"));
-        setDescription(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page3.desc"));
-        setImageDescriptor(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getWizardImageDescriptor());
-        //set the page complete status to false at initilaization
-        setPageComplete(false);
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-     */
-    public void createControl(Composite parent) {
-        Composite container = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        container.setLayout(layout);
-        layout.numColumns = 3;
-        layout.verticalSpacing = 9;
-
-        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-        Label label = new Label(container, SWT.NULL);
-        label.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
-                .getResourceString("page3.output.caption"));
-
-        outputLocation = new Text(container, SWT.BORDER);
-        outputLocation.setLayoutData(gd);
-        outputLocation.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                handleModifyEvent();
-            }
-        });
-
-        browseButton = new Button(container, SWT.PUSH);
-        browseButton.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
-                .getResourceString("page3.outselection.browse"));
-        browseButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                handleBrowse();
-            }
-        });
-
-//        locationSelectCheckBox = new Button(container, SWT.CHECK);
-//        locationSelectCheckBox.setText("Workspace projects only");
-
-        setControl(container);
-        
-
-    }
-    
-    /**
-     * get the output location
-     * @return
-     */
-    public String getOutputLocation() {
-        return outputLocation.getText();
-    }
-
-    /**
-     * Worker method for handling modifications to the 
-     * textbox
-     *
-     */
-    private void handleModifyEvent() {
-        String text = this.outputLocation.getText();
-        if ((text == null) || (text.trim().equals(""))) {
-            updateStatus(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
-                    .getResourceString("page3.error.nolocation"));
-            return;
-        }
-        updateStatus(null);
-    }
-
-    /**
-     * Updates the wizard page error messages
-     * @param message
-     */
-    private void updateStatus(String message) {
-        setErrorMessage(message);
-        setPageComplete(message == null);
-    }
-
-    /**
-     * Handle the browse button events
-     *
-     */
-    private void handleBrowse() {
-        boolean location = false;//locationSelectCheckBox.getSelection();
-        if (!location) {
-            DirectoryDialog dialog = new DirectoryDialog(this.getShell());
-            String returnString = dialog.open();
-            if (returnString != null) {
-                outputLocation.setText(returnString);
+public class OutputPage extends WizardPage
+{
+   /**
+    * The key to store the output location in the settings
+    * 
+    */
+   private static final String PREF_OUTPUT_LOCATION = "PREF_OUTPUT_LOCATION";
+   private Text outputLocation;
+   private Button browseButton;
+   private Button locationSelectCheckBox;
+   
+   /**
+    * The dialog settings of this page, which are stored in the plugin's meta
+    * folder.
+    */
+   private IDialogSettings settings;
+
+   /**
+    * 
+    */
+   public OutputPage()
+   {
+      super(CodegenWizardPlugin.getResourceString("page3.name"));
+      setTitle(CodegenWizardPlugin.getResourceString("page3.title"));
+      setDescription(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page3.desc"));
+      setImageDescriptor(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getWizardImageDescriptor());
+      // set the page complete status to false at initilaization
+      setPageComplete(false);
+
+      /*
+       * Get the settings for this page. If there is no section in the Plugin's settings for this OptionsPage, create a
+       * new section
+       */
+      IDialogSettings rootSettings = CodegenWizardPlugin.getDefault().getDialogSettings();
+      IDialogSettings section = rootSettings.getSection(this.getClass().getName());
+      if (section == null)
+      {
+         settings = rootSettings.addNewSection(this.getClass().getName());
+         initializeDefaultSettings();
+      }
+      else
+      {
+         settings = section;
+      }
+
+
+   }
+
+
+   /**
+    * Creates some initial values for the settings. On the output page, this
+    * is not very much.
+    */
+   private void initializeDefaultSettings()
+   {
+      settings.put(PREF_OUTPUT_LOCATION,"");
+   }
+
+   /*
+    * (non-Javadoc)
+    * 
+    * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+    */
+   public void createControl(Composite parent)
+   {
+      Composite container = new Composite(parent, SWT.NULL);
+      GridLayout layout = new GridLayout();
+      container.setLayout(layout);
+      layout.numColumns = 3;
+      layout.verticalSpacing = 9;
+      
+      GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+      Label label = new Label(container, SWT.NULL);
+      label.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+         .getResourceString("page3.output.caption"));
+
+      outputLocation = new Text(container, SWT.BORDER);
+      outputLocation.setLayoutData(gd);
+      outputLocation.setText(settings.get(PREF_OUTPUT_LOCATION));
+      outputLocation.addModifyListener(new ModifyListener()
+      {
+         public void modifyText(ModifyEvent e)
+         {
+            settings.put(PREF_OUTPUT_LOCATION,outputLocation.getText());
+            handleModifyEvent();
+         }
+      });
+
+      browseButton = new Button(container, SWT.PUSH);
+      browseButton.setText(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+         .getResourceString("page3.outselection.browse"));
+      browseButton.addSelectionListener(new SelectionAdapter()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            handleBrowse();
+         }
+      });
+
+      // locationSelectCheckBox = new Button(container, SWT.CHECK);
+      // locationSelectCheckBox.setText("Workspace projects only");
+
+      setControl(container);
+      
+      /*
+       * Update the buttons, because we could have get a valid path from
+       * the settings store.
+       */
+      handleModifyEvent();
+   }
+
+   /**
+    * get the output location
+    * 
+    * @return a string containing the full pathname of the output location
+    */
+   public String getOutputLocation()
+   {
+      return outputLocation.getText();
+   }
+
+   /**
+    * Worker method for handling modifications to the textbox
+    * 
+    */
+   private void handleModifyEvent()
+   {
+      String text = this.outputLocation.getText();
+      if ((text == null) || (text.trim().equals("")))
+      {
+         updateStatus(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+            .getResourceString("page3.error.nolocation"));
+         return;
+      }
+      updateStatus(null);
+   }
+
+   /**
+    * Updates the wizard page error messages
+    * 
+    * @param message an error message to display in the dialog
+    */
+   private void updateStatus(String message)
+   {
+      setErrorMessage(message);
+      setPageComplete(message == null);
+   }
+
+   /**
+    * Handle the browse button events: opens a dialog where the user
+    * can choose an external directory location
+    * 
+    */
+   private void handleBrowse()
+   {
+      boolean location = false;// locationSelectCheckBox.getSelection();
+      if (!location)
+      {
+         DirectoryDialog dialog = new DirectoryDialog(this.getShell());
+         String returnString = dialog.open();
+         if (returnString != null)
+         {
+            outputLocation.setText(returnString);
+         }
+      }
+      else
+      {
+         ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), ResourcesPlugin.getWorkspace()
+            .getRoot(), false, org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+            .getResourceString("page3.containerbox.title"));
+         if (dialog.open() == ContainerSelectionDialog.OK)
+         {
+            Object[] result = dialog.getResult();
+            if (result.length == 1)
+            {
+               outputLocation.setText(((Path) result[0]).toOSString());
             }
-        } else {
-            ContainerSelectionDialog dialog =
-    			new ContainerSelectionDialog(
-    				getShell(),
-    				ResourcesPlugin.getWorkspace().getRoot(),
-    				false,
-    				org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page3.containerbox.title"));
-    		if (dialog.open() == ContainerSelectionDialog.OK) {
-    			Object[] result = dialog.getResult();
-    			if (result.length == 1) {
-    				outputLocation.setText(((Path)result[0]).toOSString());
-    			}
-    		}
-        }
-    }
+         }
+      }
+   }
 }

Modified: webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java?rev=190352&r1=190351&r2=190352&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java (original)
+++ webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java Sun Jun 12 22:09:30 2005
@@ -1,7 +1,9 @@
+
 package org.apache.axis.tool.codegen.eclipse.ui;
 
 import org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
 import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
@@ -18,112 +20,169 @@
 import org.eclipse.swt.widgets.Text;
 
 /**
- * The first page of the code generator wizrad. 
- * Asks for the WSDL file Name
+ * The first page of the code generator wizrad. Asks for the WSDL file Name
  */
 
-public class WSDLFileSelectionPage extends WizardPage {
-	
-	private Text fileText;
-	private ISelection selection;
-
-	/**
-	 * 
-	 * @param pageName
-	 */
-	public WSDLFileSelectionPage(ISelection selection) {
-		super(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page1.name"));
-		setTitle(CodegenWizardPlugin.getResourceString("page1.title"));
-		setDescription(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page1.desc"));
-		this.selection = selection;
-		setImageDescriptor(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getWizardImageDescriptor());
-		//set the page complete status to false at initiation 
-		setPageComplete(false);
-	}
-
-	/**
-	 * @see IDialogPage#createControl(Composite)
-	 */
-	public void createControl(Composite parent) {
-	    
-		Composite container = new Composite(parent, SWT.NULL);
-		GridLayout layout = new GridLayout();
-		container.setLayout(layout);
-		layout.numColumns = 3;
-		layout.verticalSpacing = 9;
-
-		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-		Label label = new Label(container, SWT.NULL);
-		label.setText(CodegenWizardPlugin.getResourceString("page1.fileselection.label"));
-
-		fileText = new Text(container, SWT.BORDER | SWT.SINGLE);
-		fileText.setLayoutData(gd);
-		fileText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				dialogChanged();
-			}
-		});
-		
-		Button button = new Button(container, SWT.PUSH);
-		button.setText(CodegenWizardPlugin.getResourceString("page1.fileselection.browse"));
-		button.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				handleBrowse();
-			}
-		});
-		setControl(container);
-	}
-	
-	/**
-	 * Handle the dialog change event. Basically evaluates the file name
-	 * and sets the error message accordingly 
-	 */
-	private void dialogChanged() {
-	    
-	    String fileName = getFileName();
-	    
-	    if (fileName.length() == 0) {
-			updateStatus(CodegenWizardPlugin.getResourceString("page1.error.filemissingerror"));
-			return;
-		}
-	    
-		if (!fileName.matches(".*\\.wsdl")){
-				updateStatus(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page1.error.wrongextension"));
-				return;
-		 }
-		 
-	    updateStatus(null);
-	    
-	}
-	
-	/**
-	 * Pops up the file browse dialog box
-	 *
-	 */
-	private void handleBrowse(){
-	    FileDialog fileDialog = new FileDialog(this.getShell());
-	    fileDialog.setFilterExtensions(new String[]{"*.wsdl"});
-	    String fileName = fileDialog.open();
-	    if (fileName!=null){
-	        fileText.setText(fileName);
-	    }
-	   
-	}
-	
-	/**
-	 * Updates the wizard page messages
-	 * @param message
-	 */
-	private void updateStatus(String message) {
-		setErrorMessage(message);
-		setPageComplete(message == null);
-	}
-
-	/**
-	 * Get the file name
-	 * @return
-	 */
-	public String getFileName() {
-		return fileText.getText();
-	}
+public class WSDLFileSelectionPage extends WizardPage
+{
+
+   /**
+    * The key for storing the WSDL location in the dialog settings of the
+    * WSDLFileSelectionPage
+    */
+   private static final String PREF_WSDL_LOCATION = "PREF_WSDL_LOCATION";
+   private Text fileText;
+   private ISelection selection;
+   
+   /**
+    * The store where the settings are saved to, in the plugin meta folder.
+    */
+   private IDialogSettings settings;
+
+   /**
+    * 
+    * @param pageName
+    */
+   public WSDLFileSelectionPage(ISelection selection)
+   {
+      super(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page1.name"));
+      setTitle(CodegenWizardPlugin.getResourceString("page1.title"));
+      setDescription(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getResourceString("page1.desc"));
+      this.selection = selection;
+      setImageDescriptor(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin.getWizardImageDescriptor());
+      // set the page complete status to false at initiation
+      setPageComplete(false);
+
+      /*
+       * Get the settings for this page. If there is no section in the Plugin's settings for this OptionsPage, create a
+       * new section
+       */
+      IDialogSettings rootSettings = CodegenWizardPlugin.getDefault().getDialogSettings();
+      IDialogSettings section = rootSettings.getSection(this.getClass().getName());
+      if (section == null)
+      {
+         settings = rootSettings.addNewSection(this.getClass().getName());
+         initializeDefaultSettings();
+      }
+      else
+      {
+         settings = section;
+      }
+
+   }
+
+   /**
+    * Creates a default value for the settings on this page. For WSDLFileSelection, this is not very much.
+    */
+   private void initializeDefaultSettings()
+   {
+      settings.put(PREF_WSDL_LOCATION,"");
+   }
+
+   /**
+    * @see IDialogPage#createControl(Composite)
+    */
+   public void createControl(Composite parent)
+   {
+
+      Composite container = new Composite(parent, SWT.NULL);
+      GridLayout layout = new GridLayout();
+      container.setLayout(layout);
+      layout.numColumns = 3;
+      layout.verticalSpacing = 9;
+
+      GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+      Label label = new Label(container, SWT.NULL);
+      label.setText(CodegenWizardPlugin.getResourceString("page1.fileselection.label"));
+
+      fileText = new Text(container, SWT.BORDER | SWT.SINGLE);
+      fileText.setLayoutData(gd);
+      fileText.setText(settings.get(PREF_WSDL_LOCATION));
+      fileText.addModifyListener(new ModifyListener()
+      {
+         public void modifyText(ModifyEvent e)
+         {
+            settings.put(PREF_WSDL_LOCATION,fileText.getText());
+            dialogChanged();
+         }
+      });
+
+      Button button = new Button(container, SWT.PUSH);
+      button.setText(CodegenWizardPlugin.getResourceString("page1.fileselection.browse"));
+      button.addSelectionListener(new SelectionAdapter()
+      {
+         public void widgetSelected(SelectionEvent e)
+         {
+            handleBrowse();
+         }
+      });
+      setControl(container);
+      
+      /*
+       * Validate this dialog, because we could have got valid values from the
+       * settings already.
+       */
+      dialogChanged();
+   }
+
+   /**
+    * Handle the dialog change event. Basically evaluates the file name and sets the error message accordingly
+    */
+   private void dialogChanged()
+   {
+      String fileName = getFileName();
+
+      if (fileName.length() == 0)
+      {
+         updateStatus(CodegenWizardPlugin.getResourceString("page1.error.filemissingerror"));
+         return;
+      }
+
+      if (!fileName.matches(".*\\.wsdl"))
+      {
+         updateStatus(org.apache.axis.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+            .getResourceString("page1.error.wrongextension"));
+         return;
+      }
+
+      updateStatus(null);
+
+   }
+
+   /**
+    * Pops up the file browse dialog box
+    * 
+    */
+   private void handleBrowse()
+   {
+      FileDialog fileDialog = new FileDialog(this.getShell());
+      fileDialog.setFilterExtensions(new String[] {"*.wsdl"});
+      String fileName = fileDialog.open();
+      if (fileName != null)
+      {
+         fileText.setText(fileName);
+      }
+
+   }
+
+   /**
+    * Updates the wizard page messages
+    * 
+    * @param message
+    */
+   private void updateStatus(String message)
+   {
+      setErrorMessage(message);
+      setPageComplete(message == null);
+   }
+
+   /**
+    * Get the file name
+    * 
+    * @return
+    */
+   public String getFileName()
+   {
+      return fileText.getText();
+   }
 }

Modified: webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/resource/Codegen.properties
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/resource/Codegen.properties?rev=190352&r1=190351&r2=190352&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/resource/Codegen.properties (original)
+++ webservices/axis/trunk/java/modules/tool/src/org/apache/axis/tool/codegen/resource/Codegen.properties Sun Jun 12 22:09:30 2005
@@ -46,5 +46,7 @@
 #
 ##########################################################################
 #Wizard
+generator.generating=Generating code...
+generator.readingWOM=Reading WSDL file...
 #Success message
 wizard.success=Code generation successful!