/* * Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved. * * This program and the accompanying materials are made available * under the terms of the Eclipse Public License, Version 1.0, * which accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html * */ package net.rim.ejde.internal.ui.views.profiler; import net.rim.ejde.internal.ui.views.AbstractTreeOwnerDrawLabelProvider; import org.eclipse.jface.viewers.OwnerDrawLabelProvider; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.TableItem; /** * This class is the abstract super class of label providers used in profile tabs. * * * @author zqiu * */ public abstract class AbstractProfileLabelProvider extends AbstractTreeOwnerDrawLabelProvider { ProfileTab _tab; /** * Constructs an instance of ProfileLabelProvider. * * @param tab */ public AbstractProfileLabelProvider( ProfileTab tab ) { super( tab.getViewer() ); _tab = tab; } /** * (non-javadoc) * * @see AbstractTreeOwnerDrawLabelProvider#calculateDisplayLevel(Object) */ public int calculateDisplayLevel( Object obj ) { return ProfileTab.getDisplayLevel( obj ); } /** * (non-javadoc) * * @see AbstractTreeOwnerDrawLabelProvider#getIndent(Object) */ public int getIndent( Object obj ) { return _tab.getIndent( obj ); } /** * (non-javadoc) * * @see AbstractTreeOwnerDrawLabelProvider#findRowAtSameIndent(Object, int) */ public boolean findRowAtSameIndent( Object obj, int indent ) { Object[] data = _tab.getData(); if( data == null ) return false; int row = getIndex( obj ) + 1; for( int i = row; i < data.length; i++ ) { Object item = data[ i ]; if( item == null ) { return false; } int indentOfChild = getIndent( item ); if( indentOfChild < 0 ) return false; if( indentOfChild < indent ) { return false; } if( indentOfChild == indent ) { return true; } } return false; } /** * (non-javadoc) * * @see AbstractTreeOwnerDrawLabelProvider#getIndex(Object) */ public int getIndex( Object obj ) { Object item; if( obj instanceof TableItem ) item = ( (TableItem) obj ).getData(); else item = obj; return _tab.getItemIndex( _tab.getData(), item ); } /** * (non-javadoc) * * @see AbstractTreeOwnerDrawLabelProvider#hasChildren(Object) */ public boolean hasChildren( Object obj ) { return _tab.getChildrenCount( obj ) != 0; } /** * (non-javadoc) * * @see AbstractTreeOwnerDrawLabelProvider#isExpanded(Object) */ public boolean isExpanded( Object obj ) { return _tab.isItemExpanded( obj ); } /** * (non-javadoc) * * @see OwnerDrawLabelProvider#measure(Event, Object) */ protected void measure( Event event, Object element ) { // TODO nothing to do } }