diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/SampleSelectionPage.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/SampleSelectionPage.java | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/SampleSelectionPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/SampleSelectionPage.java deleted file mode 100644 index 197247083..000000000 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/SampleSelectionPage.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (C) 2011 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.newproject; - -import com.android.SdkConstants; -import com.android.ide.eclipse.adt.AdtPlugin; -import com.android.ide.eclipse.adt.internal.wizards.newproject.NewProjectWizardState.Mode; -import com.android.sdklib.IAndroidTarget; -import com.android.utils.Pair; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.Text; - -import java.io.File; - -/** Page where the user can select a sample to "instantiate" */ -class SampleSelectionPage extends WizardPage implements SelectionListener, ModifyListener { - private final NewProjectWizardState mValues; - private boolean mIgnore; - - private Table mTable; - private TableViewer mTableViewer; - private IAndroidTarget mCurrentSamplesTarget; - private Text mSampleProjectName; - - /** - * Create the wizard. - */ - SampleSelectionPage(NewProjectWizardState values) { - super("samplePage"); //$NON-NLS-1$ - setTitle("Select Sample"); - setDescription("Select which sample to create"); - mValues = values; - } - - /** - * Create contents of the wizard. - */ - @Override - public void createControl(Composite parent) { - Composite container = new Composite(parent, SWT.NULL); - container.setLayout(new GridLayout(2, false)); - - mTableViewer = new TableViewer(container, SWT.BORDER | SWT.FULL_SELECTION); - mTable = mTableViewer.getTable(); - GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1); - gridData.heightHint = 300; - mTable.setLayoutData(gridData); - mTable.addSelectionListener(this); - - setControl(container); - - Label projectLabel = new Label(container, SWT.NONE); - projectLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); - projectLabel.setText("Project Name:"); - - mSampleProjectName = new Text(container, SWT.BORDER); - mSampleProjectName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); - mSampleProjectName.addModifyListener(this); - } - - @Override - public void setVisible(boolean visible) { - super.setVisible(visible); - - if (visible) { - if (mValues.projectName != null) { - try { - mIgnore = true; - mSampleProjectName.setText(mValues.projectName); - } finally { - mIgnore = false; - } - } - - // Update samples list if the SDK target has changed (or if it hasn't yet - // been populated) - if (mCurrentSamplesTarget != mValues.target) { - mCurrentSamplesTarget = mValues.target; - updateSamples(); - } - - validatePage(); - } - } - - private void updateSamples() { - IBaseLabelProvider labelProvider = new ColumnLabelProvider() { - @Override - public Image getImage(Object element) { - return AdtPlugin.getAndroidLogo(); - } - - @Override - public String getText(Object element) { - if (element instanceof Pair<?, ?>) { - Object name = ((Pair<?, ?>) element).getFirst(); - return name.toString(); - } - return element.toString(); // Fallback. Should not happen. - } - }; - - mTableViewer.setContentProvider(new ArrayContentProvider()); - mTableViewer.setLabelProvider(labelProvider); - - if (mValues.samples != null && mValues.samples.size() > 0) { - Object[] samples = mValues.samples.toArray(); - mTableViewer.setInput(samples); - - mTable.select(0); - selectSample(mValues.samples.get(0).getSecond()); - extractNamesFromAndroidManifest(); - } - } - - private void selectSample(File sample) { - mValues.chosenSample = sample; - if (sample != null && !mValues.projectNameModifiedByUser) { - mValues.projectName = sample.getName(); - if (SdkConstants.FD_SAMPLE.equals(mValues.projectName) && - sample.getParentFile() != null) { - mValues.projectName = sample.getParentFile().getName() + '_' + mValues.projectName; - } - try { - mIgnore = true; - mSampleProjectName.setText(mValues.projectName); - } finally { - mIgnore = false; - } - updatedProjectName(); - } - } - - @SuppressWarnings("unchecked") - @Override - public void widgetSelected(SelectionEvent e) { - if (mIgnore) { - return; - } - - if (e.getSource() == mTable) { - extractNamesFromAndroidManifest(); - int index = mTable.getSelectionIndex(); - if (index >= 0) { - Object[] roots = (Object[]) mTableViewer.getInput(); - selectSample(((Pair<String, File>) roots[index]).getSecond()); - } else { - selectSample(null); - } - } else { - assert false : e.getSource(); - } - - validatePage(); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - } - - @Override - public void modifyText(ModifyEvent e) { - if (mIgnore) { - return; - } - - if (e.getSource() == mSampleProjectName) { - mValues.projectName = mSampleProjectName.getText().trim(); - mValues.projectNameModifiedByUser = true; - updatedProjectName(); - } - - validatePage(); - } - - private void updatedProjectName() { - if (mValues.useDefaultLocation) { - mValues.projectLocation = Platform.getLocation().toFile(); - } - } - - /** - * A sample was selected. Update the location field, manifest and validate. - * Extract names from an android manifest. - * This is done only if the user selected the "use existing source" and a manifest xml file - * can actually be found in the custom user directory. - */ - private void extractNamesFromAndroidManifest() { - if (mValues.chosenSample == null || !mValues.chosenSample.isDirectory()) { - return; - } - - Path path = new Path(mValues.chosenSample.getPath()); - mValues.extractFromAndroidManifest(path); - } - - @Override - public boolean isPageComplete() { - if (mValues.mode != Mode.SAMPLE) { - return true; - } - - // Ensure that when creating samples, the Finish button isn't enabled until - // the user has reached and completed this page - if (mValues.chosenSample == null) { - return false; - } - - return super.isPageComplete(); - } - - private void validatePage() { - IStatus status = null; - if (mValues.samples == null || mValues.samples.size() == 0) { - status = new Status(IStatus.ERROR, AdtPlugin.PLUGIN_ID, - "The chosen SDK does not contain any samples"); - } else if (mValues.chosenSample == null) { - status = new Status(IStatus.ERROR, AdtPlugin.PLUGIN_ID, "Choose a sample"); - } else if (!mValues.chosenSample.exists()) { - status = new Status(IStatus.ERROR, AdtPlugin.PLUGIN_ID, - String.format("Sample does not exist: %1$s", mValues.chosenSample.getPath())); - } else { - status = ProjectNamePage.validateProjectName(mValues.projectName); - } - - // -- update UI & enable finish if there's no error - setPageComplete(status == null || status.getSeverity() != IStatus.ERROR); - if (status != null) { - setMessage(status.getMessage(), - status.getSeverity() == IStatus.ERROR - ? IMessageProvider.ERROR : IMessageProvider.WARNING); - } else { - setErrorMessage(null); - setMessage(null); - } - } -} |