• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* //device/tools/ddms/src/com/android/ddms/AboutDialog.java
2 **
3 ** Copyright 2007, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 package com.android.ddms;
19 
20 import com.android.ddmlib.Log;
21 import com.android.ddmuilib.ImageLoader;
22 
23 import org.eclipse.swt.SWT;
24 import org.eclipse.swt.events.SelectionAdapter;
25 import org.eclipse.swt.events.SelectionEvent;
26 import org.eclipse.swt.graphics.Image;
27 import org.eclipse.swt.layout.GridData;
28 import org.eclipse.swt.layout.GridLayout;
29 import org.eclipse.swt.widgets.Button;
30 import org.eclipse.swt.widgets.Composite;
31 import org.eclipse.swt.widgets.Dialog;
32 import org.eclipse.swt.widgets.Display;
33 import org.eclipse.swt.widgets.Label;
34 import org.eclipse.swt.widgets.Shell;
35 
36 import java.io.InputStream;
37 
38 /**
39  * Our "about" box.
40  */
41 public class AboutDialog extends Dialog {
42 
43     private Image logoImage;
44 
45     /**
46      * Create with default style.
47      */
AboutDialog(Shell parent)48     public AboutDialog(Shell parent) {
49         this(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
50     }
51 
52     /**
53      * Create with app-defined style.
54      */
AboutDialog(Shell parent, int style)55     public AboutDialog(Shell parent, int style) {
56         super(parent, style);
57     }
58 
59     /**
60      * Prepare and display the dialog.
61      */
open()62     public void open() {
63         Shell parent = getParent();
64         Shell shell = new Shell(parent, getStyle());
65         shell.setText("About...");
66 
67         logoImage = loadImage(shell, "ddms-128.png"); //$NON-NLS-1$
68         createContents(shell);
69         shell.pack();
70 
71         shell.open();
72         Display display = parent.getDisplay();
73         while (!shell.isDisposed()) {
74             if (!display.readAndDispatch())
75                 display.sleep();
76         }
77 
78         logoImage.dispose();
79     }
80 
81     /*
82      * Load an image file from a resource.
83      *
84      * This depends on Display, so I'm not sure what the rules are for
85      * loading once and caching in a static class field.
86      */
loadImage(Shell shell, String fileName)87     private Image loadImage(Shell shell, String fileName) {
88         InputStream imageStream;
89         String pathName = "/images/" + fileName;  //$NON-NLS-1$
90 
91         imageStream = this.getClass().getResourceAsStream(pathName);
92         if (imageStream == null) {
93             //throw new NullPointerException("couldn't find " + pathName);
94             Log.w("ddms", "Couldn't load " + pathName);
95             Display display = shell.getDisplay();
96             return ImageLoader.createPlaceHolderArt(display, 100, 50,
97                     display.getSystemColor(SWT.COLOR_BLUE));
98         }
99 
100         Image img = new Image(shell.getDisplay(), imageStream);
101         if (img == null)
102             throw new NullPointerException("couldn't load " + pathName);
103         return img;
104     }
105 
106     /*
107      * Create the about box contents.
108      */
createContents(final Shell shell)109     private void createContents(final Shell shell) {
110         GridLayout layout;
111         GridData data;
112         Label label;
113 
114         shell.setLayout(new GridLayout(2, false));
115 
116         // Fancy logo
117         Label logo = new Label(shell, SWT.BORDER);
118         logo.setImage(logoImage);
119 
120         // Text Area
121         Composite textArea = new Composite(shell, SWT.NONE);
122         layout = new GridLayout(1, true);
123         textArea.setLayout(layout);
124 
125         // Text lines
126         label = new Label(textArea, SWT.NONE);
127         if (Main.sRevision != null && Main.sRevision.length() > 0) {
128             label.setText("Dalvik Debug Monitor Revision " + Main.sRevision);
129         } else {
130             label.setText("Dalvik Debug Monitor");
131         }
132         label = new Label(textArea, SWT.NONE);
133         label.setText("Copyright 2007-2011, The Android Open Source Project");
134         label = new Label(textArea, SWT.NONE);
135         label.setText("All Rights Reserved.");
136 
137         // blank spot in grid
138         label = new Label(shell, SWT.NONE);
139 
140         // "OK" button
141         Button ok = new Button(shell, SWT.PUSH);
142         ok.setText("OK");
143         data = new GridData(GridData.HORIZONTAL_ALIGN_END);
144         data.widthHint = 80;
145         ok.setLayoutData(data);
146         ok.addSelectionListener(new SelectionAdapter() {
147             @Override
148             public void widgetSelected(SelectionEvent e) {
149                 shell.close();
150             }
151         });
152 
153         shell.pack();
154 
155         shell.setDefaultButton(ok);
156     }
157 }
158