hi,

I am playing around with the examples from the Java Class Libraries
book for Java 1.0 :). I ran the Main example for java.awt.Component
and fixed the few issues I noticed in kaffe's libraries.

It fixes some debugging output, some AWTEvent to Event conversion, and
adds a few simple new methods from Java 1.2 to Component.

With the attached fixes, kaffe & JDK 1.3.1 on i386 linux give almost
exactly the same debugging output. The only difference is the width &
height of the InputCanvas. JDK 1.3.1 picks a different font -> the
canvas has different dimensions.

cheers,

Dalibor Topic
        * libraries/javalib/java/awt/Canvas.java:
        (counter) new variable. Used to give canvases distinct default
        names.  
        (Canvas) set default canvas name in constructor.
        
        * libraries/javalib/java/awt/Component.java:
        (getX) new method.
        (getY) new method.
        (paramString) removed unnecessary "". Removed flags output in
        parameter string. Now uses 'x' to separate width from height.
        (postEvent) commented out event x and y coordinate increase since
        it resulted in wrong x and y on example code.
        (toString) tweaked to JDK output format.
        
        * libraries/javalib/java/awt/Event.java:
        (paramString) now returns just the parameter string. The output
        has been tweaked to JDK's format.
        (toString) reimplemented according to spec.
        
        * libraries/javalib/java/awt/event/KeyEvent.java:
        (initOldEvent) set x and y coordinates of the converted event.

        
diff -ur kaffe/libraries/javalib/java/awt/Canvas.java patched-kaffe/libraries/javalib/java/awt/Canvas.java
--- kaffe/libraries/javalib/java/awt/Canvas.java	Tue Oct 12 04:29:38 1999
+++ patched-kaffe/libraries/javalib/java/awt/Canvas.java	Thu Feb 28 21:03:50 2002
@@ -16,11 +16,14 @@
   extends Component
 {
 	final private static long serialVersionUID = -2284879212465893870L;
-
+	private static int counter;
+ 
 public Canvas() {
 	// Canvases usually get their own update events, not being updated
 	// sync within their parents
 	flags |= IS_ASYNC_UPDATED;
+
+	setName("canvas" + counter++);
 }
 
 ClassProperties getClassProperties () {
diff -ur kaffe/libraries/javalib/java/awt/Component.java patched-kaffe/libraries/javalib/java/awt/Component.java
--- kaffe/libraries/javalib/java/awt/Component.java	Wed Dec 19 23:21:34 2001
+++ patched-kaffe/libraries/javalib/java/awt/Component.java	Thu Feb 28 22:12:06 2002
@@ -543,6 +543,14 @@
 	return treeLock;
 }
 
+public int getX() {
+	return x;
+}
+
+public int getY() {
+	return y;
+}
+
 /**
  * @deprecated
  */
@@ -903,10 +911,8 @@
 }
 
 protected String paramString () {
-	String s = "" + name + ',' + ' ' + x + ',' + y + ',' + width + ',' + height;
+	String s = name + ',' + x + ',' + y + ',' + width + 'x' + height;
 	
-	s += " flags: " + Integer.toHexString( flags);
-
 	if ( !isValid() )   s += " invalid";	
 	if ( !isVisible() ) s += " hidden";
 	if ( !isEnabled() ) s += " disabled";
@@ -925,9 +931,12 @@
 				evt.recycle();
 				return (true);
 			}
-			
-			evt.x += c.x;
-			evt.y += c.y;
+
+// Commented out since it doubles an event's x
+// and y coordinates with the Main example for java.awt.Component
+// from the Java Class Libraries book.
+//			    evt.x += c.x;
+//			    evt.y += c.y;
 		}
 		
 		evt.recycle();
@@ -1675,7 +1684,7 @@
 }
 
 public String toString () {
-	return (getClass().getName() + " [" + paramString() + ']');
+	return (getClass().getName() + '[' + paramString() + ']');
 }
 
 /**
diff -ur kaffe/libraries/javalib/java/awt/Event.java patched-kaffe/libraries/javalib/java/awt/Event.java
--- kaffe/libraries/javalib/java/awt/Event.java	Sun Nov 25 21:52:00 2001
+++ patched-kaffe/libraries/javalib/java/awt/Event.java	Thu Feb 28 22:37:44 2002
@@ -156,8 +156,8 @@
 }
 
 protected String paramString() {
-	return ("java.awt.Event [" + target + ", " + id + ", " + arg +
-	         ", " + x + "," + y);
+	return ("id=" + id + ",x=" + x + ",y=" + y + ",key=" + key 
+		+ ",target=" + target + ",arg=" + arg);
 }
 
 public void recycle() {
@@ -180,7 +180,7 @@
 }
 
 public String toString() {
-	return (paramString());
+	return getClass().getName() + '[' + paramString() + ']';
 }
 
 public void translate(int x, int y) {
diff -ur kaffe/libraries/javalib/java/awt/event/KeyEvent.java patched-kaffe/libraries/javalib/java/awt/event/KeyEvent.java
--- kaffe/libraries/javalib/java/awt/event/KeyEvent.java	Wed Jun 14 16:13:54 2000
+++ patched-kaffe/libraries/javalib/java/awt/event/KeyEvent.java	Thu Feb 28 22:35:20 2002
@@ -270,7 +270,12 @@
 	e.when = when;
 	e.modifiers = modifiers;
 	e.key = keyChar;
-	
+
+	// we need to set x & y coordinates too,
+	// since some events may be cached.
+	e.x = ((Component) getSource()).getX();
+	e.y = ((Component) getSource()).getY();
+
 	return e;
 }
 

Reply via email to