Update of /cvsroot/xdoclet/xdoclet2/src/java/xdoclet/gui/swing
In directory sc8-pr-cvs1:/tmp/cvs-serv7335/src/java/xdoclet/gui/swing

Modified Files:
        PropertySheet.java PropertyText.java 
Log Message:
Improved event handling so that values are actually updated in the bean

Index: PropertySheet.java
===================================================================
RCS file: /cvsroot/xdoclet/xdoclet2/src/java/xdoclet/gui/swing/PropertySheet.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** PropertySheet.java  19 Mar 2003 00:50:15 -0000      1.5
--- PropertySheet.java  20 Mar 2003 20:08:40 -0000      1.6
***************
*** 105,109 ****
                  // editorComponent = new PropertySelector(editor);
              } else if (propertyEditor.getAsText() != null) {
!                 return new PropertyText(propertyEditor);
              }
          }
--- 105,109 ----
                  // editorComponent = new PropertySelector(editor);
              } else if (propertyEditor.getAsText() != null) {
!                 return new PropertyText(propertyEditor, propertyDescriptor, bean);
              }
          }

Index: PropertyText.java
===================================================================
RCS file: /cvsroot/xdoclet/xdoclet2/src/java/xdoclet/gui/swing/PropertyText.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** PropertyText.java   19 Mar 2003 00:50:15 -0000      1.4
--- PropertyText.java   20 Mar 2003 20:08:41 -0000      1.5
***************
*** 1,12 ****
  package xdoclet.gui.swing;
  
! import javax.swing.JTextField;
  
! import java.awt.event.FocusEvent;
! import java.awt.event.FocusListener;
! import java.awt.event.KeyEvent;
! import java.awt.event.KeyListener;
  
! import java.beans.PropertyEditor;
  
  /**
--- 1,11 ----
  package xdoclet.gui.swing;
  
! import org.apache.commons.logging.LogFactory;
  
! import javax.swing.JTextField;
! import javax.swing.event.DocumentListener;
! import javax.swing.event.DocumentEvent;
  
! import java.beans.*;
  
  /**
***************
*** 15,28 ****
   * @version $Revision$
   */
! class PropertyText extends JTextField implements KeyListener, FocusListener {
!     private PropertyEditor _propertyEditor;
  
!     PropertyText(PropertyEditor propertyEditor) {
          super();
          _propertyEditor = propertyEditor;
  
!         addKeyListener(this);
!         addFocusListener(this);
          updateEditor();
      }
  
--- 14,31 ----
   * @version $Revision$
   */
! class PropertyText extends JTextField implements DocumentListener, 
PropertyChangeListener {
!     private final PropertyEditor _propertyEditor;
!     private final PropertyDescriptor _propertyDescriptor;
!     private final Object _bean;
  
!     PropertyText(PropertyEditor propertyEditor, PropertyDescriptor 
propertyDescriptor, Object bean ) {
          super();
          _propertyEditor = propertyEditor;
+         _propertyDescriptor = propertyDescriptor;
+         _bean = bean;
  
!         getDocument().addDocumentListener(this);
          updateEditor();
+         _propertyEditor.addPropertyChangeListener(this);
      }
  
***************
*** 30,60 ****
          try {
              _propertyEditor.setAsText(getText());
!         } catch (IllegalArgumentException ex) {
!             // Quietly ignore.
          }
      }
  
!     //----------------------------------------------------------------------
!     // Focus listener methods.
!     public void focusGained(FocusEvent e) {
      }
  
!     public void focusLost(FocusEvent e) {
          updateEditor();
      }
  
!     //----------------------------------------------------------------------
!     // Keyboard listener methods.
!     public void keyReleased(KeyEvent e) {
!         if (e.getKeyCode() == KeyEvent.VK_ENTER) {
!             updateEditor();
!         }
!     }
! 
!     public void keyPressed(KeyEvent e) {
          updateEditor();
      }
  
!     public void keyTyped(KeyEvent e) {
          updateEditor();
      }
--- 33,64 ----
          try {
              _propertyEditor.setAsText(getText());
!         } catch (IllegalArgumentException e) {
!             LogFactory.getLog(PropertyText.class).error("Couldn't set new value", e);
          }
      }
  
!     public void propertyChange(PropertyChangeEvent evt) {
!         // Set the new value
!         try {
!             // Get the source. Should be "our" Property editor.
!             // The event will always contain null as the newValue :-(
!             PropertyEditor propertyEditor = (PropertyEditor) evt.getSource();
!             String newValue = propertyEditor.getAsText();
!             _propertyDescriptor.getWriteMethod().invoke( _bean, new Object[] 
{newValue} );
!         } catch (Exception e) {
!             LogFactory.getLog(PropertyText.class).error("Couldn't set new value", e);
!             throw new IllegalStateException(e.getMessage());
!         }
      }
  
!     public void insertUpdate(DocumentEvent e) {
          updateEditor();
      }
  
!     public void removeUpdate(DocumentEvent e) {
          updateEditor();
      }
  
!     public void changedUpdate(DocumentEvent e) {
          updateEditor();
      }



-------------------------------------------------------
This SF.net email is sponsored by: Tablet PC.  
Does your code think in ink? You could win a Tablet PC. 
Get a free Tablet PC hat just for playing. What are you waiting for? 
http://ads.sourceforge.net/cgi-bin/redirect.pl?micr5043en
_______________________________________________
xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to