@Override
 public void commit(boolean onSave) {
   fOsText.commit();
   fWsText.commit();
   fNlText.commit();
   fArchText.commit();
   super.commit(onSave);
 }
 @Override
 public void cancelEdit() {
   fOsText.cancelEdit();
   fWsText.cancelEdit();
   fNlText.cancelEdit();
   fArchText.cancelEdit();
   super.cancelEdit();
 }
  @Override
  public void refresh() {
    if (fCurrentInput == null) {
      clearFields();
    } else {
      setValue(IEnvironment.P_OS);
      setValue(IEnvironment.P_WS);
      setValue(IEnvironment.P_ARCH);
      setValue(IEnvironment.P_NL);
    }

    fOsText.setEditable(fCurrentInput != null && isEditable());
    fWsText.setEditable(fCurrentInput != null && isEditable());
    fNlText.setEditable(fCurrentInput != null && isEditable());
    fArchText.setEditable(fCurrentInput != null && isEditable());

    super.refresh();
  }
 @Override
 public void initialize(IManagedForm form) {
   IFeatureModel model = (IFeatureModel) getPage().getModel();
   if (model != null) model.addModelChangedListener(this);
   super.initialize(form);
 }
 @Override
 public void dispose() {
   IFeatureModel model = (IFeatureModel) getPage().getModel();
   if (model != null) model.removeModelChangedListener(this);
   super.dispose();
 }