Program: 102072
Project: 102072
Buggy source:
@Override void createControl(){
  treeViewer=new TreeViewer(getPrimaryPanel(),SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  Tree tree=treeViewer.getTree();
  final GridData gridData=new GridData(GridData.FILL_BOTH);
  gridData.grabExcessHorizontalSpace=true;
  treeViewer.getControl().setLayoutData(gridData);
  tree.addMouseListener(new MouseListener(){
    @Override public void mouseUp(    MouseEvent e){
    }
    @Override public void mouseDown(    MouseEvent e){
      Point pt=new Point(e.x,e.y);
      if (treeViewer.getCell(pt) != null && treeViewer.getCell(pt).getViewerRow() != null && treeViewer.getCell(pt).getViewerRow().getItem() != null) {
        handleSelection((treeViewer.getCell(pt).getColumnIndex()),treeViewer.getCell(pt).getViewerRow().getItem().getData());
      }
    }
    @Override public void mouseDoubleClick(    MouseEvent e){
      Point pt=new Point(e.x,e.y);
      if (treeViewer.getCell(pt) != null && treeViewer.getCell(pt).getViewerRow() != null && treeViewer.getCell(pt).getViewerRow().getItem() != null) {
        handleDoubleClick((treeViewer.getCell(pt).getColumnIndex()),treeViewer.getCell(pt).getViewerRow().getItem().getData());
      }
    }
  }
);
  treeViewer.setUseHashlookup(true);
  tree.setHeaderVisible(true);
  tree.setLinesVisible(true);
  TreeColumn treeColumn=new TreeColumn(tree,SWT.LEFT);
  treeColumn.setText(Messages.model);
  TreeViewerColumn treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT);
  treeViewerColumn.getColumn().setText(Messages.security);
  treeViewerColumn.getColumn().setToolTipText(Messages.securityTooltip);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.create);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.read);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.update);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.delete);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.execute);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.alter);
  TableLayout layout=new TableLayout();
  layout.addColumnData(new ColumnWeightData(60));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(8));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(11));
  layout.addColumnData(new ColumnWeightData(8));
  tree.setLayout(layout);
  treeViewer.setContentProvider(getTreeProvider());
  treeViewer.setLabelProvider(getTreeProvider());
  treeViewer.setInput(getWizard().getTempContainer());
}

Fixed version (ground truth):
@Override void createControl(){
  treeViewer=new TreeViewer(getPrimaryPanel(),SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL| SWT.V_SCROLL);
  Tree tree=treeViewer.getTree();
  final GridData gridData=new GridData(GridData.FILL_BOTH);
  gridData.grabExcessHorizontalSpace=true;
  treeViewer.getControl().setLayoutData(gridData);
  tree.addMouseListener(new MouseListener(){
    @Override public void mouseUp(    MouseEvent e){
    }
    @Override public void mouseDown(    MouseEvent e){
      Point pt=new Point(e.x,e.y);
      if (treeViewer.getCell(pt) != null && treeViewer.getCell(pt).getViewerRow() != null && treeViewer.getCell(pt).getViewerRow().getItem() != null) {
        handleSelection((treeViewer.getCell(pt).getColumnIndex()),treeViewer.getCell(pt).getViewerRow().getItem().getData());
      }
    }
    @Override public void mouseDoubleClick(    MouseEvent e){
      Point pt=new Point(e.x,e.y);
      if (treeViewer.getCell(pt) != null && treeViewer.getCell(pt).getViewerRow() != null && treeViewer.getCell(pt).getViewerRow().getItem() != null) {
        handleDoubleClick((treeViewer.getCell(pt).getColumnIndex()),treeViewer.getCell(pt).getViewerRow().getItem().getData());
      }
    }
  }
);
  treeViewer.setUseHashlookup(true);
  tree.setHeaderVisible(true);
  tree.setLinesVisible(true);
  TreeColumn treeColumn=new TreeColumn(tree,SWT.LEFT);
  treeColumn.setText(Messages.model);
  TreeViewerColumn treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT);
  treeViewerColumn.getColumn().setText(Messages.security);
  treeViewerColumn.getColumn().setToolTipText(Messages.securityTooltip);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.create);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.read);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.update);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.delete);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.execute);
  treeViewerColumn=new TreeViewerColumn(treeViewer,SWT.LEFT | SWT.CHECK);
  treeViewerColumn.getColumn().setText(Messages.alter);
  TableLayout layout=new TableLayout();
  layout.addColumnData(new ColumnWeightData(60));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(8));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(10));
  layout.addColumnData(new ColumnWeightData(11));
  layout.addColumnData(new ColumnWeightData(8));
  tree.setLayout(layout);
  treeViewer.setContentProvider(getTreeProvider());
  treeViewer.setLabelProvider(getTreeProvider());
  treeViewer.setInput(getWizard().getTempContainer());
}