1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 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.atest.dialog; 17 18 import com.android.atest.Constants; 19 import com.intellij.openapi.project.Project; 20 import com.intellij.openapi.ui.DialogWrapper; 21 import org.jetbrains.annotations.NotNull; 22 import org.jetbrains.annotations.Nullable; 23 24 import javax.swing.*; 25 26 /** The UI of a modal dialog box which shows the summary after Atest execution finishes. */ 27 public class MessageDialog extends DialogWrapper { 28 29 private JPanel mDialogPanel; 30 private JTextPane mTestResult; 31 private JScrollPane mScrollPane; 32 33 /** 34 * Creates modal {@code DialogWrapper} that can be parent for other windows. The current active 35 * window will be the dialog's parent. 36 * 37 * @param project parent window for the dialog will be calculated based on the focused window 38 * for the specified {@code project}. This parameter can be {@code null}. In this case 39 * parent window will be suggested based on the current focused window. 40 * @throws IllegalStateException if the dialog is invoked not on the event dispatch thread. 41 * @see DialogWrapper#DialogWrapper(Project, boolean) 42 */ MessageDialog(@ullable Project project)43 public MessageDialog(@Nullable Project project) { 44 super(project); 45 init(); 46 setTitle(Constants.ATEST_NAME); 47 } 48 49 /** 50 * Sets the message in the dialog. 51 * 52 * @param message the message to be shown. 53 */ setMessage(String message)54 public void setMessage(String message) { 55 mTestResult.setText(message); 56 } 57 58 /** 59 * Overrides createActions to only show OK button. 60 * 61 * @return dialog actions. 62 */ 63 @NotNull 64 @Override createActions()65 protected Action[] createActions() { 66 return new Action[] {getOKAction()}; 67 } 68 69 /** 70 * Creates panel with dialog options. Options panel is located at the center of the dialog's 71 * content pane. The implementation can return {@code null} value. In this case there will be no 72 * options panel. 73 * 74 * @return center panel. 75 */ 76 @Nullable 77 @Override createCenterPanel()78 protected JComponent createCenterPanel() { 79 return mDialogPanel; 80 } 81 82 /** 83 * Shows a dialog with the message. 84 * 85 * @param message the message to be shown. 86 */ showMessageDialog(String message)87 public static void showMessageDialog(String message) { 88 MessageDialog dialog = new MessageDialog(null); 89 dialog.setMessage(message); 90 dialog.show(); 91 } 92 } 93