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