mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-13 03:05:39 +02:00
[125538] applied patch to fix more target drag & drop issues
- bug with renaming of target being copied. - allow Ctr-C and then Ctrl-V without need for selecting the folder. this has a side effect enabling copying on selection of make target. Well, at least it is consistent with current drag&drop behaviour. - small fixes, such as disabling "Build" button initially, or not allowing "Add" action on multiple selection.
This commit is contained in:
parent
7386dd2f98
commit
d87cfdf0b6
6 changed files with 65 additions and 28 deletions
|
@ -106,15 +106,17 @@ public class MakeTargetManager implements IMakeTargetManager, IResourceChangeLis
|
|||
}
|
||||
|
||||
public void renameTarget(IMakeTarget target, String name) throws CoreException {
|
||||
ProjectTargets projectTargets = projectMap.get(target.getProject());
|
||||
MakeTarget makeTarget = (MakeTarget)target;
|
||||
|
||||
ProjectTargets projectTargets = projectMap.get(makeTarget.getProject());
|
||||
if (projectTargets == null) {
|
||||
projectTargets = readTargets(target.getProject());
|
||||
projectTargets = readTargets(makeTarget.getProject());
|
||||
}
|
||||
if (!projectTargets.contains((MakeTarget)target)) {
|
||||
throw new CoreException(new Status(IStatus.ERROR, MakeCorePlugin.getUniqueIdentifier(), -1, MakeMessages.getString("MakeTargetManager.target_exists"), null)); //$NON-NLS-1$
|
||||
|
||||
makeTarget.setName(name);
|
||||
if (projectTargets.contains(makeTarget)) {
|
||||
updateTarget(makeTarget);
|
||||
}
|
||||
((MakeTarget)target).setName(name);
|
||||
updateTarget((MakeTarget) target);
|
||||
}
|
||||
|
||||
public IMakeTarget[] getTargets(IContainer container) throws CoreException {
|
||||
|
|
|
@ -471,8 +471,13 @@ public class MakeTargetDialog extends Dialog {
|
|||
protected void okPressed() {
|
||||
IMakeTarget target = fTarget;
|
||||
try {
|
||||
if (fTarget == null) {
|
||||
target = fTargetManager.createTarget(fContainer.getProject(), getTargetName(), targetBuildID);
|
||||
String targetName = getTargetName();
|
||||
if (target == null) {
|
||||
target = fTargetManager.createTarget(fContainer.getProject(), targetName, targetBuildID);
|
||||
} else {
|
||||
if (!target.getName().equals(targetName)) {
|
||||
fTargetManager.renameTarget(target, targetName);
|
||||
}
|
||||
}
|
||||
target.setStopOnError(isStopOnError());
|
||||
target.setRunAllBuilders(runAllBuilders());
|
||||
|
@ -506,10 +511,6 @@ public class MakeTargetDialog extends Dialog {
|
|||
|
||||
if (fTarget == null || !MakeCorePlugin.getDefault().getTargetManager().targetExists(fTarget)) {
|
||||
fTargetManager.addTarget(fContainer, target);
|
||||
} else {
|
||||
if (!target.getName().equals(getTargetName())) {
|
||||
fTargetManager.renameTarget(target, getTargetName());
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
MakeUIPlugin.errorDialog(
|
||||
|
|
|
@ -58,9 +58,11 @@ public class AddTargetAction extends SelectionListenerAction {
|
|||
}
|
||||
|
||||
private Object getSelectedElement() {
|
||||
Object element = getStructuredSelection().getFirstElement();
|
||||
if (element instanceof IContainer || element instanceof IMakeTarget) {
|
||||
return element;
|
||||
if (getStructuredSelection().size()==1) {
|
||||
Object element = getStructuredSelection().getFirstElement();
|
||||
if (element instanceof IContainer || element instanceof IMakeTarget) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ public class BuildTargetAction extends SelectionListenerAction {
|
|||
|
||||
setToolTipText(MakeUIPlugin.getResourceString("BuildTargetAction.tooltip")); //$NON-NLS-1$
|
||||
MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_BUILD); //$NON-NLS-1$
|
||||
setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -77,11 +77,11 @@ public class MakeView extends ViewPart {
|
|||
private BuildTargetAction buildTargetAction;
|
||||
private EditTargetAction editTargetAction;
|
||||
private DeleteTargetAction deleteTargetAction;
|
||||
AddTargetAction addTargetAction;
|
||||
private AddTargetAction addTargetAction;
|
||||
private CopyTargetAction copyTargetAction;
|
||||
private PasteTargetAction pasteTargetAction;
|
||||
TreeViewer fViewer;
|
||||
DrillDownAdapter drillDownAdapter;
|
||||
private TreeViewer fViewer;
|
||||
private DrillDownAdapter drillDownAdapter;
|
||||
private Action trimEmptyFolderAction;
|
||||
|
||||
public MakeView() {
|
||||
|
|
|
@ -11,8 +11,7 @@
|
|||
|
||||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.make.internal.ui.dnd.FileTransferDropTargetListener;
|
||||
import org.eclipse.cdt.make.internal.ui.dnd.MakeTargetTransfer;
|
||||
|
@ -72,11 +71,7 @@ public class PasteTargetAction extends SelectionListenerAction {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (selection.size() == 1 && (selection.getFirstElement() instanceof IContainer)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return determineDropContainer()!=null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -85,11 +80,10 @@ public class PasteTargetAction extends SelectionListenerAction {
|
|||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
List<?> resources = getSelectedResources();
|
||||
if (resources.size() != 1 || !(resources.get(0) instanceof IContainer)) {
|
||||
IContainer dropContainer = determineDropContainer();
|
||||
if (dropContainer==null) {
|
||||
return;
|
||||
}
|
||||
IContainer dropContainer = (IContainer) resources.get(0);
|
||||
|
||||
Object clipboardContent;
|
||||
|
||||
|
@ -116,4 +110,41 @@ public class PasteTargetAction extends SelectionListenerAction {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop container is determined by first element. The rest of the logic is
|
||||
* to figure out if drop is allowed. The drop is allowed if the selection is
|
||||
* one {@code IContainer} or {@code IMakeTarget}s from the same folder.
|
||||
*
|
||||
* @return drop container or {@code null}.
|
||||
*/
|
||||
private IContainer determineDropContainer() {
|
||||
IStructuredSelection selection = getStructuredSelection();
|
||||
if (selection.size()==0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Object first = selection.getFirstElement();
|
||||
|
||||
if (first instanceof IContainer) {
|
||||
if (selection.size()==1) {
|
||||
return (IContainer)first;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (first instanceof IMakeTarget) {
|
||||
// it has to be selection of IMakeTargets only and from the same IContainer
|
||||
IContainer dropContainer = ((IMakeTarget)first).getContainer();
|
||||
for (Object item : selection.toList()) {
|
||||
if ( !(item instanceof IMakeTarget) || ((IMakeTarget)item).getContainer()!=dropContainer ) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return dropContainer;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue