001 package com.croftsoft.core.gui; 002 003 import java.awt.*; 004 import java.awt.event.*; 005 import javax.swing.*; 006 import javax.swing.border.*; 007 008 import com.croftsoft.core.lang.NullArgumentException; 009 010 /********************************************************************* 011 * Displays a license agreement and an accept/decline button choice. 012 * 013 * @version 014 * 2002-01-27 015 * @since 016 * 2001-07-20 017 * @author 018 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 019 *********************************************************************/ 020 021 public final class LicensePanel 022 extends JPanel 023 implements ActionListener 024 ////////////////////////////////////////////////////////////////////// 025 ////////////////////////////////////////////////////////////////////// 026 { 027 028 private final JButton acceptJButton; 029 030 private final JButton declineJButton; 031 032 ////////////////////////////////////////////////////////////////////// 033 ////////////////////////////////////////////////////////////////////// 034 035 /********************************************************************* 036 * Main constructor. 037 * 038 * @param licenseAgreementText 039 * 040 * Must not be null. 041 * 042 * @param acceptActionListener 043 * 044 * Called when the Accept button is clicked. Must not be null. 045 * 046 * @param declineActionListener 047 * 048 * If null, the Decline button will simply trigger System.exit(0). 049 * 050 * @param panelBackgroundColor 051 * 052 * May be null. 053 * 054 * @param splashImage 055 * 056 * May be null. 057 *********************************************************************/ 058 public LicensePanel ( 059 String licenseAgreementText, 060 ActionListener acceptActionListener, 061 ActionListener declineActionListener, 062 Color panelBackgroundColor, 063 Image splashImage ) 064 ////////////////////////////////////////////////////////////////////// 065 { 066 super ( new BorderLayout ( ), true ); // isDoubleBuffered 067 068 NullArgumentException.check ( licenseAgreementText ); 069 070 NullArgumentException.check ( acceptActionListener ); 071 072 if ( panelBackgroundColor != null ) 073 { 074 setBackground ( panelBackgroundColor ); 075 } 076 077 if ( splashImage != null ) 078 { 079 add ( new JLabel ( new ImageIcon ( splashImage ) ), BorderLayout.NORTH ); 080 } 081 082 JTextArea jTextArea = new JTextArea ( ); 083 084 jTextArea.setEditable ( false ); 085 086 jTextArea.setLineWrap ( true ); 087 088 jTextArea.setWrapStyleWord ( true ); 089 090 // How can I set the border to 2 characters wide? 091 092 jTextArea.setBorder ( new EmptyBorder ( 4, 4, 4, 4 ) ); 093 094 jTextArea.setText ( licenseAgreementText ); 095 096 add ( new JScrollPane ( jTextArea ), BorderLayout.CENTER ); 097 098 acceptJButton = new JButton ( "Accept" ); 099 100 acceptJButton.addActionListener ( acceptActionListener ); 101 102 declineJButton = new JButton ( "Decline" ); 103 104 if ( declineActionListener == null ) 105 { 106 declineActionListener = this; 107 } 108 109 declineJButton.addActionListener ( declineActionListener ); 110 111 JButton [ ] jButtons 112 = new JButton [ ] { declineJButton, acceptJButton }; 113 114 add ( new ButtonPanel2 ( jButtons ), BorderLayout.SOUTH ); 115 } 116 117 /********************************************************************* 118 * Convenience constructor. 119 *********************************************************************/ 120 public LicensePanel ( 121 String licenseAgreementText, 122 ActionListener acceptActionListener, 123 Color panelBackgroundColor ) 124 ////////////////////////////////////////////////////////////////////// 125 { 126 this ( 127 licenseAgreementText, 128 acceptActionListener, 129 ( ActionListener ) null, 130 panelBackgroundColor, 131 ( Image ) null ); 132 } 133 134 /********************************************************************* 135 * Convenience constructor. 136 *********************************************************************/ 137 public LicensePanel ( 138 String licenseAgreementText, 139 ActionListener acceptActionListener ) 140 ////////////////////////////////////////////////////////////////////// 141 { 142 this ( 143 licenseAgreementText, 144 acceptActionListener, 145 ( Color ) null ); 146 } 147 148 ////////////////////////////////////////////////////////////////////// 149 ////////////////////////////////////////////////////////////////////// 150 151 public JButton getAcceptJButton ( ) { return acceptJButton; } 152 153 public JButton getDeclineJButton ( ) { return declineJButton; } 154 155 ////////////////////////////////////////////////////////////////////// 156 ////////////////////////////////////////////////////////////////////// 157 158 public void actionPerformed ( ActionEvent actionEvent ) 159 ////////////////////////////////////////////////////////////////////// 160 { 161 if ( actionEvent.getSource ( ) == declineJButton ) 162 { 163 System.exit ( 0 ); 164 } 165 } 166 167 ////////////////////////////////////////////////////////////////////// 168 ////////////////////////////////////////////////////////////////////// 169 }