// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.projectsettings.ui.internal; import static org.eclipse.ui.handlers.HandlerUtil.getActiveWorkbenchWindowChecked; import java.util.List; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IProject; import org.projectusus.projectsettings.core.SettingsAccess; public class CopySettingsFromProject extends AbstractHandler { private final SettingsAccess settingsAccess = new SettingsAccess(); public Object execute( ExecutionEvent event ) throws ExecutionException { List<IProject> projects = new ProjectSelectionExtractor( event ).getSelectedProjects(); ProjectSelectorResult projectAndChoice = selectProject( event, projects ); if( projectAndChoice != null ) { IProject project = projectAndChoice.getProject(); projects.remove( project ); settingsAccess.transferSettingsFromProject( projects, project, projectAndChoice.getWhichPrefs() ); } return null; } private ProjectSelectorResult selectProject( ExecutionEvent event, List<IProject> projects ) throws ExecutionException { return new ProjectSelector( getActiveWorkbenchWindowChecked( event ).getShell() ).selectProject( projects ); } }