Package org.objectstyle.wolips.eomodeler.actions

Source Code of org.objectstyle.wolips.eomodeler.actions.GenerateMigrationDialog$CloseHandler

package org.objectstyle.wolips.eomodeler.actions;

import java.util.List;
import java.util.Set;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
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.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.objectstyle.wolips.baseforuiplugins.utils.ErrorUtils;
import org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog.DatabaseConfigContentProvider;
import org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog.DatabaseConfigLabelProvider;
import org.objectstyle.wolips.eomodeler.core.model.EODatabaseConfig;
import org.objectstyle.wolips.eomodeler.core.model.EOEntity;
import org.objectstyle.wolips.eomodeler.core.model.EOModel;
import org.objectstyle.wolips.eomodeler.core.sql.MigrationGenerator;

public class GenerateMigrationDialog extends Dialog {
  private Button _createSelectedEntitiesButton;

  private Text _migrationText;

  private EOModel _model;

  private List<EOEntity> _entities;

  private Set<EODatabaseConfig> _databaseConfigs;

  private ComboViewer _databaseConfigComboViewer;

  private FlagChangedHandler _flagChangeHander;

  public GenerateMigrationDialog(Shell parentShell, EOModel model, List<EOEntity> entities) {
    super(parentShell);
    setShellStyle(getShellStyle() | SWT.RESIZE);
    _model = model;
    _entities = entities;
    _flagChangeHander = new FlagChangedHandler();
  }

  protected void configureShell(Shell newShell) {
    super.configureShell(newShell);
    newShell.setText("Migration Generation");
  }

  protected Control createDialogArea(Composite parent) {
    Composite control = (Composite) super.createDialogArea(parent);
    GridLayout layout = new GridLayout(1, true);
    layout.marginTop = 10;
    layout.marginLeft = 10;
    layout.marginRight = 10;
    layout.numColumns = 1;
    control.setLayout(layout);

    _databaseConfigs = _model.getDatabaseConfigs();
    if (_databaseConfigs.size() > 1) {
      _databaseConfigComboViewer = new ComboViewer(control, SWT.READ_ONLY);
      GridData extraInfoData = new GridData(GridData.FILL_HORIZONTAL);
      // extraInfoData.horizontalSpan = 2;
      _databaseConfigComboViewer.setContentProvider(new DatabaseConfigContentProvider());
      _databaseConfigComboViewer.setLabelProvider(new DatabaseConfigLabelProvider());
      _databaseConfigComboViewer.setInput(_databaseConfigs);
      _databaseConfigComboViewer.getCombo().setLayoutData(extraInfoData);
      EODatabaseConfig activeDatabaseConfig = _model.getActiveDatabaseConfig();
      if (activeDatabaseConfig != null) {
        _databaseConfigComboViewer.setSelection(new StructuredSelection(activeDatabaseConfig));
      } else {
        _databaseConfigComboViewer.setSelection(new StructuredSelection(_databaseConfigs.iterator().next()));
      }
      _databaseConfigComboViewer.addSelectionChangedListener(_flagChangeHander);
    }

    int entityCount = (_entities != null) ? _entities.size() : 0;
    _createSelectedEntitiesButton = new Button(control, SWT.CHECK);
    _createSelectedEntitiesButton.setText("Create Only Selected Entities");
    _createSelectedEntitiesButton.setSelection(entityCount > 0);
    _createSelectedEntitiesButton.addSelectionListener(_flagChangeHander);
    _createSelectedEntitiesButton.setEnabled(entityCount > 0);

    // new Label(control, SWT.NONE);

    _migrationText = new Text(control, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.V_SCROLL);
    GridData sqlTextData = new GridData(GridData.FILL_BOTH);
    sqlTextData.heightHint = 300;
    sqlTextData.widthHint = 700;
    sqlTextData.verticalIndent = 10;
    sqlTextData.horizontalSpan = 2;
    _migrationText.setLayoutData(sqlTextData);
    _migrationText.setText("Generating Migration. Please Wait ...");

    generateMigration();

    return control;
  }

  protected Control createButtonBar(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    layout.makeColumnsEqualWidth = true;
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    composite.setLayout(layout);
    GridData data = new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_CENTER);
    composite.setLayoutData(data);
    composite.setFont(parent.getFont());
    Button closeButton = new Button(composite, SWT.PUSH);
    closeButton.setText("Close");
    closeButton.addSelectionListener(new CloseHandler());
    getShell().setDefaultButton(closeButton);
    return composite;
  }

  protected String yesNo(Button button) {
    return (button.getSelection()) ? "YES" : "NO";
  }

  protected Text getMigrationText() {
    return _migrationText;
  }

  protected EODatabaseConfig getSelectedDatabaseConfig() {
    EODatabaseConfig selectedDatabaseConfig = null;
    if (_databaseConfigComboViewer != null) {
      IStructuredSelection selection = (IStructuredSelection) _databaseConfigComboViewer.getSelection();
      selectedDatabaseConfig = (EODatabaseConfig) selection.getFirstElement();
    } else {
      selectedDatabaseConfig = _model.getActiveDatabaseConfig();
    }
    return selectedDatabaseConfig;
  }

  public void generateMigration() {
    try {
      List<EOEntity> entities = _createSelectedEntitiesButton.getSelection() ? _entities : null;
      String migrationText = MigrationGenerator.generate(_model, entities);
      getMigrationText().setText(migrationText);
    } catch (final Throwable t) {
      Display.getDefault().syncExec(new Runnable() {
        public void run() {
          getMigrationText().setText("Migration Failed.");
        }
      });
      ErrorUtils.openErrorDialog(getShell(), t);
    }
  }

  protected String getMigrationString() {
    return _migrationText.getText();
  }

  public class FlagChangedHandler implements SelectionListener, ISelectionChangedListener {
    public void widgetDefaultSelected(SelectionEvent event) {
      widgetSelected(event);
    }

    public void widgetSelected(SelectionEvent event) {
      GenerateMigrationDialog.this.generateMigration();
    }

    public void selectionChanged(SelectionChangedEvent event) {
      GenerateMigrationDialog.this.generateMigration();
    }
  }

  public class CloseHandler implements SelectionListener {
    public void widgetDefaultSelected(SelectionEvent event) {
      widgetSelected(event);
    }

    public void widgetSelected(SelectionEvent event) {
      GenerateMigrationDialog.this.close();
    }
  }
}
TOP

Related Classes of org.objectstyle.wolips.eomodeler.actions.GenerateMigrationDialog$CloseHandler

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.