mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 06:32:10 +02:00
- moved build dialog to own package.
- modified actions - proper behavior on selection - invoke build dialog in proper mode and selections.
This commit is contained in:
parent
f1a4d0ae90
commit
bf35ff6cac
7 changed files with 213 additions and 56 deletions
|
@ -8,7 +8,14 @@
|
|||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.ui.actions;
|
||||
|
||||
import org.eclipse.cdt.core.model.ICContainer;
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.make.ui.dialogs.BuildTargetDialog;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.QualifiedName;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
|
@ -24,8 +31,25 @@ public class CreateBuildAction extends ActionDelegate implements IObjectActionDe
|
|||
IContainer fContainer;
|
||||
|
||||
public void run(IAction action) {
|
||||
BuildTargetDialog dialog = new BuildTargetDialog(fPart.getSite().getShell(), fContainer);
|
||||
dialog.open();
|
||||
if ( fContainer != null ) {
|
||||
BuildTargetDialog dialog = new BuildTargetDialog(fPart.getSite().getShell(), fContainer);
|
||||
dialog.setOpenMode(BuildTargetDialog.OPEN_MODE_BUILD);
|
||||
String name;
|
||||
try {
|
||||
name = (String) fContainer.getSessionProperty(new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget"));
|
||||
IMakeTarget target = MakeCorePlugin.getDefault().getTargetManager().findTarget(fContainer, name);
|
||||
dialog.setSelectedTarget(target);
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
dialog.open();
|
||||
IMakeTarget target = dialog.getSelectedTarget();
|
||||
if ( target != null ) {
|
||||
try {
|
||||
fContainer.setSessionProperty(new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget"), target.getName());
|
||||
} catch (CoreException e1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
|
||||
|
@ -37,8 +61,14 @@ public class CreateBuildAction extends ActionDelegate implements IObjectActionDe
|
|||
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
if ( selection instanceof IStructuredSelection ) {
|
||||
fContainer = (IContainer)((IStructuredSelection)selection).getFirstElement();
|
||||
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();
|
||||
} else {
|
||||
fContainer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package org.eclipse.cdt.make.ui.actions;
|
||||
package org.eclipse.cdt.make.ui.dialogs;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.eclipse.cdt.make.core.IMakeBuilderInfo;
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.core.IMakeTargetManager;
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
|
@ -26,6 +27,13 @@ import org.eclipse.swt.widgets.Shell;
|
|||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
public class BuildTargetDialog extends TitleAreaDialog {
|
||||
private IMakeTarget fSelection;
|
||||
public static int OPEN_MODE_BUILD = 1;
|
||||
public static int OPEN_MODE_CREATE_NEW = 2;
|
||||
public static int OPEN_MODE_RENAME = 2;
|
||||
|
||||
private int openMode;
|
||||
|
||||
private static final String PREFIX = "SettingsBlock"; //$NON-NLS-1$
|
||||
|
||||
private static final String MAKE_SETTING_GROUP = PREFIX + ".makeSetting.group_label"; //$NON-NLS-1$
|
||||
|
@ -43,9 +51,9 @@ public class BuildTargetDialog extends TitleAreaDialog {
|
|||
Text buildCommand;
|
||||
Button defButton;
|
||||
|
||||
IMakeBuilderInfo fBuildInfo;
|
||||
IMakeBuilderInfo fBuildInfo;
|
||||
IMakeTargetManager fTargetManager;
|
||||
|
||||
|
||||
/**
|
||||
* @param parentShell
|
||||
*/
|
||||
|
@ -53,7 +61,7 @@ public class BuildTargetDialog extends TitleAreaDialog {
|
|||
super(parentShell);
|
||||
fTargetManager = MakeCorePlugin.getDefault().getTargetManager();
|
||||
String[] id = fTargetManager.getTargetBuilders(container.getProject());
|
||||
if ( id != null) {
|
||||
if (id != null) {
|
||||
fBuildInfo = MakeCorePlugin.createBuildInfo(new HashMap(), id[0]);
|
||||
}
|
||||
}
|
||||
|
@ -63,13 +71,13 @@ public class BuildTargetDialog extends TitleAreaDialog {
|
|||
*/
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
Control control = super.createDialogArea(parent);
|
||||
|
||||
|
||||
createSettingControls(parent);
|
||||
createBuildCmdControls(parent);
|
||||
|
||||
|
||||
return control;
|
||||
}
|
||||
|
||||
|
||||
protected void createSettingControls(Composite parent) {
|
||||
String[][] radios = new String[][] { { MakeUIPlugin.getResourceString(MAKE_SETTING_STOP_ERROR), STOP_ARG }, {
|
||||
MakeUIPlugin.getResourceString(MAKE_SETTING_KEEP_GOING), KEEP_ARG }
|
||||
|
@ -137,4 +145,16 @@ public class BuildTargetDialog extends TitleAreaDialog {
|
|||
defButton.setSelection(fBuildInfo.isDefaultBuildCmd());
|
||||
}
|
||||
|
||||
public void setOpenMode(int mode) {
|
||||
openMode = mode;
|
||||
}
|
||||
|
||||
public void setSelectedTarget(IMakeTarget target) {
|
||||
fSelection = target;
|
||||
}
|
||||
|
||||
public IMakeTarget getSelectedTarget() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -5,26 +5,51 @@ package org.eclipse.cdt.make.ui.views;
|
|||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIImages;
|
||||
import org.eclipse.cdt.make.ui.dialogs.BuildTargetDialog;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.actions.SelectionListenerAction;
|
||||
|
||||
|
||||
public class AddTargetAction extends SelectionListenerAction {
|
||||
public class AddTargetAction extends SelectionListenerAction {
|
||||
|
||||
Shell shell;
|
||||
IResource resource;
|
||||
|
||||
public AddTargetAction (Shell shell) {
|
||||
public AddTargetAction(Shell shell) {
|
||||
super("Add Build Target");
|
||||
this.shell = shell;
|
||||
|
||||
|
||||
setToolTipText("Add Build Target");
|
||||
MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_ADD);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
|
||||
if (canAdd()) {
|
||||
BuildTargetDialog dialog = new BuildTargetDialog(shell, (IContainer) getStructuredSelection().getFirstElement());
|
||||
dialog.setOpenMode(BuildTargetDialog.OPEN_MODE_CREATE_NEW);
|
||||
dialog.open();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected boolean updateSelection(IStructuredSelection selection) {
|
||||
return super.updateSelection(selection) && canAdd();
|
||||
}
|
||||
|
||||
private boolean canAdd() {
|
||||
List elements = getStructuredSelection().toList();
|
||||
if (elements.size() > 1 || elements.size() < 1) {
|
||||
return false;
|
||||
}
|
||||
if (elements.get(0) instanceof IContainer) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,26 +5,83 @@ package org.eclipse.cdt.make.ui.views;
|
|||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIImages;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.jface.dialogs.MessageDialog;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.actions.SelectionListenerAction;
|
||||
|
||||
|
||||
public class DeleteTargetAction extends SelectionListenerAction {
|
||||
public class DeleteTargetAction extends SelectionListenerAction {
|
||||
|
||||
Shell shell;
|
||||
IResource resource;
|
||||
|
||||
public DeleteTargetAction (Shell shell) {
|
||||
public DeleteTargetAction(Shell shell) {
|
||||
super("Delete Build Target");
|
||||
this.shell = shell;
|
||||
|
||||
|
||||
setToolTipText("Delete Build Target");
|
||||
MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_DELETE);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
|
||||
/**
|
||||
* Asks the user to confirm a delete operation.
|
||||
*
|
||||
* @return <code>true</code> if the user says to go ahead, and <code>false</code>
|
||||
* if the deletion should be abandoned
|
||||
*/
|
||||
boolean confirmDelete() {
|
||||
List targets = getTargetsToDelete();
|
||||
String title;
|
||||
String msg;
|
||||
if (targets.size() == 1) {
|
||||
title = "Confirm Target Deletion";
|
||||
IMakeTarget target = (IMakeTarget) targets.get(0);
|
||||
msg = MessageFormat.format("Are you sure you want to delete ''{0}''?", new Object[] { target.getName()});
|
||||
} else {
|
||||
title = "Confirm Multiple Target Deletion";
|
||||
msg = MessageFormat.format("Are you sure you want to delete these {0} targets?", new Object[] { new Integer(targets.size())});
|
||||
}
|
||||
return MessageDialog.openQuestion(shell, title, msg);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
if (canDelete() && confirmDelete() == false)
|
||||
return;
|
||||
}
|
||||
|
||||
protected boolean updateSelection(IStructuredSelection selection) {
|
||||
return super.updateSelection(selection) && canDelete();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
private List getTargetsToDelete() {
|
||||
return getStructuredSelection().toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
private boolean canDelete() {
|
||||
List elements = getStructuredSelection().toList();
|
||||
if (elements.size() > 0) {
|
||||
Iterator iterator = elements.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
if (!(iterator.next() instanceof IMakeTarget)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIImages;
|
||||
import org.eclipse.cdt.make.ui.dialogs.BuildTargetDialog;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.actions.SelectionListenerAction;
|
||||
|
||||
public class EditTargetAction extends SelectionListenerAction {
|
||||
|
||||
Shell shell;
|
||||
IResource resource;
|
||||
|
||||
public EditTargetAction(Shell shell) {
|
||||
super("Edit Build Target");
|
||||
this.shell = shell;
|
||||
|
||||
setToolTipText("Edit Build Target");
|
||||
MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_EDIT);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
if (canRename()) {
|
||||
BuildTargetDialog dialog = new BuildTargetDialog(shell, (IContainer) getStructuredSelection().getFirstElement());
|
||||
dialog.setOpenMode(BuildTargetDialog.OPEN_MODE_CREATE_NEW);
|
||||
dialog.setSelectedTarget((IMakeTarget) getStructuredSelection().getFirstElement());
|
||||
dialog.open();
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean updateSelection(IStructuredSelection selection) {
|
||||
return super.updateSelection(selection) && canRename();
|
||||
}
|
||||
|
||||
private boolean canRename() {
|
||||
List elements = getStructuredSelection().toList();
|
||||
if (elements.size() > 1 || elements.size() < 1) {
|
||||
return false;
|
||||
}
|
||||
if (elements.get(0) instanceof IMakeTarget) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@ import org.eclipse.ui.part.ViewPart;
|
|||
public class MakeView extends ViewPart {
|
||||
|
||||
private BuildTargetAction buildTargetAction;
|
||||
private RenameTargetAction renameTargetAction;
|
||||
private EditTargetAction editTargetAction;
|
||||
private DeleteTargetAction deleteTargetAction;
|
||||
AddTargetAction addTargetAction;
|
||||
TreeViewer viewer;
|
||||
|
@ -90,7 +90,7 @@ public class MakeView extends ViewPart {
|
|||
buildTargetAction = new BuildTargetAction(viewer.getControl().getShell());
|
||||
addTargetAction = new AddTargetAction(viewer.getControl().getShell());
|
||||
deleteTargetAction = new DeleteTargetAction(viewer.getControl().getShell());
|
||||
renameTargetAction = new RenameTargetAction(viewer.getControl().getShell());
|
||||
editTargetAction = new EditTargetAction(viewer.getControl().getShell());
|
||||
}
|
||||
private void contributeToActionBars() {
|
||||
IActionBars bars = getViewSite().getActionBars();
|
||||
|
@ -126,7 +126,7 @@ public class MakeView extends ViewPart {
|
|||
manager.add(buildTargetAction);
|
||||
manager.add(addTargetAction);
|
||||
manager.add(deleteTargetAction);
|
||||
manager.add(renameTargetAction);
|
||||
manager.add(editTargetAction);
|
||||
manager.add(new Separator());
|
||||
drillDownAdapter.addNavigationActions(manager);
|
||||
|
||||
|
@ -150,6 +150,6 @@ public class MakeView extends ViewPart {
|
|||
void updateActions(IStructuredSelection sel) {
|
||||
buildTargetAction.selectionChanged(sel);
|
||||
deleteTargetAction.selectionChanged(sel);
|
||||
renameTargetAction.selectionChanged(sel);
|
||||
editTargetAction.selectionChanged(sel);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIImages;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.actions.SelectionListenerAction;
|
||||
|
||||
|
||||
public class RenameTargetAction extends SelectionListenerAction {
|
||||
|
||||
Shell shell;
|
||||
IResource resource;
|
||||
|
||||
public RenameTargetAction (Shell shell) {
|
||||
super("Rename Build Target");
|
||||
this.shell = shell;
|
||||
|
||||
setToolTipText("Rename Build Target");
|
||||
MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_RENAME);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue