| /* |
| * 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); |
| } |
| } |
| } |