Program: 52749
Project: 52749
Buggy source:
@Override protected void createTopTable(Composite parent){
  Composite container=new Composite(parent,SWT.NONE);
  TableColumnLayout layout=new TableColumnLayout();
  container.setLayout(layout);
  indeces=new TableViewer(container,SWT.FULL_SELECTION);
  ColumnEditingSupport.prepare(indeces);
  ShowHideColumnHelper support=new ShowHideColumnHelper(ConsumerPriceIndexListView.class.getSimpleName() + "String_Node_Str",getPreferenceStore(),indeces,layout);
  Column column=new Column(Messages.ColumnYear,SWT.None,80);
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      return String.valueOf(((ConsumerPriceIndex)element).getYear());
    }
  }
);
  ColumnViewerSorter.create(ConsumerPriceIndex.class,"String_Node_Str","String_Node_Str").attachTo(column,SWT.DOWN);
  new ValueEditingSupport(ConsumerPriceIndex.class,"String_Node_Str",Values.Year).addListener(this).attachTo(column);
  support.addColumn(column);
  column=new Column(Messages.ColumnMonth,SWT.None,80);
  column.setLabelProvider(new ColumnLabelProvider(){
    private final String[] MONTHS=new DateFormatSymbols().getMonths();
    @Override public String getText(    Object element){
      return String.valueOf(MONTHS[((ConsumerPriceIndex)element).getMonth()]);
    }
  }
);
  ColumnViewerSorter.create(ConsumerPriceIndex.class,"String_Node_Str","String_Node_Str").attachTo(column);
  new MonthEditingSupport(ConsumerPriceIndex.class,"String_Node_Str").addListener(this).attachTo(column);
  support.addColumn(column);
  column=new Column(Messages.ColumnIndex,SWT.RIGHT,80);
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      return Values.Index.format(((ConsumerPriceIndex)element).getIndex());
    }
  }
);
  ColumnViewerSorter.create(ConsumerPriceIndex.class,"String_Node_Str").attachTo(column);
  new ValueEditingSupport(ConsumerPriceIndex.class,"String_Node_Str",Values.Index).addListener(this).attachTo(column);
  support.addColumn(column);
  support.createColumns();
  indeces.getTable().setHeaderVisible(true);
  indeces.getTable().setLinesVisible(true);
  indeces.setContentProvider(new SimpleListContentProvider());
  indeces.setInput(getClient().getConsumerPriceIndeces());
  indeces.refresh();
  ViewerHelper.pack(indeces);
  hookContextMenu(indeces.getTable(),new IMenuListener(){
    public void menuAboutToShow(    IMenuManager manager){
      fillContextMenu(manager);
    }
  }
);
}

Fixed version (ground truth):
@Override protected void createTopTable(Composite parent){
  Composite container=new Composite(parent,SWT.NONE);
  TableColumnLayout layout=new TableColumnLayout();
  container.setLayout(layout);
  indeces=new TableViewer(container,SWT.FULL_SELECTION);
  ColumnEditingSupport.prepare(indeces);
  ShowHideColumnHelper support=new ShowHideColumnHelper(ConsumerPriceIndexListView.class.getSimpleName() + "String_Node_Str",getPreferenceStore(),indeces,layout);
  Column column=new Column(Messages.ColumnYear,SWT.None,80);
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      return String.valueOf(((ConsumerPriceIndex)element).getYear());
    }
  }
);
  ColumnViewerSorter.create(ConsumerPriceIndex.class,"String_Node_Str","String_Node_Str").attachTo(column,SWT.DOWN);
  new ValueEditingSupport(ConsumerPriceIndex.class,"String_Node_Str",Values.Year).addListener(this).attachTo(column);
  support.addColumn(column);
  column=new Column(Messages.ColumnMonth,SWT.None,80);
  column.setLabelProvider(new ColumnLabelProvider(){
    private final String[] MONTHS=new DateFormatSymbols().getMonths();
    @Override public String getText(    Object element){
      return String.valueOf(MONTHS[((ConsumerPriceIndex)element).getMonth()]);
    }
  }
);
  ColumnViewerSorter.create(ConsumerPriceIndex.class,"String_Node_Str","String_Node_Str").attachTo(column);
  new MonthEditingSupport(ConsumerPriceIndex.class,"String_Node_Str").addListener(this).attachTo(column);
  support.addColumn(column);
  column=new Column(Messages.ColumnIndex,SWT.RIGHT,80);
  column.setLabelProvider(new ColumnLabelProvider(){
    @Override public String getText(    Object element){
      return Values.Index.format(((ConsumerPriceIndex)element).getIndex());
    }
  }
);
  ColumnViewerSorter.create(ConsumerPriceIndex.class,"String_Node_Str").attachTo(column);
  new ValueEditingSupport(ConsumerPriceIndex.class,"String_Node_Str",Values.Index).addListener(this).attachTo(column);
  support.addColumn(column);
  support.createColumns();
  indeces.getTable().setHeaderVisible(true);
  indeces.getTable().setLinesVisible(true);
  indeces.setContentProvider(new SimpleListContentProvider());
  ViewerHelper.pack(indeces);
  indeces.setInput(getClient().getConsumerPriceIndeces());
  indeces.refresh();
  hookContextMenu(indeces.getTable(),new IMenuListener(){
    public void menuAboutToShow(    IMenuManager manager){
      fillContextMenu(manager);
    }
  }
);
}