@Override
  public void create() {
    super.create();

    editor = createEditor(pnlEditorDetail);
    editor
        .getModel()
        .addModelListener(
            new ILanguageObjectEditorModelListener() {
              public void modelChanged(LanguageObjectEditorModelEvent theEvent) {
                handleModelChanged();
              }
            });

    lblTitle.setText(editor.getTitle());

    Composite pnlEditorButtons = new Composite(pnlEditor, SWT.NONE);
    pnlEditorButtons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER));
    pnlEditorButtons.setLayout(new GridLayout());

    //
    // pnlEditorButtons contents
    //

    btnSet = new Button(pnlEditorButtons, SWT.NONE);
    btnSet.setEnabled(false);
    btnSet.setText(Util.getString(PREFIX + "btnSet")); // $NON-NLS-1$
    btnSet.setToolTipText(Util.getString(PREFIX + "btnSet.tip")); // $NON-NLS-1$
    btnSet.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent theEvent) {
            handleSetSelected();
          }
        });

    btnReset = new Button(pnlEditorButtons, SWT.NONE);
    btnReset.setEnabled(false);
    btnReset.setText(Util.getString(PREFIX + "btnReset")); // $NON-NLS-1$
    btnReset.setToolTipText(Util.getString(PREFIX + "btnReset.tip")); // $NON-NLS-1$
    btnReset.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent theEvent) {
            handleResetSelected();
          }
        });

    setLanguageObject(null); // needed to establish the viewer input

    // select root tree node after all construction is finished
    Display.getDefault()
        .asyncExec(
            new Runnable() {
              public void run() {
                treeViewer.selectRoot();
              }
            });
  }