samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java
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);
18 String version = System.getProperty("anagram.version");
19 if (version != null) {
20 if (version.startsWith("app-")) {
21 version = version.substring(4);
23 setTitle("Anagrams - " + version + " version");
27 protected abstract WordLibrary getWordLibrary();
28 protected abstract Scrambler getScrambler();
30 public void display() {
33 // FINISH: anagram.ui.Anagrams
39 public void addNotify() {
44 /** This method is called from within the constructor to
45 * initialize the form.
46 * WARNING: Do NOT modify this code. The content of this method is
47 * always regenerated by the Form Editor.
49 private void initComponents() {//GEN-BEGIN:initComponents
50 java.awt.GridBagConstraints gridBagConstraints;
52 mainPanel = new javax.swing.JPanel();
53 scrambledLabel = new javax.swing.JLabel();
54 guessLabel = new javax.swing.JLabel();
55 feedbackLabel = new javax.swing.JLabel();
56 guessButton = new javax.swing.JButton();
57 scrambledWord = new javax.swing.JTextField();
58 guessedWord = new javax.swing.JTextField();
59 nextTrial = new javax.swing.JButton();
60 mainMenu = new javax.swing.JMenuBar();
61 File = new javax.swing.JMenu();
62 jMenuItem1 = new javax.swing.JMenuItem();
63 jMenuItem2 = new javax.swing.JMenuItem();
66 addWindowListener(new java.awt.event.WindowAdapter() {
67 public void windowClosing(java.awt.event.WindowEvent evt) {
72 mainPanel.setLayout(new java.awt.GridBagLayout());
74 mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
75 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
76 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
77 scrambledLabel.setText("Scrambled Word:");
78 gridBagConstraints = new java.awt.GridBagConstraints();
79 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
80 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
81 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
82 mainPanel.add(scrambledLabel, gridBagConstraints);
84 guessLabel.setText("Your Guess:");
85 gridBagConstraints = new java.awt.GridBagConstraints();
86 gridBagConstraints.gridx = 0;
87 gridBagConstraints.gridy = 1;
88 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
89 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
90 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
91 mainPanel.add(guessLabel, gridBagConstraints);
93 feedbackLabel.setText(" ");
94 gridBagConstraints = new java.awt.GridBagConstraints();
95 gridBagConstraints.gridx = 1;
96 gridBagConstraints.gridy = 2;
97 gridBagConstraints.gridwidth = 2;
98 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
99 gridBagConstraints.weightx = 1.0;
100 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
101 mainPanel.add(feedbackLabel, gridBagConstraints);
103 guessButton.setMnemonic('G');
104 guessButton.setText("Guess");
105 guessButton.setToolTipText("Guess the scrambled word.");
106 guessButton.addActionListener(new java.awt.event.ActionListener() {
107 public void actionPerformed(java.awt.event.ActionEvent evt) {
108 guessedWordActionPerformed(evt);
112 gridBagConstraints = new java.awt.GridBagConstraints();
113 gridBagConstraints.gridx = 2;
114 gridBagConstraints.gridy = 3;
115 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
116 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
117 mainPanel.add(guessButton, gridBagConstraints);
119 scrambledWord.setEditable(false);
120 gridBagConstraints = new java.awt.GridBagConstraints();
121 gridBagConstraints.gridwidth = 3;
122 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
123 gridBagConstraints.weightx = 1.0;
124 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
125 mainPanel.add(scrambledWord, gridBagConstraints);
127 gridBagConstraints = new java.awt.GridBagConstraints();
128 gridBagConstraints.gridx = 1;
129 gridBagConstraints.gridy = 1;
130 gridBagConstraints.gridwidth = 3;
131 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
132 gridBagConstraints.weightx = 1.0;
133 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
134 mainPanel.add(guessedWord, gridBagConstraints);
136 nextTrial.setMnemonic('N');
137 nextTrial.setText("New Word");
138 nextTrial.setToolTipText("Fetch a new word.");
139 nextTrial.addActionListener(new java.awt.event.ActionListener() {
140 public void actionPerformed(java.awt.event.ActionEvent evt) {
141 nextTrialActionPerformed(evt);
145 gridBagConstraints = new java.awt.GridBagConstraints();
146 gridBagConstraints.gridx = 3;
147 gridBagConstraints.gridy = 3;
148 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
149 mainPanel.add(nextTrial, gridBagConstraints);
151 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
153 File.setText("File");
154 jMenuItem1.setText("About");
155 jMenuItem1.setToolTipText("About");
156 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
157 public void actionPerformed(java.awt.event.ActionEvent evt) {
158 jMenuItem1ActionPerformed(evt);
162 File.add(jMenuItem1);
164 jMenuItem2.setText("Exit");
165 jMenuItem2.setToolTipText("Quit Team, Quit!");
166 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
167 public void actionPerformed(java.awt.event.ActionEvent evt) {
168 jMenuItem2ActionPerformed(evt);
172 File.add(jMenuItem2);
176 setJMenuBar(mainMenu);
178 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
179 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
180 }//GEN-END:initComponents
182 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
185 feedbackLabel.setText(" ");
187 guessedWord.setText("");
188 getRootPane().setDefaultButton(guessButton);
190 guessedWord.requestFocus();
191 }//GEN-LAST:event_nextTrialActionPerformed
193 private void initWord() {
195 String[] words = getWordLibrary().getWords();
196 int index = wordIdx % words.length;
198 original = words[index];
199 scrambled = getScrambler().scramble(original);
201 scrambledWord.setText(scrambled);
204 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
206 }//GEN-LAST:event_jMenuItem2ActionPerformed
208 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
210 }//GEN-LAST:event_jMenuItem1ActionPerformed
212 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
214 if(guessedWord.getText().equals(original)) {
215 feedbackLabel.setText("Correct! Try a new word!");
216 getRootPane().setDefaultButton(nextTrial);
218 feedbackLabel.setText("Incorrect! Try again!");
219 guessedWord.setText("");
222 guessedWord.requestFocus();
223 }//GEN-LAST:event_guessedWordActionPerformed
225 /** Exit the Application */
226 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
228 }//GEN-LAST:event_exitForm
231 public void setVisible(boolean v) {
234 guessedWord.requestFocus();
238 // Variables declaration - do not modify//GEN-BEGIN:variables
239 private javax.swing.JMenu File;
240 private javax.swing.JLabel feedbackLabel;
241 private javax.swing.JButton guessButton;
242 private javax.swing.JLabel guessLabel;
243 private javax.swing.JTextField guessedWord;
244 private javax.swing.JMenuItem jMenuItem1;
245 private javax.swing.JMenuItem jMenuItem2;
246 private javax.swing.JMenuBar mainMenu;
247 private javax.swing.JPanel mainPanel;
248 private javax.swing.JButton nextTrial;
249 private javax.swing.JLabel scrambledLabel;
250 private javax.swing.JTextField scrambledWord;
251 // End of variables declaration//GEN-END:variables