Change fortran file icon in Project Explorer view

Change-Id: If95638766bba65da7f57ebd13699c305d296580f
Signed-off-by: Greg Watson <g.watson@computer.org>
diff --git a/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif b/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif
index ac45f38..5981749 100644
--- a/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif
+++ b/org.eclipse.photran.cdtinterface/icons/obj16/f_file_obj.gif
Binary files differ
diff --git a/org.eclipse.photran.cdtinterface/plugin.xml b/org.eclipse.photran.cdtinterface/plugin.xml
index 53b9f5e..99e98a6 100644
--- a/org.eclipse.photran.cdtinterface/plugin.xml
+++ b/org.eclipse.photran.cdtinterface/plugin.xml
@@ -450,7 +450,7 @@
           activeByDefault="true"
           id="org.eclipse.photran.ui.navigator.content"
           contentProvider="org.eclipse.cdt.internal.ui.navigator.CNavigatorContentProvider"
-          labelProvider="org.eclipse.cdt.internal.ui.navigator.CNavigatorLabelProvider"
+          labelProvider="org.eclipse.photran.internal.cdtinterface.ui.FNavigatorLabelProvider"
           name="Fortran Elements"
           priority="high">
          <triggerPoints>
diff --git a/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/FNavigatorLabelProvider.java b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/FNavigatorLabelProvider.java
new file mode 100644
index 0000000..badcd22
--- /dev/null
+++ b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/FNavigatorLabelProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2018 TODO COMPANY NAME and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    gw6 (TODO COMPANY NAME) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.photran.internal.cdtinterface.ui;
+
+import org.eclipse.cdt.core.model.IArchiveContainer;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.IBinaryContainer;
+import org.eclipse.cdt.core.model.IBinaryModule;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.internal.ui.cview.CViewMessages;
+import org.eclipse.cdt.internal.ui.navigator.CNavigatorProblemsLabelDecorator;
+import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider;
+import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.navigator.ICommonContentExtensionSite;
+import org.eclipse.ui.navigator.ICommonLabelProvider;
+
+/**
+ * 
+ * @author gw6
+ */
+@SuppressWarnings("restriction")
+public class FNavigatorLabelProvider extends FViewLabelProvider implements ICommonLabelProvider
+{
+
+    /**
+     * Create a default label provider.
+     */
+    public FNavigatorLabelProvider()
+    {
+        super(AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS,
+            AppearanceAwareLabelProvider.DEFAULT_IMAGEFLAGS | CElementImageProvider.SMALL_ICONS);
+        addLabelDecorator(new CNavigatorProblemsLabelDecorator());
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.ICommonLabelProvider#init(org.eclipse.ui.navigator.
+     * ICommonContentExtensionSite)
+     */
+    @Override
+    public void init(ICommonContentExtensionSite extensionSite)
+    {
+        // no-op
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
+     */
+    @Override
+    public void restoreState(IMemento memento)
+    {
+        // no-op
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
+     */
+    @Override
+    public void saveState(IMemento memento)
+    {
+        // no-op
+    }
+
+    /*
+     * @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object)
+     */
+    @Override
+    public String getDescription(Object element)
+    {
+        if (element instanceof IResource)
+        {
+            return ((IResource)element).getFullPath().makeRelative().toString();
+        }
+        else if (element instanceof ICElement)
+        {
+            ICElement celement = (ICElement)element;
+            IResource res = celement.getAdapter(IResource.class);
+            if (res != null)
+            {
+                return res.getFullPath().toString();
+            }
+            else if (celement.getElementType() == ICElement.C_VCONTAINER)
+            {
+                if (celement instanceof IBinaryContainer)
+                {
+                    ICProject cproj = celement.getCProject();
+                    if (cproj != null) { return cproj.getPath() + CViewMessages.CView_binaries; }
+                }
+                else if (celement instanceof IArchiveContainer)
+                {
+                    ICProject cproj = celement.getCProject();
+                    if (cproj != null) { return cproj.getPath() + CViewMessages.CView_archives; }
+                }
+                else if (celement instanceof IBinaryModule)
+                {
+                    IBinary bin = ((IBinaryModule)celement).getBinary();
+                    return bin.getPath() + ":" + celement.getElementName(); //$NON-NLS-1$
+                }
+            }
+            else if (celement
+                .getElementType() > ICElement.C_UNIT) { return celement.getPath().toString()
+                    + " - [" + celement.getElementName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+            }
+            return celement.getElementName();
+        }
+        else if (element instanceof IWorkbenchAdapter)
+        {
+            IWorkbenchAdapter wAdapter = (IWorkbenchAdapter)element;
+            return wAdapter.getLabel(element);
+        }
+        return null;
+    }
+
+}