From e34c4afc9ab8ca9ffe3f1fa062a1c8b65d8dfe14 Mon Sep 17 00:00:00 2001
From: David Inglis <dinglis@qnx.com>
Date: Fri, 21 Nov 2003 15:06:17 +0000
Subject: [PATCH] fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=46486

---
 build/org.eclipse.cdt.make.ui/plugin.xml      | 81 +++++++++++++++++--
 .../make/ui/actions/AbstractTargetAction.java | 22 ++++-
 2 files changed, 94 insertions(+), 9 deletions(-)

diff --git a/build/org.eclipse.cdt.make.ui/plugin.xml b/build/org.eclipse.cdt.make.ui/plugin.xml
index 09eae320c28..cf411450d64 100644
--- a/build/org.eclipse.cdt.make.ui/plugin.xml
+++ b/build/org.eclipse.cdt.make.ui/plugin.xml
@@ -102,20 +102,89 @@
          </filter>
       </objectContribution>
       <objectContribution
-            objectClass="org.eclipse.core.resources.IContainer"
+            objectClass="org.eclipse.cdt.core.model.ITranslationUnit"
+            adaptable="false"
+            id="org.eclipse.cdt.make.ui.popupMenu.CViewContribution">
+         <action
+               label="%ActionMakeCreateTarget.label"
+               class="org.eclipse.cdt.make.ui.actions.CreateTargetAction"
+               menubarPath="buildGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.make.ui.CViewCreateTargetAction">
+         </action>
+         <action
+               label="%ActionMakeBuildTarget.label"
+               class="org.eclipse.cdt.make.ui.actions.BuildTargetAction"
+               menubarPath="buildGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.make.ui.CViewBuildTargetAction">
+         </action>
+         <filter
+               name="projectNature"
+               value="org.eclipse.cdt.make.core.makeNature">
+         </filter>
+      </objectContribution>
+      <objectContribution
+            objectClass="org.eclipse.cdt.core.model.IBinary"
+            adaptable="false"
+            id="org.eclipse.cdt.make.ui.popupMenu.CViewContribution">
+         <action
+               label="%ActionMakeCreateTarget.label"
+               class="org.eclipse.cdt.make.ui.actions.CreateTargetAction"
+               menubarPath="buildGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.make.ui.CViewCreateTargetAction">
+         </action>
+         <action
+               label="%ActionMakeBuildTarget.label"
+               class="org.eclipse.cdt.make.ui.actions.BuildTargetAction"
+               menubarPath="buildGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.make.ui.CViewBuildTargetAction">
+         </action>
+         <filter
+               name="projectNature"
+               value="org.eclipse.cdt.make.core.makeNature">
+         </filter>
+      </objectContribution>
+      <objectContribution
+            objectClass="org.eclipse.cdt.core.model.IArchive"
+            adaptable="false"
+            id="org.eclipse.cdt.make.ui.popupMenu.CViewContribution">
+         <action
+               label="%ActionMakeCreateTarget.label"
+               class="org.eclipse.cdt.make.ui.actions.CreateTargetAction"
+               menubarPath="buildGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.make.ui.CViewCreateTargetAction">
+         </action>
+         <action
+               label="%ActionMakeBuildTarget.label"
+               class="org.eclipse.cdt.make.ui.actions.BuildTargetAction"
+               menubarPath="buildGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.make.ui.CViewBuildTargetAction">
+         </action>
+         <filter
+               name="projectNature"
+               value="org.eclipse.cdt.make.core.makeNature">
+         </filter>
+      </objectContribution>
+      <objectContribution
+            objectClass="org.eclipse.core.resources.IResource"
             adaptable="false"
             id="org.eclipse.cdt.make.ui.popupMenu.NavigatorContribution">
          <action
                label="%ActionMakeBuildTarget.label"
                class="org.eclipse.cdt.make.ui.actions.BuildTargetAction"
-               menubarPath="additions"
+               menubarPath="buildGroup"
                enablesFor="1"
                id="org.eclipse.cdt.make.ui.NavigatorBuildTargetAction">
          </action>
          <action
                label="%ActionMakeCreateTarget.label"
                class="org.eclipse.cdt.make.ui.actions.CreateTargetAction"
-               menubarPath="additions"
+               menubarPath="buildGroup"
                enablesFor="1"
                id="org.eclipse.cdt.make.ui.CViewCreateTargetAction">
          </action>
@@ -287,7 +356,9 @@
          </action>
       </actionSet>
    </extension>
-   <extension
+
+<!-- Makefile Editor comment out for CDT 1.2 -->
+   <!--extension
          id="org.eclipse.cdt.make.editor"
          name="MakefileEditor"
          point="org.eclipse.ui.editors">
@@ -299,7 +370,7 @@
             class="org.eclipse.cdt.make.internal.ui.editor.MakefileEditor"
             id="org.eclipse.cdt.make.editor">
       </editor>
-   </extension>
+   </extension -->
    <extension
          point="org.eclipse.ui.startup">
       <startup>
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/AbstractTargetAction.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/AbstractTargetAction.java
index b6803f1fa0c..e154c6716ba 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/AbstractTargetAction.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/AbstractTargetAction.java
@@ -9,9 +9,11 @@
 package org.eclipse.cdt.make.ui.actions;
 
 import org.eclipse.cdt.core.model.ICContainer;
+import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.make.core.MakeCorePlugin;
 import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
 import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -54,10 +56,22 @@ public abstract class AbstractTargetAction
 		boolean enabled = false;
 		if (selection instanceof IStructuredSelection) {
 			IStructuredSelection sel = (IStructuredSelection) selection;
-			if (sel.getFirstElement() instanceof ICContainer) {
-				fContainer = (IContainer) ((ICContainer) sel.getFirstElement()).getUnderlyingResource();
-			} else if (sel.getFirstElement() instanceof IContainer) {
-				fContainer = (IContainer) sel.getFirstElement();
+			Object obj = sel.getFirstElement();
+			if (obj instanceof ICElement) {
+				if ( obj instanceof ICContainer) {
+					fContainer = (IContainer) ((ICContainer) obj).getUnderlyingResource();
+				} else {
+					obj = ((ICElement)obj).getResource();
+					if ( obj != null) {
+						fContainer = ((IResource)obj).getParent();
+					}
+				}
+			} else if (obj instanceof IResource) {
+				if (obj instanceof IContainer) {
+					fContainer = (IContainer) obj;
+				} else {
+					fContainer = ((IResource)obj).getParent();
+				}
 			} else {
 				fContainer = null;
 			}