Bug 163317 [Viewers] Take over SWT programming pattern to JFace Viewers
To open ColumnViewer for reusablility we should not make it final making the constructor protected forces people to subclass it and not directly creating instances from it.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/TableView.java
for (int i = 0; i < columns.length; i++) {
			TreeColumn column = columns[i];
			if (column.getData().equals(top)) {
				updateDirectionIndicator(column);
				return;
			}
		}
	}
	/**
	 * Update the direction indicator as column is now the primary column.
	 * 
	 * @param column
	 */
	void updateDirectionIndicator(TreeColumn column) {
		getViewer().getTree().setSortColumn(column);
		if (getTableSorter().getTopPriorityDirection() == TableComparator.ASCENDING)
			getViewer().getTree().setSortDirection(SWT.UP);
		else
			getViewer().getTree().setSortDirection(SWT.DOWN);
	}
	/**
	 * Set the selection of the receiver.
	 * 
	 * @param selection
	 */
	protected void setSelection(IStructuredSelection selection) {
		selectionProvider.setSelection(selection);
	}
}