| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Eclipse Public License, Version 1.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.eclipse.org/org/documents/epl-v10.php |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.ide.eclipse.adt.internal.editors.manifest.pages; |
| |
| import com.android.ide.eclipse.adt.internal.editors.manifest.ManifestEditor; |
| import com.android.ide.eclipse.adt.internal.editors.ui.SectionHelper.ManifestSectionPart; |
| import com.android.ide.eclipse.adt.internal.project.ExportHelper; |
| import com.android.ide.eclipse.adt.internal.sdk.ProjectState; |
| import com.android.ide.eclipse.adt.internal.sdk.Sdk; |
| import com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.jface.viewers.StructuredSelection; |
| import org.eclipse.jface.wizard.WizardDialog; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.ui.IEditorInput; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.forms.events.HyperlinkAdapter; |
| import org.eclipse.ui.forms.events.HyperlinkEvent; |
| import org.eclipse.ui.forms.widgets.FormText; |
| import org.eclipse.ui.forms.widgets.FormToolkit; |
| import org.eclipse.ui.forms.widgets.Section; |
| import org.eclipse.ui.part.FileEditorInput; |
| |
| /** |
| * Export section part for overview page. |
| */ |
| final class OverviewExportPart extends ManifestSectionPart { |
| |
| private final OverviewPage mOverviewPage; |
| |
| public OverviewExportPart(OverviewPage overviewPage, final Composite body, FormToolkit toolkit, |
| ManifestEditor editor) { |
| super(body, toolkit, Section.TWISTIE | Section.EXPANDED, true /* description */); |
| mOverviewPage = overviewPage; |
| Section section = getSection(); |
| section.setText("Exporting"); |
| |
| final IProject project = getProject(); |
| boolean isLibrary = false; |
| if (project != null) { |
| ProjectState state = Sdk.getProjectState(project); |
| if (state != null) { |
| isLibrary = state.isLibrary(); |
| } |
| } |
| |
| if (isLibrary) { |
| section.setDescription("Library project cannot be exported."); |
| Composite table = createTableLayout(toolkit, 2 /* numColumns */); |
| createFormText(table, toolkit, true, "<form></form>", false /* setupLayoutData */); |
| } else { |
| section.setDescription("To export the application for distribution, you have the following options:"); |
| |
| Composite table = createTableLayout(toolkit, 2 /* numColumns */); |
| |
| StringBuffer buf = new StringBuffer(); |
| buf.append("<form><li><a href=\"wizard\">"); //$NON-NLS-1$ |
| buf.append("Use the Export Wizard"); |
| buf.append("</a>"); //$NON-NLS-1$ |
| buf.append(" to export and sign an APK"); |
| buf.append("</li>"); //$NON-NLS-1$ |
| buf.append("<li><a href=\"manual\">"); //$NON-NLS-1$ |
| buf.append("Export an unsigned APK"); |
| buf.append("</a>"); //$NON-NLS-1$ |
| buf.append(" and sign it manually"); |
| buf.append("</li></form>"); //$NON-NLS-1$ |
| |
| FormText text = createFormText(table, toolkit, true, buf.toString(), |
| false /* setupLayoutData */); |
| text.addHyperlinkListener(new HyperlinkAdapter() { |
| @Override |
| public void linkActivated(HyperlinkEvent e) { |
| if (project != null) { |
| if ("manual".equals(e.data)) { //$NON-NLS-1$ |
| // now we can export an unsigned apk for the project. |
| ExportHelper.exportUnsignedReleaseApk(project); |
| } else { |
| // call the export wizard |
| StructuredSelection selection = new StructuredSelection(project); |
| |
| ExportWizard wizard = new ExportWizard(); |
| wizard.init(PlatformUI.getWorkbench(), selection); |
| WizardDialog dialog = new WizardDialog(body.getShell(), wizard); |
| dialog.open(); |
| } |
| } |
| } |
| }); |
| } |
| |
| layoutChanged(); |
| } |
| |
| /** |
| * Returns the project of the edited file. |
| */ |
| private IProject getProject() { |
| IEditorInput input = mOverviewPage.mEditor.getEditorInput(); |
| if (input instanceof FileEditorInput) { |
| FileEditorInput fileInput = (FileEditorInput)input; |
| IFile file = fileInput.getFile(); |
| return file.getProject(); |
| } |
| |
| return null; |
| } |
| } |