Package com.dubture.composer.ui.wizard

Source Code of com.dubture.composer.ui.wizard.AbstractWizardFirstPage

package com.dubture.composer.ui.wizard;

import java.io.File;
import java.net.URI;
import java.util.Observable;
import java.util.Observer;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.dltk.core.environment.IEnvironment;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.php.internal.core.PHPVersion;
import org.eclipse.php.internal.ui.wizards.CompositeData;
import org.eclipse.php.internal.ui.wizards.IPHPProjectCreateWizardPage;
import org.eclipse.php.internal.ui.wizards.NameGroup;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;

import com.dubture.composer.ui.converter.String2KeywordsConverter;
import com.dubture.composer.ui.wizard.project.BasicSettingsGroup;
import com.dubture.composer.ui.wizard.project.VersionGroup;
import com.dubture.getcomposer.core.ComposerPackage;

/**
* Base implementation for the first page of a new Composer project wizard.
*
* @author Robert Gruendler <r.gruendler@gmail.com>
*
*/
@SuppressWarnings("restriction")
abstract public class AbstractWizardFirstPage extends WizardPage implements IPHPProjectCreateWizardPage, Observer {

  public NameGroup nameGroup;
  public LocationGroup PHPLocationGroup;
  public AbstractVersionGroup versionGroup;
 
  protected String initialName;
  protected Composite composite;
  protected AbstractValidator validator;
  protected DetectGroup detectGroup;
  protected ComposerPackage composerPackage;
  protected String2KeywordsConverter keywordConverter;
 
  protected AbstractWizardFirstPage(String pageName) {
    super(pageName);
  }

  @Override
  public void createControl(Composite parent) {
   
    composite = new Composite(parent, SWT.NULL);
    composite.setFont(parent.getFont());
    composite.setLayout(initGridLayout(new GridLayout(1, false), false));
    composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

    initialName = "";
    // create UI elements
    nameGroup = new NameGroup(composite, initialName, getShell());
    nameGroup.addObserver(this);
    validator = getValidator();
   
    beforeLocationGroup();
   
    PHPLocationGroup = new LocationGroup(composite, nameGroup, getShell());
   
    CompositeData data = new CompositeData();
    data.setParetnt(composite);
    data.setSettings(getDialogSettings());
    data.setObserver(PHPLocationGroup);

    versionGroup = new VersionGroup(this, composite);
    detectGroup = new DetectGroup(composite, PHPLocationGroup, nameGroup);

    nameGroup.addObserver(PHPLocationGroup);

    PHPLocationGroup.addObserver(detectGroup);
    // initialize all elements
    nameGroup.notifyObservers();
    // create and connect validator

    nameGroup.addObserver(validator);
    PHPLocationGroup.addObserver(validator);

    Dialog.applyDialogFont(composite);
   
    afterLocationGroup();
    setControl(composite);
   
    composerPackage = new ComposerPackage();
    keywordConverter = new String2KeywordsConverter(composerPackage);
   
    finishControlSetup();
   
    setHelpContext(composite);
  }

  public void performFinish(IProgressMonitor monitor) {
   
  }

  abstract protected void finishControlSetup();
  abstract protected void beforeLocationGroup();
  abstract protected void afterLocationGroup();
  abstract protected AbstractValidator getValidator();
  abstract public void update(Observable o, Object arg);
  abstract public void initPage();
  abstract protected void setHelpContext(Control container);
 
  public GridLayout initGridLayout(GridLayout layout, boolean margins) {
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    if (margins) {
      layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
      layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    } else {
      layout.marginWidth = 0;
      layout.marginHeight = 0;
    }
    return layout;
  }
 
 
  public IProject getProjectHandle() {
    return ResourcesPlugin.getWorkspace().getRoot().getProject(nameGroup.getName());
  }


  public IEnvironment getEnvironment() {
    return PHPLocationGroup.getEnvironment();
  }

  public boolean isInWorkspace() {
    return PHPLocationGroup.isInWorkspace();
  }

  public boolean isInLocalServer() {
    return PHPLocationGroup.isInLocalServer();
  }

  public boolean canCreate(File file) {
    while (!file.exists()) {
      file = file.getParentFile();
      if (file == null)
        return false;
    }

    return file.canWrite();
  }
 
  public URI getLocationURI() {
    IEnvironment environment = getEnvironment();
    return environment.getURI(PHPLocationGroup.getLocation());
  }
 
  public IPath getPath() {
    return PHPLocationGroup.getLocation();
  }

  public boolean getDetect() {
    return detectGroup.mustDetect();
  }

  public boolean hasPhpSourceFolder() {
    return true;
  }

  public boolean isDefaultVersionSelected() {
    return false;
  }

  public boolean getUseAspTagsValue() {
    return versionGroup != null && versionGroup.fConfigurationBlock.getUseAspTagsValue();
  }

  public PHPVersion getPHPVersionValue() {
    if (versionGroup != null) {
      return versionGroup.fConfigurationBlock.getPHPVersionValue();
    }
    return null;
  }
 
  public ComposerPackage getPackage() {
    return composerPackage;
  }
 
  public void updatePackageFromSettingsGroup(BasicSettingsGroup settingsGroup) {
    if (settingsGroup.getVendor() != null && nameGroup.getName() != null) {
      composerPackage.setName(String.format("%s/%s", settingsGroup.getVendor(), nameGroup.getName()));
    }

    if (settingsGroup.getDescription().length() > 0) {
      composerPackage.setDescription(settingsGroup.getDescription());
    }

    if (settingsGroup.getLicense().length() > 0) {
      composerPackage.getLicense().clear();
      composerPackage.getLicense().add(settingsGroup.getLicense());
    }

    if (settingsGroup.getType().length() > 0) {
      composerPackage.setType(settingsGroup.getType());
    }

    if (settingsGroup.getKeywords().length() > 0) {
      keywordConverter.convert(settingsGroup.getKeywords());
    }
  }
}
TOP

Related Classes of com.dubture.composer.ui.wizard.AbstractWizardFirstPage

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.