From ad843c5751207afad5302aae51d7ceb04db664a3 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Fri, 5 Sep 2003 20:52:24 +0000 Subject: [PATCH] finish up project convertion to convert old make target to new targets finish up build target dialog - add/remove/delete now working - displayed as a table --- .../make/internal/ui/part/ListViewerPart.java | 35 ----- .../cdt/make/ui/MakeContentProvider.java | 12 +- .../cdt/make/ui/MakeLabelProvider.java | 60 ++++---- .../cdt/make/ui/TargetListViewerPart.java | 137 ++++++++++++++++++ .../ui/actions/UpdateMakeProjectAction.java | 99 +++++++++++-- .../make/ui/dialogs/BuildTargetDialog.java | 53 ++----- .../cdt/make/ui/dialogs/MakeTargetDialog.java | 78 +++++----- 7 files changed, 316 insertions(+), 158 deletions(-) delete mode 100644 build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/ListViewerPart.java create mode 100644 build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/ListViewerPart.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/ListViewerPart.java deleted file mode 100644 index 2a647f56fa8..00000000000 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/ListViewerPart.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.eclipse.cdt.make.internal.ui.part; - -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; - -public class ListViewerPart extends StructuredViewerPart { - - public ListViewerPart(String[] buttonLabels) { - super(buttonLabels); - } - - protected StructuredViewer createStructuredViewer(Composite parent, int style) { - TableViewer tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.BORDER); - tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent e) { - ListViewerPart.this.selectionChanged((IStructuredSelection) e.getSelection()); - } - }); - return tableViewer; - } - - protected void buttonSelected(Button button, int index) { - } - - protected void selectionChanged(IStructuredSelection selection) { - } - - -} diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java index d50c89ef3f1..aeabf2a19f1 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java @@ -38,7 +38,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis public MakeContentProvider() { this(false); } - + public MakeContentProvider(boolean flat) { bFlatten = flat; } @@ -80,10 +80,10 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis } public Object[] getElements(Object obj) { - if ( bFlatten ) { + if (bFlatten) { List list = new ArrayList(); Object[] children = getChildren(obj); - for( int i = 0; i < children.length; i++ ) { + for (int i = 0; i < children.length; i++) { list.add(children[i]); list.addAll(Arrays.asList(getElements(children[i]))); } @@ -145,7 +145,11 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis ctrl.getDisplay().syncExec(new Runnable() { public void run() { if (ctrl != null && !ctrl.isDisposed()) { - viewer.refresh(event.getTarget().getContainer()); + if (bFlatten) { + viewer.refresh(); + } else { + viewer.refresh(event.getTarget().getContainer()); + } } } }); diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java index 0b4c74669f1..9829395843e 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java @@ -9,11 +9,12 @@ import org.eclipse.cdt.make.core.IMakeTarget; import org.eclipse.cdt.make.internal.ui.MakeUIImages; import org.eclipse.core.resources.IContainer; import org.eclipse.core.runtime.IPath; +import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.WorkbenchLabelProvider; -public class MakeLabelProvider extends LabelProvider { +public class MakeLabelProvider extends LabelProvider implements ITableLabelProvider { private IPath pathPrefix; WorkbenchLabelProvider fLableProvider = new WorkbenchLabelProvider(); @@ -21,7 +22,7 @@ public class MakeLabelProvider extends LabelProvider { public MakeLabelProvider() { this(null); } - + public MakeLabelProvider(IPath removePrefix) { pathPrefix = removePrefix; } @@ -33,7 +34,7 @@ public class MakeLabelProvider extends LabelProvider { if (obj instanceof IMakeTarget) { return MakeUIImages.getImage(MakeUIImages.IMG_OBJS_BUILD_TARGET); } else if (obj instanceof IContainer) { - return fLableProvider.getImage(obj); + return fLableProvider.getImage(obj); } return image; } @@ -42,37 +43,40 @@ public class MakeLabelProvider extends LabelProvider { * @see ILabelProvider#getText(Object) */ public String getText(Object obj) { - StringBuffer str = new StringBuffer(); if (obj instanceof IMakeTarget) { - if ( pathPrefix != null) { - IPath targetPath = ((IMakeTarget)obj).getContainer().getProjectRelativePath(); - if ( pathPrefix.isPrefixOf(targetPath) ) { - targetPath = targetPath.removeFirstSegments(pathPrefix.segmentCount()); - } - str.append(targetPath.toString()); - if (targetPath.segmentCount() > 0) { - str.append("/"); - } - } - str.append(((IMakeTarget)obj).getName()); + return ((IMakeTarget) obj).getName(); } else if (obj instanceof IContainer) { - if ( pathPrefix != null ) { - IPath targetPath = ((IContainer)obj).getProjectRelativePath(); - if ( pathPrefix.isPrefixOf(targetPath) ) { - targetPath = targetPath.removeFirstSegments(pathPrefix.segmentCount()); - } - str.append(targetPath.toString()); - str.append("/"); - } else { - return fLableProvider.getText(obj); - } + return fLableProvider.getText(obj); } - return str.toString(); + return ""; } - + public void dispose() { super.dispose(); fLableProvider.dispose(); } -} + public Image getColumnImage(Object obj, int columnIndex) { + return columnIndex == 0 ? getImage(obj) : null; + } + + public String getColumnText(Object obj, int columnIndex) { + switch (columnIndex) { + case 0 : + return getText(obj); + case 1 : + if (obj instanceof IMakeTarget) { + if (pathPrefix != null) { + IPath targetPath = ((IMakeTarget) obj).getContainer().getProjectRelativePath(); + if (pathPrefix.isPrefixOf(targetPath)) { + targetPath = targetPath.removeFirstSegments(pathPrefix.segmentCount()); + } + if (targetPath.segmentCount() > 0) { + return targetPath.toString(); + } + } + } + } + return ""; + } +} \ No newline at end of file diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java new file mode 100644 index 00000000000..22782bbb2b1 --- /dev/null +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java @@ -0,0 +1,137 @@ +package org.eclipse.cdt.make.ui; + +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; +import org.eclipse.cdt.make.internal.ui.part.StructuredViewerPart; +import org.eclipse.cdt.make.ui.dialogs.MakeTargetDialog; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; + +public class TargetListViewerPart extends StructuredViewerPart { + + private TableViewer tableViewer; + private IMakeTarget fSelectedTarget; + private final int ADD_TARGET = 0; + private final int REMOVE_TARGET = 1; + private final int EDIT_TARGET = 2; + private IContainer fContainer; + + public TargetListViewerPart(IContainer container) { + super(new String[] { "Add Target...", "Remove Target", "Edit Target..." }); + fContainer = container; + } + + protected StructuredViewer createStructuredViewer(Composite parent, int style) { + tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.BORDER); + Table table = (Table) tableViewer.getControl(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + + layout.addColumnData(new ColumnWeightData(50)); + TableColumn tc = new TableColumn(table, SWT.NONE); + tc.setText("Targets"); + layout.addColumnData(new ColumnWeightData(50)); + tc = new TableColumn(table, SWT.NONE); + tc.setText("Location"); + + tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent e) { + TargetListViewerPart.this.selectionChanged((IStructuredSelection) e.getSelection()); + } + }); + tableViewer.setContentProvider(new MakeContentProvider(true)); + tableViewer.addFilter(new ViewerFilter() { + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof IMakeTarget); + } + }); + tableViewer.setLabelProvider(new MakeLabelProvider(fContainer.getProjectRelativePath())); + tableViewer.setInput(fContainer); + + if (fSelectedTarget != null) { + tableViewer.setSelection(new StructuredSelection(fSelectedTarget), true); + } + return tableViewer; + } + + protected void buttonSelected(Button button, int index) { + try { + switch (index) { + case ADD_TARGET : + { + MakeTargetDialog dialog = new MakeTargetDialog(getControl().getShell(), fContainer); + dialog.open(); + } + break; + case REMOVE_TARGET : + IMakeTargetManager manager = MakeCorePlugin.getDefault().getTargetManager(); + manager.removeTarget((IMakeTarget) ((IStructuredSelection) getViewer().getSelection()).getFirstElement()); + break; + case EDIT_TARGET : + { + MakeTargetDialog dialog = + new MakeTargetDialog( + getControl().getShell(), + (IMakeTarget) ((IStructuredSelection) getViewer().getSelection()).getFirstElement()); + dialog.open(); + } + + break; + } + } catch (CoreException e) { + MakeUIPlugin.errorDialog(getControl().getShell(), "Error", "Error", e); + } + } + + protected void selectionChanged(IStructuredSelection selection) { + fSelectedTarget = (IMakeTarget) selection.getFirstElement(); + updateEnabledState(); + } + + public void setSelectedTarget(IMakeTarget target) { + if (tableViewer != null) { + tableViewer.setSelection(new StructuredSelection(fSelectedTarget), true); + } else { + fSelectedTarget = target; + } + } + + public IMakeTarget getSelectedTarget() { + return fSelectedTarget; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.internal.ui.part.SharedPart#updateEnabledState() + */ + protected void updateEnabledState() { + super.updateEnabledState(); + setButtonEnabled(REMOVE_TARGET, fSelectedTarget != null && isEnabled()); + setButtonEnabled(EDIT_TARGET, fSelectedTarget != null && isEnabled()); + } + /* (non-Javadoc) + * @see org.eclipse.cdt.make.internal.ui.part.SharedPart#createControl(org.eclipse.swt.widgets.Composite, int, int) + */ + public void createControl(Composite parent, int style, int span) { + super.createControl(parent, style, span); + updateEnabledState(); + } + +} diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/UpdateMakeProjectAction.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/UpdateMakeProjectAction.java index 02907c82f61..3796b7be2b2 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/UpdateMakeProjectAction.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/UpdateMakeProjectAction.java @@ -14,13 +14,19 @@ import java.util.ArrayList; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.model.ICProject; 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.MakeBuilder; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.MakeProjectNature; import org.eclipse.cdt.make.internal.ui.MakeUIPlugin; import org.eclipse.cdt.make.ui.wizards.UpdateMakeProjectWizard; +import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceProxy; +import org.eclipse.core.resources.IResourceProxyVisitor; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -102,6 +108,57 @@ public class UpdateMakeProjectAction implements IWorkbenchWindowActionDelegate { MakeUIPlugin.logException(e, "Error", "Error updating Make Projects"); } } + + public static class TargetConvertVisitor implements IResourceProxyVisitor { + private final int TOTAL_WORK = 100; + private int halfWay = TOTAL_WORK / 2; + private int currentIncrement = 4; + private int nextProgress = currentIncrement; + private int worked = 0; + IProgressMonitor monitor; + + public TargetConvertVisitor(IProgressMonitor monitor) { + this.monitor = monitor; + monitor.beginTask("Converting Make Targets...", TOTAL_WORK); + } + + public boolean visit(IResourceProxy proxy) throws CoreException { + try { + if (proxy.getType() != IResource.FOLDER && proxy.getType() != IResource.PROJECT) { + return false; + } + IContainer container = (IContainer) proxy.requestResource(); + monitor.subTask(container.getProjectRelativePath().toString()); + QualifiedName qName = new QualifiedName("org.eclipse.cdt.make", "goals"); + String goal = container.getPersistentProperty(qName); + if (goal != null) { + goal = goal.trim(); + IMakeTargetManager manager = MakeCorePlugin.getDefault().getTargetManager(); + String[] builder = manager.getTargetBuilders(container.getProject()); + IMakeTarget target = manager.createTarget(container.getProject(), goal, builder[0]); + target.setBuildTarget(goal); + manager.addTarget(container, target); + container.setPersistentProperty(qName, null); + } + return true; + } finally { + if (--nextProgress <= 0) { + //we have exhausted the current increment, so report progress + monitor.worked(1); + worked++; + if (worked >= halfWay) { + //we have passed the current halfway point, so double the + //increment and reset the halfway point. + currentIncrement *= 2; + halfWay += (TOTAL_WORK - halfWay) / 2; + } + //reset the progress counter to another full increment + nextProgress = currentIncrement; + } + + } + } + } protected static void doProjectUpdate(IProgressMonitor monitor, IProject[] project) throws CoreException { monitor.beginTask("Updating make Projects...", project.length * 3); @@ -112,29 +169,44 @@ public class UpdateMakeProjectAction implements IWorkbenchWindowActionDelegate { project[i], MakeCorePlugin.OLD_BUILDER_ID, new SubProgressMonitor(monitor, 1)); - + // convert .cdtproject CCorePlugin.getDefault().mapCProjectOwner(project[i], MakeCorePlugin.getUniqueIdentifier() + ".make", true); // add new nature MakeProjectNature.addNature(project[i], new SubProgressMonitor(monitor, 1)); - + // move existing build properties to new IMakeBuilderInfo newInfo = MakeCorePlugin.createBuildInfo(project[i], MakeBuilder.BUILDER_ID); - QualifiedName qlocation = new QualifiedName(CCorePlugin.PLUGIN_ID, "buildLocation"); - String location = project[i].getPersistentProperty(qlocation); - if ( location != null) { - newInfo.setBuildCommand(new Path(location)); + final int LOCATION = 0, FULL_ARGS = 1, INC_ARGS = 2, STOP_ERORR = 3, USE_DEFAULT = 4; + QualifiedName[] qName = new QualifiedName[USE_DEFAULT + 1]; + qName[LOCATION] = new QualifiedName(CCorePlugin.PLUGIN_ID, "buildLocation"); + qName[FULL_ARGS] = new QualifiedName(CCorePlugin.PLUGIN_ID, "buildFullArguments"); + qName[INC_ARGS] = new QualifiedName(CCorePlugin.PLUGIN_ID, "buildIncrementalArguments"); + qName[STOP_ERORR] = new QualifiedName(CCorePlugin.PLUGIN_ID, "stopOnError"); + qName[USE_DEFAULT] = new QualifiedName(CCorePlugin.PLUGIN_ID, "useDefaultBuildCmd"); + + String property = project[i].getPersistentProperty(qName[LOCATION]); + if (property != null) { + newInfo.setBuildCommand(new Path(property)); + } + property = project[i].getPersistentProperty(qName[FULL_ARGS]); + if (property != null) { + newInfo.setBuildArguments(property); + } + property = project[i].getPersistentProperty(qName[STOP_ERORR]); + if (property != null) { + newInfo.setStopOnError(Boolean.valueOf(property).booleanValue()); + } + property = project[i].getPersistentProperty(qName[USE_DEFAULT]); + if (property != null) { + newInfo.setUseDefaultBuildCmd(Boolean.valueOf(property).booleanValue()); } - - //remove old properties - QualifiedName[] qName = - { - new QualifiedName(CCorePlugin.PLUGIN_ID, "buildFullArguments"), - new QualifiedName(CCorePlugin.PLUGIN_ID, "buildIncrementalArguments"), - new QualifiedName("org.eclipse.cdt", "make.goals")}; for (int j = 0; j < qName.length; j++) { project[i].setPersistentProperty(qName[j], null); } + + IProgressMonitor subMon = new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK); + project[i].accept(new TargetConvertVisitor(subMon), 0); monitor.worked(1); } } finally { @@ -145,5 +217,4 @@ public class UpdateMakeProjectAction implements IWorkbenchWindowActionDelegate { public void selectionChanged(IAction action, ISelection selection) { fSelection = selection; } - } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java index 7fb06a32130..542bf7dd78d 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java @@ -1,20 +1,13 @@ package org.eclipse.cdt.make.ui.dialogs; import org.eclipse.cdt.make.core.IMakeTarget; -import org.eclipse.cdt.make.internal.ui.part.ListViewerPart; -import org.eclipse.cdt.make.ui.MakeContentProvider; -import org.eclipse.cdt.make.ui.MakeLabelProvider; import org.eclipse.cdt.make.ui.TargetBuild; +import org.eclipse.cdt.make.ui.TargetListViewerPart; import org.eclipse.core.resources.IContainer; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -24,22 +17,21 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class BuildTargetDialog extends Dialog { - - private IMakeTarget fSelected; - private StructuredViewer listViewer; + private TargetListViewerPart targetPart; private IContainer fContainer; public BuildTargetDialog(Shell shell, IContainer container) { super(shell); fContainer = container; + targetPart = new TargetListViewerPart(fContainer); } - public void setTarget(IMakeTarget targets) { - fSelected = targets; + public void setTarget(IMakeTarget target) { + targetPart.setSelectedTarget(target); } public IMakeTarget getTarget() { - return fSelected; + return targetPart.getSelectedTarget(); } protected void configureShell(Shell newShell) { @@ -61,38 +53,25 @@ public class BuildTargetDialog extends Dialog { gd.horizontalSpan = 2; title.setLayoutData(gd); title.setText("Make Targets for: " + fContainer.getFullPath().toString().substring(1)); - ListViewerPart part = new ListViewerPart(new String[] { "Add Target...", "Remove Target", "Edit Target..." }); - part.createControl(composite, SWT.NULL, 2); - listViewer = part.getViewer(); - listViewer.setContentProvider(new MakeContentProvider(true)); - listViewer.addFilter(new ViewerFilter() { - public boolean select(Viewer viewer, Object parentElement, Object element) { - return (element instanceof IMakeTarget); - } - }); - listViewer.setLabelProvider(new MakeLabelProvider(fContainer.getProjectRelativePath())); - listViewer.addDoubleClickListener(new IDoubleClickListener() { + targetPart.createControl(composite, SWT.NULL, 2); + + gd = (GridData) targetPart.getControl().getLayoutData(); + gd.heightHint = convertHeightInCharsToPixels(15); + gd.widthHint = convertWidthInCharsToPixels(50); + targetPart.getControl().setLayoutData(gd); + targetPart.getViewer().addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { okPressed(); } }); - gd = (GridData) part.getControl().getLayoutData(); - gd.heightHint = convertHeightInCharsToPixels(15); - gd.widthHint = convertWidthInCharsToPixels(50); - part.getControl().setLayoutData(gd); - - listViewer.setInput(fContainer); - if (fSelected != null) - listViewer.setSelection(new StructuredSelection(fSelected), true); - return composite; } protected void okPressed() { - fSelected = (IMakeTarget) ((IStructuredSelection) listViewer.getSelection()).getFirstElement(); - if (fSelected != null) { - TargetBuild.runWithProgressDialog(getShell(), new IMakeTarget[] { fSelected }); + IMakeTarget selected = targetPart.getSelectedTarget(); + if (selected != null) { + TargetBuild.runWithProgressDialog(getShell(), new IMakeTarget[] { selected }); } super.okPressed(); } 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 a0938924028..3b5b4eca627 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 @@ -175,9 +175,10 @@ public class MakeTargetDialog extends Dialog { if (newName.equals("")) { fStatusLine.setErrorMessage("Must specify a target name."); getButton(IDialogConstants.OK_ID).setEnabled(false); - } else if (fTarget != null - && fTarget.getName().equals(newName) - || fTargetManager.findTarget(fContainer, newName) == null) { + } else if ( + fTarget != null + && fTarget.getName().equals(newName) + || fTargetManager.findTarget(fContainer, newName) == null) { fStatusLine.setErrorMessage(null); getButton(IDialogConstants.OK_ID).setEnabled(true); } else { @@ -298,50 +299,47 @@ public class MakeTargetDialog extends Dialog { protected void okPressed() { IMakeTarget target = fTarget; - if (fTarget == null) { - target = fTargetManager.createTarget(targetNameText.getText().trim(), targetBuildID); - } + try { + if (fTarget == null) { + target = fTargetManager.createTarget(fContainer.getProject(), targetNameText.getText().trim(), targetBuildID); + } - target.setStopOnError(isStopOnError()); - target.setUseDefaultBuildCmd(useDefaultBuildCmd()); - if (!useDefaultBuildCmd()) { - String bldLine = getBuildLine(); - int start = 0; - int end = -1; - if (!bldLine.startsWith("\"")) { //$NON-NLS-1$ - end = bldLine.indexOf(' '); - } else { - start = 1; - end = bldLine.indexOf('"', 1); + target.setStopOnError(isStopOnError()); + target.setUseDefaultBuildCmd(useDefaultBuildCmd()); + if (!useDefaultBuildCmd()) { + String bldLine = getBuildLine(); + int start = 0; + int end = -1; + if (!bldLine.startsWith("\"")) { //$NON-NLS-1$ + end = bldLine.indexOf(' '); + } else { + start = 1; + end = bldLine.indexOf('"', 1); + } + IPath path; + if (end == -1) { + path = new Path(bldLine); + } else { + path = new Path(bldLine.substring(start, end)); + } + target.setBuildCommand(path); + String args = ""; //$NON-NLS-1$ + if (end != -1) { + args = bldLine.substring(end + 1); + } + target.setBuildArguments(args); } - IPath path; - if (end == -1) { - path = new Path(bldLine); - } else { - path = new Path(bldLine.substring(start, end)); - } - target.setBuildCommand(path); - String args = ""; //$NON-NLS-1$ - if (end != -1) { - args = bldLine.substring(end + 1); - } - target.setBuildArguments(args); - } - target.setBuildTarget(targetText.getText().trim()); + target.setBuildTarget(targetText.getText().trim()); - if (fTarget == null) { - try { + if (fTarget == null) { fTargetManager.addTarget(fContainer, target); - } catch (CoreException e) { - MakeUIPlugin.errorDialog(getShell(), "Make Target Error", "Error adding target", e); - } - } else { - if (!target.getName().equals(targetNameText.getText().trim())) { - try { + } else { + if (!target.getName().equals(targetNameText.getText().trim())) { fTargetManager.renameTarget(target, targetNameText.getText().trim()); - } catch (CoreException e) { } } + } catch (CoreException e) { + MakeUIPlugin.errorDialog(getShell(), "Make Target Error", "Error adding target", e); } super.okPressed(); }