// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.ui.internal.proportions.cockpit; import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.swt.widgets.Composite; import org.projectusus.ui.internal.AnalysisDisplayEntry; import org.projectusus.ui.internal.MetricStatisticsCategory; import org.projectusus.ui.viewer.UsusTreeViewer; class CockpitTreeViewer extends UsusTreeViewer<AnalysisDisplayEntry> { CockpitTreeViewer( Composite parent ) { super( parent, CockpitColumnDesc.values() ); setUseHashlookup( true ); ColumnViewerToolTipSupport.enableFor( this ); setLabelProvider( new CockpitLP() ); setContentProvider( new CockpitCP() ); } void selectInTree( Object object ) { if( object instanceof AnalysisDisplayEntry ) { selectCodeProportionInTree( ((AnalysisDisplayEntry)object) ); } } private void selectCodeProportionInTree( AnalysisDisplayEntry displayEntry ) { for( Object element : getExpandedElements() ) { if( element instanceof MetricStatisticsCategory ) { for( AnalysisDisplayEntry entry : ((MetricStatisticsCategory)element).getChildren() ) { if( entry.isSameKindAs( displayEntry ) ) { setSelection( createTreeSelection( new Object[] { element, entry } ) ); } } } } } private TreeSelection createTreeSelection( Object... elements ) { return new TreeSelection( new TreePath( elements ) ); } }