diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
index 6b22cd1e96d..bbbd3b5fbdd 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
@@ -4586,65 +4586,68 @@ public class ManagedBuildManager extends AbstractCExtension {
return new Configuration[0];
}
+ /**
+ * Build the specified build configurations
+ * @param configs - configurations to build
+ * @param monitor - progress monitor
+ * @throws CoreException
+ */
public static void buildConfigurations(IConfiguration[] configs, IProgressMonitor monitor) throws CoreException{
buildConfigurations(configs, null, monitor);
}
+ /**
+ * Build the specified build configurations
+ * @param configs - configurations to build
+ * @param builder - builder to retrieve build arguments
+ * @param monitor - progress monitor
+ * @throws CoreException
+ */
public static void buildConfigurations(IConfiguration[] configs, IBuilder builder, IProgressMonitor monitor) throws CoreException{
buildConfigurations(configs, builder, monitor, true);
}
+ /**
+ * Build the specified build configurations.
+ *
+ * @param configs - configurations to build
+ * @param builder - builder to retrieve build arguments
+ * @param monitor - progress monitor
+ * @param allBuilders - {@code true} if all builders need to be building
+ * or {@code false} to build with {@link CommonBuilder}
+ *
+ * @throws CoreException
+ */
public static void buildConfigurations(IConfiguration[] configs, IBuilder builder, IProgressMonitor monitor, boolean allBuilders) throws CoreException{
- buildOrCleanConfigurations(configs, builder, monitor, allBuilders, IncrementalProjectBuilder.FULL_BUILD);
+ buildConfigurations(configs, builder, monitor, allBuilders, IncrementalProjectBuilder.FULL_BUILD);
}
-
+
/**
- * Clean the specified build configurations
- * @param configs
- * @param monitor
+ * Build the specified build configurations.
+ *
+ * @param configs - configurations to build
+ * @param builder - builder to retrieve build arguments
+ * @param monitor - progress monitor
+ * @param allBuilders - {@code true} if all builders need to be building
+ * or {@code false} to build with {@link CommonBuilder}
+ * @param buildKind - one of
+ *
{@link IncrementalProjectBuilder#CLEAN_BUILD}
+ * {@link IncrementalProjectBuilder#INCREMENTAL_BUILD}
+ * {@link IncrementalProjectBuilder#FULL_BUILD}
+ *
* @throws CoreException
+ *
* @since 7.0
*/
- public static void cleanConfigurations(IConfiguration[] configs, IProgressMonitor monitor) throws CoreException{
- cleanConfigurations(configs, null, monitor);
- }
+ public static void buildConfigurations(IConfiguration[] configs, IBuilder builder, IProgressMonitor monitor,
+ boolean allBuilders, int buildKind) throws CoreException{
- /**
- * Clean the specified build configurations using the given builder
- * @param configs
- * @param builder
- * @param monitor
- * @throws CoreException
- * @since 7.0
- */
- public static void cleanConfigurations(IConfiguration[] configs, IBuilder builder, IProgressMonitor monitor) throws CoreException{
- cleanConfigurations(configs, builder, monitor, true);
- }
-
- /**
- * Clean the specified configurations
- * @param configs
- * @param builder
- * @param monitor
- * @param allBuilders
- * @throws CoreException
- * @since 7.0
- */
- public static void cleanConfigurations(IConfiguration[] configs, IBuilder builder, IProgressMonitor monitor, boolean allBuilders) throws CoreException{
- buildOrCleanConfigurations(configs, builder, monitor, allBuilders, IncrementalProjectBuilder.CLEAN_BUILD);
- }
-
- private static void buildOrCleanConfigurations(IConfiguration[] configs, IBuilder builder, IProgressMonitor monitor, boolean allBuilders, int buildKind) throws CoreException{
Map map = sortConfigs(configs);
for(Iterator iter = map.entrySet().iterator(); iter.hasNext();){
Map.Entry entry = (Map.Entry)iter.next();
IProject proj = (IProject)entry.getKey();
IConfiguration[] cfgs = (IConfiguration[])entry.getValue();
- if(buildKind == IncrementalProjectBuilder.CLEAN_BUILD) {
- cleanConfigurations(proj, cfgs, builder, monitor, allBuilders);
- } else {
- buildConfigurations(proj, cfgs, builder, monitor, allBuilders);
- }
+ buildConfigurations(proj, cfgs, builder, monitor, allBuilders, buildKind);
}
}
@@ -4673,83 +4676,99 @@ public class ManagedBuildManager extends AbstractCExtension {
return cfgMap;
}
- private static void buildConfigurations(final IProject project, IConfiguration[] configs, IBuilder builder, final IProgressMonitor monitor, boolean allBuilders) throws CoreException{
- final boolean runAllBuidlers = allBuilders;
- final Map map = builder != null ?
- BuilderFactory.createBuildArgs(configs, builder)
- : BuilderFactory.createBuildArgs(configs);
+ /**
+ * Build the specified build configurations for a given project.
+ *
+ * @param project - project the configurations belong to
+ * @param configs - configurations to build
+ * @param builder - builder to retrieve build arguments
+ * @param monitor - progress monitor
+ * @param allBuilders - {@code true} if all builders need to be building
+ * or {@code false} to build with {@link CommonBuilder}
+ * @param buildKind - one of
+ * {@link IncrementalProjectBuilder#CLEAN_BUILD}
+ * {@link IncrementalProjectBuilder#INCREMENTAL_BUILD}
+ * {@link IncrementalProjectBuilder#FULL_BUILD}
+ *
+ * @throws CoreException
+ */
+ private static void buildConfigurations(final IProject project, final IConfiguration[] configs,
+ final IBuilder builder, final IProgressMonitor monitor, final boolean allBuilders, final int buildKind) throws CoreException{
IWorkspaceRunnable op = new IWorkspaceRunnable() {
-
/*
* (non-Javadoc)
*
* @see org.eclipse.core.resources.IWorkspaceRunnable#run(org.eclipse.core.runtime.IProgressMonitor)
*/
public void run(IProgressMonitor monitor) throws CoreException {
- if (runAllBuidlers) {
- ICommand[] commands = project.getDescription().getBuildSpec();
- monitor.beginTask("", commands.length); //$NON-NLS-1$
- for (int i = 0; i < commands.length; i++) {
- Map newArgs = map;
- if (!commands[i].getBuilderName().equals(CommonBuilder.BUILDER_ID)) {
- newArgs = new HashMap(map);
- newArgs.putAll(commands[i].getArguments());
- }
- project.build(IncrementalProjectBuilder.FULL_BUILD, commands[i].getBuilderName(), newArgs, new SubProgressMonitor(monitor, 1));
+ int ticks = 1;
+ if (buildKind==IncrementalProjectBuilder.CLEAN_BUILD) {
+ if (allBuilders) {
+ ICommand[] commands = project.getDescription().getBuildSpec();
+ ticks = commands.length;
+ }
+ ticks = ticks*configs.length;
+ }
+ monitor.beginTask(project.getName(), ticks);
+
+ if (buildKind==IncrementalProjectBuilder.CLEAN_BUILD) {
+ // It is not possible to pass arguments to clean() method of a builder
+ // So we iterate setting active configuration
+ IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project);
+ IConfiguration savedCfg = buildInfo.getDefaultConfiguration();
+
+ try {
+ for (IConfiguration config : configs) {
+ if (monitor.isCanceled())
+ break;
+
+ buildInfo.setDefaultConfiguration(config);
+ buildProject(project, null, allBuilders, buildKind, monitor);
+ }
+ } finally {
+ buildInfo.setDefaultConfiguration(savedCfg);
}
- monitor.done();
} else {
- project.build(IncrementalProjectBuilder.FULL_BUILD, CommonBuilder.BUILDER_ID, map, monitor);
+ // configuration IDs are passed in args to CDT builder
+ Map args = builder!=null ? BuilderFactory.createBuildArgs(configs, builder)
+ : BuilderFactory.createBuildArgs(configs);
+ buildProject(project, args, allBuilders, buildKind, monitor);
+ }
+
+ monitor.done();
+ }
+
+ private void buildProject(IProject project, Map args, boolean allBuilders, int buildKind, IProgressMonitor monitor)
+ throws CoreException {
+
+ if (allBuilders) {
+ ICommand[] commands = project.getDescription().getBuildSpec();
+ for (ICommand command : commands) {
+ if (monitor.isCanceled())
+ break;
+
+ String builderName = command.getBuilderName();
+ Map newArgs = null;
+ if (buildKind!=IncrementalProjectBuilder.CLEAN_BUILD) {
+ newArgs = new HashMap(args);
+ if (!builderName.equals(CommonBuilder.BUILDER_ID)) {
+ newArgs.putAll(command.getArguments());
+ }
+ }
+ project.build(buildKind, builderName, newArgs, new SubProgressMonitor(monitor, 1));
+ }
+ } else {
+ project.build(buildKind, CommonBuilder.BUILDER_ID, args, new SubProgressMonitor(monitor, 1));
}
}
};
+
try {
ResourcesPlugin.getWorkspace().run(op, monitor);
} finally {
monitor.done();
}
-
- }
-
- private static void cleanConfigurations(final IProject project, final IConfiguration[] configs, IBuilder builder, final IProgressMonitor monitor, boolean allBuilders) throws CoreException{
- final boolean runAllBuidlers = allBuilders;
- final IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project);
- IConfiguration savedCfg = buildInfo.getDefaultConfiguration();
- IWorkspaceRunnable op = new IWorkspaceRunnable() {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.resources.IWorkspaceRunnable#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void run(IProgressMonitor monitor) throws CoreException {
- ICommand[] commands = project.getDescription().getBuildSpec();
- int totalWork = (runAllBuidlers) ? commands.length * configs.length : configs.length;
-
- // iterate through all configurations and clean them
- monitor.beginTask("", totalWork); //$NON-NLS-1$
- for (IConfiguration config : configs) {
- buildInfo.setDefaultConfiguration(config);
- if (runAllBuidlers) {
- for (int i = 0; i < commands.length; i++) {
- // currently the platform doesn't accept arguments for a builder to clean a project, thus arguments are null
- project.build(IncrementalProjectBuilder.CLEAN_BUILD, commands[i].getBuilderName(), null, new SubProgressMonitor(monitor, 1));
- }
- } else {
- project.build(IncrementalProjectBuilder.CLEAN_BUILD, CommonBuilder.BUILDER_ID, null, new SubProgressMonitor(monitor, 1));
- }
- }
- }
- };
- try {
- ResourcesPlugin.getWorkspace().run(op, monitor);
- } finally {
- // complete the progress monitor and restore default configuration
- monitor.done();
- buildInfo.setDefaultConfiguration(savedCfg);
- }
-
}
public static IBuilder getInternalBuilder(){
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
index 8198d290769..95552c6a6e4 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
@@ -53,6 +53,9 @@ Discovery.options=Discovery Options
Environment=Environment
BuildCfgMenu.label=Build configurations
+BuildAllConfigurationsMenu.label=Build All
+CleanAllConfigurationsMenu.label=Clean All
+RebuildConfigurationsMenu.label=Build Selected...
BuildMenu.label=Build
CleanMenu.label=Clean
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
index 2ca8a5094fc..cd3cdf6c6f4 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
@@ -85,7 +85,7 @@
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.managedbuilder.ui.ConvertTargetAction">
-
+
@@ -96,19 +96,23 @@
adaptable="true"
id="org.eclipse.cdt.managedbuilder.ui.popupMenu.BuildAll">
+ id="org.eclipse.cdt.managedbuilder.ui.rebuildConfigurationsAction"
+ label="%RebuildConfigurationsMenu.label"
+ menubarPath="org.eclipse.cdt.ui.cfgmenu/gm1"/>
+ id="org.eclipse.cdt.managedbuilder.ui.cleanAllConfigurationsAction"
+ label="%CleanAllConfigurationsMenu.label"
+ menubarPath="org.eclipse.cdt.ui.cfgmenu/gm1"/>
+
projects = null;
- private ActionContributionItem it_all = null;
- private ActionContributionItem it_sel = null;
-
- /*
- * Get message strings
- */
- protected abstract String getTIP_ALL();
- protected abstract String getLBL_ALL();
- protected abstract String getJOB_MSG();
- protected abstract String getERR_MSG();
- protected abstract String getLBL_SEL();
- protected abstract String getTIP_SEL();
- protected abstract String getDLG_TEXT();
- protected abstract String getDLG_TITLE();
- /**
- * Perform the requested build
- * @param configs
- * @param monitor
- * @throws CoreException
- */
- protected abstract void performAction(IConfiguration[] configs, IProgressMonitor monitor) throws CoreException;
-
- @Override
- public void selectionChanged(IAction action, ISelection selection) {
- projects = null;
-
- if (!selection.isEmpty()) {
- // case for context menu
- if (selection instanceof IStructuredSelection) {
- Object[] obs = ((IStructuredSelection)selection).toArray();
- if (obs.length > 0) {
- for (int i=0; i 0) {
- if (projects == null) projects = new ArrayList();
- projects.add(prj);
- }
- }
- }
- }
- }
- }
- action.setEnabled(projects != null);
- if (projects != null && it_sel != null)
- it_sel.getAction().setEnabled(projects.size() == 1);
- action.setMenuCreator(this);
- }
-
- @Override
- public void run(IAction action) {} // do nothing - show menus only
- public void setActivePart(IAction action, IWorkbenchPart targetPart) {}
-
- // doing nothing
- public void init(IWorkbenchWindow window) { }
-
- private final class BuildCleanFilesJob extends Job {
- Object[] cfs;
-
- BuildCleanFilesJob(Object[] _cfs) {
- super(getJOB_MSG() + ((ICConfigurationDescription)_cfs[0]).getProjectDescription().getName());
- cfs = _cfs;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- IConfiguration[] cf = new IConfiguration[cfs.length];
- for (int i=0; i it = projects.iterator();
- if (forAll) {
- while(it.hasNext())
- processProject(it.next());
- } else {
- if (it.hasNext())
- processProject(it.next());
- }
- }
-
- private void processProject(IProject prj) {
- ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(prj, false);
- if (prjd == null) return;
- Object[] cfgds = prjd.getConfigurations();
- if (!forAll) cfgds = openDialog(cfgds);
- if (cfgds == null || cfgds.length == 0) return;
- Job buildCleanFilesJob = new BuildCleanFilesJob(cfgds);
- buildCleanFilesJob.schedule();
- }
- }
-
- private Object[] openDialog(Object[] cfgds) {
- if (cfgds == null || cfgds.length == 0) return null;
- ListSelectionDialog dialog = new ListSelectionDialog(
- CUIPlugin.getActiveWorkbenchShell(),
- cfgds,
- new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) { return (Object[])inputElement; }
- public void dispose() {}
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
- },
- new LabelProvider() {
- @Override
- public String getText(Object element) {
- if (element == null || !(element instanceof ICConfigurationDescription)) return null;
- return ((ICConfigurationDescription)element).getName();
- }
- },
- getDLG_TEXT());
- dialog.setTitle(getDLG_TITLE());
- dialog.setInitialSelections(cfgds);
- return (dialog.open() == Window.OK) ? dialog.getResult() : null;
- }
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllAction.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllAction.java
deleted file mode 100644
index c288980b4f5..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllAction.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 Intel Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Intel Corporation - initial API and implementation
- * LSI Corporation - added symmetric project clean action
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.ui.actions;
-
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.internal.ui.actions.CommonBuildCleanAllAction;
-import org.eclipse.cdt.managedbuilder.ui.properties.Messages;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * Action which changes active build configuration of the current project to
- * the given one.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-public class BuildAllAction extends CommonBuildCleanAllAction {
- /** @since 7.0 */
- @Override
- protected String getTIP_ALL() { return Messages.getString("BuildAllAction.0");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getLBL_ALL() { return Messages.getString("BuildAllAction.1");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getJOB_MSG() { return Messages.getString("BuildAllAction.2");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getERR_MSG() { return Messages.getString("BuildAllAction.3");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getLBL_SEL() { return Messages.getString("BuildAllAction.4");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getTIP_SEL() { return Messages.getString("BuildAllAction.5");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getDLG_TEXT(){ return Messages.getString("BuildAllAction.6"); }//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected String getDLG_TITLE(){ return Messages.getString("BuildAllAction.7");}//$NON-NLS-1$
- /** @since 7.0 */
- @Override
- protected void performAction(IConfiguration[] configs,
- IProgressMonitor monitor) throws CoreException {
- ManagedBuildManager.buildConfigurations(configs, monitor);
- }
-}
-
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllConfigurationsAction.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllConfigurationsAction.java
new file mode 100644
index 00000000000..4174a0a43d0
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllConfigurationsAction.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2010 Andrew Gvozdev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andrew Gvozdev (Quoin Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.actions;
+
+import java.util.ArrayList;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.internal.ide.actions.BuildUtilities;
+
+/**
+ * Action which builds all configurations of the selected projects
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * @since 7.0
+ */
+public class BuildAllConfigurationsAction implements IObjectActionDelegate {
+ private ArrayList projects = null;
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ projects = CleanAndBuildAction.getSelectedCdtProjects(selection);
+ action.setEnabled(projects.size() > 0);
+ }
+
+ public void run(IAction action) {
+ for (IProject project : projects) {
+ ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(project, false);
+ if (prjd != null) {
+ ICConfigurationDescription[] cfgds = prjd.getConfigurations();
+ if (cfgds != null && cfgds.length > 0) {
+ // save all dirty editors
+ BuildUtilities.saveEditors(null);
+
+ Job buildFilesJob = new BuildConfigurationsJob(cfgds, 0, IncrementalProjectBuilder.INCREMENTAL_BUILD);
+ buildFilesJob.schedule();
+ }
+ }
+
+ }
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildConfigurationsJob.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildConfigurationsJob.java
new file mode 100644
index 00000000000..940858aea9b
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildConfigurationsJob.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2010 Andrew Gvozdev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andrew Gvozdev (Quoin Inc) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.actions;
+
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+
+import com.ibm.icu.text.MessageFormat;
+
+/**
+ * A job to build CDT build configurations.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * @since 7.0
+ */
+public class BuildConfigurationsJob extends Job {
+ private ICConfigurationDescription[] cfgDescriptions;
+ private int cleanKind;
+ private int buildKind;
+
+ private static String composeJobName(ICConfigurationDescription[] cfgDescriptions, boolean isCleaning) {
+ String firstProjectName = cfgDescriptions[0].getProjectDescription().getName();
+ String firstConfigurationName = cfgDescriptions[0].getName();
+ if (isCleaning) {
+ return MessageFormat.format(Messages.BuildConfigurationsJob_Cleaning,
+ new Object[] {""+cfgDescriptions.length, firstProjectName, firstConfigurationName}); //$NON-NLS-1$
+ } else {
+ return MessageFormat.format(Messages.BuildConfigurationsJob_Building,
+ new Object[] {""+cfgDescriptions.length, firstProjectName, firstConfigurationName}); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param cfgDescriptions - a list of configurations to build, possibly from different projects
+ * @param cleanKind - pass {@link IncrementalProjectBuilder#CLEAN_BUILD} to clean before building
+ * @param buildKind - kind of build. Can be
+ * {@link IncrementalProjectBuilder#INCREMENTAL_BUILD}
+ * {@link IncrementalProjectBuilder#FULL_BUILD}
+ * {@link IncrementalProjectBuilder#AUTO_BUILD}
+ */
+ public BuildConfigurationsJob(ICConfigurationDescription[] cfgDescriptions, int cleanKind, int buildKind) {
+ super(composeJobName(cfgDescriptions, buildKind==0));
+
+ this.cfgDescriptions = cfgDescriptions;
+ this.cleanKind = cleanKind;
+ this.buildKind = buildKind;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IConfiguration[] cfgs = new IConfiguration[cfgDescriptions.length];
+ for (int i=0; i projects = null;
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ projects = CleanAndBuildAction.getSelectedCdtProjects(selection);
+ action.setEnabled(projects.size() > 0);
+ }
+
+ public void run(IAction action) {
+ for (IProject project : projects) {
+ ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(project, false);
+ if (prjd != null) {
+ ICConfigurationDescription[] cfgds = prjd.getConfigurations();
+ if (cfgds != null && cfgds.length > 0) {
+ // save all dirty editors
+ BuildUtilities.saveEditors(null);
+
+ Job buildFilesJob = new BuildConfigurationsJob(cfgds, IncrementalProjectBuilder.CLEAN_BUILD, 0);
+ buildFilesJob.schedule();
+ }
+ }
+
+ }
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/CleanAndBuildAction.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/CleanAndBuildAction.java
new file mode 100644
index 00000000000..d5daeb81f25
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/CleanAndBuildAction.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2010 Andrew Gvozdev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andrew Gvozdev (Quoin Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.actions;
+
+import java.util.ArrayList;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ * Action which cleans and rebuilds selected configurations. User selects
+ * which configurations to rebuild via {@link CleanAndBuildDialog}.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * @since 7.0
+ */
+public class CleanAndBuildAction implements IObjectActionDelegate {
+ private ArrayList projects = null;
+
+ public void run(IAction action) {
+ if (projects!=null) {
+ CleanAndBuildDialog dialog = new CleanAndBuildDialog(projects.toArray(new IProject[projects.size()]));
+ dialog.open();
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ projects = getSelectedCdtProjects(selection);
+ action.setEnabled(projects.size() > 0);
+ }
+
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ /**
+ * @return list of CDT projects from the selection.
+ *
+ * @param selection - selected items.
+ */
+ public static ArrayList getSelectedCdtProjects(ISelection selection) {
+ ArrayList projects = new ArrayList();
+
+ if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
+ Object[] selected = ((IStructuredSelection)selection).toArray();
+ if (selected.length > 0) {
+ for (Object sel : selected) {
+ IProject prj = null;
+ if (sel instanceof IProject)
+ prj = (IProject)sel;
+ else if (sel instanceof ICProject)
+ prj = ((ICProject)sel).getProject();
+
+ if (prj != null && CoreModel.getDefault().isNewStyleProject(prj)) {
+ projects.add(prj);
+ }
+ }
+ }
+ }
+ return projects;
+ }
+
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/CleanAndBuildDialog.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/CleanAndBuildDialog.java
new file mode 100644
index 00000000000..50b7d724064
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/CleanAndBuildDialog.java
@@ -0,0 +1,421 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2010 Andrew Gvozdev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andrew Gvozdev (Quoin Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.actions;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIImages;
+import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
+import org.eclipse.ui.internal.ide.actions.BuildUtilities;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+
+/**
+ * Dialog to let the user to clean and rebuild configurations of the selected projects.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * @since 7.0
+ */
+public class CleanAndBuildDialog extends MessageDialog {
+ private static final String DIALOG_SETTINGS_SECTION = "RebuildConfigurationsDialogSettings"; //$NON-NLS-1$
+ private static final String DIALOG_ORIGIN_X = "DIALOG_X_ORIGIN"; //$NON-NLS-1$
+ private static final String DIALOG_ORIGIN_Y = "DIALOG_Y_ORIGIN"; //$NON-NLS-1$
+ private static final String DIALOG_WIDTH = "DIALOG_WIDTH"; //$NON-NLS-1$
+ private static final String DIALOG_HEIGHT = "DIALOG_HEIGHT"; //$NON-NLS-1$
+
+ private Button cleanCheckbox;
+ private Button buildCheckbox;
+
+ private ContainerCheckedTreeViewer cfgCheckboxViewer;
+
+ private IProject[] projects;
+ private Object[] selected;
+ private int cleanKind;
+ private int buildKind;
+
+
+ private class ConfigurationLabelProvider implements ILabelProvider {
+ WorkbenchLabelProvider workbenchLabelProvider = new WorkbenchLabelProvider();
+
+ public void addListener(ILabelProviderListener listener) {
+ workbenchLabelProvider.addListener(listener);
+ }
+
+ public void dispose() {
+ workbenchLabelProvider.dispose();
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return workbenchLabelProvider.isLabelProperty(element, property);
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ workbenchLabelProvider.removeListener(listener);
+ }
+
+ public Image getImage(Object element) {
+ if (element instanceof ICConfigurationDescription)
+ return ManagedBuilderUIImages.get(ManagedBuilderUIImages.IMG_BUILD_CONFIG);
+ return workbenchLabelProvider.getImage(element);
+ }
+
+ public String getText(Object element) {
+ if (element instanceof ICConfigurationDescription) {
+ ICConfigurationDescription cfgDescription = (ICConfigurationDescription) element;
+ String name = cfgDescription.getName();
+ if (cfgDescription.isActive()) {
+ return name + ' ' + Messages.CleanAndBuildDialog_Active;
+ }
+ return name;
+ }
+
+ return workbenchLabelProvider.getText(element);
+ }
+ }
+
+ private class ConfigurationContentProvider implements ITreeContentProvider {
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ if (element instanceof IProject[])
+ return ((IProject[]) element).length > 0;
+
+ if (element instanceof IProject) {
+ IProject project = (IProject) element;
+ ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(project, false);
+ if (prjd == null)
+ return false;
+
+ ICConfigurationDescription[] cfgDescriptions = prjd.getConfigurations();
+ return cfgDescriptions != null && cfgDescriptions.length > 0;
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ if (element instanceof IProject) {
+ return projects;
+ }
+ if (element instanceof ICConfigurationDescription) {
+ ICConfigurationDescription cfgDescription = (ICConfigurationDescription) element;
+ return cfgDescription.getProjectDescription().getProject();
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof IProject[])
+ return (IProject[]) parentElement;
+
+ if (parentElement instanceof IProject) {
+ IProject project = (IProject) parentElement;
+ ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(project, false);
+ if (prjd != null) {
+ ICConfigurationDescription[] cfgDescriptions = prjd.getConfigurations();
+ return cfgDescriptions;
+ }
+ }
+ return new Object[0];
+ }
+ }
+
+ /**
+ * Creates a new Clean and Build dialog.
+ *
+ * @param projects - the currently selected projects
+ */
+ public CleanAndBuildDialog(IProject[] projects) {
+ super(CUIPlugin.getActiveWorkbenchShell(), Messages.CleanAndBuildDialog_RebuildConfigurations, null,
+ Messages.CleanAndBuildDialog_SelectConfigurations, NONE,
+ new String[] { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL },
+ 0);
+ this.projects = projects;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
+ */
+ @Override
+ protected void buttonPressed(int buttonId) {
+ super.buttonPressed(buttonId);
+ if (buttonId != IDialogConstants.OK_ID) {
+ return;
+ }
+
+ // save all dirty editors
+ BuildUtilities.saveEditors(null);
+
+ if (selected!=null) {
+ List cfgDescriptions = new ArrayList();
+ for (Object sel : selected) {
+ if (sel instanceof ICConfigurationDescription) {
+ cfgDescriptions.add((ICConfigurationDescription)sel);
+ }
+ }
+
+ if (cleanKind!=0 || buildKind!=0) {
+ ICConfigurationDescription[] cfgdArray = cfgDescriptions.toArray(new ICConfigurationDescription[cfgDescriptions.size()]);
+ Job buildJob = new BuildConfigurationsJob(cfgdArray, cleanKind, buildKind);
+ buildJob.schedule();
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createCustomArea(Composite parent) {
+ Composite area = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = layout.marginHeight = 0;
+ layout.numColumns = 2;
+ layout.makeColumnsEqualWidth = true;
+ area.setLayout(layout);
+ area.setLayoutData(new GridData(GridData.FILL_BOTH));
+ SelectionListener updateEnablement = new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateEnablement();
+ }
+ };
+
+ // second row
+ createProjectSelectionTable(area);
+
+ // third row
+ cleanCheckbox = new Button(parent, SWT.CHECK);
+ cleanCheckbox.setText(Messages.CleanAndBuildDialog_CleanConfigurations);
+ cleanCheckbox.setSelection(true);
+ cleanCheckbox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+ cleanCheckbox.addSelectionListener(updateEnablement);
+ cleanKind = cleanCheckbox.getSelection() ? IncrementalProjectBuilder.CLEAN_BUILD : 0;
+
+ buildCheckbox = new Button(parent, SWT.CHECK);
+ buildCheckbox.setText(Messages.CleanAndBuildDialog_BuildConfigurations);
+ buildCheckbox.setSelection(true);
+ buildCheckbox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+ buildCheckbox.addSelectionListener(updateEnablement);
+ buildKind = buildCheckbox.getSelection() ? IncrementalProjectBuilder.INCREMENTAL_BUILD : 0;
+
+ return area;
+ }
+
+ private void createProjectSelectionTable(Composite area) {
+ cfgCheckboxViewer = new ContainerCheckedTreeViewer(area, SWT.BORDER);
+ cfgCheckboxViewer.setContentProvider(new ConfigurationContentProvider());
+ cfgCheckboxViewer.setLabelProvider(new ConfigurationLabelProvider());
+ cfgCheckboxViewer.setInput(projects);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.horizontalSpan = 2;
+ data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ data.heightHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ cfgCheckboxViewer.getControl().setLayoutData(data);
+
+ ArrayList initialSelection = new ArrayList(projects.length);
+ for (IProject prj : projects) {
+ ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(prj, false);
+ if (prjd == null)
+ continue;
+ cfgCheckboxViewer.setChecked(prjd.getActiveConfiguration(), true);
+ initialSelection.add(prjd.getActiveConfiguration());
+ }
+ cfgCheckboxViewer.expandAll();
+ cfgCheckboxViewer.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ updateEnablement();
+ selected = cfgCheckboxViewer.getCheckedElements();
+ }
+ });
+ selected = cfgCheckboxViewer.getCheckedElements();
+ selected = initialSelection.toArray(new ICConfigurationDescription[initialSelection.size()]);
+ }
+
+ /**
+ * Updates the enablement of the dialog's ok button based on the current choices in the dialog.
+ */
+ protected void updateEnablement() {
+ cleanKind = cleanCheckbox.getSelection() ? IncrementalProjectBuilder.CLEAN_BUILD : 0;
+ buildKind = buildCheckbox.getSelection() ? IncrementalProjectBuilder.INCREMENTAL_BUILD : 0;
+ boolean enabled = cfgCheckboxViewer.getCheckedElements().length>0 && (cleanKind!=0 || buildKind!=0);
+ getButton(OK).setEnabled(enabled);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.window.Window#close()
+ */
+ @Override
+ public boolean close() {
+ persistDialogSettings(getShell(), DIALOG_SETTINGS_SECTION);
+ return super.close();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.window.Window#getInitialLocation(org.eclipse.swt.graphics.Point)
+ */
+ @Override
+ protected Point getInitialLocation(Point initialSize) {
+ Point p = getInitialLocation(DIALOG_SETTINGS_SECTION);
+ return p != null ? p : super.getInitialLocation(initialSize);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.window.Window#getInitialSize()
+ */
+ @Override
+ protected Point getInitialSize() {
+ Point p = super.getInitialSize();
+ return getInitialSize(DIALOG_SETTINGS_SECTION, p);
+ }
+
+ /**
+ * Returns the initial location which is persisted in the IDE Plugin dialog settings under the provided
+ * dialog settings section name. If location is not persisted in the settings, the {@code null} is
+ * returned.
+ *
+ * @param dialogSettingsSectionName - The name of the dialog settings section
+ * @return The initial location or {@code null}
+ */
+ private Point getInitialLocation(String dialogSettingsSectionName) {
+ IDialogSettings settings = getDialogSettings(dialogSettingsSectionName);
+ try {
+ int x = settings.getInt(DIALOG_ORIGIN_X);
+ int y = settings.getInt(DIALOG_ORIGIN_Y);
+ return new Point(x, y);
+ } catch (NumberFormatException e) {
+ }
+ return null;
+ }
+
+ private IDialogSettings getDialogSettings(String dialogSettingsSectionName) {
+ IDialogSettings settings = ManagedBuilderUIPlugin.getDefault().getDialogSettings();
+ IDialogSettings section = settings.getSection(dialogSettingsSectionName);
+ if (section == null) {
+ section = settings.addNewSection(dialogSettingsSectionName);
+ }
+ return section;
+ }
+
+ /**
+ * Persists the location and dimensions of the shell and other user settings in the plugin's dialog
+ * settings under the provided dialog settings section name
+ *
+ * @param shell - The shell whose geometry is to be stored
+ * @param dialogSettingsSectionName - The name of the dialog settings section
+ */
+ private void persistDialogSettings(Shell shell, String dialogSettingsSectionName) {
+ Point shellLocation = shell.getLocation();
+ Point shellSize = shell.getSize();
+ IDialogSettings settings = getDialogSettings(dialogSettingsSectionName);
+ settings.put(DIALOG_ORIGIN_X, shellLocation.x);
+ settings.put(DIALOG_ORIGIN_Y, shellLocation.y);
+ settings.put(DIALOG_WIDTH, shellSize.x);
+ settings.put(DIALOG_HEIGHT, shellSize.y);
+ }
+
+ /**
+ * Returns the initial size which is the larger of the initialSize
or the size persisted in
+ * the IDE UI Plugin dialog settings under the provided dialog setttings section name. If no size is
+ * persisted in the settings, the {@code initialSize} is returned.
+ *
+ * @param initialSize - The initialSize to compare against
+ * @param dialogSettingsSectionName - The name of the dialog settings section
+ * @return the initial size
+ */
+ private Point getInitialSize(String dialogSettingsSectionName, Point initialSize) {
+ IDialogSettings settings = getDialogSettings(dialogSettingsSectionName);
+ try {
+ int x, y;
+ x = settings.getInt(DIALOG_WIDTH);
+ y = settings.getInt(DIALOG_HEIGHT);
+ return new Point(Math.max(x, initialSize.x), Math.max(y, initialSize.y));
+ } catch (NumberFormatException e) {
+ }
+ return initialSize;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.dialogs.Dialog#isResizable()
+ */
+ @Override
+ protected boolean isResizable() {
+ return true;
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/Messages.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/Messages.java
new file mode 100644
index 00000000000..19177f45e44
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/Messages.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2010 Andrew Gvozdev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andrew Gvozdev (Quoin Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.actions;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Message bundle class for externalizing messages.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * @since 7.0
+ */
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.ui.actions.messages"; //$NON-NLS-1$
+ public static String BuildConfigurationsJob_BuildError;
+ public static String BuildConfigurationsJob_Building;
+ public static String BuildConfigurationsJob_Cleaning;
+ public static String CleanAndBuildDialog_Active;
+ public static String CleanAndBuildDialog_BuildConfigurations;
+ public static String CleanAndBuildDialog_CleanConfigurations;
+ public static String CleanAndBuildDialog_RebuildConfigurations;
+ public static String CleanAndBuildDialog_SelectConfigurations;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/messages.properties
new file mode 100644
index 00000000000..47025ca04ee
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/messages.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2010, 2010 Andrew Gvozdev and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Andrew Gvozdev (Quoin Inc.) - initial API and implementation
+###############################################################################
+
+BuildConfigurationsJob_BuildError=Build error
+BuildConfigurationsJob_Building=Building {1}[{2}], ... [{0}]
+BuildConfigurationsJob_Cleaning=Cleaning {1}[{2}], ... [{0}]
+
+CleanAndBuildDialog_Active=[Active]
+CleanAndBuildDialog_BuildConfigurations=Build selected configurations
+CleanAndBuildDialog_CleanConfigurations=Clean selected configurations
+CleanAndBuildDialog_RebuildConfigurations=Clean and Rebuild Configurations
+CleanAndBuildDialog_SelectConfigurations=Select configurations to rebuild.
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties
index f244483c078..415b8c9d6b4 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties
@@ -92,22 +92,6 @@ NewCfgDialog.0=Existing configuration
NewCfgDialog.1=Default configuration
NewBuildConfigurationDialog.0=Cannot create config
NewBuildConfigurationDialog.1=>>
-BuildAllAction.0=Build all project configurations in parallel
-BuildAllAction.1=All
-BuildAllAction.2=Building project
-BuildAllAction.3=Build error
-BuildAllAction.4=Select...
-BuildAllAction.5=Build selected configurations in parallel
-BuildAllAction.6=Select configurations to build
-BuildAllAction.7=Build configurations
-CleanAllAction.0=Clean all project configurations in parallel
-CleanAllAction.1=All
-CleanAllAction.2=Cleaning project
-CleanAllAction.3=Clean error
-CleanAllAction.4=Select...
-CleanAllAction.5=Clean selected configurations in parallel
-CleanAllAction.6=Select configurations to clean
-CleanAllAction.7=Clean configurations
PrefPage_NewCDTWizard.0=Settings will be applied to CDT new project wizard during project creation process
WizardDefaultsTab.0=Show only supported toolchains, by default
WizardDefaultsTab.1=Group old-style toolchains to folder