/**
 * Synchronized class for safe run.
 *
 * @since 0.3
 */
public class SynchronizedSelectEClassifierWizardPage
    extends SynchronizedWizardPage<ISelectEClassifierWizardPage>
    implements ISelectEClassifierWizardPage {

  private static final boolean DEBUG = DebugUtils.getDebugStatus(Activator.getDefault());

  /**
   * Constructor.
   *
   * @param object the to synchronized.
   * @param display the display.
   */
  public SynchronizedSelectEClassifierWizardPage(
      final ISelectEClassifierWizardPage object, final Display display) {
    super(object, display);
  }

  public EClassifier getSelectedEClassifier() {
    return this.safeSyncExec(
        new AbstractExceptionFreeRunnable<EClassifier>() {
          @Override
          public EClassifier safeRun() {
            return SynchronizedSelectEClassifierWizardPage.this
                .getSynchronizedObject()
                .getSelectedEClassifier();
          }
        });
  }

  public void selectEClassifier(final String selection) {
    this.voidExceptionFreeRunnable(
        new AbstractVoidExceptionFreeRunnable() {
          @Override
          public void voidSafeRun() {
            SynchronizedSelectEClassifierWizardPage.this
                .getSynchronizedObject()
                .selectEClassifier(selection);
          }
        });

    // We keep the thread waiting until the selection is not done.
    // If we release the thread, the selection may not be done and made some
    // errors
    while (this.getSelectedEClassifier() == null) {
      DebugUtils.debug(DEBUG, "Waiting."); // $NON-NLS-1$
    }
  }
}
  public void selectEClassifier(final String selection) {
    this.voidExceptionFreeRunnable(
        new AbstractVoidExceptionFreeRunnable() {
          @Override
          public void voidSafeRun() {
            SynchronizedSelectEClassifierWizardPage.this
                .getSynchronizedObject()
                .selectEClassifier(selection);
          }
        });

    // We keep the thread waiting until the selection is not done.
    // If we release the thread, the selection may not be done and made some
    // errors
    while (this.getSelectedEClassifier() == null) {
      DebugUtils.debug(DEBUG, "Waiting."); // $NON-NLS-1$
    }
  }