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.jface/src/org/eclipse/jface/viewers/ColumnViewer.java
if (viewerEditor != null) {
			control.addMouseListener(new MouseAdapter() {
				public void mouseDown(MouseEvent e) {
					viewerEditor.handleMouseDown(e);
				}
			});
		}
	}
	/**
	 * Creates the viewer editor used for editing cell contents. To be implemented by subclasses.
	 * 
	 * @return the editor, or <code>null</code> if this viewer does not support editing cell contents.
	 */
	protected abstract AbstractViewerEditor createViewerEditor();
	/**
	 * Returns the viewer cell at the given widget-relative coordinates, or
	 * <code>null</code> if there is no cell at that location
	 * 
	 * @param point
	 *            the widget-relative coordinates
	 * @return the cell or <code>null</code> if no cell is found at the given point
	 */
	ViewerCell getCell(Point point) {
		ViewerRow row = getViewerRow(point);
		if (row != null) {
			return row.getCell(point);
		}
		return null;