Program: 78076
Project: 78076
Buggy source:
protected Control createDialogArea(Composite parent){
  Composite parentComposite=(Composite)super.createDialogArea(parent);
  Composite composite=new Composite(parentComposite,SWT.NONE);
  composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  composite.setLayout(UIUtil.createGridLayoutWithoutMargin(2,false));
  CLabel warnLabel=new CLabel(composite,SWT.NONE);
  warnLabel.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK));
  warnLabel.setText(WARN_COLUMN_BINDINGS);
  GridData gd=new GridData(GridData.FILL_HORIZONTAL);
  gd.horizontalSpan=2;
  warnLabel.setLayoutData(gd);
  Label label=new Label(composite,SWT.NONE);
  label.setText(LABEL_COLUMN_BINDINGS);
  label.setLayoutData(new GridData(GridData.BEGINNING));
  combo=new CCombo(composite,SWT.READ_ONLY | SWT.BORDER);
  combo.setBackground(PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
  String[] dataSets=ChoiceSetFactory.getDataSets();
  String[] newList=new String[dataSets.length + 1];
  newList[0]=NONE;
  System.arraycopy(dataSets,0,newList,1,dataSets.length);
  combo.setItems(newList);
  String dataSetName=getDataSetName();
  combo.deselectAll();
  combo.setText(dataSetName);
  combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  gd=new GridData();
  gd.widthHint=250;
  combo.setLayoutData(gd);
  combo.addSelectionListener(new SelectionAdapter(){
    public void widgetSelected(    SelectionEvent event){
      String value=combo.getText();
      if (value.equals(NONE)) {
        value=null;
      }
      if (canChangeDataSet(value)) {
        try {
          startTrans("String_Node_Str");
          DataSetHandle dataSet=null;
          if (value != null) {
            dataSet=SessionHandleAdapter.getInstance().getReportDesignHandle().findDataSet(value);
          }
          inputElement.setDataSet(dataSet);
          generateBindingColumns();
          getPropertyHandle().setStringValue(null);
          commit();
        }
 catch (        SemanticException e) {
          rollback();
          ExceptionHandler.handle(e);
        }
      }
 else {
        combo.setText(getDataSetName());
      }
    }
  }
);
  Table table=new Table(parentComposite,SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER| (canSelect ? SWT.CHECK : 0));
  gd=new GridData(GridData.FILL_BOTH);
  gd.heightHint=200;
  table.setLayoutData(gd);
  table.setLinesVisible(true);
  table.setHeaderVisible(true);
  table.addKeyListener(new KeyAdapter(){
    /** 
 * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
 */
    public void keyReleased(    KeyEvent e){
      if (e.keyCode == SWT.DEL) {
        IStructuredSelection selection=(IStructuredSelection)bindingTable.getSelection();
        if (selection.getFirstElement() instanceof ComputedColumnHandle) {
          deleteRow((ComputedColumnHandle)selection.getFirstElement());
        }
      }
    }
  }
);
  String[] columns=null;
  int[] columnWidth=null;
  CellEditor[] cellEditors;
  expressionCellEditor=new ExpressionCellEditor(table);
  columns=new String[]{null,COLUMN_NAME,COLUMN_DATATYPE,COLUMN_EXPRESSION,COLUMN_AGGREGATEON};
  columnWidth=new int[]{canSelect ? 25 : 20,150,70,150,150};
  groupList=DEUtil.getGroups(inputElement);
  groups=new String[groupList.size() + 1];
  groups[0]=NONE;
  for (int i=0; i < groupList.size(); i++) {
    groups[i + 1]=((GroupHandle)groupList.get(i)).getName();
  }
  cellEditors=new CellEditor[]{null,new TextCellEditor(table),new ComboBoxCellEditor(table,dataTypeDisplayNames),expressionCellEditor,new ComboBoxCellEditor(table,groups,SWT.READ_ONLY)};
  for (int i=0; i < columns.length; i++) {
    TableColumn column=new TableColumn(table,SWT.LEFT);
    column.setResizable(columns[i] != null);
    if (columns[i] != null) {
      column.setText(columns[i]);
    }
    column.setWidth(columnWidth[i]);
  }
  if (canSelect) {
    bindingTable=new CheckboxTableViewer(table);
    ((CheckboxTableViewer)bindingTable).addCheckStateListener(new ICheckStateListener(){
      public void checkStateChanged(      CheckStateChangedEvent event){
        if (event.getElement() instanceof ComputedColumnHandle) {
          ComputedColumnHandle handle=(ComputedColumnHandle)event.getElement();
          if (handle.getName().equals(selectedColumnName)) {
            selectedColumnName=null;
          }
 else {
            selectedColumnName=handle.getName();
          }
          updateSelection();
          updateButtons();
        }
 else {
          ((CheckboxTableViewer)bindingTable).setChecked(dummyChoice,false);
        }
      }
    }
);
  }
 else {
    bindingTable=new TableViewer(table);
  }
  bindingTable.setCellEditors(cellEditors);
  bindingTable.setColumnProperties(columns);
  bindingTable.setContentProvider(contentProvider);
  bindingTable.setLabelProvider(labelProvider);
  bindingTable.setCellModifier(cellModifier);
  bindingTable.setInput(inputElement);
  bindingTable.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      if (!bindingTable.getSelection().isEmpty()) {
        Object obj=((IStructuredSelection)bindingTable.getSelection()).getFirstElement();
        if (obj == dummyChoice && !existDefaultColumn()) {
          bindingTable.refresh();
          bindingTable.getTable().getItem(bindingTable.getTable().getSelectionIndex() - 1).setForeground(1,Display.getDefault().getSystemColor(SWT.COLOR_BLUE));
          bindingTable.getTable().setSelection(bindingTable.getTable().getSelectionIndex() - 1);
        }
 else         if (obj instanceof ComputedColumnHandle) {
          ComputedColumnHandle column=(ComputedColumnHandle)obj;
          BindingExpressionProvider provider=new BindingExpressionProvider(column.getElementHandle());
          provider.addFilter(new ComputedColumnExpressionFilter(bindingTable));
          expressionCellEditor.setExpressionProvider(provider);
        }
      }
    }
  }
);
  initTableCellColor();
  return parentComposite;
}

Fixed version (ground truth):
protected Control createDialogArea(Composite parent){
  Composite parentComposite=(Composite)super.createDialogArea(parent);
  Composite composite=new Composite(parentComposite,SWT.NONE);
  composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  composite.setLayout(UIUtil.createGridLayoutWithoutMargin(2,false));
  CLabel warnLabel=new CLabel(composite,SWT.NONE);
  warnLabel.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK));
  warnLabel.setText(WARN_COLUMN_BINDINGS);
  GridData gd=new GridData(GridData.FILL_HORIZONTAL);
  gd.horizontalSpan=2;
  warnLabel.setLayoutData(gd);
  Label label=new Label(composite,SWT.NONE);
  label.setText(LABEL_COLUMN_BINDINGS);
  label.setLayoutData(new GridData(GridData.BEGINNING));
  combo=new CCombo(composite,SWT.READ_ONLY | SWT.BORDER);
  combo.setBackground(PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
  String[] dataSets=ChoiceSetFactory.getDataSets();
  String[] newList=new String[dataSets.length + 1];
  newList[0]=NONE;
  System.arraycopy(dataSets,0,newList,1,dataSets.length);
  combo.setItems(newList);
  String dataSetName=getDataSetName();
  combo.deselectAll();
  combo.setText(dataSetName);
  combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  gd=new GridData();
  gd.widthHint=250;
  combo.setLayoutData(gd);
  combo.addSelectionListener(new SelectionAdapter(){
    public void widgetSelected(    SelectionEvent event){
      String value=combo.getText();
      if (value.equals(NONE)) {
        value=null;
      }
      if (canChangeDataSet(value)) {
        try {
          startTrans("String_Node_Str");
          DataSetHandle dataSet=null;
          if (value != null) {
            dataSet=SessionHandleAdapter.getInstance().getReportDesignHandle().findDataSet(value);
          }
          inputElement.setDataSet(dataSet);
          generateBindingColumns();
          getPropertyHandle().setStringValue(null);
          commit();
        }
 catch (        SemanticException e) {
          rollback();
          ExceptionHandler.handle(e);
        }
      }
 else {
        combo.setText(getDataSetName());
      }
    }
  }
);
  Table table=new Table(parentComposite,SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER| (canSelect ? SWT.CHECK : 0));
  gd=new GridData(GridData.FILL_BOTH);
  gd.heightHint=200;
  table.setLayoutData(gd);
  table.setLinesVisible(true);
  table.setHeaderVisible(true);
  table.addKeyListener(new KeyAdapter(){
    /** 
 * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
 */
    public void keyReleased(    KeyEvent e){
      if (e.keyCode == SWT.DEL) {
        IStructuredSelection selection=(IStructuredSelection)bindingTable.getSelection();
        if (selection.getFirstElement() instanceof ComputedColumnHandle) {
          deleteRow((ComputedColumnHandle)selection.getFirstElement());
        }
      }
    }
  }
);
  String[] columns=null;
  int[] columnWidth=null;
  CellEditor[] cellEditors;
  expressionCellEditor=new ExpressionCellEditor(table);
  columns=new String[]{null,COLUMN_NAME,COLUMN_DATATYPE,COLUMN_EXPRESSION,COLUMN_AGGREGATEON};
  columnWidth=new int[]{canSelect ? 25 : 20,150,70,150,150};
  groupList=DEUtil.getGroups(inputElement);
  groups=new String[groupList.size() + 1];
  groups[0]=NONE;
  for (int i=0; i < groupList.size(); i++) {
    groups[i + 1]=((GroupHandle)groupList.get(i)).getName();
  }
  cellEditors=new CellEditor[]{null,new TextCellEditor(table),new ComboBoxCellEditor(table,dataTypeDisplayNames),expressionCellEditor,new ComboBoxCellEditor(table,groups,SWT.READ_ONLY)};
  for (int i=0; i < columns.length; i++) {
    TableColumn column=new TableColumn(table,SWT.LEFT);
    column.setResizable(columns[i] != null);
    if (columns[i] != null) {
      column.setText(columns[i]);
    }
    column.setWidth(columnWidth[i]);
  }
  if (canSelect) {
    bindingTable=new CheckboxTableViewer(table);
    ((CheckboxTableViewer)bindingTable).addCheckStateListener(new ICheckStateListener(){
      public void checkStateChanged(      CheckStateChangedEvent event){
        if (event.getElement() instanceof ComputedColumnHandle) {
          ComputedColumnHandle handle=(ComputedColumnHandle)event.getElement();
          if (handle.getName().equals(selectedColumnName)) {
            selectedColumnName=null;
          }
 else {
            selectedColumnName=handle.getName();
          }
          updateSelection();
          updateButtons();
        }
 else {
          ((CheckboxTableViewer)bindingTable).setChecked(dummyChoice,false);
        }
      }
    }
);
  }
 else {
    bindingTable=new TableViewer(table);
  }
  bindingTable.setCellEditors(cellEditors);
  bindingTable.setColumnProperties(columns);
  bindingTable.setContentProvider(contentProvider);
  bindingTable.setLabelProvider(labelProvider);
  bindingTable.setCellModifier(cellModifier);
  bindingTable.setInput(inputElement);
  bindingTable.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      if (!bindingTable.getSelection().isEmpty()) {
        Object obj=((IStructuredSelection)bindingTable.getSelection()).getFirstElement();
        if (obj == dummyChoice && !existHighLightColumn()) {
          bindingTable.refresh();
          setHihtLightColumn();
        }
 else         if (obj instanceof ComputedColumnHandle) {
          ComputedColumnHandle column=(ComputedColumnHandle)obj;
          BindingExpressionProvider provider=new BindingExpressionProvider(column.getElementHandle());
          provider.addFilter(new ComputedColumnExpressionFilter(bindingTable));
          expressionCellEditor.setExpressionProvider(provider);
        }
      }
    }
  }
);
  return parentComposite;
}