samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java
Merge: Scanner does not really need to override any visitXYZ methods that do default traversal
1 package org.apidesign.anagram.gui;
3 import org.apidesign.anagram.api.Scrambler;
4 import org.apidesign.anagram.api.UI;
5 import org.apidesign.anagram.api.WordLibrary;
7 /** Modified version of classical NetBeans Anagrams example for purposes
10 * @author Dirk Ruiz, Jaroslav Tulach
12 // BEGIN: anagram.ui.Anagrams
13 public abstract class Anagrams extends javax.swing.JFrame implements UI {
16 getRootPane().setDefaultButton(guessButton);
19 protected abstract WordLibrary getWordLibrary();
20 protected abstract Scrambler getScrambler();
22 public void display() {
25 // FINISH: anagram.ui.Anagrams
31 public void addNotify() {
36 /** This method is called from within the constructor to
37 * initialize the form.
38 * WARNING: Do NOT modify this code. The content of this method is
39 * always regenerated by the Form Editor.
41 private void initComponents() {//GEN-BEGIN:initComponents
42 java.awt.GridBagConstraints gridBagConstraints;
44 mainPanel = new javax.swing.JPanel();
45 scrambledLabel = new javax.swing.JLabel();
46 guessLabel = new javax.swing.JLabel();
47 feedbackLabel = new javax.swing.JLabel();
48 guessButton = new javax.swing.JButton();
49 scrambledWord = new javax.swing.JTextField();
50 guessedWord = new javax.swing.JTextField();
51 nextTrial = new javax.swing.JButton();
52 mainMenu = new javax.swing.JMenuBar();
53 File = new javax.swing.JMenu();
54 jMenuItem1 = new javax.swing.JMenuItem();
55 jMenuItem2 = new javax.swing.JMenuItem();
58 addWindowListener(new java.awt.event.WindowAdapter() {
59 public void windowClosing(java.awt.event.WindowEvent evt) {
64 mainPanel.setLayout(new java.awt.GridBagLayout());
66 mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
67 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
68 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
69 scrambledLabel.setText("Scrambled Word:");
70 gridBagConstraints = new java.awt.GridBagConstraints();
71 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
72 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
73 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
74 mainPanel.add(scrambledLabel, gridBagConstraints);
76 guessLabel.setText("Your Guess:");
77 gridBagConstraints = new java.awt.GridBagConstraints();
78 gridBagConstraints.gridx = 0;
79 gridBagConstraints.gridy = 1;
80 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
81 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
82 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
83 mainPanel.add(guessLabel, gridBagConstraints);
85 feedbackLabel.setText(" ");
86 gridBagConstraints = new java.awt.GridBagConstraints();
87 gridBagConstraints.gridx = 1;
88 gridBagConstraints.gridy = 2;
89 gridBagConstraints.gridwidth = 2;
90 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
91 gridBagConstraints.weightx = 1.0;
92 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
93 mainPanel.add(feedbackLabel, gridBagConstraints);
95 guessButton.setMnemonic('G');
96 guessButton.setText("Guess");
97 guessButton.setToolTipText("Guess the scrambled word.");
98 guessButton.addActionListener(new java.awt.event.ActionListener() {
99 public void actionPerformed(java.awt.event.ActionEvent evt) {
100 guessedWordActionPerformed(evt);
104 gridBagConstraints = new java.awt.GridBagConstraints();
105 gridBagConstraints.gridx = 2;
106 gridBagConstraints.gridy = 3;
107 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
108 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
109 mainPanel.add(guessButton, gridBagConstraints);
111 scrambledWord.setEditable(false);
112 gridBagConstraints = new java.awt.GridBagConstraints();
113 gridBagConstraints.gridwidth = 3;
114 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
115 gridBagConstraints.weightx = 1.0;
116 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
117 mainPanel.add(scrambledWord, gridBagConstraints);
119 gridBagConstraints = new java.awt.GridBagConstraints();
120 gridBagConstraints.gridx = 1;
121 gridBagConstraints.gridy = 1;
122 gridBagConstraints.gridwidth = 3;
123 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
124 gridBagConstraints.weightx = 1.0;
125 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
126 mainPanel.add(guessedWord, gridBagConstraints);
128 nextTrial.setMnemonic('N');
129 nextTrial.setText("New Word");
130 nextTrial.setToolTipText("Fetch a new word.");
131 nextTrial.addActionListener(new java.awt.event.ActionListener() {
132 public void actionPerformed(java.awt.event.ActionEvent evt) {
133 nextTrialActionPerformed(evt);
137 gridBagConstraints = new java.awt.GridBagConstraints();
138 gridBagConstraints.gridx = 3;
139 gridBagConstraints.gridy = 3;
140 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
141 mainPanel.add(nextTrial, gridBagConstraints);
143 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
145 File.setText("File");
146 jMenuItem1.setText("About");
147 jMenuItem1.setToolTipText("About");
148 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
149 public void actionPerformed(java.awt.event.ActionEvent evt) {
150 jMenuItem1ActionPerformed(evt);
154 File.add(jMenuItem1);
156 jMenuItem2.setText("Exit");
157 jMenuItem2.setToolTipText("Quit Team, Quit!");
158 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
159 public void actionPerformed(java.awt.event.ActionEvent evt) {
160 jMenuItem2ActionPerformed(evt);
164 File.add(jMenuItem2);
168 setJMenuBar(mainMenu);
170 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
171 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
172 }//GEN-END:initComponents
174 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
177 feedbackLabel.setText(" ");
179 guessedWord.setText("");
180 getRootPane().setDefaultButton(guessButton);
182 guessedWord.requestFocus();
183 }//GEN-LAST:event_nextTrialActionPerformed
185 private void initWord() {
187 String[] words = getWordLibrary().getWords();
188 int index = wordIdx % words.length;
190 original = words[index];
191 scrambled = getScrambler().scramble(original);
193 scrambledWord.setText(scrambled);
196 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
198 }//GEN-LAST:event_jMenuItem2ActionPerformed
200 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
202 }//GEN-LAST:event_jMenuItem1ActionPerformed
204 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
206 if(guessedWord.getText().equals(original)) {
207 feedbackLabel.setText("Correct! Try a new word!");
208 getRootPane().setDefaultButton(nextTrial);
210 feedbackLabel.setText("Incorrect! Try again!");
211 guessedWord.setText("");
214 guessedWord.requestFocus();
215 }//GEN-LAST:event_guessedWordActionPerformed
217 /** Exit the Application */
218 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
220 }//GEN-LAST:event_exitForm
223 public void setVisible(boolean v) {
226 guessedWord.requestFocus();
230 // Variables declaration - do not modify//GEN-BEGIN:variables
231 private javax.swing.JMenu File;
232 private javax.swing.JLabel feedbackLabel;
233 private javax.swing.JButton guessButton;
234 private javax.swing.JLabel guessLabel;
235 private javax.swing.JTextField guessedWord;
236 private javax.swing.JMenuItem jMenuItem1;
237 private javax.swing.JMenuItem jMenuItem2;
238 private javax.swing.JMenuBar mainMenu;
239 private javax.swing.JPanel mainPanel;
240 private javax.swing.JButton nextTrial;
241 private javax.swing.JLabel scrambledLabel;
242 private javax.swing.JTextField scrambledWord;
243 // End of variables declaration//GEN-END:variables