/[schmitzm]/trunk/src/skrueger/swing/TranslationEditJPanel.java
ViewVC logotype

Diff of /trunk/src/skrueger/swing/TranslationEditJPanel.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 289 by mojays, Mon Aug 3 22:29:36 2009 UTC revision 711 by alfonx, Fri Feb 19 01:09:35 2010 UTC
# Line 33  import java.awt.BorderLayout; Line 33  import java.awt.BorderLayout;
33  import java.awt.Dimension;  import java.awt.Dimension;
34  import java.awt.event.ActionEvent;  import java.awt.event.ActionEvent;
35  import java.awt.event.ActionListener;  import java.awt.event.ActionListener;
36  import java.awt.event.KeyEvent;  import java.util.HashMap;
 import java.awt.event.KeyListener;  
 import java.util.HashSet;  
37  import java.util.List;  import java.util.List;
38  import java.util.Set;  import java.util.Random;
39    import java.util.WeakHashMap;
40    
41  import javax.swing.BorderFactory;  import javax.swing.BorderFactory;
42  import javax.swing.JLabel;  import javax.swing.JLabel;
# Line 49  import org.apache.log4j.Logger; Line 48  import org.apache.log4j.Logger;
48    
49  import schmitzm.swing.JPanel;  import schmitzm.swing.JPanel;
50  import schmitzm.swing.SpringUtilities;  import schmitzm.swing.SpringUtilities;
51    import schmitzm.swing.SwingUtil;
52  import skrueger.i8n.Translation;  import skrueger.i8n.Translation;
53    
54  /**  /**
# Line 61  import skrueger.i8n.Translation; Line 61  import skrueger.i8n.Translation;
61   *   *
62   * @author Stefan Alfons Krüger   * @author Stefan Alfons Krüger
63   */   */
64  public class TranslationEditJPanel extends JPanel  {  public class TranslationEditJPanel extends JPanel {
65          static final protected Logger LOGGER = Logger          static final protected Logger LOGGER = Logger
66                          .getLogger(TranslationEditJPanel.class);                          .getLogger(TranslationEditJPanel.class);
67    
# Line 72  public class TranslationEditJPanel exten Line 72  public class TranslationEditJPanel exten
72          /**          /**
73           * Remembers all {@link JTextField} that have been created.           * Remembers all {@link JTextField} that have been created.
74           */           */
75          private Set<JTextField> langTextFields = new HashSet<JTextField>();          private HashMap<String, TranslationJTextField> langTextFields = new HashMap<String, TranslationJTextField>();
76            private WeakHashMap<ActionListener, ActionListener> actionListeners = new WeakHashMap<ActionListener, ActionListener>();
77    
78            private final String question;
79    
80          /**          /**
81           * Creates a {@link JPanel} that asks the user for the translation of a           * Creates a {@link JPanel} that asks the user for the translation of a
# Line 90  public class TranslationEditJPanel exten Line 93  public class TranslationEditJPanel exten
93          public TranslationEditJPanel(String question, Translation trans,          public TranslationEditJPanel(String question, Translation trans,
94                          List<String> languages_) {                          List<String> languages_) {
95                  super(new BorderLayout());                  super(new BorderLayout());
96                    this.question = question;
97    
98                    SwingUtil.setMinimumWidth(this, 400);
99    
100                  if (trans == null)                  if (trans == null)
101                          trans = new Translation();                          trans = new Translation();
# Line 97  public class TranslationEditJPanel exten Line 103  public class TranslationEditJPanel exten
103                  this.trans = trans;                  this.trans = trans;
104                  this.languages = languages_;                  this.languages = languages_;
105    
106                    initGUI();
107            }
108    
109            private void initGUI() {
110                  add(getTranslationGrid(), BorderLayout.CENTER);                  add(getTranslationGrid(), BorderLayout.CENTER);
111    
112                  if (question != null) {                  if (question != null) {
# Line 107  public class TranslationEditJPanel exten Line 117  public class TranslationEditJPanel exten
117                  }                  }
118          }          }
119    
120            /**
121             * Creates a {@link JPanel} that asks the user for the translation of a
122             * String in several languages and additionally puts a {@link JLabel} with a
123             * question at the {@link JPanel}'s first row.
124             *
125             * <br/>
126             * This constructor also sets a TitledBorder with the given title.
127             */
128            public TranslationEditJPanel(Translation title, List<String> languages2,
129                            String borderTitle) {
130                    this(title, languages2);
131    
132                    setBorder(BorderFactory.createTitledBorder(borderTitle));
133            }
134    
135          private JPanel getTranslationGrid() {          private JPanel getTranslationGrid() {
136                  if (translationGrid == null) {                  if (translationGrid == null) {
137                          translationGrid = new JPanel(new SpringLayout());                          translationGrid = new JPanel(new SpringLayout());
# Line 118  public class TranslationEditJPanel exten Line 143  public class TranslationEditJPanel exten
143                                  langDesc.setHorizontalAlignment(SwingConstants.RIGHT);                                  langDesc.setHorizontalAlignment(SwingConstants.RIGHT);
144                                  langDesc.setVerticalAlignment(SwingConstants.NORTH);                                  langDesc.setVerticalAlignment(SwingConstants.NORTH);
145    
146                                  TranslationJTextField langTextField = new TranslationJTextField(                                  TranslationJTextField langTextField = langTextFields
147                                                  trans, langId);                                                  .get(langId);
148                                  // Setting a size  
149                                  langTextField.setPreferredSize(new Dimension(360, 22));                                  if (langTextField == null) {
150                                  langDesc.setLabelFor(langTextField);                                          langTextField = new TranslationJTextField(trans, langId);
151                                            // Setting a size
152                                            langTextField.setPreferredSize(new Dimension(360, 22));
153                                            langDesc.setLabelFor(langTextField);
154                                    }
155    
156                                  translationGrid.add(langDesc);                                  translationGrid.add(langDesc);
157                                  translationGrid.add(langTextField);                                  translationGrid.add(langTextField);
158                                    
159                                  langTextFields .add(langTextField);                                  langTextFields.put(langId, langTextField);
160                          }                          }
161    
162                          // Lay out the panel.                          // Lay out the panel.
# Line 147  public class TranslationEditJPanel exten Line 177  public class TranslationEditJPanel exten
177                  return trans;                  return trans;
178          }          }
179    
180          public void addActionListener(final ActionListener actionListener) {          /**
181                  for (final JTextField langTextField : langTextFields){           * TODO Is never called?!
182                          langTextField.addKeyListener( new KeyListener(){           */
183            public void dispose() {
184                    for (TranslationJTextField f : langTextFields.values()) {
185                            f.dispose();
186                    }
187                    langTextFields.clear();
188            }
189    
190                                  @Override          public void addTranslationChangeListener(final ActionListener al) {
191                                  public void keyPressed(KeyEvent e) {                  final ActionListener actionListener = new ActionListener() {
                                 }  
192    
193                                  @Override                          @Override
194                                  public void keyReleased(KeyEvent e) {                          public void actionPerformed(ActionEvent e) {
195                                  }                                  al.actionPerformed(new ActionEvent(TranslationEditJPanel.this,
196                                                    new Random().nextInt(), ""));
197                            }
198    
199                                  @Override                  };
200                                  public void keyTyped(KeyEvent e) {                  actionListeners.put(al, actionListener);
201                                          actionListener.actionPerformed(new ActionEvent(TranslationEditJPanel.this, 0, ""));                  getTranslation().addTranslationChangeListener(actionListener);
                                 }  
                                   
                         });  
                 }  
202          }          }
203    
204          public void removeActionListener(ActionListener actionListener) {          public void removeTranslationChangeListener(ActionListener al) {
205                  for (JTextField langTextField : langTextFields){                  if (actionListeners.get(al) != null) {
206                          langTextField.removeActionListener(actionListener);                          ActionListener actionListener = actionListeners.get(al);
207                            getTranslation().removeTranslationChangeListener(actionListener);
208                            actionListeners.remove(actionListener);
209                  }                  }
210          }          }
211    
212    
213  }  }

Legend:
Removed from v.289  
changed lines
  Added in v.711

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26