diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/UsagePermissionPage.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/UsagePermissionPage.java | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/UsagePermissionPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/UsagePermissionPage.java new file mode 100644 index 000000000..d8413bb45 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/UsagePermissionPage.java @@ -0,0 +1,148 @@ +/* + * 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.welcome; + +import com.android.sdkstats.SdkStatsPermissionDialog; + +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import java.net.URL; + +/** Page which displays the permission dialog for collecting usage statistics */ +public class UsagePermissionPage extends WizardPage implements SelectionListener { + private Link mLink; + private Button mYesRadio; + private Button mNoRadio; + + /** + * Create the wizard. + */ + public UsagePermissionPage() { + super("usageData"); + setTitle("Contribute Usage Statistics?"); + setDescription(SdkStatsPermissionDialog.NOTICE_TEXT); + } + + /** + * Create contents of the wizard. + * + * @param parent parent to create page into + */ + @Override + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + + setControl(container); + container.setLayout(new GridLayout(1, false)); + + Label label = new Label(container, SWT.WRAP); + GridData gd_lblByChoosingTo = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); + gd_lblByChoosingTo.widthHint = 580; + label.setLayoutData(gd_lblByChoosingTo); + label.setText(SdkStatsPermissionDialog.BODY_TEXT); + + Label blankLine = new Label(container, SWT.NONE); + + Label questionLabel = new Label(container, SWT.NONE); + questionLabel.setText("Send usage statistics to Google?"); + + mYesRadio = new Button(container, SWT.RADIO); + mYesRadio.setText("Yes"); + mYesRadio.addSelectionListener(this); + + mNoRadio = new Button(container, SWT.RADIO); + mNoRadio.setText("No"); + mNoRadio.addSelectionListener(this); + + Label laterLabel = new Label(container, SWT.WRAP); + GridData gdLaterLabel = new GridData(SWT.FILL, SWT.BOTTOM, false, true, 1, 1); + gdLaterLabel.widthHint = 580; + laterLabel.setLayoutData(gdLaterLabel); + laterLabel.setText("If you later decide to change this setting, you can do so in the " + + "options panel under Android > Usage Stats"); + + mLink = new Link(container, SWT.NONE); + mLink.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); + mLink.setText(SdkStatsPermissionDialog.PRIVACY_POLICY_LINK_TEXT); + mLink.addSelectionListener(this); + + validatePage(); + } + + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + mYesRadio.setFocus(); + } + + boolean isUsageCollectionApproved() { + return mYesRadio.getSelection(); + } + + @Override + public void widgetSelected(SelectionEvent event) { + if (event.getSource() == mLink) { + try { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWebBrowser browser = workbench.getBrowserSupport().getExternalBrowser(); + browser.openURL(new URL(event.text)); + } catch (Exception e) { + String message = String.format("Could not open browser. Vist\n%1$s\ninstead.", + event.text); + MessageDialog.openError(getWizard().getContainer().getShell(), + "Browser Error", message); + } + } else { + // Radio buttons selected + validatePage(); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + } + + private void validatePage() { + String error = null; + + if (!mYesRadio.getSelection() && !mNoRadio.getSelection()) { + error = "Select Yes or No"; + } + + setPageComplete(error == null); + if (error != null) { + setMessage(error, IMessageProvider.ERROR); + } else { + setErrorMessage(null); + setMessage(null); + } + } +} |