001         package com.croftsoft.apps.quiz;
002    
003         import java.awt.*;
004         import java.awt.event.*;
005         import javax.swing.*;
006    
007    //   import com.croftsoft.core.gui.LabeledFieldsJPanel;
008         import com.croftsoft.core.gui.ButtonPanel2;
009         import com.croftsoft.core.lang.NullArgumentException;
010    
011         /*********************************************************************
012         *
013         * <p />
014         *
015         * @version
016         *   2001-10-03
017         * @since
018         *   2001-07-10
019         * @author
020         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
021         *********************************************************************/
022    
023         public final class  QuizTakePanel
024           extends JPanel
025           implements ActionListener
026         //////////////////////////////////////////////////////////////////////
027         //////////////////////////////////////////////////////////////////////
028         {
029    
030         private final QuizModel  quizModel;
031    
032         //
033    
034         private final JTextArea  questionTextArea;
035    
036         private final JTextArea  guessTextArea;
037    
038         private final JTextArea  answerTextArea;
039    
040         private final JTextArea  referenceTextArea;
041    
042         private final JButton  nextJButton  = new JButton ( "Next"     );
043    
044         private final JButton  answerButton = new JButton ( "Answer"   );
045    
046         private final JButton  prevJButton  = new JButton ( "Previous" );
047    
048         private final JButton [ ]  jButtons
049           = new JButton [ ] { prevJButton, answerButton, nextJButton };
050    
051         //
052    
053         private QuizItem [ ]  quizItems;
054    
055         private int  quizItemIndex;
056    
057         //////////////////////////////////////////////////////////////////////
058         //////////////////////////////////////////////////////////////////////
059    
060         public  QuizTakePanel ( QuizModel  quizModel )
061         //////////////////////////////////////////////////////////////////////
062         {
063           super ( new BorderLayout ( ), true ); // isDoubleBuffered
064    
065           NullArgumentException.check ( this.quizModel = quizModel );
066    
067           JPanel  textAreaPanel
068             = new JPanel ( new GridLayout ( 4, 1, 2, 2 ), true );
069    
070           textAreaPanel.add ( new JScrollPane (
071             questionTextArea = new JTextArea ( ) ) );
072    
073           textAreaPanel.add ( new JScrollPane (
074             guessTextArea = new JTextArea ( ) ) );
075    
076           textAreaPanel.add ( new JScrollPane (
077             answerTextArea = new JTextArea ( ) ) );
078    
079           textAreaPanel.add ( new JScrollPane (
080             referenceTextArea = new JTextArea ( ) ) );
081    
082           add ( textAreaPanel, BorderLayout.CENTER );
083    
084           //
085    
086           questionTextArea.setEditable ( false );
087    
088           guessTextArea.setEditable ( true );
089    
090           answerTextArea.setEditable ( false );
091    
092           referenceTextArea.setEditable ( false );
093    
094           //
095    
096           ButtonPanel2  buttonPanel2 = new ButtonPanel2 ( jButtons );
097    
098           for ( int  i = 0; i < jButtons.length; i++ )
099           {
100             JButton  jButton = jButtons [ i ];
101    
102             jButton.setEnabled ( false );
103    
104             jButton.addActionListener ( this );
105           }
106    
107           add ( buttonPanel2, BorderLayout.SOUTH );
108    
109           reset ( );
110         }
111    
112         //////////////////////////////////////////////////////////////////////
113         //////////////////////////////////////////////////////////////////////
114    
115         public synchronized void  actionPerformed ( ActionEvent  actionEvent )
116         //////////////////////////////////////////////////////////////////////
117         {
118           Object  source = actionEvent.getSource ( );
119    
120           if ( source == nextJButton )
121           {
122             if ( quizItemIndex < quizItems.length - 1 )
123             {
124               quizItemIndex++;
125    
126               setQuizItem ( quizItemIndex );
127             }
128    
129             nextJButton.setEnabled ( quizItemIndex < quizItems.length - 1 );
130    
131             prevJButton.setEnabled ( true );
132           }
133           else if ( source == prevJButton )
134           {
135             if ( quizItemIndex > 0 )
136             {
137               quizItemIndex--;
138    
139               setQuizItem ( quizItemIndex );
140             }
141    
142             prevJButton.setEnabled ( quizItemIndex > 0 );
143    
144             nextJButton.setEnabled ( true );
145           }
146           else if ( source == answerButton )
147           {
148             answerButton.setEnabled ( false );
149    
150             answerTextArea.setEnabled ( true );
151    
152             answerTextArea.setText (
153               quizItems [ quizItemIndex ].getAnswer ( ) );
154    
155             referenceTextArea.setEnabled ( true );
156    
157             referenceTextArea.setText (
158               quizItems [ quizItemIndex ].getReference ( ) );
159           }
160           else
161           {
162             System.out.println ( source );
163           }
164         }
165         
166         //////////////////////////////////////////////////////////////////////
167         //////////////////////////////////////////////////////////////////////
168    
169         private synchronized void  reset ( )
170         //////////////////////////////////////////////////////////////////////
171         {
172           quizItemIndex = 0;
173    
174           prevJButton.setEnabled ( false );
175    
176           Quiz  quiz = quizModel.getQuiz ( );
177    
178           if ( quiz != null )
179           {
180             quizItems = quiz.getQuizItems ( );
181           }
182           else
183           {
184             return;
185           }
186    
187           if ( ( quizItems == null )
188             || ( quizItems.length < 1 ) )
189           {
190             return;
191           }
192    
193           if ( quizItems.length > 1 )
194           {
195             nextJButton.setEnabled ( true );
196           }
197    
198           setQuizItem ( 0 );
199         }
200    
201         private void  setQuizItem ( int  index )
202         //////////////////////////////////////////////////////////////////////
203         {
204           QuizItem  quizItem = quizItems [ index ];
205    
206           questionTextArea.setText ( quizItem.getQuestion ( ) );
207    
208           guessTextArea.setText ( "" );
209    
210           answerTextArea.setText ( "" );
211    
212           referenceTextArea.setText ( "" );
213    
214           answerTextArea.setEnabled ( false );
215    
216           referenceTextArea.setEnabled ( false );
217    
218           answerButton.setEnabled ( true );
219         }
220    
221         //////////////////////////////////////////////////////////////////////
222         //////////////////////////////////////////////////////////////////////
223         }