1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.eclipse.org/org/documents/epl-v10.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.ide.eclipse.adt.internal.wizards.templates; 17 18 import org.eclipse.jface.wizard.WizardPage; 19 import org.eclipse.swt.SWT; 20 import org.eclipse.swt.events.SelectionEvent; 21 import org.eclipse.swt.events.SelectionListener; 22 import org.eclipse.swt.layout.GridData; 23 import org.eclipse.swt.layout.GridLayout; 24 import org.eclipse.swt.widgets.Button; 25 import org.eclipse.swt.widgets.Composite; 26 import org.eclipse.swt.widgets.Label; 27 28 class UpdateToolsPage extends WizardPage implements SelectionListener { 29 private Button mInstallButton; UpdateToolsPage()30 UpdateToolsPage() { 31 super("update"); 32 setTitle("Update Tools"); 33 validatePage(); 34 } 35 36 @Override createControl(Composite parent)37 public void createControl(Composite parent) { 38 Composite container = new Composite(parent, SWT.NULL); 39 setControl(container); 40 container.setLayout(new GridLayout(1, false)); 41 42 Label label = new Label(container, SWT.WRAP); 43 GridData layoutData = new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1); 44 layoutData.widthHint = NewTemplatePage.WIZARD_PAGE_WIDTH - 50; 45 label.setLayoutData(layoutData); 46 label.setText( 47 "Your tools installation appears to be out of date (or not yet installed).\n" + 48 "\n" + 49 "This wizard depends on templates distributed with the Android SDK Tools.\n" + 50 "\n" + 51 "Please update the tools first (via Window > Android SDK Manager, or by " + 52 "using the \"android\" command in a terminal window). Note that on Windows " + 53 "you may need to restart the IDE, since there are some known problems where " + 54 "Windows locks the files held open by the running IDE, so the updater is " + 55 "unable to delete them in order to upgrade them."); 56 57 mInstallButton = new Button(container, SWT.NONE); 58 mInstallButton.setText("Check Again"); 59 mInstallButton.addSelectionListener(this); 60 } 61 62 @Override isPageComplete()63 public boolean isPageComplete() { 64 return isUpToDate(); 65 } 66 isUpToDate()67 static boolean isUpToDate() { 68 return TemplateManager.getTemplateRootFolder() != null; 69 } 70 validatePage()71 private void validatePage() { 72 boolean ok = isUpToDate(); 73 setPageComplete(ok); 74 if (ok) { 75 setErrorMessage(null); 76 setMessage(null); 77 } else { 78 setErrorMessage("The tools need to be updated via the SDK Manager"); 79 } 80 } 81 82 // ---- Implements SelectionListener ---- 83 84 @Override widgetSelected(SelectionEvent e)85 public void widgetSelected(SelectionEvent e) { 86 if (e.getSource() == mInstallButton) { 87 validatePage(); 88 } 89 } 90 91 @Override widgetDefaultSelected(SelectionEvent e)92 public void widgetDefaultSelected(SelectionEvent e) { 93 } 94 } 95