/* * Copyright (C) 2013 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.wizards.exportgradle; import com.android.ide.eclipse.adt.internal.wizards.exportgradle.ExportStatus.FileStatus; import com.google.common.collect.Multimap; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import java.io.File; import java.util.Collection; /** * Final page to review the result of the export. */ public class FinalPage extends WizardPage { private final ProjectSetupBuilder mBuilder; private ExportStatus mStatus; private Text mText; public FinalPage(ProjectSetupBuilder builder) { super("FinalPage"); //$NON-NLS-1$ mBuilder = builder; setPageComplete(true); setTitle(ExportMessages.PageTitle); setDescription(ExportMessages.PageDescription); } @Override public void createControl(Composite parent) { initializeDialogUnits(parent); mText = new Text(parent, SWT.MULTI | SWT.READ_ONLY); mText.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); setControl(mText); Dialog.applyDialogFont(parent); } @Override public void setVisible(boolean visible) { super.setVisible(visible); if (visible) { mStatus = mBuilder.getStatus(); mBuilder.setCanFinish(!mStatus.hasError()); mBuilder.setCanGenerate(false); StringBuilder sb = new StringBuilder(); if (mStatus.hasError()) { sb.append("There was an error!").append("\n\n"); String errorMsg = mStatus.getErrorMessage(); if (errorMsg != null) { sb.append(errorMsg); } Multimap fileStatusMap = mStatus.getFileStatus(); Collection files = fileStatusMap.values(); if (files != null) { sb.append("\n\n").append("Error on files:").append('\n'); for (File file : files) { sb.append("\n").append(file.getAbsolutePath()); } } } else { sb.append("Export successful.\n\n"); int count = mBuilder.getModuleCount(); if (count > 1) { sb.append(String.format("Exported %s modules", count)).append('\n'); sb.append(String.format( "Root folder: %s", mBuilder.getCommonRoot().toOSString())); } else { sb.append("Exported project: ").append(mBuilder.getCommonRoot().toOSString()); } sb.append("\n\n").append("Choose 'Import Non-Android Studio project' in Android Studio").append('\n'); sb.append("and select the following file:").append("\n\t"); File bGradle = new File( mBuilder.getCommonRoot().toFile(), BuildFileCreator.BUILD_FILE); sb.append(bGradle.getAbsolutePath()); sb.append("\n\n").append("Do NOT import the Eclipse project itself!"); } mText.setText(sb.toString()); } } }