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
* 
	 * @return TableSortDialog
	 */
	protected TableSortDialog getSortDialog() {
		return new TableSortDialog(getSite(), getTableSorter());
	}
	/**
	 * Return the table sorter portion of the sorter.
	 * 
	 * @return TableSorter
	 */
	TableComparator getTableSorter() {
		return (TableComparator) viewer.getComparator();
	}
	protected abstract void handleKeyPressed(KeyEvent event);
	protected abstract void handleOpenEvent(OpenEvent event);
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.ui.part.ViewPart#saveState(org.eclipse.ui.IMemento)
	 */
	public void saveState(IMemento memento) {
		super.saveState(memento);
		ColumnPixelData[] data = getColumnData();
		for (int i = 0; i < data.length; i++) {
			ColumnPixelData data2 = data[i];
			memento.putInteger(TAG_COLUMN_WIDTH + i, data2.width);
		}
		
		Tree tree = getTree();