Program: 67423
Project: 67423
Buggy source:
public void widgetSelected(SelectionEvent e){
  if (e.getSource().equals(btnAdd)) {
    String sKey=txtNewKey.getText();
    if (sKey.length() > 0 && !propMap.containsKey(sKey)) {
      String[] sProperty=new String[2];
      sProperty[0]=sKey;
      sProperty[1]="String_Node_Str";
      TableItem tiProp=new TableItem(table,SWT.NONE);
      tiProp.setBackground(getSelectionColor());
      tiProp.setText(sProperty);
      table.select(table.getItemCount() - 1);
      updateModel(sProperty[0],sProperty[1]);
      txtNewKey.setText("String_Node_Str");
    }
  }
 else   if (e.getSource().equals(btnRemove)) {
    if (table.getSelection().length != 0) {
      int index=table.getSelectionIndex();
      String key=table.getSelection()[0].getText(0);
      ExtendedProperty property=propMap.get(key);
      if (property != null) {
        extendedProperties.remove(property);
        propMap.remove(key);
        table.remove(table.getSelectionIndex());
        table.select(index < table.getItemCount() ? index : table.getItemCount() - 1);
      }
      Control editor=editorValue.getEditor();
      if (editor != null) {
        editor.dispose();
      }
    }
  }
 else   if (e.getSource().equals(table)) {
    Control oldEditor=editorValue.getEditor();
    if (oldEditor != null)     oldEditor.dispose();
    final TableItem item=(TableItem)e.item;
    if (item == null) {
      return;
    }
    Text newEditor=new Text(table,SWT.NONE);
    newEditor.setText(item.getText(1));
    newEditor.addListener(SWT.FocusOut,new Listener(){
      public void handleEvent(      Event event){
        Text text=(Text)event.widget;
        editorValue.getItem().setText(1,text.getText());
        updateModel(item.getText(0),text.getText());
      }
    }
);
    newEditor.selectAll();
    newEditor.setFocus();
    editorValue.setEditor(newEditor,item,1);
  }
  btnRemove.setEnabled(!propDisabledMap.containsKey(table.getSelection()[0].getText(0)));
}

Fixed version (ground truth):
public void widgetSelected(SelectionEvent e){
  if (e.getSource().equals(btnAdd)) {
    String sKey=txtNewKey.getText();
    if (sKey.length() > 0 && !propMap.containsKey(sKey)) {
      String[] sProperty=new String[2];
      sProperty[0]=sKey;
      sProperty[1]="String_Node_Str";
      TableItem tiProp=new TableItem(table,SWT.NONE);
      tiProp.setText(sProperty);
      table.select(table.getItemCount() - 1);
      updateModel(sProperty[0],sProperty[1]);
      txtNewKey.setText("String_Node_Str");
    }
  }
 else   if (e.getSource().equals(btnRemove)) {
    if (table.getSelection().length != 0) {
      int index=table.getSelectionIndex();
      String key=table.getSelection()[0].getText(0);
      ExtendedProperty property=propMap.get(key);
      if (property != null) {
        extendedProperties.remove(property);
        propMap.remove(key);
        table.remove(table.getSelectionIndex());
        table.select(index < table.getItemCount() ? index : table.getItemCount() - 1);
      }
      Control editor=editorValue.getEditor();
      if (editor != null) {
        editor.dispose();
      }
    }
  }
 else   if (e.getSource().equals(table)) {
    Control oldEditor=editorValue.getEditor();
    if (oldEditor != null)     oldEditor.dispose();
    final TableItem item=(TableItem)e.item;
    if (item == null) {
      return;
    }
    Text newEditor=new Text(table,SWT.NONE);
    newEditor.setText(item.getText(1));
    newEditor.addListener(SWT.FocusOut,new Listener(){
      public void handleEvent(      Event event){
        Text text=(Text)event.widget;
        editorValue.getItem().setText(1,text.getText());
        updateModel(item.getText(0),text.getText());
      }
    }
);
    newEditor.selectAll();
    newEditor.setFocus();
    editorValue.setEditor(newEditor,item,1);
  }
  btnRemove.setEnabled(!propDisabledMap.containsKey(table.getSelection()[0].getText(0)));
}