/**
   * @param composite
   * @return the 3rd column composite
   */
  private void createTypeCombo(Composite composite) {
    Label datatypeLabel = new Label(composite, SWT.NONE);
    datatypeLabel.setText(Messages.datatypeLabel);

    datatypeCombo = new ComboViewer(new Combo(composite, SWT.READ_ONLY | SWT.BORDER));
    datatypeCombo.setContentProvider(ArrayContentProvider.getInstance());
    datatypeCombo.setLabelProvider(
        new LabelProvider() {
          @Override
          public String getText(Object element) {
            if (element.equals(SimulationPackage.eINSTANCE.getSimulationBoolean())) {
              return Messages.SimulationBoolean;
            }
            if (element.equals(SimulationPackage.eINSTANCE.getSimulationLiteralData())) {
              return Messages.SimulationLiteralData;
            }
            if (element.equals(SimulationPackage.eINSTANCE.getSimulationNumberData())) {
              return Messages.SimulationNumberData;
            }
            return ((EClass) element).getName();
          }
        });
    datatypeCombo.setInput(getAvailableDataTypes());
    if (dataClass == null) {
      dataClass = SimulationPackage.eINSTANCE.getSimulationBoolean();
    }
    gd = new GridData();
    gd.horizontalAlignment = GridData.FILL;
    gd.verticalAlignment = GridData.CENTER;
    gd.widthHint = 150;
    datatypeCombo.getControl().setLayoutData(gd);

    if (data != null) {
      datatypeCombo.setSelection(new StructuredSelection(data.eClass()));
      datatypeCombo.getControl().setEnabled(false);
    } else {
      datatypeCombo.setSelection(new StructuredSelection(datatypeCombo.getElementAt(0)));
    }
    datatypeCombo.addSelectionChangedListener(
        new ISelectionChangedListener() {

          @Override
          public void selectionChanged(SelectionChangedEvent event) {
            dataClass =
                (EClass) ((IStructuredSelection) datatypeCombo.getSelection()).getFirstElement();
            changeDataConfigurationComposite(dataClass);
            setPageComplete(isPageComplete());
          }
        });

    // context.bindValue(SWTObservables.observeText(isOtherBased),SWTObservables.observeText(datatypeCombo.getControl()));

  }
  /**
   * @param element
   * @param container
   * @param simulationData
   */
  public AddSimulationDataWizardPage(
      SimulationDataContainer element, SimulationData simulationData) {
    super("add simulation data");
    this.element = element;
    data = simulationData;
    setTitle(Messages.AddSimulationDataWizardPage_title);
    this.setMessage(Messages.AddSimulationDataWizardPage_msg);
    setImageDescriptor(Pics.getWizban());
    if (data != null) {
      dataClass = data.eClass();
      dataDescription = data.getDescription();
      dataName = data.getName();
      if (data.getExpression() == null) {
        dataExpression = ExpressionFactory.eINSTANCE.createExpression();
      } else {
        dataExpression = EcoreUtil.copy(data.getExpression());
      }

      setExpressionBased(data.isExpressionBased());

      if (data instanceof SimulationBoolean) {
        probabilityOfTrue = ((SimulationBoolean) data).getProbabilityOfTrue();
      }
      if (data instanceof SimulationNumberData) {
        for (SimulationNumberRange range : ((SimulationNumberData) data).getRanges()) {
          ranges.add(EcoreUtil.copy(range));
        }
      }
      if (data instanceof SimulationLiteralData) {
        for (SimulationLiteral literal : ((SimulationLiteralData) data).getLiterals()) {
          literals.add(EcoreUtil.copy(literal));
        }
      }
    } else {
      dataExpression = ExpressionFactory.eINSTANCE.createExpression();
      dataName = generateDataName();
    }
  }