samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:06:53 2008 +0200
1.3 @@ -0,0 +1,237 @@
1.4 +package org.apidesign.anagram.gui;
1.5 +
1.6 +import org.apidesign.anagram.api.Scrambler;
1.7 +import org.apidesign.anagram.api.UI;
1.8 +import org.apidesign.anagram.api.WordLibrary;
1.9 +
1.10 +/** Modified version of classical NetBeans Anagrams example for purposes
1.11 + * of modular world.
1.12 + *
1.13 + * @author Dirk Ruiz, Jaroslav Tulach
1.14 + */
1.15 +public abstract class Anagrams extends javax.swing.JFrame implements UI {
1.16 + int wordIdx = 0;
1.17 + String original;
1.18 + String scrambled;
1.19 +
1.20 +
1.21 + /** Creates new form Anagrams */
1.22 + public Anagrams() {
1.23 + initComponents();
1.24 + initWord();
1.25 + getRootPane().setDefaultButton(guessButton);
1.26 + }
1.27 +
1.28 + protected abstract WordLibrary getWordLibrary();
1.29 + protected abstract Scrambler getScrambler();
1.30 +
1.31 + /** This method is called from within the constructor to
1.32 + * initialize the form.
1.33 + * WARNING: Do NOT modify this code. The content of this method is
1.34 + * always regenerated by the Form Editor.
1.35 + */
1.36 + private void initComponents() {//GEN-BEGIN:initComponents
1.37 + java.awt.GridBagConstraints gridBagConstraints;
1.38 +
1.39 + mainPanel = new javax.swing.JPanel();
1.40 + scrambledLabel = new javax.swing.JLabel();
1.41 + guessLabel = new javax.swing.JLabel();
1.42 + feedbackLabel = new javax.swing.JLabel();
1.43 + guessButton = new javax.swing.JButton();
1.44 + scrambledWord = new javax.swing.JTextField();
1.45 + guessedWord = new javax.swing.JTextField();
1.46 + nextTrial = new javax.swing.JButton();
1.47 + mainMenu = new javax.swing.JMenuBar();
1.48 + File = new javax.swing.JMenu();
1.49 + jMenuItem1 = new javax.swing.JMenuItem();
1.50 + jMenuItem2 = new javax.swing.JMenuItem();
1.51 +
1.52 + setTitle("Anagrams");
1.53 + addWindowListener(new java.awt.event.WindowAdapter() {
1.54 + public void windowClosing(java.awt.event.WindowEvent evt) {
1.55 + exitForm(evt);
1.56 + }
1.57 + });
1.58 +
1.59 + mainPanel.setLayout(new java.awt.GridBagLayout());
1.60 +
1.61 + mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
1.62 + mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
1.63 + mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
1.64 + scrambledLabel.setText("Scrambled Word:");
1.65 + gridBagConstraints = new java.awt.GridBagConstraints();
1.66 + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
1.67 + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
1.68 + gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
1.69 + mainPanel.add(scrambledLabel, gridBagConstraints);
1.70 +
1.71 + guessLabel.setText("Your Guess:");
1.72 + gridBagConstraints = new java.awt.GridBagConstraints();
1.73 + gridBagConstraints.gridx = 0;
1.74 + gridBagConstraints.gridy = 1;
1.75 + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
1.76 + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
1.77 + gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
1.78 + mainPanel.add(guessLabel, gridBagConstraints);
1.79 +
1.80 + feedbackLabel.setText(" ");
1.81 + gridBagConstraints = new java.awt.GridBagConstraints();
1.82 + gridBagConstraints.gridx = 1;
1.83 + gridBagConstraints.gridy = 2;
1.84 + gridBagConstraints.gridwidth = 2;
1.85 + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
1.86 + gridBagConstraints.weightx = 1.0;
1.87 + gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
1.88 + mainPanel.add(feedbackLabel, gridBagConstraints);
1.89 +
1.90 + guessButton.setMnemonic('G');
1.91 + guessButton.setText("Guess");
1.92 + guessButton.setToolTipText("Guess the scrambled word.");
1.93 + guessButton.addActionListener(new java.awt.event.ActionListener() {
1.94 + public void actionPerformed(java.awt.event.ActionEvent evt) {
1.95 + guessedWordActionPerformed(evt);
1.96 + }
1.97 + });
1.98 +
1.99 + gridBagConstraints = new java.awt.GridBagConstraints();
1.100 + gridBagConstraints.gridx = 2;
1.101 + gridBagConstraints.gridy = 3;
1.102 + gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
1.103 + gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
1.104 + mainPanel.add(guessButton, gridBagConstraints);
1.105 +
1.106 + scrambledWord.setEditable(false);
1.107 + gridBagConstraints = new java.awt.GridBagConstraints();
1.108 + gridBagConstraints.gridwidth = 3;
1.109 + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
1.110 + gridBagConstraints.weightx = 1.0;
1.111 + gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
1.112 + mainPanel.add(scrambledWord, gridBagConstraints);
1.113 +
1.114 + gridBagConstraints = new java.awt.GridBagConstraints();
1.115 + gridBagConstraints.gridx = 1;
1.116 + gridBagConstraints.gridy = 1;
1.117 + gridBagConstraints.gridwidth = 3;
1.118 + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
1.119 + gridBagConstraints.weightx = 1.0;
1.120 + gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
1.121 + mainPanel.add(guessedWord, gridBagConstraints);
1.122 +
1.123 + nextTrial.setMnemonic('N');
1.124 + nextTrial.setText("New Word");
1.125 + nextTrial.setToolTipText("Fetch a new word.");
1.126 + nextTrial.addActionListener(new java.awt.event.ActionListener() {
1.127 + public void actionPerformed(java.awt.event.ActionEvent evt) {
1.128 + nextTrialActionPerformed(evt);
1.129 + }
1.130 + });
1.131 +
1.132 + gridBagConstraints = new java.awt.GridBagConstraints();
1.133 + gridBagConstraints.gridx = 3;
1.134 + gridBagConstraints.gridy = 3;
1.135 + gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
1.136 + mainPanel.add(nextTrial, gridBagConstraints);
1.137 +
1.138 + getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
1.139 +
1.140 + File.setText("File");
1.141 + jMenuItem1.setText("About");
1.142 + jMenuItem1.setToolTipText("About");
1.143 + jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
1.144 + public void actionPerformed(java.awt.event.ActionEvent evt) {
1.145 + jMenuItem1ActionPerformed(evt);
1.146 + }
1.147 + });
1.148 +
1.149 + File.add(jMenuItem1);
1.150 +
1.151 + jMenuItem2.setText("Exit");
1.152 + jMenuItem2.setToolTipText("Quit Team, Quit!");
1.153 + jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
1.154 + public void actionPerformed(java.awt.event.ActionEvent evt) {
1.155 + jMenuItem2ActionPerformed(evt);
1.156 + }
1.157 + });
1.158 +
1.159 + File.add(jMenuItem2);
1.160 +
1.161 + mainMenu.add(File);
1.162 +
1.163 + setJMenuBar(mainMenu);
1.164 +
1.165 + java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
1.166 + setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
1.167 + }//GEN-END:initComponents
1.168 +
1.169 + private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
1.170 + wordIdx++;
1.171 +
1.172 + feedbackLabel.setText(" ");
1.173 + initWord();
1.174 + guessedWord.setText("");
1.175 + getRootPane().setDefaultButton(guessButton);
1.176 +
1.177 + guessedWord.requestFocus();
1.178 + }//GEN-LAST:event_nextTrialActionPerformed
1.179 +
1.180 + private void initWord() {
1.181 +
1.182 + String[] words = getWordLibrary().getWords();
1.183 + int index = wordIdx % words.length;
1.184 +
1.185 + original = words[index];
1.186 + scrambled = getScrambler().scramble(original);
1.187 +
1.188 + scrambledWord.setText(scrambled);
1.189 + }
1.190 +
1.191 + private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
1.192 + System.exit(0);
1.193 + }//GEN-LAST:event_jMenuItem2ActionPerformed
1.194 +
1.195 + private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
1.196 + new About().show();
1.197 + }//GEN-LAST:event_jMenuItem1ActionPerformed
1.198 +
1.199 + private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
1.200 +
1.201 + if(guessedWord.getText().equals(original)) {
1.202 + feedbackLabel.setText("Correct! Try a new word!");
1.203 + getRootPane().setDefaultButton(nextTrial);
1.204 + } else {
1.205 + feedbackLabel.setText("Incorrect! Try again!");
1.206 + guessedWord.setText("");
1.207 + }
1.208 +
1.209 + guessedWord.requestFocus();
1.210 + }//GEN-LAST:event_guessedWordActionPerformed
1.211 +
1.212 + /** Exit the Application */
1.213 + private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
1.214 + System.exit(0);
1.215 + }//GEN-LAST:event_exitForm
1.216 +
1.217 + @Override
1.218 + public void setVisible(boolean v) {
1.219 + super.setVisible(v);
1.220 + if (v) {
1.221 + guessedWord.requestFocus();
1.222 + }
1.223 + }
1.224 +
1.225 + // Variables declaration - do not modify//GEN-BEGIN:variables
1.226 + private javax.swing.JMenu File;
1.227 + private javax.swing.JLabel feedbackLabel;
1.228 + private javax.swing.JButton guessButton;
1.229 + private javax.swing.JLabel guessLabel;
1.230 + private javax.swing.JTextField guessedWord;
1.231 + private javax.swing.JMenuItem jMenuItem1;
1.232 + private javax.swing.JMenuItem jMenuItem2;
1.233 + private javax.swing.JMenuBar mainMenu;
1.234 + private javax.swing.JPanel mainPanel;
1.235 + private javax.swing.JButton nextTrial;
1.236 + private javax.swing.JLabel scrambledLabel;
1.237 + private javax.swing.JTextField scrambledWord;
1.238 + // End of variables declaration//GEN-END:variables
1.239 +
1.240 +}