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
* @see org.eclipse.ui.part.WorkbenchPart#setFocus()
	 */
	public void setFocus() {
		Viewer viewer = getViewer();
		if (viewer != null && !viewer.getControl().isDisposed()) {
			viewer.getControl().setFocus();
		}
	}
	/**
	 * Build a comparator from the default settings.
	 * 
	 * @return ViewerComparator
	 */
	protected ViewerComparator buildComparator() {
		return createTableComparator();
	}
	/**
	 * Create a TableComparator for the receiver.
	 * @return TableComparator
	 */
	TableComparator createTableComparator() {
		TableComparator sorter = TableComparator.createTableSorter(getSortingFields());
		sorter.restoreState(getDialogSettings());
		return sorter;
	}
	
	protected abstract IField[] getSortingFields();
	protected abstract IField[] getAllFields();
	protected abstract IDialogSettings getDialogSettings();
	/**