/* * 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.android.sdkuilib.internal.repository; import com.android.SdkConstants; import com.android.sdklib.io.FileOp; import com.android.sdklib.repository.PkgProps; import com.android.sdklib.repository.SdkAddonConstants; import com.android.sdklib.repository.SdkRepoConstants; import com.android.sdkuilib.internal.repository.icons.ImageFactory; import com.android.sdkuilib.ui.GridDataBuilder; import com.android.sdkuilib.ui.GridLayoutBuilder; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class AboutDialog extends UpdaterBaseDialog { public AboutDialog(Shell parentShell, UpdaterData updaterData) { super(parentShell, updaterData, "About" /*title*/); assert updaterData != null; } @Override protected void createContents() { super.createContents(); Shell shell = getShell(); shell.setMinimumSize(new Point(450, 150)); shell.setSize(450, 150); GridLayoutBuilder.create(shell).columns(3); Label logo = new Label(shell, SWT.NONE); ImageFactory imgf = getUpdaterData() == null ? null : getUpdaterData().getImageFactory(); Image image = imgf == null ? null : imgf.getImageByName("sdkman_logo_128.png"); if (image != null) logo.setImage(image); Label label = new Label(shell, SWT.NONE); GridDataBuilder.create(label).hFill().hGrab().hSpan(2);; label.setText(String.format( "Android SDK Manager.\n" + "Revision %1$s\n" + "Add-on XML Schema #%2$d\n" + "Repository XML Schema #%3$d\n" + // TODO: update with new year date (search this to find other occurrences to update) "Copyright (C) 2009-2012 The Android Open Source Project.", getRevision(), SdkAddonConstants.NS_LATEST_VERSION, SdkRepoConstants.NS_LATEST_VERSION)); Label filler = new Label(shell, SWT.NONE); GridDataBuilder.create(filler).fill().grab().hSpan(2); createCloseButton(); } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } // -- Start of internal part ---------- // Hide everything down-below from SWT designer //$hide>>$ // End of hiding from SWT Designer //$hide<<$ private String getRevision() { Properties p = new Properties(); try{ File sourceProp = FileOp.append(getUpdaterData().getOsSdkRoot(), SdkConstants.FD_TOOLS, SdkConstants.FN_SOURCE_PROP); FileInputStream fis = null; try { fis = new FileInputStream(sourceProp); p.load(fis); } finally { if (fis != null) { try { fis.close(); } catch (IOException ignore) { } } } String revision = p.getProperty(PkgProps.PKG_REVISION); if (revision != null) { return revision; } } catch (IOException e) { } return "?"; } }