diff options
Diffstat (limited to 'src/plugins/android/src/com/motorola/studio/android/wizards/project/SampleSelectionPage.java')
-rw-r--r-- | src/plugins/android/src/com/motorola/studio/android/wizards/project/SampleSelectionPage.java | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/src/plugins/android/src/com/motorola/studio/android/wizards/project/SampleSelectionPage.java b/src/plugins/android/src/com/motorola/studio/android/wizards/project/SampleSelectionPage.java new file mode 100644 index 0000000..90141db --- /dev/null +++ b/src/plugins/android/src/com/motorola/studio/android/wizards/project/SampleSelectionPage.java @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 + * + * 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.motorola.studio.android.wizards.project; + +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +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.Tree; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.ui.PlatformUI; + +import com.motorola.studio.android.AndroidPlugin; +import com.motorola.studio.android.adt.Sample; +import com.motorola.studio.android.adt.SdkUtils; +import com.motorola.studio.android.i18n.AndroidNLS; +import com.motorola.studio.android.model.AndroidProject; + +/** + * Sample Selection Wizard Page. + */ +public class SampleSelectionPage extends WizardPage +{ + private TreeViewer treeViewer; + + final private AndroidProject project; + + private Sample selection = null; + + private final String NEW_PROJECT_SAMPLE_HELP = AndroidPlugin.PLUGIN_ID + ".newproj"; + + /** + * Constructor + * @param project + */ + public SampleSelectionPage(AndroidProject project) + { + super(AndroidNLS.UI_SampleSelectionPage_TitleSourcePage); + this.project = project; + setTitle(AndroidNLS.UI_SampleSelectionPage_WizardTitle); + setDescription(AndroidNLS.UI_SampleSelectionPage_WizardDescription); + setPageComplete(true); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) + { + initializeDialogUnits(parent); + Composite mainComposite = new Composite(parent, SWT.NONE); + mainComposite.setLayout(new GridLayout()); + mainComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); + mainComposite.setLayout(new GridLayout()); + + // Samples Tree Label + Label itemsTableLabel = new Label(mainComposite, SWT.NONE); + itemsTableLabel.setText(AndroidNLS.UI_SampleSelectionPage_SamplesTreeLabel); + + Composite composite = new Composite(mainComposite, SWT.NONE); + composite.setLayout(new GridLayout()); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + // Samples Tree Viewer + treeViewer = new TreeViewer(composite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL); + GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, false); + layoutData.heightHint = 250; + treeViewer.getControl().setLayoutData(layoutData); + treeViewer.setContentProvider(new TreeContentProvider(project)); + treeViewer.setLabelProvider(new TreeLabelProvider()); + treeViewer.setInput(SdkUtils.getCurrentSdk()); + treeViewer.expandAll(); + treeViewer.getTree().addSelectionListener(new SamplesSelectionAdapter(this, project)); + + setControl(mainComposite); + PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, NEW_PROJECT_SAMPLE_HELP); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean) + */ + @Override + public void setVisible(boolean visible) + { + if (visible) + { + treeViewer.refresh(); + Tree tree = treeViewer.getTree(); + tree.deselectAll(); + + if (selection != null) + { + for (TreeItem item : treeViewer.getTree().getItems()) + { + if (item.getData() instanceof Sample) + { + Sample sample = (Sample) item.getData(); + if (sample.getName().equals(selection.getName())) + { + tree.setSelection(item); + tree.select(item); + project.setSample(sample); + setPageComplete(true); + } + } + } + } + if ((tree.getSelection().length == 0) && (tree.getItemCount() > 0)) + { + tree.setSelection(tree.getItem(0)); + tree.select(tree.getItem(0)); + project.setSample((Sample) tree.getItem(0).getData()); + setPageComplete(true); + } + } + else + { + selection = project.getSample(); + setPageComplete(false); + } + super.setVisible(visible); + getContainer().updateButtons(); + } + + //returns native page when selected or main page + @Override + public IWizardPage getPreviousPage() + { + return super.getPreviousPage(); + } + +}
\ No newline at end of file |