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;
}