/******************************************************************************* * 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.internal.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}. */ public class CleanAndBuildAction implements IObjectActionDelegate { private ArrayList<IProject> 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<IProject> getSelectedCdtProjects(ISelection selection) { ArrayList<IProject> projects = new ArrayList<IProject>(); 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; } }