trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/TraceLabelProvider.java
changeset 10 ed1c9f64298a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/TraceLabelProvider.java	Wed Jun 23 14:35:40 2010 +0300
@@ -0,0 +1,712 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+* Converts tree model objects to strings to be displayed in the view
+*
+*/
+package com.nokia.tracebuilder.view;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.tracebuilder.engine.LastKnownLocation;
+import com.nokia.tracebuilder.engine.TraceBuilderConfiguration;
+import com.nokia.tracebuilder.engine.TraceBuilderGlobals;
+import com.nokia.tracebuilder.engine.TraceLocation;
+import com.nokia.tracebuilder.engine.TraceLocationList;
+import com.nokia.tracebuilder.engine.TraceViewNameExtension;
+import com.nokia.tracebuilder.file.FileUtils;
+import com.nokia.tracebuilder.model.TraceConstantTableEntry;
+import com.nokia.tracebuilder.model.TraceObject;
+import com.nokia.tracebuilder.model.TraceParameter;
+
+/**
+ * Converts tree model objects to strings to be displayed in the view
+ * 
+ */
+final class TraceLabelProvider extends LabelProvider {
+
+	/**
+	 * Separator to component name and component id fields
+	 */
+	final String COMPONENT_SEPARATOR = ", "; //$NON-NLS-1$	
+
+	/**
+	 * Default tree node image
+	 */
+	private Image defaultImage;
+
+	/**
+	 * Image for trace
+	 */
+	private Image traceImage;
+
+	/**
+	 * Image for trace group
+	 */
+	private Image groupImage;
+
+	/**
+	 * Image for parameter
+	 */
+	private Image parameterImage;
+
+	/**
+	 * Image for property
+	 */
+	private Image propertyImage;
+
+	/**
+	 * Unrelated location icon
+	 */
+	private Image unrelatedLocationImage;
+
+	/**
+	 * Unrelated locations list icon
+	 */
+	private Image unrelatedLocationsImage;
+
+	/**
+	 * List navigator image
+	 */
+	private Image navigatorImage;
+
+	/**
+	 * Constructor
+	 */
+	public TraceLabelProvider() {
+		defaultImage = TraceViewPlugin.getImageDescriptor(
+				"icons/view/default.gif").createImage(); //$NON-NLS-1$
+		traceImage = TraceViewPlugin
+				.getImageDescriptor("icons/view/trace.gif").createImage(); //$NON-NLS-1$
+		groupImage = TraceViewPlugin
+				.getImageDescriptor("icons/view/group.gif").createImage(); //$NON-NLS-1$
+		parameterImage = TraceViewPlugin.getImageDescriptor(
+				"icons/view/parameter.gif").createImage(); //$NON-NLS-1$
+		propertyImage = TraceViewPlugin.getImageDescriptor(
+				"icons/view/property.gif").createImage(); //$NON-NLS-1$
+		unrelatedLocationImage = TraceViewPlugin.getImageDescriptor(
+				"icons/view/unrelated_location.gif").createImage(); //$NON-NLS-1$
+		unrelatedLocationsImage = TraceViewPlugin.getImageDescriptor(
+				"icons/view/unrelated_locations_list.gif").createImage(); //$NON-NLS-1$
+		navigatorImage = TraceViewPlugin.getImageDescriptor(
+				"icons/view/navigator.gif").createImage(); //$NON-NLS-1$
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+	 */
+	@Override
+	public void dispose() {
+		defaultImage.dispose();
+		traceImage.dispose();
+		groupImage.dispose();
+		parameterImage.dispose();
+		propertyImage.dispose();
+		unrelatedLocationImage.dispose();
+		unrelatedLocationsImage.dispose();
+		navigatorImage.dispose();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+	 */
+	@Override
+	public String getText(Object obj) {
+		String text;
+		if (obj instanceof TraceLocationWrapper) {
+			text = traceLocationWrapperToString((TraceLocationWrapper) obj);
+		} else if (obj instanceof PropertyWrapper) {
+			text = propertyWrapperToString((PropertyWrapper) obj);
+		} else if (obj instanceof TraceObjectWrapper) {
+			text = traceObjectWrapperToString((TraceObjectWrapper) obj);
+		} else if (obj instanceof LastKnownLocationWrapper) {
+			text = LastKnownLocationWrapperToString((LastKnownLocationWrapper) obj);
+		} else if (obj instanceof TraceLocationListWrapper) {
+			text = locationListWrapperToString((TraceLocationListWrapper) obj);
+		} else if (obj instanceof LastKnownLocationListWrapper) {
+			text = LastKnownLocationListWrapperToString((LastKnownLocationListWrapper) obj);
+		} else if (obj instanceof ObjectWrapper) {
+			text = ((ObjectWrapper) obj).getObject().toString();
+		} else if (obj instanceof ListNavigator) {
+			text = listNavigatorToString((ListNavigator) obj);
+		} else if (obj instanceof TraceViewExtensionWrapper) {
+			text = ((TraceViewExtensionWrapper) obj).getExtension().toString();
+		} else if (obj instanceof TraceParameterListWrapper) {
+			text = Messages.getString("TraceLabelProvider.Parameters"); //$NON-NLS-1$
+		} else if (obj instanceof TraceGroupListWrapper) {
+			text = Messages.getString("TraceLabelProvider.TraceGroups"); //$NON-NLS-1$
+		} else if (obj instanceof TraceListWrapper) {
+			text = Messages.getString("TraceLabelProvider.Traces"); //$NON-NLS-1$
+		} else if (obj instanceof ConstantTableListWrapper) {
+			text = Messages.getString("TraceLabelProvider.ConstantTables"); //$NON-NLS-1$
+		} else if (obj instanceof TraceLocationListsWrapper) {
+			text = Messages.getString("TraceLabelProvider.LocationListsTitle"); //$NON-NLS-1$
+		} else {
+			text = obj.toString();
+		}
+		return text;
+	}
+
+	/**
+	 * Converts the list navigator to string
+	 * 
+	 * @param navigator
+	 *            the list navigator
+	 * @return the string representation
+	 */
+	private String listNavigatorToString(ListNavigator navigator) {
+		StringBuffer text = new StringBuffer();
+		String start;
+		String end;
+		WrapperBase parent = navigator.getParent();
+		if (parent instanceof TraceListWrapper) {
+			start = Messages
+					.getString("TraceLabelProvider.NavigatorTitleStartTraces"); //$NON-NLS-1$
+			end = Messages
+					.getString("TraceLabelProvider.NavigatorTitleEndTraces"); //$NON-NLS-1$
+		} else if (parent instanceof TraceGroupListWrapper) {
+			start = Messages
+					.getString("TraceLabelProvider.NavigatorTitleStartGroups"); //$NON-NLS-1$
+			end = Messages
+					.getString("TraceLabelProvider.NavigatorTitleEndGroups"); //$NON-NLS-1$
+		} else if (parent instanceof TraceLocationListWrapper) {
+			start = Messages
+					.getString("TraceLabelProvider.NavigatorTitleStartLocations"); //$NON-NLS-1$
+			end = Messages
+					.getString("TraceLabelProvider.NavigatorTitleEndLocations"); //$NON-NLS-1$
+		} else {
+			start = null;
+			end = null;
+			text.append(Messages
+					.getString("TraceLabelProvider.NavigatorTitleInvalid")); //$NON-NLS-1$
+		}
+		if (start != null) {
+			String separator = Messages
+					.getString("TraceLabelProvider.NavigatorTitleValueSeparator"); //$NON-NLS-1$
+			text.append(start);
+			text.append(navigator.getStartIndex());
+			text.append(separator);
+			int max = navigator.getStartIndex() + navigator.getVisibleCount();
+			text.append(max);
+			separator = Messages
+					.getString("TraceLabelProvider.NavigatorTitleTotalCountSeparator"); //$NON-NLS-1$
+			text.append(separator);
+			text.append(navigator.getTotalCount());
+			text.append(end);
+		}
+		return text.toString();
+	}
+
+	/**
+	 * Converts a property wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the property wrapper
+	 * @return the string representation
+	 */
+	private String propertyWrapperToString(PropertyWrapper wrapper) {
+		String text = null;
+		// Get component id's from mmp files
+		if (wrapper.getType().equals(
+				Messages.getString("TraceObjectWrapper.ModelID"))) { //$NON-NLS-1$
+			text = getComponentIdString(wrapper.getType());
+			// Get component names from mmp files
+		} else if (wrapper.getType().equals(
+				Messages.getString("TraceObjectWrapper.ModelName"))) { //$NON-NLS-1$
+			text = getComponentNameString(wrapper.getType());
+		} else {
+			text = wrapper.getType()
+					+ Messages
+							.getString("TraceLabelProvider.PropertySeparator") //$NON-NLS-1$
+					+ wrapper.getProperty();
+		}
+
+		return text;
+	}
+
+	/**
+	 * Get component name string
+	 * 
+	 * @param prefix
+	 *            prefix text
+	 * @return the component name string
+	 */
+	private String getComponentNameString(String prefix) {
+		IFile file = getActiveFile();
+		String propertySeparator = Messages
+				.getString("TraceLabelProvider.PropertySeparator"); //$NON-NLS-1$
+		
+		// Set default text in case that component name is not available
+		String text = prefix + propertySeparator
+		+ Messages.getString("PropertyWrapper.NoProperty"); //$NON-NLS-1$;
+		if (file != null) {
+			IProject project = file.getProject();
+
+			// Check that project is Carbide project
+			boolean isCarbideProject = CarbideBuilderPlugin.getBuildManager()
+					.isCarbideProject(project);
+			if (isCarbideProject) {
+
+				// Check if file is not source file
+				if (isSourceFile(file)) {
+					String componentNameString = TraceBuilderGlobals
+							.getCurrentSoftwareComponentName();
+					if (componentNameString != null) {
+						text = prefix + propertySeparator + componentNameString;
+					}
+				}
+
+				// Even file is source file it could be that we do know
+				// component name, because it could be that file is not included
+				// to MMP file
+				if (text == null) {
+					text = prefix
+							+ propertySeparator
+							+ Messages
+									.getString("PropertyWrapper.NotAvailable"); //$NON-NLS-1$;
+				}
+			}
+		}
+		return text;
+	}
+
+	/**
+	 * Get active file in editor
+	 * 
+	 * @return the active file in editor
+	 */
+	private IFile getActiveFile() {
+
+		IFile file = null;
+
+		IWorkbenchWindow window = PlatformUI.getWorkbench()
+				.getActiveWorkbenchWindow();
+		if (window != null) {
+			IWorkbenchPage page = window.getActivePage();
+			if (page != null) {
+				IEditorPart editor = page.getActiveEditor();
+				if (editor != null) {
+					IEditorInput input = editor.getEditorInput();
+					if (input instanceof IFileEditorInput) {
+						file = ((IFileEditorInput) input).getFile();
+					}
+				}
+			}
+		}
+
+		return file;
+	}
+
+	/**
+	 * Get component id string
+	 * 
+	 * @param prefix
+	 *            prefix text
+	 * @return the component id string
+	 */
+	private String getComponentIdString(String prefix) {
+		IFile file = getActiveFile();
+		String propertySeparator = Messages
+				.getString("TraceLabelProvider.PropertySeparator"); //$NON-NLS-1$
+
+		// Set default text in case that component ID is not available
+		String text = prefix + propertySeparator
+		+ Messages.getString("PropertyWrapper.NoProperty"); //$NON-NLS-1$;;		
+		
+		if (file != null) {
+			IProject project = file.getProject();
+
+			// Check that project is Carbide project
+			boolean isCarbideProject = CarbideBuilderPlugin.getBuildManager()
+					.isCarbideProject(project);
+			if (isCarbideProject) {
+
+				// Check if file is not source file
+				if (isSourceFile(file)) {
+					String uidString = TraceBuilderGlobals
+							.getCurrentSoftwareComponentId();
+					if (uidString != null) {
+						text = prefix + propertySeparator + uidString;
+					}
+				}
+
+				// Even file is source file it could be that we do know
+				// component id, because it could be that file is not included
+				// to MMP file
+				if (text == null) {
+					text = prefix
+							+ propertySeparator
+							+ Messages
+									.getString("PropertyWrapper.NotAvailable"); //$NON-NLS-1$;
+				}
+			}
+		}
+		
+		return text; // CodForChk_Dis_Exits
+	}
+
+	/**
+	 * Converts a trace object wrapper to string
+	 * 
+	 * @param obj
+	 *            the object wrapper
+	 * @return the string representation
+	 */
+	private String traceObjectWrapperToString(TraceObjectWrapper obj) {
+		String text;
+		if (obj instanceof ConstantTableWrapper) {
+			text = constantTableWrapperToString((ConstantTableWrapper) obj);
+		} else if (obj instanceof ConstantTableEntryWrapper) {
+			text = constantTableEntryWrapperToString((ConstantTableEntryWrapper) obj);
+		} else if (obj instanceof TraceParameterWrapper) {
+			text = traceParameterWrapperToString((TraceParameterWrapper) obj);
+		} else {
+			text = commonTraceObjectWrapperToString(obj);
+		}
+		return text;
+	}
+
+	/**
+	 * Converts a parameter wrapper to a string
+	 * 
+	 * @param wrapper
+	 *            the parameter wrapper
+	 * @return the string representation
+	 */
+	private String traceParameterWrapperToString(TraceParameterWrapper wrapper) {
+		String text = commonTraceObjectWrapperToString(wrapper);
+		text += Messages.getString("TraceLabelProvider.ParameterTypeSeparator") //$NON-NLS-1$
+				+ TraceViewMessages
+						.parameterTypeToString((TraceParameter) wrapper
+								.getTraceObject());
+		if (wrapper.isArrayType()) {
+			text += Messages.getString("TraceParameterWrapper.ArrayTag"); //$NON-NLS-1$
+		}
+		return text;
+	}
+
+	/**
+	 * Converts a trace object wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the trace object wrapper
+	 * @return the string representation
+	 */
+	private String commonTraceObjectWrapperToString(TraceObjectWrapper wrapper) {
+		String text = null;
+		TraceObject object = wrapper.getTraceObject();
+		// If object is null, it has been deleted but view is not refreshed yet
+		if (object != null) {
+			String name = object.getName();
+			if (name.length() > 0) {
+				TraceViewNameExtension nameExt = wrapper.getTraceObject()
+						.getExtension(TraceViewNameExtension.class);
+				if (nameExt != null) {
+					text = nameExtensionToString(name, nameExt);
+				} else {
+					text = name;
+				}
+			}
+		}
+		if (text == null) {
+			text = Messages.getString("TraceLabelProvider.Unnamed"); //$NON-NLS-1$
+		}
+		return text;
+	}
+
+	/**
+	 * Merges a name and name extension together
+	 * 
+	 * @param name
+	 *            the object name
+	 * @param nameExt
+	 *            the name extension
+	 * @return the merged name
+	 */
+	private String nameExtensionToString(String name,
+			TraceViewNameExtension nameExt) {
+		StringBuffer text = new StringBuffer();
+		text.append(name);
+		text.append(Messages
+				.getString("TraceLabelProvider.NameExtensionPrefix")); //$NON-NLS-1$
+		text.append(nameExt.getNameExtension());
+		text.append(Messages
+				.getString("TraceLabelProvider.NameExtensionPostfix")); //$NON-NLS-1$
+		return text.toString();
+	}
+
+	/**
+	 * Converts a constant table entry wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the constant table entry wrapper
+	 * @return the string representation
+	 */
+	private String constantTableEntryWrapperToString(
+			ConstantTableEntryWrapper wrapper) {
+		String text;
+		// Constant table entry wrappers extend TraceObjectWrapper, but
+		// representation is different
+		TraceConstantTableEntry entry = (TraceConstantTableEntry) wrapper
+				.getTraceObject();
+		if (entry != null) {
+			StringBuffer sb = new StringBuffer();
+			sb.append(entry.getID());
+			sb.append(Messages
+					.getString("TraceLabelProvider.ConstantValueSeparator")); //$NON-NLS-1$
+			sb.append(entry.getName());
+			text = sb.toString();
+		} else {
+			text = Messages.getString("TraceLabelProvider.Unnamed"); //$NON-NLS-1$
+		}
+		return text;
+	}
+
+	/**
+	 * Converts a constant table wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the constant table wrapper
+	 * @return the string representation
+	 */
+	private String constantTableWrapperToString(ConstantTableWrapper wrapper) {
+		String text = null;
+		TraceObject object = wrapper.getTraceObject();
+		if (object != null) {
+			String name = object.getName();
+			if (name != null && name.length() > 0) {
+				text = createConstantTableName(wrapper, name);
+			}
+		}
+		if (text == null) {
+			text = Messages.getString("TraceLabelProvider.Unnamed"); //$NON-NLS-1$
+		}
+		return text;
+	}
+
+	/**
+	 * Creates a constant table name
+	 * 
+	 * @param wrapper
+	 *            the constant table
+	 * @param name
+	 *            the original table name
+	 * @return the name shown in view
+	 */
+	private String createConstantTableName(ConstantTableWrapper wrapper,
+			String name) {
+		String text;
+		StringBuffer sb = new StringBuffer();
+		// Constant tables in the model's list of tables do not need
+		// the "Type: " tag
+		if (!(wrapper.getParent() instanceof ConstantTableListWrapper)) {
+			sb.append(Messages
+					.getString("TraceLabelProvider.ConstantTableNameTypeTag")); //$NON-NLS-1$
+		}
+		sb.append(Messages
+				.getString("TraceLabelProvider.ConstantTableNamePrefix")); //$NON-NLS-1$
+		sb.append(name);
+		sb.append(Messages
+				.getString("TraceLabelProvider.ConstantTableNamePostfix")); //$NON-NLS-1$
+		text = sb.toString();
+		return text;
+	}
+
+	/**
+	 * Converts a location list wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the location list wrapper
+	 * @return the string representation
+	 */
+	private String locationListWrapperToString(TraceLocationListWrapper wrapper) {
+		String text;
+		WrapperBase parent = wrapper.getParent();
+		if (parent instanceof TraceWrapper) {
+			text = Messages.getString("TraceLabelProvider.Locations"); //$NON-NLS-1$
+		} else {
+			text = wrapper.getLocationList().getListTitle();
+			if (text == null) {
+				text = Messages
+						.getString("TraceLabelProvider.UnrelatedLocations"); //$NON-NLS-1$
+			}
+		}
+		return text;
+	}
+
+	/**
+	 * Converts a last known location list wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the location list wrapper
+	 * @return the string representation
+	 */
+	private String LastKnownLocationListWrapperToString(
+			LastKnownLocationListWrapper wrapper) {
+		return Messages.getString("TraceLabelProvider.LastKnownLocations"); //$NON-NLS-1$
+	}
+
+	/**
+	 * Converts a location wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the location wrapper
+	 * @return the string representation
+	 */
+	private String traceLocationWrapperToString(TraceLocationWrapper wrapper) {
+		String text = null;
+		TraceLocation loc = wrapper.getLocation();
+		if (loc != null) {
+			StringBuffer sb = new StringBuffer();
+			if (loc.getTrace() == null) {
+				sb.append(loc.getFileName());
+				sb.append(Messages
+						.getString("TraceLabelProvider.FileLineSeparator")); //$NON-NLS-1$
+				sb.append(loc.getLineNumber());
+				sb.append(Messages
+						.getString("TraceLabelProvider.LocationNameStart")); //$NON-NLS-1$
+				sb.append(loc.getOriginalName());
+				sb.append(Messages
+						.getString("TraceLabelProvider.LocationNameEnd")); //$NON-NLS-1$
+			} else {
+				sb.append(loc.getFileName());
+				sb.append(Messages
+						.getString("TraceLabelProvider.FileLineSeparator")); //$NON-NLS-1$
+				sb.append(loc.getLineNumber());
+			}
+			if (TraceBuilderConfiguration.SHOW_LOCATION_TAG_IN_VIEW) {
+				sb.append(" ["); //$NON-NLS-1$
+				sb.append(loc.getTag());
+				sb.append("]"); //$NON-NLS-1$
+			}
+			text = sb.toString();
+		}
+		if (text == null) {
+			text = Messages.getString("TraceLabelProvider.Unnamed"); //$NON-NLS-1$
+		}
+		return text;
+	}
+
+	/**
+	 * Converts a last known location wrapper to string
+	 * 
+	 * @param wrapper
+	 *            the location wrapper
+	 * @return the string representation
+	 */
+	private String LastKnownLocationWrapperToString(
+			LastKnownLocationWrapper wrapper) {
+		String text = null;
+		LastKnownLocation loc = wrapper.getLocation();
+		if (loc != null) {
+			StringBuffer sb = new StringBuffer();
+			sb.append(loc.getFileName());
+			sb.append(Messages
+					.getString("TraceLabelProvider.FileLineSeparator")); //$NON-NLS-1$
+			sb.append(loc.getLineNumber());
+			String start = Messages
+					.getString("TraceLabelProvider.LocationNameSeparatorStart"); //$NON-NLS-1$
+			sb.append(start);
+			sb.append(loc.getFilePath());
+			sb.append(Messages
+					.getString("TraceLabelProvider.LocationNameSeparatorEnd")); //$NON-NLS-1$
+			text = sb.toString();
+		}
+		if (text == null) {
+			text = Messages.getString("TraceLabelProvider.Unnamed"); //$NON-NLS-1$
+		}
+		return text;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+	 */
+	@Override
+	public Image getImage(Object element) {
+		Image retval = defaultImage;
+		if (element instanceof TraceLocationWrapper) {
+			TraceLocation loc = ((TraceLocationWrapper) element).getLocation();
+			if (loc != null && loc.getTrace() == null) {
+				TraceLocationList list = loc.getLocationList();
+				if (list != null) {
+					String text = list.getListTitle();
+					if (text == null) {
+						retval = unrelatedLocationImage;
+					}
+				}
+			}
+		} else if (element instanceof TraceLocationListWrapper) {
+			WrapperBase parent = ((WrapperBase) element).getParent();
+			if (!(parent instanceof TraceWrapper)) {
+				TraceLocationList list = ((TraceLocationListWrapper) element)
+						.getLocationList();
+				if (list != null) {
+					String text = list.getListTitle();
+					if (text == null) {
+						retval = unrelatedLocationsImage;
+					}
+				}
+			}
+		} else if (element instanceof TraceWrapper) {
+			retval = traceImage;
+		} else if (element instanceof TraceGroupWrapper) {
+			retval = groupImage;
+		} else if (element instanceof TraceParameterWrapper) {
+			retval = parameterImage;
+		} else if (element instanceof PropertyWrapper) {
+			retval = propertyImage;
+		} else if (element instanceof ListNavigator) {
+			retval = navigatorImage;
+		}
+		return retval;
+	}
+
+	/**
+	 * Check that is file source file
+	 * 
+	 * @param file
+	 *            file that need to be check
+	 * @return true if file is source file, false if not
+	 */
+	private boolean isSourceFile(IFile file) {
+		boolean retVal = false;
+
+		String extension = file.getFileExtension();
+
+		if (extension != null
+				&& (extension.equalsIgnoreCase(FileUtils.CPP_EXTENSION) || extension
+						.equalsIgnoreCase(FileUtils.C_EXTENSION))) {
+			retVal = true;
+		}
+		return retVal;
+	}	
+	
+}