Program: 78004
Project: 78004
Buggy source:
protected Control createContents(Composite ancestor){
  super.createFieldEditors();
  final Composite parent=new Composite(ancestor,SWT.NONE);
  GridLayout layout=new GridLayout();
  layout.marginHeight=0;
  layout.marginWidth=0;
  parent.setLayout(layout);
  final Table table=new Table(parent,SWT.BORDER | SWT.FULL_SELECTION);
  GridData data=new GridData(GridData.FILL_BOTH);
  table.setLayoutData(data);
  table.setHeaderVisible(true);
  table.setLinesVisible(false);
  TableLayout tableLayout=new TableLayout();
  table.setLayout(tableLayout);
  final TableColumn column1=new TableColumn(table,SWT.NONE);
  column1.setText(Messages.getString("String_Node_Str"));
  final TableColumn column2=new TableColumn(table,SWT.NONE);
  column2.setText(Messages.getString("String_Node_Str"));
  fTableViewer=new TableViewer(table);
  fTableViewer.setLabelProvider(new MapLabelProvider());
  fTableViewer.setContentProvider(new MapContentProvider());
  fTableViewer.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      updateButtons();
    }
  }
);
  fTableViewer.addDoubleClickListener(new IDoubleClickListener(){
    public void doubleClick(    DoubleClickEvent event){
      edit();
    }
  }
);
  parent.addControlListener(new ControlAdapter(){
    public void controlResized(    ControlEvent e){
      Rectangle area=parent.getClientArea();
      Point preferredSize=table.computeSize(SWT.DEFAULT,SWT.DEFAULT);
      int width=area.width - 2 * table.getBorderWidth();
      if (preferredSize.y > area.height) {
        Point vBarSize=table.getVerticalBar().getSize();
        width-=vBarSize.x;
      }
      Point oldSize=table.getSize();
      if (oldSize.x > width) {
        column1.setWidth(width / 4);
        column2.setWidth(width - column1.getWidth());
        table.setSize(width,area.height);
      }
 else {
        table.setSize(width,area.height);
        column1.setWidth(width / 4);
        column2.setWidth(width - column1.getWidth());
      }
    }
  }
);
  Composite buttons=new Composite(parent,SWT.NONE);
  buttons.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
  layout=new GridLayout();
  layout.numColumns=6;
  layout.marginHeight=0;
  layout.marginWidth=0;
  buttons.setLayout(layout);
  fAddButton=new Button(buttons,SWT.PUSH);
  fAddButton.setText(Messages.getString("String_Node_Str"));
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=Math.max(fAddButton.computeSize(-1,-1).x,60);
  data.heightHint=24;
  fAddButton.setLayoutData(data);
  fAddButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      add();
    }
  }
);
  fEditButton=new Button(buttons,SWT.PUSH);
  fEditButton.setText(Messages.getString("String_Node_Str"));
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=Math.max(fEditButton.computeSize(-1,-1).x,60);
  data.heightHint=24;
  fEditButton.setLayoutData(data);
  fEditButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      edit();
    }
  }
);
  fDeleteButton=new Button(buttons,SWT.PUSH);
  fDeleteButton.setText(Messages.getString("String_Node_Str"));
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=Math.max(fDeleteButton.computeSize(-1,-1).x,60);
  data.heightHint=24;
  fDeleteButton.setLayoutData(data);
  fDeleteButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      delete();
    }
  }
);
  fMoveUpButton=new Button(buttons,SWT.ARROW);
  fMoveUpButton.setAlignment(SWT.UP);
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=40;
  data.heightHint=24;
  fMoveUpButton.setLayoutData(data);
  fMoveUpButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      moveUp();
    }
  }
);
  fMoveDownButton=new Button(buttons,SWT.ARROW);
  fMoveDownButton.setAlignment(SWT.DOWN);
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=40;
  data.heightHint=24;
  fMoveDownButton.setLayoutData(data);
  fMoveDownButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      moveDown();
    }
  }
);
  fTableViewer.setInput(model);
  updateButtons();
  Dialog.applyDialogFont(parent);
  return parent;
}

Fixed version (ground truth):
protected Control createContents(Composite ancestor){
  super.createFieldEditors();
  final Composite parent=new Composite(ancestor,SWT.NONE);
  GridLayout layout=new GridLayout();
  layout.marginHeight=0;
  layout.marginWidth=0;
  parent.setLayout(layout);
  final Table table=new Table(parent,SWT.BORDER | SWT.FULL_SELECTION);
  GridData data=new GridData(GridData.FILL_BOTH);
  table.setLayoutData(data);
  table.setHeaderVisible(true);
  table.setLinesVisible(false);
  TableLayout tableLayout=new TableLayout();
  table.setLayout(tableLayout);
  final TableColumn column1=new TableColumn(table,SWT.NONE);
  column1.setText(Messages.getString("String_Node_Str"));
  final TableColumn column2=new TableColumn(table,SWT.NONE);
  column2.setText(Messages.getString("String_Node_Str"));
  fTableViewer=new TableViewer(table);
  fTableViewer.setLabelProvider(new MapLabelProvider());
  fTableViewer.setContentProvider(new MapContentProvider());
  fTableViewer.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      updateButtons();
    }
  }
);
  fTableViewer.addDoubleClickListener(new IDoubleClickListener(){
    public void doubleClick(    DoubleClickEvent event){
      edit();
    }
  }
);
  parent.addControlListener(new ControlAdapter(){
    public void controlResized(    ControlEvent e){
      Rectangle area=parent.getClientArea();
      Point preferredSize=table.computeSize(SWT.DEFAULT,SWT.DEFAULT);
      int width=area.width - 2 * table.getBorderWidth();
      if (preferredSize.y > area.height) {
        Point vBarSize=table.getVerticalBar().getSize();
        width-=vBarSize.x;
      }
      Point oldSize=table.getSize();
      if (oldSize.x > width) {
        column1.setWidth(width / 4);
        column2.setWidth(width - column1.getWidth());
        table.setSize(width,area.height);
      }
 else {
        table.setSize(width,area.height);
        column1.setWidth(width / 4);
        column2.setWidth(width - column1.getWidth());
      }
    }
  }
);
  Composite buttons=new Composite(parent,SWT.NONE);
  buttons.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
  layout=new GridLayout();
  layout.numColumns=6;
  layout.marginHeight=0;
  layout.marginWidth=0;
  buttons.setLayout(layout);
  fAddButton=new Button(buttons,SWT.PUSH);
  fAddButton.setText(Messages.getString("String_Node_Str"));
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=Math.max(fAddButton.computeSize(-1,-1).x,60);
  fAddButton.setLayoutData(data);
  fAddButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      add();
    }
  }
);
  fEditButton=new Button(buttons,SWT.PUSH);
  fEditButton.setText(Messages.getString("String_Node_Str"));
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=Math.max(fEditButton.computeSize(-1,-1).x,60);
  fEditButton.setLayoutData(data);
  fEditButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      edit();
    }
  }
);
  fDeleteButton=new Button(buttons,SWT.PUSH);
  fDeleteButton.setText(Messages.getString("String_Node_Str"));
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=Math.max(fDeleteButton.computeSize(-1,-1).x,60);
  fDeleteButton.setLayoutData(data);
  fDeleteButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      delete();
    }
  }
);
  fMoveUpButton=new Button(buttons,SWT.ARROW);
  fMoveUpButton.setAlignment(SWT.UP);
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=40;
  data.heightHint=24;
  fMoveUpButton.setLayoutData(data);
  fMoveUpButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      moveUp();
    }
  }
);
  fMoveDownButton=new Button(buttons,SWT.ARROW);
  fMoveDownButton.setAlignment(SWT.DOWN);
  data=new GridData(GridData.FILL_HORIZONTAL);
  data.widthHint=40;
  data.heightHint=24;
  fMoveDownButton.setLayoutData(data);
  fMoveDownButton.addListener(SWT.Selection,new Listener(){
    public void handleEvent(    Event e){
      moveDown();
    }
  }
);
  fTableViewer.setInput(model);
  updateButtons();
  Dialog.applyDialogFont(parent);
  return parent;
}