summaryrefslogtreecommitdiff
path: root/src/swing
diff options
context:
space:
mode:
authorNAME <USER@epfl.ch>2008-04-06 15:49:24 +0000
committerNAME <USER@epfl.ch>2008-04-06 15:49:24 +0000
commit30610072ac6bec2c6e70dbb0e779f4a53bf39688 (patch)
tree28f934262133d77db93d06a2b55637385efd5367 /src/swing
parent02975ed50d200f222bc561c335d2aa15b38f65ae (diff)
downloadscala-30610072ac6bec2c6e70dbb0e779f4a53bf39688.tar.gz
scala-30610072ac6bec2c6e70dbb0e779f4a53bf39688.tar.bz2
scala-30610072ac6bec2c6e70dbb0e779f4a53bf39688.zip
scala.swing update, reverted Martin's changes
Diffstat (limited to 'src/swing')
-rw-r--r--src/swing/scala/swing/Applet.scala30
-rw-r--r--src/swing/scala/swing/BoxPanel.scala2
-rw-r--r--src/swing/scala/swing/Component.scala135
-rw-r--r--src/swing/scala/swing/Container.scala14
-rw-r--r--src/swing/scala/swing/EditorComponent.scala2
-rw-r--r--src/swing/scala/swing/FlowPanel.scala2
-rw-r--r--src/swing/scala/swing/Frame.scala19
-rw-r--r--src/swing/scala/swing/GridPanel.scala2
-rw-r--r--src/swing/scala/swing/IndexedPanel.scala2
-rw-r--r--src/swing/scala/swing/Point.scala7
-rw-r--r--src/swing/scala/swing/ProgressBar.scala2
-rw-r--r--src/swing/scala/swing/RootPanel.scala19
-rw-r--r--src/swing/scala/swing/ScrollPane.scala2
-rw-r--r--src/swing/scala/swing/Showable.scala2
-rw-r--r--src/swing/scala/swing/Swing.scala2
-rw-r--r--src/swing/scala/swing/UIElement.scala2
-rw-r--r--src/swing/scala/swing/event/BackgroundChanged.scala3
-rw-r--r--src/swing/scala/swing/event/ComponentEvent.scala7
-rw-r--r--src/swing/scala/swing/event/ContainerEvent.scala6
-rw-r--r--src/swing/scala/swing/event/ContentModified.scala2
-rw-r--r--src/swing/scala/swing/event/FocusEvent.scala12
-rw-r--r--src/swing/scala/swing/event/FontChanged.scala3
-rw-r--r--src/swing/scala/swing/event/ForegroundChanged.scala3
-rw-r--r--src/swing/scala/swing/event/MouseEvent.scala30
-rw-r--r--src/swing/scala/swing/test/SimpleApplet.scala19
25 files changed, 295 insertions, 34 deletions
diff --git a/src/swing/scala/swing/Applet.scala b/src/swing/scala/swing/Applet.scala
new file mode 100644
index 0000000000..c80f8422dc
--- /dev/null
+++ b/src/swing/scala/swing/Applet.scala
@@ -0,0 +1,30 @@
+package scala.swing
+
+import javax.swing.JApplet
+
+/**
+ * Clients should implement the ui field. See the SimpleApplet demo for a sample.
+ *
+ * Note: Applet extends JApplet to satisfy Java's applet loading mechanism.
+ * The usual component wrapping scheme doesn't work here.
+ */
+abstract class Applet extends JApplet { outer =>
+ val ui: UI
+
+ override def init() { ui.init() }
+ override def start() { ui.start() }
+ override def stop() { ui.stop() }
+
+ abstract class UI extends RootPanel {
+ def peer = outer
+ override def content_=(c: Component) {
+ super.content_=(c)
+ peer.validate()
+ }
+
+ def init()
+ def start() {}
+ def stop() {}
+ }
+}
+
diff --git a/src/swing/scala/swing/BoxPanel.scala b/src/swing/scala/swing/BoxPanel.scala
index 0c7c1b90bd..d8af118ef9 100644
--- a/src/swing/scala/swing/BoxPanel.scala
+++ b/src/swing/scala/swing/BoxPanel.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
class BoxPanel(orientation: Orientation)(content0: Component*) extends IndexedPanel {
override lazy val peer = {
diff --git a/src/swing/scala/swing/Component.scala b/src/swing/scala/swing/Component.scala
index a302ca6e91..2d3a319b0b 100644
--- a/src/swing/scala/swing/Component.scala
+++ b/src/swing/scala/swing/Component.scala
@@ -1,13 +1,32 @@
package scala.swing
-import javax.swing._;
-import java.awt._;
+import event._
+import java.awt.Font
+import java.awt.event._
+import javax.swing.JComponent
+import javax.swing.border.Border
-abstract class Component
-extends Object
-with Reactor
-{
- val acomponent: java.awt.Component
+object Component {
+ val ClientKey = "scala.swingWrapper"
+ def wrapperFor[C<:Component](c: javax.swing.JComponent): C = c.getClientProperty(ClientKey).asInstanceOf[C]
+}
+
+
+abstract class Component extends UIElement with Showable.Swing with Publisher {
+ lazy val peer: javax.swing.JComponent = new javax.swing.JComponent {}
+ peer.putClientProperty(Component.ClientKey, this)
+
+ def minimumSize = peer.getMinimumSize
+ def minimumSize_=(x: Dimension) = peer.setMinimumSize(x.peer)
+ def maxiumumSize = peer.getMaximumSize
+ def maxiumumSize_=(x: Dimension) = peer.setMaximumSize(x.peer)
+ def preferredSize = peer.getPreferredSize
+ def preferredSize_=(x: Dimension) = peer.setPreferredSize(x.peer)
+
+ def xAlignment: Double = peer.getAlignmentX
+ def xAlignment_=(x: Double) = peer.setAlignmentX(x.toFloat)
+ def yAlignment: Double = peer.getAlignmentY
+ def yAlignment_=(x: Double) = peer.setAlignmentY(x.toFloat)
def foreground: Color = new Color(peer.getForeground)
def foreground_=(x: Color) = peer.setForeground(x)
@@ -42,5 +61,107 @@ with Reactor
})
}*/
+ peer.addComponentListener(new java.awt.event.ComponentListener {
+ def componentHidden(e: java.awt.event.ComponentEvent) {
+ publish(ComponentHidden(Component.this))
+ }
+ def componentShown(e: java.awt.event.ComponentEvent) {
+ publish(ComponentShown(Component.this))
+ }
+ def componentMoved(e: java.awt.event.ComponentEvent) {
+ publish(ComponentMoved(Component.this))
+ }
+ def componentResized(e: java.awt.event.ComponentEvent) {
+ publish(ComponentResized(Component.this))
+ }
+ })
+
+ peer.addFocusListener(new java.awt.event.FocusListener {
+ def other(e: java.awt.event.FocusEvent) = e.getOppositeComponent match {
+ case c: JComponent => Some(Component.wrapperFor(c))
+ case _ => None
+ }
+
+ def focusGained(e: java.awt.event.FocusEvent) {
+ publish(FocusGained(Component.this, other(e), e.isTemporary))
+ }
+ def focusLost(e: java.awt.event.FocusEvent) {
+ publish(FocusLost(Component.this, other(e), e.isTemporary))
+ }
+ })
+
+ object Mouse {
+ val clicks: Publisher = new Publisher {
+ peer.addMouseListener(new MouseListener {
+ def mouseEntered(e: java.awt.event.MouseEvent) { }
+ def mouseExited(e: java.awt.event.MouseEvent) { }
+ def mouseClicked(e: java.awt.event.MouseEvent) {
+ publish(MouseClicked(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers, e.getClickCount, e.isPopupTrigger))
+ }
+ def mousePressed(e: java.awt.event.MouseEvent) {
+ publish(MousePressed(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers, e.getClickCount, e.isPopupTrigger))
+ }
+ def mouseReleased(e: java.awt.event.MouseEvent) {
+ publish(MouseReleased(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers, e.getClickCount, e.isPopupTrigger))
+ }
+ })
+ }
+ val moves: Publisher = new Publisher {
+ peer.addMouseListener(new MouseListener {
+ def mouseEntered(e: java.awt.event.MouseEvent) {
+ publish(MouseEntered(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers))
+ }
+ def mouseExited(e: java.awt.event.MouseEvent) {
+ publish(MouseExited(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers))
+ }
+ def mouseClicked(e: java.awt.event.MouseEvent) {}
+ def mousePressed(e: java.awt.event.MouseEvent) { }
+ def mouseReleased(e: java.awt.event.MouseEvent) { }
+ })
+ peer.addMouseMotionListener(new MouseMotionListener {
+ def mouseMoved(e: java.awt.event.MouseEvent) {
+ publish(MouseMoved(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers))
+ }
+ def mouseDragged(e: java.awt.event.MouseEvent) {
+ publish(MouseDragged(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers))
+ }
+ })
+ }
+ val wheel: Publisher = new Publisher {
+ peer.addMouseWheelListener(new MouseWheelListener {
+ def mouseWheelMoved(e: java.awt.event.MouseWheelEvent) {
+ publish(MouseWheelMoved(Component.wrapperFor(e.getSource.asInstanceOf[JComponent]),
+ Point(e.getPoint), e.getModifiers, e.getWheelRotation)) }
+ })
+ }
+ }
+
+
+ peer.addPropertyChangeListener(new java.beans.PropertyChangeListener {
+ def propertyChange(e: java.beans.PropertyChangeEvent) {
+ e.getPropertyName match {
+ case "font" => publish(FontChanged(Component.this))
+ case "background" => publish(ForegroundChanged(Component.this))
+ case "foreground" => publish(BackgroundChanged(Component.this))
+ case _ =>
+ /*case "focusable" =>
+ case "focusTraversalKeysEnabled" =>
+ case "forwardFocusTraversalKeys" =>
+ case "backwardFocusTraversalKeys" =>
+ case "upCycleFocusTraversalKeys" =>
+ case "downCycleFocusTraversalKeys" =>
+ case "focusTraversalPolicy" =>
+ case "focusCycleRoot" =>*/
+ }
+ }
+ })
+
override def toString = "scala.swing wrapper " + peer.toString
}
diff --git a/src/swing/scala/swing/Container.scala b/src/swing/scala/swing/Container.scala
index 4397c3a46f..896ecc03d3 100644
--- a/src/swing/scala/swing/Container.scala
+++ b/src/swing/scala/swing/Container.scala
@@ -1,5 +1,8 @@
package scala.swing
+import event._
+import scala.collection.mutable.Buffer
+
abstract class Container(override val peer: javax.swing.JComponent) extends Component {
def this() = this(new javax.swing.JComponent {})
def content: Seq[Component] = new Content
@@ -31,5 +34,16 @@ abstract class Container(override val peer: javax.swing.JComponent) extends Comp
def elements = peer.getComponents.projection.map(wrap(_)).elements
def apply(n: Int) = wrap(peer.getComponent(n))
}
+
+ peer.addContainerListener(new java.awt.event.ContainerListener {
+ def componentAdded(e: java.awt.event.ContainerEvent) {
+ publish(ComponentAdded(Container.this,
+ Component.wrapperFor(e.getChild.asInstanceOf[javax.swing.JComponent])))
+ }
+ def componentRemoved(e: java.awt.event.ContainerEvent) {
+ publish(ComponentRemoved(Container.this,
+ Component.wrapperFor(e.getChild.asInstanceOf[javax.swing.JComponent])))
+ }
+ })
}
diff --git a/src/swing/scala/swing/EditorComponent.scala b/src/swing/scala/swing/EditorComponent.scala
index e83dce3bc9..0985a88cb8 100644
--- a/src/swing/scala/swing/EditorComponent.scala
+++ b/src/swing/scala/swing/EditorComponent.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
trait EditorComponent extends Component {
val contentModified: Publisher
diff --git a/src/swing/scala/swing/FlowPanel.scala b/src/swing/scala/swing/FlowPanel.scala
index cd14c2e731..6d9a2189b5 100644
--- a/src/swing/scala/swing/FlowPanel.scala
+++ b/src/swing/scala/swing/FlowPanel.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
class FlowPanel(orientation: Orientation)(content0: Component*) extends IndexedPanel {
override lazy val peer = new javax.swing.JPanel(new java.awt.FlowLayout(orientation.peer))
diff --git a/src/swing/scala/swing/Frame.scala b/src/swing/scala/swing/Frame.scala
index edf895fcfc..7a690a78f4 100644
--- a/src/swing/scala/swing/Frame.scala
+++ b/src/swing/scala/swing/Frame.scala
@@ -3,26 +3,15 @@ package scala.swing
import javax.swing.JFrame
import event._
-class Frame(val peer: JFrame) extends UIElement with Showable.Swing with Publisher {
+class Frame(val peer: JFrame) extends UIElement with RootPanel with Showable.Swing with Publisher {
def this() = this(new JFrame)
def title: String = peer.getTitle
def title_=(s: String) = peer.setTitle(s)
content = new Component {}
- def content: Component = {
- if (peer.getContentPane.getComponentCount == 0) new Component {}
- else {
- val c = peer.getContentPane.getComponent(0)
- Component.wrapperFor(c.asInstanceOf[javax.swing.JComponent])
- }
- }
- def content_=(c: Component) = {
- if (peer.getContentPane.getComponentCount > 0) {
- val old = peer.getContentPane.getComponent(0)
- peer.getContentPane.remove(old)
- }
- peer.getContentPane.add(c.peer)
- peer.pack() // pack also validates, which is generally required after an add}
+ override def content_=(c: Component) {
+ super.content_=(c)
+ peer.pack() // pack also validates, which is generally required after an add}
}
def defaultButton: Button = Component.wrapperFor(peer.getRootPane.getDefaultButton)
def defaultButton_=(b: Button) { peer.getRootPane.setDefaultButton(b.peer) }
diff --git a/src/swing/scala/swing/GridPanel.scala b/src/swing/scala/swing/GridPanel.scala
index 21bbd76455..e6360aadbe 100644
--- a/src/swing/scala/swing/GridPanel.scala
+++ b/src/swing/scala/swing/GridPanel.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
object GridPanel {
val Adapt = 0
diff --git a/src/swing/scala/swing/IndexedPanel.scala b/src/swing/scala/swing/IndexedPanel.scala
index 491df9a6b1..c2d0034184 100644
--- a/src/swing/scala/swing/IndexedPanel.scala
+++ b/src/swing/scala/swing/IndexedPanel.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import scala.collection.mutable.Buffer
diff --git a/src/swing/scala/swing/Point.scala b/src/swing/scala/swing/Point.scala
new file mode 100644
index 0000000000..953f6bf3ab
--- /dev/null
+++ b/src/swing/scala/swing/Point.scala
@@ -0,0 +1,7 @@
+package scala.swing
+
+object Point {
+ def apply(p: java.awt.Point) = new Point(p.getX, p.getY)
+}
+
+class Point(x: Double, y: Double) extends Pair(x,y)
diff --git a/src/swing/scala/swing/ProgressBar.scala b/src/swing/scala/swing/ProgressBar.scala
index 6172a1f598..07d48f168f 100644
--- a/src/swing/scala/swing/ProgressBar.scala
+++ b/src/swing/scala/swing/ProgressBar.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import event._
diff --git a/src/swing/scala/swing/RootPanel.scala b/src/swing/scala/swing/RootPanel.scala
new file mode 100644
index 0000000000..c6480fa403
--- /dev/null
+++ b/src/swing/scala/swing/RootPanel.scala
@@ -0,0 +1,19 @@
+package scala.swing
+
+trait RootPanel { self: Object { def peer: java.awt.Component with javax.swing.RootPaneContainer } =>
+ content = new Component {}
+ def content: Component = {
+ if (peer.getContentPane.getComponentCount == 0) new Component {}
+ else {
+ val c = peer.getContentPane.getComponent(0)
+ Component.wrapperFor(c.asInstanceOf[javax.swing.JComponent])
+ }
+ }
+ def content_=(c: Component) {
+ if (peer.getContentPane.getComponentCount > 0) {
+ val old = peer.getContentPane.getComponent(0)
+ peer.getContentPane.remove(old)
+ }
+ peer.getContentPane.add(c.peer)
+ }
+}
diff --git a/src/swing/scala/swing/ScrollPane.scala b/src/swing/scala/swing/ScrollPane.scala
index 50f9496cbb..c794372edc 100644
--- a/src/swing/scala/swing/ScrollPane.scala
+++ b/src/swing/scala/swing/ScrollPane.scala
@@ -1,4 +1,4 @@
-package scala.swing;
+package scala.swing
import javax.swing.JScrollPane
diff --git a/src/swing/scala/swing/Showable.scala b/src/swing/scala/swing/Showable.scala
index 02e6110144..7435d2dc0c 100644
--- a/src/swing/scala/swing/Showable.scala
+++ b/src/swing/scala/swing/Showable.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
object Showable {
trait Swing extends Showable {
diff --git a/src/swing/scala/swing/Swing.scala b/src/swing/scala/swing/Swing.scala
index 8c0b255b73..781e399794 100644
--- a/src/swing/scala/swing/Swing.scala
+++ b/src/swing/scala/swing/Swing.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import javax.swing.event._
diff --git a/src/swing/scala/swing/UIElement.scala b/src/swing/scala/swing/UIElement.scala
index bf0f81fcc5..d5524b779f 100644
--- a/src/swing/scala/swing/UIElement.scala
+++ b/src/swing/scala/swing/UIElement.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
trait UIElement {
diff --git a/src/swing/scala/swing/event/BackgroundChanged.scala b/src/swing/scala/swing/event/BackgroundChanged.scala
new file mode 100644
index 0000000000..2e9c212b97
--- /dev/null
+++ b/src/swing/scala/swing/event/BackgroundChanged.scala
@@ -0,0 +1,3 @@
+package scala.swing.event
+
+case class BackgroundChanged(override val source: Component) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/ComponentEvent.scala b/src/swing/scala/swing/event/ComponentEvent.scala
index 191bc707f0..1cde8e58a1 100644
--- a/src/swing/scala/swing/event/ComponentEvent.scala
+++ b/src/swing/scala/swing/event/ComponentEvent.scala
@@ -1,3 +1,8 @@
-package swing.event
+package scala.swing.event
abstract class ComponentEvent(override val source: Component) extends Event(source)
+
+case class ComponentMoved(override val source: Component) extends ComponentEvent(source)
+case class ComponentResized(override val source: Component) extends ComponentEvent(source)
+case class ComponentShown(override val source: Component) extends ComponentEvent(source)
+case class ComponentHidden(override val source: Component) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/ContainerEvent.scala b/src/swing/scala/swing/event/ContainerEvent.scala
new file mode 100644
index 0000000000..aaeb41e77f
--- /dev/null
+++ b/src/swing/scala/swing/event/ContainerEvent.scala
@@ -0,0 +1,6 @@
+package scala.swing.event
+
+abstract class ContainerEvent(override val source: Container) extends Event(source)
+
+case class ComponentAdded(override val source: Container, child: Component) extends ContainerEvent(source)
+case class ComponentRemoved(override val source: Container, child: Component) extends ContainerEvent(source)
diff --git a/src/swing/scala/swing/event/ContentModified.scala b/src/swing/scala/swing/event/ContentModified.scala
index 2d0d955720..a84558085d 100644
--- a/src/swing/scala/swing/event/ContentModified.scala
+++ b/src/swing/scala/swing/event/ContentModified.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class ContentModified(override val source: Component) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/FocusEvent.scala b/src/swing/scala/swing/event/FocusEvent.scala
new file mode 100644
index 0000000000..31546f00d3
--- /dev/null
+++ b/src/swing/scala/swing/event/FocusEvent.scala
@@ -0,0 +1,12 @@
+package scala.swing.event
+
+/**
+ * The other component is None if it is a non Swing, i.e., AWT or native, component.
+ */
+abstract class FocusEvent(override val source: Component, val other: Option[Component], val temporary: Boolean) extends ComponentEvent(source)
+
+case class FocusGained(override val source: Component, override val other: Option[Component], override val temporary: Boolean)
+ extends FocusEvent(source, other, temporary)
+
+case class FocusLost(override val source: Component, override val other: Option[Component], override val temporary: Boolean)
+ extends FocusEvent(source, other, temporary) \ No newline at end of file
diff --git a/src/swing/scala/swing/event/FontChanged.scala b/src/swing/scala/swing/event/FontChanged.scala
new file mode 100644
index 0000000000..357c1b361e
--- /dev/null
+++ b/src/swing/scala/swing/event/FontChanged.scala
@@ -0,0 +1,3 @@
+package scala.swing.event
+
+case class FontChanged(override val source: Component) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/ForegroundChanged.scala b/src/swing/scala/swing/event/ForegroundChanged.scala
new file mode 100644
index 0000000000..a486afa9a8
--- /dev/null
+++ b/src/swing/scala/swing/event/ForegroundChanged.scala
@@ -0,0 +1,3 @@
+package scala.swing.event
+
+case class ForegroundChanged(override val source: Component) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/MouseEvent.scala b/src/swing/scala/swing/event/MouseEvent.scala
new file mode 100644
index 0000000000..52f6731d1a
--- /dev/null
+++ b/src/swing/scala/swing/event/MouseEvent.scala
@@ -0,0 +1,30 @@
+package scala.swing.event
+
+class MouseEvent(source: Component, point: Point, modifiers: Int) extends ComponentEvent(source)
+
+class MouseButtonEvent(source: Component, point: Point, modifiers: Int,
+ clicks: Int, triggersPopup: Boolean)
+ extends MouseEvent(source, point, modifiers)
+case class MouseClicked(override val source: Component, point: Point, modifiers: Int,
+ clicks: Int, triggersPopup: Boolean)
+ extends MouseButtonEvent(source, point, modifiers, clicks, triggersPopup)
+case class MousePressed(override val source: Component, point: Point, modifiers: Int,
+ clicks: Int, triggersPopup: Boolean)
+ extends MouseButtonEvent(source, point, modifiers, clicks, triggersPopup)
+case class MouseReleased(override val source: Component, point: Point, modifiers: Int,
+ clicks: Int, triggersPopup: Boolean)
+ extends MouseButtonEvent(source, point, modifiers, clicks, triggersPopup)
+
+class MouseMotionEvent(override val source: Component, point: Point, modifiers: Int)
+ extends MouseEvent(source, point, modifiers)
+case class MouseMoved(override val source: Component, point: Point, modifiers: Int)
+ extends MouseMotionEvent(source, point, modifiers)
+case class MouseDragged(override val source: Component, point: Point, modifiers: Int)
+ extends MouseMotionEvent(source, point, modifiers)
+case class MouseEntered(override val source: Component, point: Point, modifiers: Int)
+ extends MouseMotionEvent(source, point, modifiers)
+case class MouseExited(override val source: Component, point: Point, modifiers: Int)
+ extends MouseMotionEvent(source, point, modifiers)
+
+case class MouseWheelMoved(override val source: Component, point: Point, modifiers: Int, rotation: Int)
+ extends MouseEvent(source, point, modifiers) \ No newline at end of file
diff --git a/src/swing/scala/swing/test/SimpleApplet.scala b/src/swing/scala/swing/test/SimpleApplet.scala
new file mode 100644
index 0000000000..c42bc873eb
--- /dev/null
+++ b/src/swing/scala/swing/test/SimpleApplet.scala
@@ -0,0 +1,19 @@
+package scala.swing.test
+
+import event._
+
+class SimpleApplet extends Applet {
+ object ui extends UI with Reactor {
+ def init() = {
+ val button = new Button("Press here!")
+ val text = new TextField("Java Version: " +
+ System.getProperty("java.version")+"\n")
+ listenTo(button)
+ reactions += {
+ case ButtonPressed(_) => text.content += "Button Pressed!\n"
+ case _ =>
+ }
+ content = new BoxPanel(Vertical)(button, text)
+ }
+ }
+} \ No newline at end of file