blob: 2910e5ee9424ae0944720b043c9c327a0dca961d [file] [log] [blame]
/* //device/tools/ddms/src/com/android/ddms/AboutDialog.java
**
** Copyright 2007, 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.ddms;
import com.android.ddmlib.Log;
import com.android.ddmuilib.ImageHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
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.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import java.io.InputStream;
/**
* Our "about" box.
*/
public class AboutDialog extends Dialog {
private Image logoImage;
/**
* Create with default style.
*/
public AboutDialog(Shell parent) {
this(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
}
/**
* Create with app-defined style.
*/
public AboutDialog(Shell parent, int style) {
super(parent, style);
}
/**
* Prepare and display the dialog.
*/
public void open() {
Shell parent = getParent();
Shell shell = new Shell(parent, getStyle());
shell.setText("About...");
logoImage = loadImage(shell, "ddms-logo.png"); // $NON-NLS-1$
createContents(shell);
shell.pack();
shell.open();
Display display = parent.getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
logoImage.dispose();
}
/*
* Load an image file from a resource.
*
* This depends on Display, so I'm not sure what the rules are for
* loading once and caching in a static class field.
*/
private Image loadImage(Shell shell, String fileName) {
InputStream imageStream;
String pathName = "/images/" + fileName; // $NON-NLS-1$
imageStream = this.getClass().getResourceAsStream(pathName);
if (imageStream == null) {
//throw new NullPointerException("couldn't find " + pathName);
Log.w("ddms", "Couldn't load " + pathName);
Display display = shell.getDisplay();
return ImageHelper.createPlaceHolderArt(display, 100, 50,
display.getSystemColor(SWT.COLOR_BLUE));
}
Image img = new Image(shell.getDisplay(), imageStream);
if (img == null)
throw new NullPointerException("couldn't load " + pathName);
return img;
}
/*
* Create the about box contents.
*/
private void createContents(final Shell shell) {
GridLayout layout;
GridData data;
Label label;
shell.setLayout(new GridLayout(2, false));
// Fancy logo
Label logo = new Label(shell, SWT.BORDER);
logo.setImage(logoImage);
// Text Area
Composite textArea = new Composite(shell, SWT.NONE);
layout = new GridLayout(1, true);
textArea.setLayout(layout);
// Text lines
label = new Label(textArea, SWT.NONE);
label.setText("Dalvik Debug Monitor v" + Main.VERSION);
label = new Label(textArea, SWT.NONE);
label.setText("Copyright 2007, The Android Open Source Project");
label = new Label(textArea, SWT.NONE);
label.setText("All Rights Reserved.");
// blank spot in grid
label = new Label(shell, SWT.NONE);
// "OK" button
Button ok = new Button(shell, SWT.PUSH);
ok.setText("OK");
data = new GridData(GridData.HORIZONTAL_ALIGN_END);
data.widthHint = 80;
ok.setLayoutData(data);
ok.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.close();
}
});
shell.pack();
shell.setDefaultButton(ok);
}
}