Fixed Retarget Project enablement in Apply Patch Wizard
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java
index a8d53b5..40c0ed4 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java
@@ -212,6 +212,7 @@
 	private PreviewPatchPage2 previewPatchPage;
 	
 	private HashMap nodesToDiffs;
+	private HashMap contributedActions;
 	
 	public PatcherCompareEditorInput() {
 		super(new CompareConfiguration());
@@ -538,16 +539,14 @@
 	
 	public void contributeDiffViewerToolbarItems(Action[] actions, boolean workspacePatch){
 		ToolBarManager tbm= CompareViewerPane.getToolBarManager(viewer.getControl().getParent());
+		contributedActions = new HashMap();
 		if (tbm != null) {
 			tbm.removeAll();
 			
 			tbm.add(new Separator("contributed")); //$NON-NLS-1$
 			
 			for (int i = 0; i < actions.length; i++) {
-				//If this is a workspace patch, make sure all actions are enabled
-				if (workspacePatch)
-					actions[i].setEnabled(true);
-				
+				contributedActions.put(actions[i].getId(), actions[i]);
 				tbm.appendToGroup("contributed", actions[i]); //$NON-NLS-1$
 			}
 			
@@ -628,4 +627,11 @@
 	public void setPreviewPatchPage(PreviewPatchPage2 page) {
 		previewPatchPage = page;
 	}
+	
+	public void setContributedActionEnablement(String actionID, boolean enabled){
+		Object obj = contributedActions.get(actionID);
+		if (obj != null && obj instanceof Action){
+			((Action) obj).setEnabled(enabled);
+		}
+	}
 }
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java
index c8bc66a..2a5c301 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java
@@ -64,8 +64,13 @@
 	private Text fFuzzField;
 	
 	private Action fRetargetSelection;
+	private static final String retargetID = "PreviewPatchPage_retargetSelection"; //$NON-NLS-1$
+	
 	private Action fIgnoreWhiteSpace;
+	private static final String ignoreWSID = "PreviewPatchPage_ignoreWhiteSpace"; //$NON-NLS-1$
+	
 	private Action fReversePatch;
+	private static final String reversePatchID = "PreviewPatchPage_reversePatch"; //$NON-NLS-1$
 	
 	protected boolean pageRecalculate= true;
 	
@@ -237,6 +242,7 @@
 		};
 		fRetargetSelection.setToolTipText(PatchMessages.PreviewPatchPage2_RetargetTooltip);
 		fRetargetSelection.setEnabled(false);
+		fRetargetSelection.setId(retargetID);
 		
 		fIgnoreWhiteSpace = new Action(PatchMessages.PreviewPatchPage2_IgnoreWSAction, CompareUIPlugin.getImageDescriptor(ICompareUIConstants.IGNORE_WHITESPACE_ENABLED)){
 			public void run(){
@@ -249,6 +255,7 @@
 		fIgnoreWhiteSpace.setChecked(false);
 		fIgnoreWhiteSpace.setToolTipText(PatchMessages.PreviewPatchPage2_IgnoreWSTooltip);
 		fIgnoreWhiteSpace.setDisabledImageDescriptor(CompareUIPlugin.getImageDescriptor(ICompareUIConstants.IGNORE_WHITESPACE_DISABLED));
+		fIgnoreWhiteSpace.setId(ignoreWSID);
 		
 		fReversePatch = new Action(PatchMessages.PreviewPatchPage_ReversePatch_text, CompareUIPlugin.getImageDescriptor(ICompareUIConstants.REVERSE_PATCH_ENABLED)){
 			public void run(){
@@ -260,6 +267,7 @@
 		};
 		fReversePatch.setChecked(false);
 		fReversePatch.setToolTipText(PatchMessages.PreviewPatchPage_ReversePatch_text);
+		fReversePatch.setId(reversePatchID);
 		
 		return new Action[]{fIgnoreWhiteSpace, fRetargetSelection, fReversePatch};
 	}
@@ -287,6 +295,10 @@
 		
 		patcherCompareEditorInput.updateInput(fPatchWizard.getPatcher());
 		
+		if (fPatchWizard.getPatcher().isWorkspacePatch()){
+			patcherCompareEditorInput.setContributedActionEnablement(retargetID, true);
+		}
+		
 	}
 	/*
 	 *	Create the group for setting various patch options
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java
index a8d53b5..40c0ed4 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatcherCompareEditorInput.java
@@ -212,6 +212,7 @@
 	private PreviewPatchPage2 previewPatchPage;
 	
 	private HashMap nodesToDiffs;
+	private HashMap contributedActions;
 	
 	public PatcherCompareEditorInput() {
 		super(new CompareConfiguration());
@@ -538,16 +539,14 @@
 	
 	public void contributeDiffViewerToolbarItems(Action[] actions, boolean workspacePatch){
 		ToolBarManager tbm= CompareViewerPane.getToolBarManager(viewer.getControl().getParent());
+		contributedActions = new HashMap();
 		if (tbm != null) {
 			tbm.removeAll();
 			
 			tbm.add(new Separator("contributed")); //$NON-NLS-1$
 			
 			for (int i = 0; i < actions.length; i++) {
-				//If this is a workspace patch, make sure all actions are enabled
-				if (workspacePatch)
-					actions[i].setEnabled(true);
-				
+				contributedActions.put(actions[i].getId(), actions[i]);
 				tbm.appendToGroup("contributed", actions[i]); //$NON-NLS-1$
 			}
 			
@@ -628,4 +627,11 @@
 	public void setPreviewPatchPage(PreviewPatchPage2 page) {
 		previewPatchPage = page;
 	}
+	
+	public void setContributedActionEnablement(String actionID, boolean enabled){
+		Object obj = contributedActions.get(actionID);
+		if (obj != null && obj instanceof Action){
+			((Action) obj).setEnabled(enabled);
+		}
+	}
 }
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java
index c8bc66a..2a5c301 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java
@@ -64,8 +64,13 @@
 	private Text fFuzzField;
 	
 	private Action fRetargetSelection;
+	private static final String retargetID = "PreviewPatchPage_retargetSelection"; //$NON-NLS-1$
+	
 	private Action fIgnoreWhiteSpace;
+	private static final String ignoreWSID = "PreviewPatchPage_ignoreWhiteSpace"; //$NON-NLS-1$
+	
 	private Action fReversePatch;
+	private static final String reversePatchID = "PreviewPatchPage_reversePatch"; //$NON-NLS-1$
 	
 	protected boolean pageRecalculate= true;
 	
@@ -237,6 +242,7 @@
 		};
 		fRetargetSelection.setToolTipText(PatchMessages.PreviewPatchPage2_RetargetTooltip);
 		fRetargetSelection.setEnabled(false);
+		fRetargetSelection.setId(retargetID);
 		
 		fIgnoreWhiteSpace = new Action(PatchMessages.PreviewPatchPage2_IgnoreWSAction, CompareUIPlugin.getImageDescriptor(ICompareUIConstants.IGNORE_WHITESPACE_ENABLED)){
 			public void run(){
@@ -249,6 +255,7 @@
 		fIgnoreWhiteSpace.setChecked(false);
 		fIgnoreWhiteSpace.setToolTipText(PatchMessages.PreviewPatchPage2_IgnoreWSTooltip);
 		fIgnoreWhiteSpace.setDisabledImageDescriptor(CompareUIPlugin.getImageDescriptor(ICompareUIConstants.IGNORE_WHITESPACE_DISABLED));
+		fIgnoreWhiteSpace.setId(ignoreWSID);
 		
 		fReversePatch = new Action(PatchMessages.PreviewPatchPage_ReversePatch_text, CompareUIPlugin.getImageDescriptor(ICompareUIConstants.REVERSE_PATCH_ENABLED)){
 			public void run(){
@@ -260,6 +267,7 @@
 		};
 		fReversePatch.setChecked(false);
 		fReversePatch.setToolTipText(PatchMessages.PreviewPatchPage_ReversePatch_text);
+		fReversePatch.setId(reversePatchID);
 		
 		return new Action[]{fIgnoreWhiteSpace, fRetargetSelection, fReversePatch};
 	}
@@ -287,6 +295,10 @@
 		
 		patcherCompareEditorInput.updateInput(fPatchWizard.getPatcher());
 		
+		if (fPatchWizard.getPatcher().isWorkspacePatch()){
+			patcherCompareEditorInput.setContributedActionEnablement(retargetID, true);
+		}
+		
 	}
 	/*
 	 *	Create the group for setting various patch options