From a5b451634300667feb621900781191d898f15898 Mon Sep 17 00:00:00 2001 From: Oleg Krasilnikov Date: Fri, 2 Mar 2007 12:18:41 +0000 Subject: [PATCH] Bug #126268 - parallel configurations build --- .../plugin.properties | 2 + .../plugin.xml | 26 ++- .../ui/actions/BuildAllAction.java | 218 ++++++++++++++++++ .../ui/newui/messages.properties | 8 + 4 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllAction.java diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties index 1699f1cf4d9..b4d0f9f1199 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties @@ -51,3 +51,5 @@ CDTExpPathSymbolsProperty.name=C/C++ Export settings CDTBuildProperty.name=C/C++ Build settings CDTToolchainProperty.name=C/C++ ToolChain edit CDTVariablesProperty.name=C/C++ Build variables + +BuildCfgMenu.label=Build configurations diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml index 7ca513f50b3..310e3255a21 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml @@ -82,7 +82,18 @@ value="org.eclipse.cdt.managedbuilder.core.managedBuildNature"> - + + + + + + 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 new file mode 100644 index 00000000000..a8346cd3b29 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/actions/BuildAllAction.java @@ -0,0 +1,218 @@ +/******************************************************************************* + * Copyright (c) 2007 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 + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.ui.actions; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; +import org.eclipse.cdt.core.settings.model.ICProjectDescription; +import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; +import org.eclipse.cdt.managedbuilder.ui.newui.Messages; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.core.resources.IProject; +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 org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuCreator; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2; +import org.eclipse.ui.actions.ActionDelegate; +import org.eclipse.ui.dialogs.ListSelectionDialog; + +/** + * Action which changes active build configuration of the current project to + * the given one. + */ +public class BuildAllAction extends ActionDelegate implements +IWorkbenchWindowPulldownDelegate2, IObjectActionDelegate, IMenuCreator { + + private static final String TIP_ALL = Messages.getString("BuildAllAction.0");//$NON-NLS-1$ + private static final String LBL_ALL = Messages.getString("BuildAllAction.1");//$NON-NLS-1$ + private static final String JOB_MSG = Messages.getString("BuildAllAction.2");//$NON-NLS-1$ + private static final String ERR_MSG = Messages.getString("BuildAllAction.3");//$NON-NLS-1$ + private static final String LBL_SEL = Messages.getString("BuildAllAction.4");//$NON-NLS-1$ + private static final String TIP_SEL = Messages.getString("BuildAllAction.5");//$NON-NLS-1$ + private static final String DLG_TEXT = Messages.getString("BuildAllAction.6");//$NON-NLS-1$ + private static final String DLG_TITLE = Messages.getString("BuildAllAction.7");//$NON-NLS-1$ + + protected ArrayList projects = null; + private ActionContributionItem it_all = null; + private ActionContributionItem it_sel = null; + + 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); + } + + public void run(IAction action) {} // do nothing - show menus only + public void setActivePart(IAction action, IWorkbenchPart targetPart) {} + + // doing nothing + public void dispose() { projects = null; } + public void init(IWorkbenchWindow window) { } + + private static final class BuildFilesJob extends Job { + Object[] cfs; + + BuildFilesJob(Object[] _cfs) { + super(JOB_MSG + ((ICConfigurationDescription)_cfs[0]).getProjectDescription().getName()); + cfs = _cfs; + } + + /* (non-Javadoc) + * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor) + */ + protected IStatus run(IProgressMonitor monitor) { + IConfiguration[] cf = new IConfiguration[cfs.length]; + for (int i=0; i> +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