155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/* 255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * you may not use this file except in compliance with the License. 655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * You may obtain a copy of the License at 755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * http://www.eclipse.org/org/documents/epl-v10.php 955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * See the License for the specific language governing permissions and 1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * limitations under the License. 1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 17f2880494706ad8dfd43e21471096216be4ca7c69Xavier Ducrohetpackage com.android.ide.eclipse.adt.internal.wizards.actions; 1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 19d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport com.android.ide.eclipse.adt.internal.lint.EclipseLintRunner; 20f2880494706ad8dfd43e21471096216be4ca7c69Xavier Ducrohetimport com.android.ide.eclipse.adt.internal.project.ExportHelper; 21648e03eafbf9cac55142d1d6349e4d5cc8b4299dXavier Ducrohetimport com.android.ide.eclipse.adt.internal.sdk.ProjectState; 227a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohetimport com.android.ide.eclipse.adt.internal.sdk.Sdk; 2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.core.resources.IProject; 2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.core.runtime.IAdaptable; 2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.jface.action.IAction; 277a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohetimport org.eclipse.jface.dialogs.MessageDialog; 2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.jface.viewers.ISelection; 2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.jface.viewers.IStructuredSelection; 307a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohetimport org.eclipse.swt.widgets.Shell; 3155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.IObjectActionDelegate; 3255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.IWorkbenchPart; 3355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectpublic class ExportAction implements IObjectActionDelegate { 3555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project private ISelection mSelection; 377a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet private Shell mShell; 3855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 4055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) 4155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 42ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 4355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void setActivePart(IAction action, IWorkbenchPart targetPart) { 447a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet mShell = targetPart.getSite().getShell(); 4555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 4655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 47ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 4855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void run(IAction action) { 4955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (mSelection instanceof IStructuredSelection) { 5055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project IStructuredSelection selection = (IStructuredSelection)mSelection; 5155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // get the unique selected item. 5255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (selection.size() == 1) { 5355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project Object element = selection.getFirstElement(); 5455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 5555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // get the project object from it. 5655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project IProject project = null; 5755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (element instanceof IProject) { 5855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project project = (IProject) element; 5955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } else if (element instanceof IAdaptable) { 6055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project project = (IProject) ((IAdaptable) element).getAdapter(IProject.class); 6155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 6355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // and finally do the action 6455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (project != null) { 65d6124a176326169bc87cb29823ca2dc906689680Tor Norbye if (!EclipseLintRunner.runLintOnExport(mShell, project)) { 66a85107f7d763276a5a040cf68e2046ac54202015Tor Norbye return; 67a85107f7d763276a5a040cf68e2046ac54202015Tor Norbye } 68a85107f7d763276a5a040cf68e2046ac54202015Tor Norbye 697a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet ProjectState state = Sdk.getProjectState(project); 707a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet if (state.isLibrary()) { 717a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet MessageDialog.openError(mShell, "Android Export", 727a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet "Android library projects cannot be exported."); 737a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet } else { 743d3c3c3a3e4e05f7ae7a0dff440fe500f90b785cXavier Ducrohet ExportHelper.exportUnsignedReleaseApk(project); 757a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet } 7655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 8055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 81ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 8255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void selectionChanged(IAction action, ISelection selection) { 837a3e56acaa9b3c3d4be46edde30d6dbbd69fe9b5Xavier Ducrohet mSelection = selection; 8455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 8555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project} 86