Package org.springframework.ide.eclipse.webflow.ui.graph.dialogs

Source Code of org.springframework.ide.eclipse.webflow.ui.graph.dialogs.MappingEditorDialog

/*******************************************************************************
* Copyright (c) 2007, 2010 Spring IDE Developers
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Spring IDE Developers - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.webflow.ui.graph.dialogs;

import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.dialogs.TitleAreaDialog;
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.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.springframework.ide.eclipse.webflow.core.model.IMapping;
import org.springframework.ide.eclipse.webflow.ui.editor.outline.webflow.WebflowUIImages;

/**
* @author Christian Dupuis
*/
@SuppressWarnings("restriction")
public class MappingEditorDialog extends TitleAreaDialog implements
    IDialogValidator {

  /**
   *
   */
  private IMapping property;

  /**
   *
   */
  private SelectionListener buttonListener = new SelectionAdapter() {

    public void widgetSelected(SelectionEvent e) {
      handleButtonPressed((Button) e.widget);
    }
  };

  /**
   *
   */
  private Label sourceLabel;

  /**
   *
   */
  private Text sourceText;

  /**
   *
   */
  private Label targetLabel;

  /**
   *
   */
  private Text targetText;

  /**
   *
   */
  private Label targetCollectionLabel;

  /**
   *
   */
  private Text targetCollectionText;

  /**
   *
   */
  private Label fromLabel;

  /**
   *
   */
  private Text fromText;

  /**
   *
   */
  private Label toLabel;

  /**
   *
   */
  private Text toText;

  /**
   *
   */
  private Label requiredLabel;

  /**
   *
   */
  private Combo requiredText;

  /**
   *
   */
  private Button okButton;
 
  /**
   *
   */
  private Button fromBrowseType;

  /**
   *
   */
  private Button toBrowseType;

  /**
   *
   *
   * @param parentShell
   * @param state
   */
  public MappingEditorDialog(Shell parentShell, IMapping state) {
    super(parentShell);
    this.property = state;
  }

  /**
   *
   *
   * @param buttonId
   */
  protected void buttonPressed(int buttonId) {
    if (buttonId == IDialogConstants.OK_ID) {
      this.property.setSource(trimString(this.sourceText.getText()));
      this.property.setTarget(trimString(this.targetText.getText()));
      this.property
          .setTargetCollection(trimString(this.targetCollectionText
              .getText()));
      this.property.setFrom(trimString(this.fromText.getText()));
      this.property.setTo(trimString(this.toText.getText()));
      if (this.requiredText.getText() != null) {
        this.property.setRequired(Boolean
            .valueOf(trimString(this.requiredText.getText())));
      }
    }
    super.buttonPressed(buttonId);
  }

  /**
   *
   *
   * @param shell
   */
  protected void configureShell(Shell shell) {
    super.configureShell(shell);
    shell.setText(getShellTitle());
    shell.setImage(getImage());
  }

  /**
   *
   *
   * @param parent
   */
  protected void createButtonsForButtonBar(Composite parent) {
    // create OK and Cancel buttons by default
    okButton = createButton(parent, IDialogConstants.OK_ID,
        IDialogConstants.OK_LABEL, true);
    createButton(parent, IDialogConstants.CANCEL_ID,
        IDialogConstants.CANCEL_LABEL, false);
    // do this here because setting the text will set enablement on the
    // ok button
    sourceText.setFocus();
    if (this.property != null && this.property.getSource() != null) {
      okButton.setEnabled(true);
    }
    else {
      okButton.setEnabled(false);
    }

    this.validateInput();
  }

  /**
   *
   *
   * @param parent
   *
   * @return
   */
  protected Control createContents(Composite parent) {
    Control contents = super.createContents(parent);
    setTitle(getTitle());
    setMessage(getMessage());
    return contents;
  }

  /**
   *
   *
   * @param parent
   *
   * @return
   */
  protected Control createDialogArea(Composite parent) {
    Composite parentComposite = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(parentComposite, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    composite.setLayout(layout);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    Composite nameGroup = new Composite(composite, SWT.NULL);
    nameGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    GridLayout layout1 = new GridLayout();
    layout1.numColumns = 3;
    layout1.marginWidth = 5;
    nameGroup.setLayout(layout1);
    sourceLabel = new Label(nameGroup, SWT.NONE);
    sourceLabel.setText("Source");
    sourceText = new Text(nameGroup, SWT.SINGLE | SWT.BORDER);
    if (this.property != null && this.property.getSource() != null) {
      this.sourceText.setText(this.property.getSource());
    }
    sourceText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    sourceText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent e) {
        validateInput();
      }
    });

    new Label(nameGroup, SWT.NONE);

    targetLabel = new Label(nameGroup, SWT.NONE);
    targetLabel.setText("Target");
    targetText = new Text(nameGroup, SWT.SINGLE | SWT.BORDER);
    if (this.property != null && this.property.getTarget() != null) {
      this.targetText.setText(this.property.getTarget());
    }
    targetText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    targetText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent e) {
        validateInput();
      }
    });

    new Label(nameGroup, SWT.NONE);

    targetCollectionLabel = new Label(nameGroup, SWT.NONE);
    targetCollectionLabel.setText("Target Collection");
    targetCollectionText = new Text(nameGroup, SWT.SINGLE | SWT.BORDER);
    if (this.property != null && this.property.getTargetCollection() != null) {
      this.targetCollectionText.setText(this.property.getTargetCollection());
    }
    targetCollectionText.setLayoutData(new GridData(
        GridData.FILL_HORIZONTAL));
    targetCollectionText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent e) {
        validateInput();
      }
    });

    new Label(nameGroup, SWT.NONE);
   
    fromLabel = new Label(nameGroup, SWT.NONE);
    fromLabel.setText("From");
    fromText = new Text(nameGroup, SWT.SINGLE | SWT.BORDER);
    if (this.property != null && this.property.getFrom() != null) {
      this.fromText.setText(this.property.getFrom());
    }
    fromText.setLayoutData(new GridData(
        GridData.FILL_HORIZONTAL));
    fromText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent e) {
        validateInput();
      }
    });

    fromBrowseType = new Button(nameGroup, SWT.PUSH);
    fromBrowseType.setText("...");
    fromBrowseType.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
    fromBrowseType.addSelectionListener(buttonListener);

    toLabel = new Label(nameGroup, SWT.NONE);
    toLabel.setText("To");
    toText = new Text(nameGroup, SWT.SINGLE | SWT.BORDER);
    if (this.property != null && this.property.getTo() != null) {
      this.toText.setText(this.property.getTo());
    }
    toText.setLayoutData(new GridData(
        GridData.FILL_HORIZONTAL));
    toText.addModifyListener(new ModifyListener() {
     
      public void modifyText(ModifyEvent e) {
        validateInput();
      }
    });
   
    toBrowseType = new Button(nameGroup, SWT.PUSH);
    toBrowseType.setText("...");
    toBrowseType.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
    toBrowseType.addSelectionListener(buttonListener);

    requiredLabel = new Label(nameGroup, SWT.NONE);
    requiredLabel.setText("Required");
    requiredText = new Combo(nameGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    requiredText.setItems(new String[] { "", "true", "false" });
    if (this.property != null) {
      this.requiredText.setText(Boolean.toString(this.property
          .getRequired()));
    }
    requiredText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    requiredText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent e) {
        validateInput();
      }
    });
   
    new Label(nameGroup, SWT.NONE);
   
    applyDialogFont(parentComposite);

    return parentComposite;
  }

  /**
   *
   *
   * @return
   */
  public String getId() {
    return this.sourceText.getText();
  }

  /**
   *
   *
   * @return
   */
  protected Image getImage() {
    return WebflowUIImages.getImage(WebflowUIImages.IMG_OBJS_PROPERTIES);
  }

  /**
   *
   *
   * @return
   */
  public String getMessage() {
    return "Enter the details for the property";
  }

  /**
   *
   *
   * @return
   */
  protected String getShellTitle() {
    return "Property";
  }

  /**
   *
   *
   * @return
   */
  protected String getTitle() {
    return "Property properties";
  }

  /**
   * One of the buttons has been pressed, act accordingly.
   *
   * @param button
   */
  private void handleButtonPressed(Button button) {

    IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope();
    FilteredTypesSelectionDialog dialog = new FilteredTypesSelectionDialog(getShell(),
        false, new ProgressMonitorDialog(getShell()), searchScope,
        IJavaSearchConstants.CLASS);

    dialog.setMessage("Select an type"); //$NON-NLS-1$
    dialog.setBlockOnOpen(true);
    dialog.setTitle("Type Selection");
    // dialog.setFilter("*");
    if (Dialog.OK == dialog.open()) {
      IType obj = (IType) dialog.getFirstResult();
      this.requiredText.setText(obj.getFullyQualifiedName());
    }

    this.validateInput();

  }

  /**
   *
   *
   * @param error
   */
  protected void showError(String error) {
    super.setErrorMessage(error);
  }

  /**
   *
   *
   * @param string
   *
   * @return
   */
  public String trimString(String string) {
    if (string != null && string == "") {
      string = null;
    }
    return string;
  }

  /**
   *
   */
  public void validateInput() {
    String id = this.sourceText.getText();
    boolean error = false;
    StringBuffer errorMessage = new StringBuffer();

    if (id == null || "".equals(id)) {
      errorMessage.append("A valid name is required. ");
      error = true;
    }

    if (error) {
      getButton(OK).setEnabled(false);
      setErrorMessage(errorMessage.toString());
    }
    else {
      getButton(OK).setEnabled(true);
      setErrorMessage(null);
    }
  }
}
TOP

Related Classes of org.springframework.ide.eclipse.webflow.ui.graph.dialogs.MappingEditorDialog

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.