Program: 107869
Project: 107869
Buggy source:
/** 
 * Updates the view.
 * @param node
 */
private void update(){
  if (model == null || model.getInputConfig() == null || model.getInputConfig().getInput() == null) {
    return;
  }
  State state=new State(model,model.getInputConfig().getInput().getHandle(),model.getOutputDefinition() == null ? model.getInputDefinition() : model.getOutputDefinition());
  if (this.state == null || !this.state.equals(state)) {
    this.state=state;
  }
 else {
    return;
  }
  root.setRedraw(false);
  for (  TableItem item : features.getItems()) {
    item.dispose();
  }
  for (  TableItem item : classes.getItems()) {
    item.dispose();
  }
  for (int i=0; i < state.attributes.size(); i++) {
    final String attribute=state.attributes.get(i);
    AttributeType type=state.types.get(i);
    Image image=controller.getResources().getImage(type);
    TableItem itemF=new TableItem(features,SWT.NONE);
    itemF.setText(new String[]{"String_Node_Str",attribute,"String_Node_Str"});
    itemF.setImage(0,image);
    itemF.setChecked(model.getSelectedFeatures().contains(attribute));
    TableItem itemC=new TableItem(classes,SWT.NONE);
    itemC.setText(attribute);
    itemC.setChecked(model.getSelectedClasses().contains(attribute));
    TableEditor editor=new TableEditor(features);
    final CCombo combo=new CCombo(features,SWT.NONE);
    final Color defaultColor=combo.getForeground();
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add(LABEL_CATEGORICAL);
    combo.addSelectionListener(new SelectionAdapter(){
      @Override public void widgetSelected(      SelectionEvent arg0){
        updateCombo(attribute,combo,defaultColor);
      }
    }
);
    combo.addSelectionListener(new DelayedChangeListener(DELAY){
      public void delayedEvent(){
        updateFunction(attribute,combo);
      }
    }
);
    combo.addKeyListener(new KeyAdapter(){
      @Override public void keyReleased(      KeyEvent arg0){
        updateCombo(attribute,combo,defaultColor);
      }
    }
);
    combo.addKeyListener(new DelayedChangeListener(DELAY){
      public void delayedEvent(){
        updateFunction(attribute,combo);
      }
    }
);
    editor.grabHorizontal=true;
    editor.setEditor(combo,itemF,2);
    String function=model.getClassificationModel().getFeatureScaling().getScalingFunction(attribute);
    if (function == null || function.equals("String_Node_Str")) {
      function=LABEL_CATEGORICAL;
    }
    combo.setText(function);
  }
  features.layout();
  root.setRedraw(true);
  SWTUtil.enable(root);
}

Fixed version (ground truth):
/** 
 * Updates the view.
 * @param node
 */
private void update(){
  if (model == null || model.getInputConfig() == null || model.getInputConfig().getInput() == null) {
    return;
  }
  State state=new State(model,model.getInputConfig().getInput().getHandle(),model.getOutputDefinition() == null ? model.getInputDefinition() : model.getOutputDefinition());
  if (this.state == null || !this.state.equals(state)) {
    this.state=state;
  }
 else {
    return;
  }
  root.setRedraw(false);
  for (  TableEditor editor : editors) {
    editor.getEditor().dispose();
    editor.dispose();
  }
  editors.clear();
  for (  TableItem item : features.getItems()) {
    item.dispose();
  }
  for (  TableItem item : classes.getItems()) {
    item.dispose();
  }
  features.removeAll();
  classes.removeAll();
  for (int i=0; i < state.attributes.size(); i++) {
    final String attribute=state.attributes.get(i);
    AttributeType type=state.types.get(i);
    Image image=controller.getResources().getImage(type);
    TableItem itemF=new TableItem(features,SWT.NONE);
    itemF.setText(new String[]{"String_Node_Str",attribute,"String_Node_Str"});
    itemF.setImage(0,image);
    itemF.setChecked(model.getSelectedFeatures().contains(attribute));
    TableItem itemC=new TableItem(classes,SWT.NONE);
    itemC.setText(attribute);
    itemC.setChecked(model.getSelectedClasses().contains(attribute));
    TableEditor editor=new TableEditor(features);
    editors.add(editor);
    final CCombo combo=new CCombo(features,SWT.NONE);
    final Color defaultColor=combo.getForeground();
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add("String_Node_Str");
    combo.add(LABEL_CATEGORICAL);
    combo.addSelectionListener(new SelectionAdapter(){
      @Override public void widgetSelected(      SelectionEvent arg0){
        updateCombo(attribute,combo,defaultColor);
      }
    }
);
    combo.addSelectionListener(new DelayedChangeListener(DELAY){
      public void delayedEvent(){
        updateFunction(attribute,combo);
      }
    }
);
    combo.addKeyListener(new KeyAdapter(){
      @Override public void keyReleased(      KeyEvent arg0){
        updateCombo(attribute,combo,defaultColor);
      }
    }
);
    combo.addKeyListener(new DelayedChangeListener(DELAY){
      public void delayedEvent(){
        updateFunction(attribute,combo);
      }
    }
);
    editor.grabHorizontal=true;
    editor.setEditor(combo,itemF,2);
    String function=model.getClassificationModel().getFeatureScaling().getScalingFunction(attribute);
    if (function == null || function.equals("String_Node_Str")) {
      function=LABEL_CATEGORICAL;
    }
    combo.setText(function);
  }
  features.layout();
  root.setRedraw(true);
  SWTUtil.enable(root);
}