Program: 67717
Project: 67717
Buggy source:
private void createColumnsViewerArea(Composite parent){
  cmpColumnsList=ChartUIUtil.createCompositeWrapper(parent);
  Label label=new Label(cmpColumnsList,SWT.NONE);
{
    label.setText(Messages.getString("String_Node_Str"));
    label.setFont(JFaceResources.getBannerFont());
  }
  if (!dataProvider.isInXTabMeasureCell()) {
    columnListDescription=new Label(cmpColumnsList,SWT.WRAP);
{
      GridData gd=new GridData(GridData.FILL_HORIZONTAL);
      columnListDescription.setLayoutData(gd);
      columnListDescription.setText(Messages.getString("String_Node_Str"));
    }
  }
  btnShowDataPreviewB=new Button(cmpColumnsList,SWT.CHECK);
  btnShowDataPreviewB.setText(Messages.getString("String_Node_Str"));
  btnShowDataPreviewB.addListener(SWT.Selection,this);
  final Table table=new Table(cmpColumnsList,SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL| SWT.V_SCROLL| SWT.FULL_SELECTION);
  GridData gd=new GridData(GridData.FILL_BOTH);
  table.setLayoutData(gd);
  table.setLinesVisible(true);
  tableViewerColumns=new TableViewer(table);
  tableViewerColumns.setUseHashlookup(true);
  new TableColumn(table,SWT.LEFT);
  table.addMouseMoveListener(new MouseMoveListener(){
    public void mouseMove(    MouseEvent e){
      if (!dataProvider.isLivePreviewEnabled()) {
        table.setToolTipText(null);
        return;
      }
      String tooltip=null;
      TableItem item=((Table)e.widget).getItem(new Point(e.x,e.y));
      if (item != null) {
        List<Object[]> data=(List<Object[]>)tableViewerColumns.getData(KEY_PREVIEW_DATA);
        if (data != null) {
          StringBuilder sb=new StringBuilder();
          int index=((Table)e.widget).indexOf(item);
          int i=0;
          for (; i < data.size(); i++) {
            if (sb.length() > 45) {
              break;
            }
            if (data.get(i)[index] != null) {
              if (i != 0)               sb.append("String_Node_Str");
              sb.append(String.valueOf(data.get(i)[index]));
            }
          }
          if (i == 1 && sb.length() > 45) {
            sb=new StringBuilder(sb.substring(0,45));
            sb.append("String_Node_Str");
          }
 else           if (i < data.size()) {
            sb.append("String_Node_Str");
          }
          tooltip=sb.toString();
        }
      }
      table.setToolTipText(tooltip);
    }
  }
);
  table.addMouseListener(new MouseAdapter(){
    @Override public void mouseDown(    MouseEvent e){
      if (e.button == 3) {
        if (isCubeMode()) {
          table.setMenu(null);
        }
 else {
          TableItem item=((Table)e.widget).getItem(new Point(e.x,e.y));
          if (item == null) {
            tableViewerColumns.getTable().select(-1);
          }
          boolean isSharingChart=dataProvider.checkState(IDataServiceProvider.SHARE_CHART_QUERY);
          if (item != null && !isSharingChart) {
            if (table.getMenu() != null) {
              table.getMenu().dispose();
            }
            table.setMenu(createMenuManager(item.getData()).createContextMenu(table));
          }
 else {
            table.setMenu(null);
          }
          if (table.getMenu() != null && !isSharingChart) {
            table.getMenu().setVisible(true);
          }
        }
      }
    }
  }
);
  table.addListener(SWT.Resize,new Listener(){
    public void handleEvent(    Event event){
      Table table=(Table)event.widget;
      int totalWidth=table.getClientArea().width;
      table.getColumn(0).setWidth(totalWidth);
    }
  }
);
  DragSource ds=new DragSource(table,DND.DROP_COPY | DND.DROP_MOVE);
  ds.setTransfer(new Transfer[]{SimpleTextTransfer.getInstance()});
  ColumnNamesTableDragListener dragSourceAdapter=new ColumnNamesTableDragListener(table,itemHandle);
  ds.addDragListener(dragSourceAdapter);
  tableViewerColumns.setContentProvider(new IStructuredContentProvider(){
    /** 
 * Gets the food items for the list
 * @param arg0 the data model
 * @return Object[]
 */
    public Object[] getElements(    Object arg0){
      if (arg0 == null)       return null;
      return (ColumnBindingInfo[])arg0;
    }
    /** 
 * Disposes any created resources
 */
    public void dispose(){
    }
    /** 
 * Called when the input changes
 * @param arg0 the viewer
 * @param arg1 the old input
 * @param arg2 the new input
 */
    public void inputChanged(    Viewer arg0,    Object arg1,    Object arg2){
    }
  }
);
  tableViewerColumns.setLabelProvider(new ILabelProvider(){
    /** 
 * images
 * @param arg0 the element
 * @return Image
 */
    public Image getImage(    Object arg0){
      String imageName=((ColumnBindingInfo)arg0).getImageName();
      if (imageName == null)       return null;
      return UIHelper.getImage(imageName);
    }
    /** 
 * Gets the text for an element
 * @param arg0 the element
 * @return String
 */
    public String getText(    Object arg0){
      return ((ColumnBindingInfo)arg0).getName();
    }
    /** 
 * Adds a listener
 * @param arg0 the listener
 */
    public void addListener(    ILabelProviderListener arg0){
    }
    /** 
 * Disposes any resources
 */
    public void dispose(){
    }
    /** 
 * Returns whether changing the specified property for the specified element affect the label
 * @param arg0 the element
 * @param arg1 the property
 * @return boolean
 */
    public boolean isLabelProperty(    Object arg0,    String arg1){
      return false;
    }
    /** 
 * Removes a listener
 * @param arg0 the listener
 */
    public void removeListener(    ILabelProviderListener arg0){
    }
  }
);
}

Fixed version (ground truth):
private void createColumnsViewerArea(Composite parent){
  cmpColumnsList=ChartUIUtil.createCompositeWrapper(parent);
  Label label=new Label(cmpColumnsList,SWT.NONE);
{
    label.setText(Messages.getString("String_Node_Str"));
    label.setFont(JFaceResources.getBannerFont());
  }
  if (!dataProvider.isInXTabMeasureCell()) {
    columnListDescription=new Label(cmpColumnsList,SWT.WRAP);
{
      GridData gd=new GridData(GridData.FILL_HORIZONTAL);
      columnListDescription.setLayoutData(gd);
      columnListDescription.setText(Messages.getString("String_Node_Str"));
    }
  }
  btnShowDataPreviewB=new Button(cmpColumnsList,SWT.CHECK);
  btnShowDataPreviewB.setText(Messages.getString("String_Node_Str"));
  btnShowDataPreviewB.addListener(SWT.Selection,this);
  final Table table=new Table(cmpColumnsList,SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL| SWT.V_SCROLL| SWT.FULL_SELECTION);
  GridData gd=new GridData(GridData.FILL_BOTH);
  table.setLayoutData(gd);
  table.setLinesVisible(true);
  tableViewerColumns=new TableViewer(table);
  tableViewerColumns.setUseHashlookup(true);
  new TableColumn(table,SWT.LEFT);
  table.addMouseMoveListener(new MouseMoveListener(){
    public void mouseMove(    MouseEvent e){
      if (!dataProvider.isLivePreviewEnabled()) {
        table.setToolTipText(null);
        return;
      }
      String tooltip=null;
      TableItem item=((Table)e.widget).getItem(new Point(e.x,e.y));
      if (item != null) {
        List<Object[]> data=(List<Object[]>)tableViewerColumns.getData(KEY_PREVIEW_DATA);
        if (data != null) {
          StringBuilder sb=new StringBuilder();
          int index=((Table)e.widget).indexOf(item);
          int i=0;
          for (; i < data.size(); i++) {
            if (sb.length() > 45) {
              break;
            }
            if (data.get(i)[index] != null) {
              if (i != 0)               sb.append("String_Node_Str");
              sb.append(String.valueOf(data.get(i)[index]));
            }
          }
          if (i == 1 && sb.length() > 45) {
            sb=new StringBuilder(sb.substring(0,45));
            sb.append("String_Node_Str");
          }
 else           if (i < data.size()) {
            sb.append("String_Node_Str");
          }
          tooltip=sb.toString();
        }
      }
      table.setToolTipText(tooltip);
    }
  }
);
  table.addMenuDetectListener(new MenuDetectListener(){
    public void menuDetected(    MenuDetectEvent arg0){
      if (isCubeMode()) {
        table.setMenu(null);
      }
 else {
        TableItem item=table.getSelection()[0];
        if (item == null) {
          tableViewerColumns.getTable().select(-1);
        }
        boolean isSharingChart=dataProvider.checkState(IDataServiceProvider.SHARE_CHART_QUERY);
        if (item != null && !isSharingChart) {
          if (table.getMenu() != null) {
            table.getMenu().dispose();
          }
          table.setMenu(createMenuManager(item.getData()).createContextMenu(table));
        }
 else {
          table.setMenu(null);
        }
        if (table.getMenu() != null && !isSharingChart) {
          table.getMenu().setVisible(true);
        }
      }
    }
  }
);
  table.addListener(SWT.Resize,new Listener(){
    public void handleEvent(    Event event){
      Table table=(Table)event.widget;
      int totalWidth=table.getClientArea().width;
      table.getColumn(0).setWidth(totalWidth);
    }
  }
);
  DragSource ds=new DragSource(table,DND.DROP_COPY | DND.DROP_MOVE);
  ds.setTransfer(new Transfer[]{SimpleTextTransfer.getInstance()});
  ColumnNamesTableDragListener dragSourceAdapter=new ColumnNamesTableDragListener(table,itemHandle);
  ds.addDragListener(dragSourceAdapter);
  tableViewerColumns.setContentProvider(new IStructuredContentProvider(){
    /** 
 * Gets the food items for the list
 * @param arg0 the data model
 * @return Object[]
 */
    public Object[] getElements(    Object arg0){
      if (arg0 == null)       return null;
      return (ColumnBindingInfo[])arg0;
    }
    /** 
 * Disposes any created resources
 */
    public void dispose(){
    }
    /** 
 * Called when the input changes
 * @param arg0 the viewer
 * @param arg1 the old input
 * @param arg2 the new input
 */
    public void inputChanged(    Viewer arg0,    Object arg1,    Object arg2){
    }
  }
);
  tableViewerColumns.setLabelProvider(new ILabelProvider(){
    /** 
 * images
 * @param arg0 the element
 * @return Image
 */
    public Image getImage(    Object arg0){
      String imageName=((ColumnBindingInfo)arg0).getImageName();
      if (imageName == null)       return null;
      return UIHelper.getImage(imageName);
    }
    /** 
 * Gets the text for an element
 * @param arg0 the element
 * @return String
 */
    public String getText(    Object arg0){
      return ((ColumnBindingInfo)arg0).getName();
    }
    /** 
 * Adds a listener
 * @param arg0 the listener
 */
    public void addListener(    ILabelProviderListener arg0){
    }
    /** 
 * Disposes any resources
 */
    public void dispose(){
    }
    /** 
 * Returns whether changing the specified property for the specified element affect the label
 * @param arg0 the element
 * @param arg1 the property
 * @return boolean
 */
    public boolean isLabelProperty(    Object arg0,    String arg1){
      return false;
    }
    /** 
 * Removes a listener
 * @param arg0 the listener
 */
    public void removeListener(    ILabelProviderListener arg0){
    }
  }
);
}