/* * 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.sdkuilib.internal.repository.icons.ImageFactory; import com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2; import com.android.sdkuilib.ui.GridDataBuilder; import com.android.sdkuilib.ui.GridLayoutBuilder; import com.android.sdkuilib.ui.SwtBaseDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Shell; /** * Base class for auxiliary dialogs shown in the updater (for example settings, * about box or add-on site.) */ public abstract class UpdaterBaseDialog extends SwtBaseDialog { private final UpdaterData mUpdaterData; protected UpdaterBaseDialog(Shell parentShell, UpdaterData updaterData, String title) { super(parentShell, SWT.APPLICATION_MODAL, String.format("%1$s - %2$s", SdkUpdaterWindowImpl2.APP_NAME, title)); //$NON-NLS-1$ mUpdaterData = updaterData; } public UpdaterData getUpdaterData() { return mUpdaterData; } /** * Initializes the shell with a 2-column Grid layout. * Caller should use {@link #createCloseButton()} to inject the * close button at the bottom of the dialog. */ @Override protected void createContents() { Shell shell = getShell(); setWindowImage(shell); GridLayoutBuilder.create(shell).columns(2); } protected void createCloseButton() { Button close = new Button(getShell(), SWT.PUSH); close.setText("Close"); GridDataBuilder.create(close).hFill().vBottom(); close.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { close(); } }); } @Override protected void postCreate() { // pass } @Override protected void close() { super.close(); } /** * Creates the icon of the window shell. * * @param shell The shell on which to put the icon */ private void setWindowImage(Shell shell) { String imageName = "android_icon_16.png"; //$NON-NLS-1$ if (SdkConstants.currentPlatform() == SdkConstants.PLATFORM_DARWIN) { imageName = "android_icon_128.png"; //$NON-NLS-1$ } if (mUpdaterData != null) { ImageFactory imgFactory = mUpdaterData.getImageFactory(); if (imgFactory != null) { shell.setImage(imgFactory.getImageByName(imageName)); } } } }