diff options
Diffstat (limited to 'build/org.eclipse.cdt.make.ui')
2 files changed, 32 insertions, 20 deletions
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/AddBuildTargetAction.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/AddBuildTargetAction.java index 421d685805a..2d4f0b36072 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/AddBuildTargetAction.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/AddBuildTargetAction.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.makefile.ITargetRule; import org.eclipse.cdt.make.internal.ui.MakeUIPlugin; import org.eclipse.cdt.make.ui.dialogs.MakeTargetDialog; +import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.Action; @@ -68,18 +69,15 @@ public class AddBuildTargetAction extends Action { sbMakefileTarget.append(' ').append(name); } } - String buildName = sbBuildName.toString(); + String buildName = generateUniqueName(file.getParent(), sbBuildName.toString()); String makefileTarget = sbMakefileTarget.toString(); - IMakeTarget target; + IMakeTarget target = null; try { - target = manager.findTarget(file.getParent(), buildName); - if (target == null) { - String[] ids = manager.getTargetBuilders(file.getProject()); - if (ids.length > 0) { - target = manager.createTarget(file.getProject(), buildName, ids[0]); - target.setBuildTarget(makefileTarget); - manager.addTarget(file.getParent(), target); - } + String[] ids = manager.getTargetBuilders(file.getProject()); + if (ids.length > 0) { + target = manager.createTarget(file.getProject(), buildName, ids[0]); + target.setBuildAttribute(IMakeTarget.BUILD_TARGET, makefileTarget); + target.setContainer(file.getParent()); } } catch (CoreException e) { MakeUIPlugin.errorDialog(shell, MakeUIPlugin.getResourceString("AddBuildTargetAction.exception.internal"), e.toString(), e); //$NON-NLS-1$ @@ -99,6 +97,20 @@ public class AddBuildTargetAction extends Action { } } + private String generateUniqueName(IContainer container, String targetString) { + String newName = targetString; + int i = 0; + IMakeTargetManager manager = MakeCorePlugin.getDefault().getTargetManager(); + try { + while (manager.findTarget(container, newName) != null) { + i++; + newName = targetString + " (" + Integer.toString(i) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ + } + } catch (CoreException e) { + } + return newName; + } + public boolean canActionBeAdded(ISelection selection) { ITargetRule[] rules = getTargetRules(selection); for (int i = 0; i < rules.length; i++) { diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java index 07b0e3b468f..079554f5362 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/MakeTargetDialog.java @@ -91,7 +91,7 @@ public class MakeTargetDialog extends Dialog { buildCommand = target.getBuildCommand(); buildArguments = target.getBuildArguments(); targetName = target.getName(); - targetString = target.getBuildTarget(); + targetString = target.getBuildAttribute(IMakeTarget.BUILD_TARGET, "all"); targetBuildID = target.getTargetBuilderID(); runAllBuilders = target.runAllBuilders(); } @@ -125,7 +125,7 @@ public class MakeTargetDialog extends Dialog { private String getTitle() { String title; - if (fTarget == null) { + if (fTarget == null || !MakeCorePlugin.getDefault().getTargetManager().targetExists(fTarget)) { title = MakeUIPlugin.getResourceString("MakeTargetDialog.title.createMakeTarget"); //$NON-NLS-1$ } else { title = MakeUIPlugin.getResourceString("MakeTargetDialog.title.modifyMakeTarget"); //$NON-NLS-1$ @@ -298,10 +298,10 @@ public class MakeTargetDialog extends Dialog { } protected void createButtonsForButtonBar(Composite parent) { - if (fTarget != null) { - createButton(parent, IDialogConstants.OK_ID, MakeUIPlugin.getResourceString("MakeTargetDialog.button.update"), true); //$NON-NLS-1$ - } else { + if (fTarget == null || !MakeCorePlugin.getDefault().getTargetManager().targetExists(fTarget)) { createButton(parent, IDialogConstants.OK_ID, MakeUIPlugin.getResourceString("MakeTargetDialog.button.create"), true); //$NON-NLS-1$ + } else { + createButton(parent, IDialogConstants.OK_ID, MakeUIPlugin.getResourceString("MakeTargetDialog.button.update"), true); //$NON-NLS-1$ } createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); //do this here because setting the text will set enablement on the ok @@ -333,7 +333,7 @@ public class MakeTargetDialog extends Dialog { } protected boolean targetHasChanged() { - if (initializing || fTarget == null) + if (initializing || fTarget == null || !MakeCorePlugin.getDefault().getTargetManager().targetExists(fTarget)) return true; if (isStopOnError != isStopOnError()) return true; @@ -421,16 +421,16 @@ public class MakeTargetDialog extends Dialog { } else { path = new Path(bldLine.substring(start, end)); } - target.setBuildCommand(path); + target.setBuildAttribute(IMakeTarget.BUILD_COMMAND, path.toString()); String args = ""; //$NON-NLS-1$ if (end != -1) { args = bldLine.substring(end + 1); } - target.setBuildArguments(args); + target.setBuildAttribute(IMakeTarget.BUILD_ARGUMENTS, args); } - target.setBuildTarget(getTarget()); + target.setBuildAttribute(IMakeTarget.BUILD_TARGET, getTarget()); - if (fTarget == null) { + if (fTarget == null || !MakeCorePlugin.getDefault().getTargetManager().targetExists(fTarget)) { fTargetManager.addTarget(fContainer, target); } else { if (!target.getName().equals(getTargetName())) { |