Package org.apache.axis2.tool.codegen.eclipse.ui

Source Code of org.apache.axis2.tool.codegen.eclipse.ui.OutputPage

/*
* 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
*
* 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.
*/

package org.apache.axis2.tool.codegen.eclipse.ui;

import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.ContainerSelectionDialog;

public class OutputPage extends AbstractWizardPage {

  private Text outputLocation;

  private Button browseButton;

  private Button locationSelectCheckBox;

  /**
   *
   */
  public OutputPage() {
    super("page3");
  }

  /**
   * Creates some initial values for the settings. On the output page, this is
   * not very much.
   */
  protected void initializeDefaultSettings() {
    settings.put(PREF_OUTPUT_LOCATION, "");
    settings.put(PREF_CHECK_BROWSE_PROJECTS, true);
  }

  /*
   * (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);

    locationSelectCheckBox = new Button(container, SWT.CHECK);
    locationSelectCheckBox.setText(CodegenWizardPlugin
        .getResourceString("page3.browseWorkspace.title"));
    gd.horizontalSpan = 3;
    locationSelectCheckBox.setLayoutData(gd);
    locationSelectCheckBox.setSelection(settings.getBoolean(PREF_CHECK_BROWSE_PROJECTS));
    locationSelectCheckBox.addSelectionListener(new SelectionListener() {
      public void widgetSelected(SelectionEvent e) {
        // in any case just wipe out whatever is in the text box
        outputLocation.setText("");
        settings.put(PREF_CHECK_BROWSE_PROJECTS, locationSelectCheckBox.getSelection());
      };

      public void widgetDefaultSelected(SelectionEvent e) {
      };
    });

    gd = new GridData(GridData.FILL_HORIZONTAL);
    Label label = new Label(container, SWT.NULL);
    label
        .setText(org.apache.axis2.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(CodegenWizardPlugin
            .getResourceString("page3.outselection.browse"));
    browseButton.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        handleBrowse();
      }
    });

    setControl(container);

    /*
     * Update the buttons, in case this was restored from an earlier setting
     */
    if (restoredFromPreviousSettings) {
      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.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
          .getResourceString("page3.error.nolocation"));
      return;
    }
    updateStatus(null);
  }

  /**
   * Handle the browse button events: opens a dialog where the user can choose
   * an external directory location
   *
   */
  private void handleBrowse() {
    boolean location = locationSelectCheckBox.getSelection();
    if (!location) {
      DirectoryDialog dialog = new DirectoryDialog(this.getShell());
      String returnString = dialog.open();
      if (returnString != null) {
        outputLocation.setText(returnString);
      }
    } else {
      IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
     
      ContainerSelectionDialog dialog = new ContainerSelectionDialog(
          getShell(),
          root,
          false,
          CodegenWizardPlugin
              .getResourceString("page3.containerbox.title"));
      if (dialog.open() == ContainerSelectionDialog.OK) {
        Object[] result = dialog.getResult();
        if (result.length == 1) {
          Path path = ((Path) result[0]);
          // append to the workspace path
          if (root.exists(path)) {
            outputLocation.setText(root.getLocation().append(path)
                .toFile().getAbsolutePath());
          }
        }
      }
    }

  }

  /*
   * (non-Javadoc)
   *
   * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
   */
  public int getPageType() {
    return WSDL_2_JAVA_TYPE;
  }
}
TOP

Related Classes of org.apache.axis2.tool.codegen.eclipse.ui.OutputPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.