blob: b0eb75a2d71bc9f3fb2642ff76177eac71255a39 [file] [log] [blame]
/*
* 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;
}
}