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
if (widthInt != null && widthInt.intValue() > 0) {
						width = widthInt.intValue();
					}
				}
			}
			result[i] = new ColumnPixelData(width, defaultPixelData.resizable,
					defaultPixelData.addTrim);
		}
		return result;
	}
	/**
	 * Return the column sizes from the actual widget. Returns the saved column
	 * sizes if the widget hasn't been created yet or its columns haven't been
	 * initialized yet. (Note that TableLayout only initializes the column
	 * widths after the first layout, so it is possible for the widget to exist
	 * but have all its columns incorrectly set to zero width - see bug 86329)
	 * 
	 * @return ColumnPixelData
	 */
	public ColumnPixelData[] getColumnData() {
		ColumnPixelData[] defaultData = getSavedColumnData();
		Tree tree = getTree();
		if (tree != null && (tree.isDisposed() || tree.getBounds().width == 0)) {
			tree = null;
		}
		TreeColumn[] column = null;
		if (tree != null) {
			column = tree.getColumns();
		}
		ColumnPixelData[] result = new ColumnPixelData[defaultData.length];