summaryrefslogtreecommitdiff
path: root/src/swing
diff options
context:
space:
mode:
authorNAME <USER@epfl.ch>2008-03-26 10:02:01 +0000
committerNAME <USER@epfl.ch>2008-03-26 10:02:01 +0000
commitef488e9e397a045afe5ad6d2c2a4c6b4e8b1cdfa (patch)
tree2ef99cfbf4e7d55effb129732d1a4253cb3d5f63 /src/swing
parent266c5326a336237025f149d8f448030365da286e (diff)
downloadscala-ef488e9e397a045afe5ad6d2c2a4c6b4e8b1cdfa.tar.gz
scala-ef488e9e397a045afe5ad6d2c2a4c6b4e8b1cdfa.tar.bz2
scala-ef488e9e397a045afe5ad6d2c2a4c6b4e8b1cdfa.zip
scala.swing update
Diffstat (limited to 'src/swing')
-rw-r--r--src/swing/scala/swing/AWTComponentWrapper.scala3
-rw-r--r--src/swing/scala/swing/BoxPanel.scala11
-rw-r--r--src/swing/scala/swing/Button.scala19
-rw-r--r--src/swing/scala/swing/Component.scala71
-rw-r--r--src/swing/scala/swing/ComponentList.scala4
-rw-r--r--src/swing/scala/swing/Container.scala46
-rw-r--r--src/swing/scala/swing/Dimension.scala18
-rw-r--r--src/swing/scala/swing/EditorComponent.scala5
-rw-r--r--src/swing/scala/swing/EmptyBorder.scala11
-rw-r--r--src/swing/scala/swing/FlowPanel.scala6
-rw-r--r--src/swing/scala/swing/Frame.scala41
-rw-r--r--src/swing/scala/swing/GridPanel.scala14
-rw-r--r--src/swing/scala/swing/IndexedPanel.scala8
-rw-r--r--src/swing/scala/swing/Label.scala14
-rw-r--r--src/swing/scala/swing/MainFrame.scala9
-rw-r--r--src/swing/scala/swing/Orientation.scala47
-rw-r--r--src/swing/scala/swing/Panel.scala16
-rw-r--r--src/swing/scala/swing/ProgressBar.scala29
-rw-r--r--src/swing/scala/swing/Publisher.scala16
-rw-r--r--src/swing/scala/swing/ScrollPane.scala16
-rw-r--r--src/swing/scala/swing/Showable.scala12
-rw-r--r--src/swing/scala/swing/SimpleGUIApplication.scala7
-rw-r--r--src/swing/scala/swing/Slider.scala56
-rw-r--r--src/swing/scala/swing/Spreadsheet.scala4
-rw-r--r--src/swing/scala/swing/Swing.scala35
-rw-r--r--src/swing/scala/swing/SwingComponent.scala6
-rw-r--r--src/swing/scala/swing/Table.scala44
-rw-r--r--src/swing/scala/swing/TextComponent.scala34
-rw-r--r--src/swing/scala/swing/TextField.scala27
-rw-r--r--src/swing/scala/swing/UIElement.scala5
-rw-r--r--src/swing/scala/swing/event/ButtonPressed.scala2
-rw-r--r--src/swing/scala/swing/event/CaretUpdate.scala2
-rw-r--r--src/swing/scala/swing/event/CellModified.scala2
-rw-r--r--src/swing/scala/swing/event/ComponentEvent.scala3
-rw-r--r--src/swing/scala/swing/event/ContentModified.scala3
-rw-r--r--src/swing/scala/swing/event/Event.scala2
-rw-r--r--src/swing/scala/swing/event/TableChanged.scala4
-rw-r--r--src/swing/scala/swing/event/TableResized.scala4
-rw-r--r--src/swing/scala/swing/event/TextModified.scala2
-rw-r--r--src/swing/scala/swing/event/WindowActivated.scala2
-rw-r--r--src/swing/scala/swing/event/WindowClosed.scala2
-rw-r--r--src/swing/scala/swing/event/WindowClosing.scala2
-rw-r--r--src/swing/scala/swing/event/WindowDeactivated.scala2
-rw-r--r--src/swing/scala/swing/event/WindowDeiconified.scala2
-rw-r--r--src/swing/scala/swing/event/WindowEvent.scala4
-rw-r--r--src/swing/scala/swing/event/WindowIconified.scala2
-rw-r--r--src/swing/scala/swing/event/WindowOpened.scala2
-rw-r--r--src/swing/scala/swing/layout.scala12
-rw-r--r--src/swing/scala/swing/test/CelsiusConverter.scala21
-rw-r--r--src/swing/scala/swing/test/CelsiusConverter2.scala18
-rw-r--r--src/swing/scala/swing/test/HelloWorld.scala9
-rw-r--r--src/swing/scala/swing/test/SwingApp.scala8
52 files changed, 496 insertions, 248 deletions
diff --git a/src/swing/scala/swing/AWTComponentWrapper.scala b/src/swing/scala/swing/AWTComponentWrapper.scala
deleted file mode 100644
index 9a140e5506..0000000000
--- a/src/swing/scala/swing/AWTComponentWrapper.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-package swing;
-
-class AWTComponentWrapper(val acomponent: java.awt.Component) extends Component
diff --git a/src/swing/scala/swing/BoxPanel.scala b/src/swing/scala/swing/BoxPanel.scala
new file mode 100644
index 0000000000..0c7c1b90bd
--- /dev/null
+++ b/src/swing/scala/swing/BoxPanel.scala
@@ -0,0 +1,11 @@
+package swing
+
+class BoxPanel(orientation: Orientation)(content0: Component*) extends IndexedPanel {
+ override lazy val peer = {
+ val p = new javax.swing.JPanel
+ val l = new javax.swing.BoxLayout(p, orientation.peer)
+ p.setLayout(l)
+ p
+ }
+ content ++ content0
+}
diff --git a/src/swing/scala/swing/Button.scala b/src/swing/scala/swing/Button.scala
index 0f6d8dc056..5f945611c5 100644
--- a/src/swing/scala/swing/Button.scala
+++ b/src/swing/scala/swing/Button.scala
@@ -1,20 +1,21 @@
-package swing;
+package swing
import javax.swing._
import event._
/** A class for buttons; standard constructor wraps around a swing button */
-class Button(val jbutton: JButton) extends Container(jbutton) with SwingComponent with Publisher {
+class Button(override val peer: JButton) extends Component with Publisher {
def this(txt: String) = this(new JButton(txt))
- def this() = this(new JButton())
- def text: String = jbutton.getText()
- def text_=(s: String) = jbutton.setText(s)
- def icon: Icon = jbutton.getIcon()
- def icon_=(i: Icon) = jbutton.setIcon(i)
- jbutton.addActionListener {
+ def this() = this(new JButton)
+ def text: String = peer.getText
+ def text_=(s: String) = peer.setText(s)
+ def icon: Icon = peer.getIcon
+ def icon_=(i: Icon) = peer.setIcon(i)
+ peer.addActionListener {
new java.awt.event.ActionListener {
- def actionPerformed(e: java.awt.event.ActionEvent): unit =
+ def actionPerformed(e: java.awt.event.ActionEvent) {
publish(ButtonPressed(Button.this))
+ }
}
}
}
diff --git a/src/swing/scala/swing/Component.scala b/src/swing/scala/swing/Component.scala
index 3a5c98d90b..a022340103 100644
--- a/src/swing/scala/swing/Component.scala
+++ b/src/swing/scala/swing/Component.scala
@@ -1,26 +1,61 @@
-package swing;
+package swing
-import javax.swing._;
-import java.awt._;
+import java.awt.Font
+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 Reactor {
+ 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)
+ def background: Color = new Color(peer.getBackground)
+ def background_=(x: Color) = peer.setBackground(x)
+ def border: Border = peer.getBorder
+ def border_=(x: Border) { peer.setBorder(x) }
- def preferredSize = acomponent.getPreferredSize
- def preferredSize_=(x: Dimension) = acomponent.setPreferredSize(x)
- def preferredSize_=(xy: (Int, Int)) = acomponent.setPreferredSize(Dimension(xy._1, xy._2))
+ def font: Font = peer.getFont
+ def font_=(x: Font) = peer.setFont(x)
+ def opaque: Boolean = peer.isOpaque
+ def opaque_=(x: Boolean) = peer.setOpaque(x)
- def foreground: Color = new Color(acomponent.getForeground)
- def foreground_=(x: Color) = acomponent.setForeground(x)
+ def tooltip: String = peer.getToolTipText
+ def tooltip_=(t: String) = peer.setToolTipText(t)
- def background: Color = new Color(acomponent.getBackground)
- def background_=(x: Color) = acomponent.setBackground(x)
+ def inputVerifier: this.type => Boolean = { a =>
+ peer.getInputVerifier().verify(a.peer)
+ }
+ def inputVerifier_=(v: this.type => Boolean) {
+ peer.setInputVerifier(new javax.swing.InputVerifier {
+ def verify(c: javax.swing.JComponent) = v(Component.wrapperFor(c))
+ })
+ }
- def font: Font = acomponent.getFont
- def font_=(x: Font) = acomponent.setFont(x)
+ /*def verifyOnTraversal: (Component, Component) => Boolean = { a =>
+ peer.getInputVerifier().verify(a.peer)
+ }
+ def verifyOnTraversal_=(v: (Component, Component) => Boolean) {
+ peer.setInputVerifier(new javax.swing.InputVerifier {
+ def verify(c: javax.swing.JComponent) = v(Component.wrapperFor(c))
+ })
+ }*/
- def show: this.type = { acomponent.setVisible(true); this }
+ override def toString = "scala.swing wrapper " + peer.toString
}
diff --git a/src/swing/scala/swing/ComponentList.scala b/src/swing/scala/swing/ComponentList.scala
index 3876c84492..fe1a66a1c4 100644
--- a/src/swing/scala/swing/ComponentList.scala
+++ b/src/swing/scala/swing/ComponentList.scala
@@ -3,8 +3,8 @@ package swing
import javax.swing._
import event._
-class ComponentList(val jlist: JList) extends Container(jlist) with SwingComponent with Publisher {
- def this() = this(new JList())
+class ComponentList(val jlist: JList) extends Container(jlist) with Publisher {
+ def this() = this(new JList)
def this(elems: Seq[Object]) = this(new JList(elems.toArray))
def fixedCellWidth = jlist.getFixedCellWidth
diff --git a/src/swing/scala/swing/Container.scala b/src/swing/scala/swing/Container.scala
index 12cbf11072..72cf15d440 100644
--- a/src/swing/scala/swing/Container.scala
+++ b/src/swing/scala/swing/Container.scala
@@ -1,19 +1,37 @@
-package swing;
+package swing
-import javax.swing._
-import scala.collection.mutable.ListBuffer
+import scala.collection.mutable.Buffer
-class Container(val jcontainer: java.awt.Container) extends Component {
- val acomponent = jcontainer
- def this() = this(new java.awt.Container())
- val elems = new ListBuffer[Component]
- def += (c: Component) = {
- elems += c
- jcontainer.add(c.acomponent)
- }
- def -= (c: Component) = {
- elems -= c
- jcontainer.remove(c.acomponent)
+abstract class Container(override val peer: javax.swing.JComponent) extends Component {
+ def this() = this(new javax.swing.JComponent {})
+ def content: Seq[Component] = new Content
+
+ protected class Content extends Buffer[Component] {
+ def wrap(c: java.awt.Component) = Component.wrapperFor(c.asInstanceOf[javax.swing.JComponent])
+ def clear = peer.removeAll()
+ def remove(n: Int): Component = {
+ val c = peer.getComponent(n)
+ peer.remove(n)
+ wrap(c)
+ }
+ def update(n: Int, c: Component) { peer.add(c.peer, n) }
+ def insertAll(n: Int, iter: Iterable[Component]) {
+ var i = n
+ for(el <- iter) {
+ peer.add(el.peer, i)
+ i += 1
+ }
+ }
+ def readOnly : RandomAccessSeq[Component] = new RandomAccessSeq[Component] {
+ def length = Content.this.length
+ def apply(idx : Int) = Content.this.apply(idx)
+ override def stringPrefix = Content.this.stringPrefix + "RO"
+ }
+ def +:(c: Component): Buffer[Component] = { update(0, c); this }
+ def +=(c: Component) { peer.add(c.peer); this }
+ def length = peer.getComponentCount
+ def elements = peer.getComponents.projection.map(wrap(_)).elements
+ def apply(n: Int) = wrap(peer.getComponent(n))
}
}
diff --git a/src/swing/scala/swing/Dimension.scala b/src/swing/scala/swing/Dimension.scala
index 2c1ebde994..85a2c0a841 100644
--- a/src/swing/scala/swing/Dimension.scala
+++ b/src/swing/scala/swing/Dimension.scala
@@ -1,5 +1,17 @@
-package swing;
+package swing
-case class Dimension(w: Int, h: Int) extends java.awt.Dimension(w, h) {
- def this(dim: java.awt.Dimension) = this(dim.width, dim.height)
+object Dimension {
+ def apply(w: Int, h: Int) = new Dimension {
+ lazy val peer: java.awt.Dimension = new java.awt.Dimension(w, h)
+ }
+
+ def wrap(dim: java.awt.Dimension) = new Dimension {
+ def peer: java.awt.Dimension = dim
+ }
+}
+
+abstract class Dimension {
+ def peer: java.awt.Dimension
+ def width = peer.getWidth
+ def height = peer.getHeight
}
diff --git a/src/swing/scala/swing/EditorComponent.scala b/src/swing/scala/swing/EditorComponent.scala
new file mode 100644
index 0000000000..e83dce3bc9
--- /dev/null
+++ b/src/swing/scala/swing/EditorComponent.scala
@@ -0,0 +1,5 @@
+package swing
+
+trait EditorComponent extends Component {
+ val contentModified: Publisher
+} \ No newline at end of file
diff --git a/src/swing/scala/swing/EmptyBorder.scala b/src/swing/scala/swing/EmptyBorder.scala
index 4524f00fe3..0bbcc1e409 100644
--- a/src/swing/scala/swing/EmptyBorder.scala
+++ b/src/swing/scala/swing/EmptyBorder.scala
@@ -1,10 +1,9 @@
-package swing;
+package swing
-import javax.swing._
-
-class EmptyBorder(_top: int, _left: int, _bottom: int, _right: int)
-extends border.EmptyBorder(_top, _left, _bottom, _right) {
- def this() = this(0, 0, 0, 0)
+object EmptyBorder {
+ def apply(top: int, left: int, bottom: int, right: int) =
+ new javax.swing.border.EmptyBorder(top, left, bottom, right)
+ def apply() = new javax.swing.border.EmptyBorder(0, 0, 0, 0)
}
diff --git a/src/swing/scala/swing/FlowPanel.scala b/src/swing/scala/swing/FlowPanel.scala
new file mode 100644
index 0000000000..cd14c2e731
--- /dev/null
+++ b/src/swing/scala/swing/FlowPanel.scala
@@ -0,0 +1,6 @@
+package swing
+
+class FlowPanel(orientation: Orientation)(content0: Component*) extends IndexedPanel {
+ override lazy val peer = new javax.swing.JPanel(new java.awt.FlowLayout(orientation.peer))
+ content ++ content0
+}
diff --git a/src/swing/scala/swing/Frame.scala b/src/swing/scala/swing/Frame.scala
index fadd69d00c..d1ad443fe0 100644
--- a/src/swing/scala/swing/Frame.scala
+++ b/src/swing/scala/swing/Frame.scala
@@ -1,18 +1,33 @@
-package swing;
+package swing
-import javax.swing._;
-import event._;
+import javax.swing.JFrame
+import event._
-class Frame(val jframe: JFrame) extends Container(jframe) with Publisher {
- def this() = this(new JFrame("Untitled Frame"))
- def title: String = jframe.getTitle()
- def title_=(s: String) = jframe.setTitle(s)
- val contents = new Container(jframe.getContentPane())
- private var default_button: Button = null
- def defaultButton = default_button
- def defaultButton_=(b: Button) = { default_button = b; jframe.getRootPane().setDefaultButton(b.jbutton) }
- def pack: this.type = { jframe.pack(); this }
- jframe.addWindowListener {
+class Frame(val peer: JFrame) extends UIElement 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}
+
+ }
+ def defaultButton: Button = Component.wrapperFor(peer.getRootPane.getDefaultButton)
+ def defaultButton_=(b: Button) { peer.getRootPane.setDefaultButton(b.peer) }
+ def pack(): this.type = { peer.pack(); this }
+ peer.addWindowListener {
new java.awt.event.WindowListener {
def windowActivated(e: java.awt.event.WindowEvent) = publish(WindowActivated(Frame.this))
def windowClosed(e: java.awt.event.WindowEvent) = publish(WindowClosed(Frame.this))
diff --git a/src/swing/scala/swing/GridPanel.scala b/src/swing/scala/swing/GridPanel.scala
new file mode 100644
index 0000000000..21bbd76455
--- /dev/null
+++ b/src/swing/scala/swing/GridPanel.scala
@@ -0,0 +1,14 @@
+package swing
+
+object GridPanel {
+ val Adapt = 0
+}
+
+class GridPanel(rows0: Int, cols0: Int)(content0: Component*) extends IndexedPanel {
+ override lazy val layout = new java.awt.GridLayout(rows0, cols0)
+ override lazy val peer = new javax.swing.JPanel(layout)
+ content ++ content0
+
+ def rows: Int = layout.getRows
+ def columns: Int = layout.getColumns
+}
diff --git a/src/swing/scala/swing/IndexedPanel.scala b/src/swing/scala/swing/IndexedPanel.scala
new file mode 100644
index 0000000000..491df9a6b1
--- /dev/null
+++ b/src/swing/scala/swing/IndexedPanel.scala
@@ -0,0 +1,8 @@
+package swing
+
+import scala.collection.mutable.Buffer
+
+abstract class IndexedPanel extends Panel {
+ override val content: Buffer[Component] = new Content
+ def content_=(c: Component*) { content.clear(); content ++= c }
+}
diff --git a/src/swing/scala/swing/Label.scala b/src/swing/scala/swing/Label.scala
index 622d74d9de..98ad0ff4d3 100644
--- a/src/swing/scala/swing/Label.scala
+++ b/src/swing/scala/swing/Label.scala
@@ -2,13 +2,13 @@ package swing;
import javax.swing._;
-class Label(val jlabel: JLabel) extends Container(jlabel) with SwingComponent {
+class Label(override val peer: JLabel) extends Component {
def this(txt: String) = this(new JLabel(txt))
def this() = this("Untitled Label")
- def text: String = jlabel.getText()
- def text_=(s: String) = jlabel.setText(s)
- def halign: Orientation.Value = Orientation(jlabel.getHorizontalAlignment())
- def halign_=(x: Orientation.Value) = jlabel.setHorizontalAlignment(x.id)
- def valign: Orientation.Value = Orientation(jlabel.getVerticalAlignment())
- def valign_=(x: Orientation.Value) = jlabel.setVerticalAlignment(x.id)
+ def text: String = peer.getText()
+ def text_=(s: String) = peer.setText(s)
+ def xLabelAlignment: XAlignment = XAlignment.wrap(peer.getHorizontalAlignment)
+ def xLabelAlignment_=(x: XAlignment) = peer.setHorizontalAlignment(x.peer)
+ def yLabelAlignment: YAlignment = YAlignment.wrap(peer.getVerticalAlignment)
+ def yLabelAlignment_=(x: YAlignment) = peer.setVerticalAlignment(x.peer)
}
diff --git a/src/swing/scala/swing/MainFrame.scala b/src/swing/scala/swing/MainFrame.scala
index 59701ae5e9..ea35bccd53 100644
--- a/src/swing/scala/swing/MainFrame.scala
+++ b/src/swing/scala/swing/MainFrame.scala
@@ -1,10 +1,9 @@
-package swing;
+package swing
-import javax.swing._;
-import event._;
+import event._
-class MainFrame(jframe: JFrame) extends Frame(jframe) {
- def this() = this(new JFrame("Untitled Frame"))
+class MainFrame(peer: javax.swing.JFrame) extends Frame(peer) {
+ def this() = this(new javax.swing.JFrame)
reactions += {
case WindowClosing(_) => System.exit(1)
}
diff --git a/src/swing/scala/swing/Orientation.scala b/src/swing/scala/swing/Orientation.scala
index 4c6bed34ab..ceb02f9778 100644
--- a/src/swing/scala/swing/Orientation.scala
+++ b/src/swing/scala/swing/Orientation.scala
@@ -2,10 +2,45 @@ package swing
import javax.swing.SwingConstants._
-object Orientation extends Enumeration {
- val left = Value(LEFT, "left")
- val right = Value(RIGHT, "right")
- val bottom = Value(BOTTOM, "bottom")
- val top = Value(TOP, "top")
- val center = Value(CENTER, "center")
+object Orientation {
+ def wrap(n: Int): Orientation = n match {
+ case HORIZONTAL => Horizontal
+ case VERTICAL => Vertical
+ }
}
+sealed trait Orientation { def peer: Int }
+case object Horizontal extends Orientation { def peer = HORIZONTAL }
+case object Vertical extends Orientation { def peer = VERTICAL }
+
+object XAlignment {
+ def wrap(n: Int): XAlignment = n match {
+ case LEFT => Left
+ case RIGHT => Right
+ case CENTER => Center
+ }
+}
+sealed trait XAlignment { def peer: Int }
+
+object YAlignment {
+ def wrap(n: Int): YAlignment = n match {
+ case TOP => Top
+ case BOTTOM => Bottom
+ case CENTER => Center
+ //case BASELINE => Baseline
+ }
+}
+sealed trait YAlignment { def peer: Int }
+case object Left extends XAlignment { def peer = LEFT }
+case object Right extends XAlignment { def peer = RIGHT }
+case object Top extends YAlignment { def peer = TOP }
+//case object Baseline extends YAlignment { def peer = BASELINE }
+case object Bottom extends YAlignment { def peer = BOTTOM }
+case object Center extends XAlignment with YAlignment { def peer = CENTER }
+
+/*object Orientation extends Enumeration {
+ val Left = Value(LEFT, "left")
+ val Right = Value(RIGHT, "right")
+ val Bottom = Value(BOTTOM, "bottom")
+ val Top = Value(TOP, "top")
+ val Center = Value(CENTER, "center")
+}*/
diff --git a/src/swing/scala/swing/Panel.scala b/src/swing/scala/swing/Panel.scala
index e848e1bb7f..40fb69a6d6 100644
--- a/src/swing/scala/swing/Panel.scala
+++ b/src/swing/scala/swing/Panel.scala
@@ -1,15 +1,7 @@
-package swing;
+package swing
-import javax.swing._
-import java.awt.event._
+abstract class Panel extends Container {
+ override lazy val peer: javax.swing.JPanel = new javax.swing.JPanel
-class Panel(val jpanel: JPanel) extends Container(jpanel) with SwingComponent {
- def this(layout: java.awt.LayoutManager, elements: Component*) = {
- this(new JPanel(layout));
- for (val elem <- elements) this += elem
- }
- def this(elements: Component*) = this(new java.awt.FlowLayout, elements: _*)
-
- def layout: java.awt.LayoutManager = jpanel.getLayout()
- def layout_=(x: java.awt.LayoutManager) = jpanel.setLayout(x)
+ def layout: java.awt.LayoutManager = peer.getLayout
}
diff --git a/src/swing/scala/swing/ProgressBar.scala b/src/swing/scala/swing/ProgressBar.scala
new file mode 100644
index 0000000000..6172a1f598
--- /dev/null
+++ b/src/swing/scala/swing/ProgressBar.scala
@@ -0,0 +1,29 @@
+package swing
+
+import event._
+
+class ProgressBar(override val peer: javax.swing.JProgressBar) extends Component {
+ def this() = this(new javax.swing.JProgressBar)
+
+ def orientation: Orientation = Orientation.wrap(peer.getOrientation)
+ def orientation_=(o: Orientation) { peer.setOrientation(o.peer) }
+
+ def min: Int = peer.getMinimum
+ def min_=(v: Int) { peer.setMinimum(v) }
+ def max: Int = peer.getMaximum
+ def max_=(v: Int) { peer.setMaximum(v) }
+ def value: Int = peer.getValue
+ def value_=(v: Int) { peer.setValue(v) }
+
+ def labelPainted: Boolean = peer.isStringPainted
+ def labelPainted_=(v: Boolean) { peer.setStringPainted(v) }
+
+ def label: String = peer.getString
+ def label_=(v: String) = peer.setString(v)
+
+ def indeterminate: Boolean = peer.isIndeterminate
+ def indeterminate_=(v: Boolean) { peer.setIndeterminate(v) }
+
+ def paintBorder: Boolean = peer.isBorderPainted
+ def paintBorder(v: Boolean) { peer.setBorderPainted(v) }
+} \ No newline at end of file
diff --git a/src/swing/scala/swing/Publisher.scala b/src/swing/scala/swing/Publisher.scala
index 09ff2522fe..76023aadf3 100644
--- a/src/swing/scala/swing/Publisher.scala
+++ b/src/swing/scala/swing/Publisher.scala
@@ -1,18 +1,14 @@
-package swing;
+package swing
import scala.collection.mutable.HashSet
import event.Event
-trait Publisher extends Object with Reactor {
+trait Publisher extends Reactor {
+ protected var listeners = new HashSet[Reactions]
- protected var listeners = new HashSet[Reactions];
-
- def subscribe(listener: Reactions) = { listeners += listener }
-
- def unsubscribe(listener: Reactions) = { listeners -= listener }
-
- def publish(e: Event) =
- for (val l <- listeners) l.send(e)
+ def subscribe(listener: Reactions) { listeners += listener }
+ def unsubscribe(listener: Reactions) { listeners -= listener }
+ def publish(e: Event) { for (val l <- listeners) l.send(e) }
listenTo(this)
}
diff --git a/src/swing/scala/swing/ScrollPane.scala b/src/swing/scala/swing/ScrollPane.scala
index d66d590d2e..b6cb577175 100644
--- a/src/swing/scala/swing/ScrollPane.scala
+++ b/src/swing/scala/swing/ScrollPane.scala
@@ -1,18 +1,14 @@
package swing;
-import javax.swing._
-import javax.swing.table._
-import javax.swing.event._
-import event._
+import javax.swing.JScrollPane
-class ScrollPane(val jscrollpane: JScrollPane) extends Container(jscrollpane) with SwingComponent with Publisher {
- def this() = this(new JScrollPane())
- def this(contents: Component) = this(new JScrollPane(contents.acomponent))
+class ScrollPane(override val peer: JScrollPane) extends Container(peer) with Publisher {
+ def this() = this(new JScrollPane)
+ def this(contents: Component) = this(new JScrollPane(contents.peer))
def rowHeaderView: Component = null
- def rowHeaderView_=(c: Component) = jscrollpane.setRowHeaderView(c.acomponent)
-
+ def rowHeaderView_=(c: Component) = peer.setRowHeaderView(c.peer)
def viewportView: Component = null
- def viewportView_=(c: Component) = jscrollpane.setViewportView(c.acomponent)
+ def viewportView_=(c: Component) = peer.setViewportView(c.peer)
}
diff --git a/src/swing/scala/swing/Showable.scala b/src/swing/scala/swing/Showable.scala
new file mode 100644
index 0000000000..02e6110144
--- /dev/null
+++ b/src/swing/scala/swing/Showable.scala
@@ -0,0 +1,12 @@
+package swing
+
+object Showable {
+ trait Swing extends Showable {
+ def peer: { def setVisible(b: Boolean) }
+ def show(): this.type = { peer.setVisible(true); this }
+ }
+}
+
+trait Showable {
+ def show(): this.type
+}
diff --git a/src/swing/scala/swing/SimpleGUIApplication.scala b/src/swing/scala/swing/SimpleGUIApplication.scala
index 43708d955a..208a85d1b4 100644
--- a/src/swing/scala/swing/SimpleGUIApplication.scala
+++ b/src/swing/scala/swing/SimpleGUIApplication.scala
@@ -3,14 +3,11 @@ package swing
import javax.swing._
abstract class SimpleGUIApplication extends GUIApplication {
-
- def top: Frame;
+ def top: Frame
def main(args: Array[String]) = {
SwingUtilities.invokeLater {
- new Runnable() {
- def run(): unit = { init(); top.pack.show }
- }
+ new Runnable { def run() { init(); top.pack.show() } }
}
}
diff --git a/src/swing/scala/swing/Slider.scala b/src/swing/scala/swing/Slider.scala
index 18fae3225b..10b56fe458 100644
--- a/src/swing/scala/swing/Slider.scala
+++ b/src/swing/scala/swing/Slider.scala
@@ -1,17 +1,47 @@
-package swing;
+package swing
-import javax.swing._
import event._
+import Swing._
-class Slider(val jbutton: JButton) extends Container(jbutton) with Publisher {
- def this(txt: String) = this(new JButton(txt))
- def this() = this("Untitled Button")
- def text: String = jbutton.getText()
- def text_=(s: String) = jbutton.setText(s)
- jbutton.addActionListener {
- new java.awt.event.ActionListener {
- def actionPerformed(e: java.awt.event.ActionEvent): unit =
- {}
- }
+class Slider(override val peer: javax.swing.JSlider) extends Component with EditorComponent {
+ def this() = this(new javax.swing.JSlider)
+
+ def orientation: Orientation = Orientation.wrap(peer.getOrientation)
+ def orientation_=(o: Orientation) { peer.setOrientation(o.peer) }
+
+ def min: Int = peer.getMinimum
+ def min_=(v: Int) { peer.setMinimum(v) }
+ def max: Int = peer.getMaximum
+ def max_=(v: Int) { peer.setMaximum(v) }
+ def value: Int = peer.getValue
+ def value_=(v: Int) { peer.setValue(v) }
+ def extent: Int = peer.getExtent
+ def extent_=(v: Int) { peer.setExtent(v) }
+
+ def paintLabels: Boolean = peer.getPaintLabels
+ def paintLabels_=(v: Boolean) { peer.setPaintLabels(v) }
+ def paintTicks: Boolean = peer.getPaintTicks
+ def paintTicks_=(v: Boolean) { peer.setPaintTicks(v) }
+ def paintTrack: Boolean = peer.getPaintTrack
+ def paintTrack_=(v: Boolean) { peer.setPaintTrack(v) }
+
+ def snapToTicks: Boolean = peer.getSnapToTicks
+ def snapToTicks_=(v: Boolean) { peer.setSnapToTicks(v) }
+
+ def minorTickSpacing: Int = peer.getMinorTickSpacing
+ def minorTickSpacing_=(v: Int) { peer.setMinorTickSpacing(v) }
+ def majorTickSpacing: Int = peer.getMajorTickSpacing
+ def majorTickSpacing_=(v: Int) { peer.setMajorTickSpacing(v) }
+
+ def labels: collection.Map[Int, Label] =
+ new collection.jcl.MapWrapper[Int, Label] { def underlying = peer.getLabelTable.asInstanceOf[java.util.Hashtable[Int, Label]] }
+ def labels_=(l: collection.Map[Int, Label]) {
+ val table = new java.util.Hashtable[Any, Any]
+ for ((k,v) <- l) table.put(k, v)
+ peer.setLabelTable(table)
+ }
+
+ lazy val contentModified = new Publisher {
+ peer.addChangeListener { ChangeListener( e => publish(ContentModified(Slider.this))) }
}
-}
+} \ No newline at end of file
diff --git a/src/swing/scala/swing/Spreadsheet.scala b/src/swing/scala/swing/Spreadsheet.scala
index 6bd0d4a21e..62228890a3 100644
--- a/src/swing/scala/swing/Spreadsheet.scala
+++ b/src/swing/scala/swing/Spreadsheet.scala
@@ -5,7 +5,7 @@ import javax.swing.event.{TableModelListener, TableModelEvent}
import javax.swing._
import event._
-class Spreadsheet(width: Int, height: Int) extends Component with SwingComponent with Publisher {
+/*class Spreadsheet(width: Int, height: Int) extends Component with SwingComponent with Publisher {
def showGrid: Boolean = acomponent.table.getShowHorizontalLines && acomponent.table.getShowVerticalLines
@@ -97,4 +97,4 @@ class Spreadsheet(width: Int, height: Int) extends Component with SwingComponent
def apply(pos: (Int, Int)) = data(pos._1, pos._2).userData
-}
+}*/
diff --git a/src/swing/scala/swing/Swing.scala b/src/swing/scala/swing/Swing.scala
new file mode 100644
index 0000000000..8c0b255b73
--- /dev/null
+++ b/src/swing/scala/swing/Swing.scala
@@ -0,0 +1,35 @@
+package swing
+
+import javax.swing._
+import javax.swing.event._
+
+object Swing {
+ implicit def block2Runnable(block: =>Unit): Runnable = new Runnable {
+ override def run = block
+ }
+ def ChangeListener(f: ChangeEvent => Unit) = new ChangeListener {
+ def stateChanged(e: ChangeEvent) { f(e) }
+ }
+
+ def Box(min: Dimension, pref: Dimension, max: Dimension) = new Component {
+ override lazy val peer = new javax.swing.Box.Filler(min.peer, pref.peer, max.peer)
+ }
+ def HGlue = new Component {
+ override lazy val peer = javax.swing.Box.createHorizontalGlue.asInstanceOf[JComponent]
+ }
+ def VGlue = new Component {
+ override lazy val peer = javax.swing.Box.createVerticalGlue.asInstanceOf[JComponent]
+ }
+ def Glue = new Component {
+ override lazy val peer = javax.swing.Box.createGlue.asInstanceOf[JComponent]
+ }
+ def RigidBox(dim: Dimension) = new Component {
+ override lazy val peer = javax.swing.Box.createRigidArea(dim.peer).asInstanceOf[JComponent]
+ }
+ def HStrut(width: Int) = new Component {
+ override lazy val peer = javax.swing.Box.createHorizontalStrut(width).asInstanceOf[JComponent]
+ }
+ def VStrut(height: Int) = new Component {
+ override lazy val peer = javax.swing.Box.createVerticalStrut(height).asInstanceOf[JComponent]
+ }
+}
diff --git a/src/swing/scala/swing/SwingComponent.scala b/src/swing/scala/swing/SwingComponent.scala
index 73c7c43aaf..e035518a8c 100644
--- a/src/swing/scala/swing/SwingComponent.scala
+++ b/src/swing/scala/swing/SwingComponent.scala
@@ -3,9 +3,9 @@ package swing
import javax.swing._
import java.awt._
-trait SwingComponent extends Component {
- val jcomponent = acomponent.asInstanceOf[JComponent];
+/*trait SwingComponent extends Component {
+ val jcomponent = acomponent.asInstanceOf[JComponent]
def border: javax.swing.border.Border = jcomponent.getBorder()
def border_=(x: javax.swing.border.Border): unit = jcomponent.setBorder(x)
-}
+}*/
diff --git a/src/swing/scala/swing/Table.scala b/src/swing/scala/swing/Table.scala
index 17a44797c6..a55c231fdf 100644
--- a/src/swing/scala/swing/Table.scala
+++ b/src/swing/scala/swing/Table.scala
@@ -17,7 +17,7 @@ object Table {
}
}
-class Table(val jtable: JTable) extends Container(jtable) with SwingComponent with Publisher {
+class Table(override val peer: JTable) extends Component with Publisher {
import Table._
def this() = this(new JTable())
def this(numRows: Int, numColumns: Int) = this(new JTable(numRows, numColumns))
@@ -28,41 +28,43 @@ class Table(val jtable: JTable) extends Container(jtable) with SwingComponent wi
def this(dm: TableModel, cm: TableColumnModel) = this(new JTable(dm, cm))
def this(dm: TableModel, cm: TableColumnModel, sm: ListSelectionModel) = this(new JTable(dm, cm, sm))
- def rowHeight = jtable.getRowHeight
- def rowHeight_=(x: Int) = jtable.setRowHeight(x)
+ def rowHeight = peer.getRowHeight
+ def rowHeight_=(x: Int) = peer.setRowHeight(x)
- def rowCount = jtable.getRowCount
+ def rowCount = peer.getRowCount
- def model = jtable.getModel()
- def model_=(x: TableModel) = jtable.setModel(x)
+ def model = peer.getModel()
+ def model_=(x: TableModel) = peer.setModel(x)
- def autoResizeMode: AutoResizeMode.Value = AutoResizeMode(jtable.getAutoResizeMode)
- def autoResizeMode_=(x: Table.AutoResizeMode.Value) = jtable.setAutoResizeMode(x.id)
+ def autoResizeMode: AutoResizeMode.Value = AutoResizeMode(peer.getAutoResizeMode)
+ def autoResizeMode_=(x: Table.AutoResizeMode.Value) = peer.setAutoResizeMode(x.id)
- def showGrid = jtable.getShowHorizontalLines && jtable.getShowVerticalLines
- def showGrid_=(grid: Boolean) = jtable.setShowGrid(grid)
+ def showGrid = peer.getShowHorizontalLines && peer.getShowVerticalLines
+ def showGrid_=(grid: Boolean) = peer.setShowGrid(grid)
- def gridColor = new swing.Color(jtable.getGridColor)
- def gridColor_=(color: swing.Color) = jtable.setGridColor(color)
+ def gridColor = new swing.Color(peer.getGridColor)
+ def gridColor_=(color: swing.Color) = peer.setGridColor(color)
- private val initialRenderer = jtable.getDefaultRenderer(classOf[AnyRef])
+ private val initialRenderer = peer.getDefaultRenderer(classOf[AnyRef])
protected def render(isSelected: Boolean, hasFocus: Boolean, row: Int, column: Int): Component =
- new AWTComponentWrapper(
- initialRenderer.getTableCellRendererComponent(jtable, jtable.getValueAt(row, column), isSelected, hasFocus, row, column))
+ new Component {
+ override lazy val peer = initialRenderer.getTableCellRendererComponent(Table.this.peer,
+ Table.this.peer.getValueAt(row, column), isSelected, hasFocus, row, column).asInstanceOf[JComponent]
+ }
- jtable.setDefaultRenderer(classOf[AnyRef], new TableCellRenderer {
- def getTableCellRendererComponent(jtable: JTable, value: AnyRef, isSelected: Boolean, hasFocus: Boolean, row: Int, column: Int) =
- render(isSelected, hasFocus, row, column).acomponent
+ peer.setDefaultRenderer(classOf[AnyRef], new TableCellRenderer {
+ def getTableCellRendererComponent(table: JTable, value: AnyRef, isSelected: Boolean, hasFocus: Boolean, row: Int, column: Int) =
+ render(isSelected, hasFocus, row, column).peer
})
- def apply(row: Int, column: Int) = jtable.getValueAt(row, column)
- def update(row: Int, column: Int, value: AnyRef) = jtable.setValueAt(value, row, column)
+ def apply(row: Int, column: Int) = peer.getValueAt(row, column)
+ def update(row: Int, column: Int, value: AnyRef) = peer.setValueAt(value, row, column)
def markUpdated(row: Int, column: Int) = update(row, column, apply(row, column))
/*
- jtable.addActionListener {
+ peer.addActionListener {
new java.awt.event.ActionListener {
def actionPerformed(e: java.awt.event.ActionEvent): unit =
publish(ButtonPressed(Button.this))
diff --git a/src/swing/scala/swing/TextComponent.scala b/src/swing/scala/swing/TextComponent.scala
index 353349ffcf..ba535efb08 100644
--- a/src/swing/scala/swing/TextComponent.scala
+++ b/src/swing/scala/swing/TextComponent.scala
@@ -1,22 +1,34 @@
package swing
import javax.swing._
-import javax.swing.text.JTextComponent
-import javax.swing.event.{CaretEvent,CaretListener}
-import event.CaretUpdate
+import javax.swing.text._
+import javax.swing.event._
+import event._
-class TextComponent(val jtextcomponent: JTextComponent)
-extends Container(jtextcomponent) with SwingComponent with Publisher {
+class TextComponent(override val peer: JTextComponent) extends Component with EditorComponent with Publisher {
+ def text: String = peer.getText
+ def text_=(x: String) = peer.setText(x)
- def text: String = jtextcomponent.getText()
- def text_=(x: String) = jtextcomponent.setText(x)
+ val caret = new Caret(peer.getCaret)
- val caret = new Caret(jtextcomponent.getCaret())
+ def content: String = peer.getText
+ def content_=(v: String) { peer.setText(v) }
- jtextcomponent.addCaretListener {
+ peer.addCaretListener {
new CaretListener {
- def caretUpdate(e: CaretEvent) =
- publish(CaretUpdate(TextComponent.this))
+ def caretUpdate(e: CaretEvent) { publish(CaretUpdate(TextComponent.this)) }
+ }
+ }
+
+ lazy val contentModified = liveContentModified
+
+ protected def liveContentModified = new Publisher {
+ peer.getDocument.addDocumentListener {
+ new DocumentListener {
+ override def changedUpdate(e:DocumentEvent) { publish(ContentModified(TextComponent.this)) }
+ override def insertUpdate(e:DocumentEvent) { publish(ContentModified(TextComponent.this)) }
+ override def removeUpdate(e:DocumentEvent) { publish(ContentModified(TextComponent.this)) }
+ }
}
}
}
diff --git a/src/swing/scala/swing/TextField.scala b/src/swing/scala/swing/TextField.scala
index 5dd781011d..ab5043c1ac 100644
--- a/src/swing/scala/swing/TextField.scala
+++ b/src/swing/scala/swing/TextField.scala
@@ -1,22 +1,25 @@
-package swing;
+package swing
import javax.swing._
import java.awt.event._
import event._
-class TextField(val jtextfield: JTextField) extends TextComponent(jtextfield) {
- def this(text: String, columns: int) = this(new JTextField(text, columns));
- def this(text: String) = this(new JTextField(text));
- def this(columns: int) = this(new JTextField(columns));
- def this() = this(new JTextField());
+class TextField(override val peer: JTextField) extends TextComponent(peer) {
+ def this(text: String, columns: int) = this(new JTextField(text, columns))
+ def this(text: String) = this(new JTextField(text))
+ def this(columns: int) = this(new JTextField(columns))
+ def this() = this(new JTextField())
- def columns: int = jtextfield.getColumns()
- def columns_=(x: int) = jtextfield.setColumns(x)
+ def columns: int = peer.getColumns()
+ def columns_=(x: int) = peer.setColumns(x)
- jtextfield.addActionListener {
- new ActionListener {
- def actionPerformed(e: ActionEvent) =
- publish(TextModified(TextField.this))
+ override lazy val contentModified = new Publisher {
+ peer.addActionListener {
+ new ActionListener {
+ def actionPerformed(e: ActionEvent) { publish(ContentModified(TextField.this)) }
+ }
}
}
+
+ override lazy val liveContentModified = super.liveContentModified
}
diff --git a/src/swing/scala/swing/UIElement.scala b/src/swing/scala/swing/UIElement.scala
new file mode 100644
index 0000000000..bf0f81fcc5
--- /dev/null
+++ b/src/swing/scala/swing/UIElement.scala
@@ -0,0 +1,5 @@
+package swing
+
+trait UIElement {
+
+}
diff --git a/src/swing/scala/swing/event/ButtonPressed.scala b/src/swing/scala/swing/event/ButtonPressed.scala
index fb7850e93d..aa35f8ea72 100644
--- a/src/swing/scala/swing/event/ButtonPressed.scala
+++ b/src/swing/scala/swing/event/ButtonPressed.scala
@@ -1,3 +1,3 @@
package swing.event
-case class ButtonPressed(b: Button) extends Event
+case class ButtonPressed(override val source: Button) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/CaretUpdate.scala b/src/swing/scala/swing/event/CaretUpdate.scala
index 98d8b7f27c..a16d2a532a 100644
--- a/src/swing/scala/swing/event/CaretUpdate.scala
+++ b/src/swing/scala/swing/event/CaretUpdate.scala
@@ -1,3 +1,3 @@
package swing.event
-case class CaretUpdate(text: TextComponent) extends Event
+case class CaretUpdate(override val source: TextComponent) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/CellModified.scala b/src/swing/scala/swing/event/CellModified.scala
index bfaf61013b..266c625cc7 100644
--- a/src/swing/scala/swing/event/CellModified.scala
+++ b/src/swing/scala/swing/event/CellModified.scala
@@ -1,3 +1,3 @@
package swing.event
-case class CellModified(col: Int, row: int, value: String) extends Event
+//case class CellModified(source: Table, col: Int, row: int, value: String) extends Event(source)
diff --git a/src/swing/scala/swing/event/ComponentEvent.scala b/src/swing/scala/swing/event/ComponentEvent.scala
new file mode 100644
index 0000000000..191bc707f0
--- /dev/null
+++ b/src/swing/scala/swing/event/ComponentEvent.scala
@@ -0,0 +1,3 @@
+package swing.event
+
+abstract class ComponentEvent(override val source: Component) extends Event(source)
diff --git a/src/swing/scala/swing/event/ContentModified.scala b/src/swing/scala/swing/event/ContentModified.scala
new file mode 100644
index 0000000000..2d0d955720
--- /dev/null
+++ b/src/swing/scala/swing/event/ContentModified.scala
@@ -0,0 +1,3 @@
+package swing.event
+
+case class ContentModified(override val source: Component) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/Event.scala b/src/swing/scala/swing/event/Event.scala
index 21306d5b94..9df216819e 100644
--- a/src/swing/scala/swing/event/Event.scala
+++ b/src/swing/scala/swing/event/Event.scala
@@ -1,3 +1,3 @@
package swing.event
-abstract class Event
+abstract class Event(val source: UIElement)
diff --git a/src/swing/scala/swing/event/TableChanged.scala b/src/swing/scala/swing/event/TableChanged.scala
index 3e1c6f8f6d..5354219f7b 100644
--- a/src/swing/scala/swing/event/TableChanged.scala
+++ b/src/swing/scala/swing/event/TableChanged.scala
@@ -1,5 +1,5 @@
package swing.event
-case class TableChanged(table: Table, firstRow: Int, lastRow: Int, column: Int) extends Event {
- println("table changed: "+table+"/"+firstRow+"-"+lastRow+":"+column)
+case class TableChanged(override val source: Table, firstRow: Int, lastRow: Int, column: Int) extends ComponentEvent(source) {
+ println("table changed: "+source+"/"+firstRow+"-"+lastRow+":"+column)
}
diff --git a/src/swing/scala/swing/event/TableResized.scala b/src/swing/scala/swing/event/TableResized.scala
index 716ae89bf0..a2b598ba53 100644
--- a/src/swing/scala/swing/event/TableResized.scala
+++ b/src/swing/scala/swing/event/TableResized.scala
@@ -1,3 +1,3 @@
-package swing.event;
+package swing.event
-case class TableResized(table: Table) extends Event
+case class TableResized(override val source: Table) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/TextModified.scala b/src/swing/scala/swing/event/TextModified.scala
index 703d7711a0..7ea4ff6b1c 100644
--- a/src/swing/scala/swing/event/TextModified.scala
+++ b/src/swing/scala/swing/event/TextModified.scala
@@ -1,3 +1,3 @@
package swing.event
-case class TextModified(text: TextComponent) extends Event
+//case class TextModified(override val source: TextComponent) extends ContentModified(source)
diff --git a/src/swing/scala/swing/event/WindowActivated.scala b/src/swing/scala/swing/event/WindowActivated.scala
index 5f4e0b3bbf..b2a9095fa6 100644
--- a/src/swing/scala/swing/event/WindowActivated.scala
+++ b/src/swing/scala/swing/event/WindowActivated.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowActivated(window: Frame) extends WindowEvent;
+case class WindowActivated(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowClosed.scala b/src/swing/scala/swing/event/WindowClosed.scala
index 5834d69c46..f2c50bf146 100644
--- a/src/swing/scala/swing/event/WindowClosed.scala
+++ b/src/swing/scala/swing/event/WindowClosed.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowClosed(window: Frame) extends WindowEvent;
+case class WindowClosed(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowClosing.scala b/src/swing/scala/swing/event/WindowClosing.scala
index 6938590347..309516fd89 100644
--- a/src/swing/scala/swing/event/WindowClosing.scala
+++ b/src/swing/scala/swing/event/WindowClosing.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowClosing(window: Frame) extends WindowEvent;
+case class WindowClosing(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowDeactivated.scala b/src/swing/scala/swing/event/WindowDeactivated.scala
index d44214c73d..d012167f98 100644
--- a/src/swing/scala/swing/event/WindowDeactivated.scala
+++ b/src/swing/scala/swing/event/WindowDeactivated.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowDeactivated(window: Frame) extends WindowEvent;
+case class WindowDeactivated(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowDeiconified.scala b/src/swing/scala/swing/event/WindowDeiconified.scala
index 6a956a47d2..3820b67024 100644
--- a/src/swing/scala/swing/event/WindowDeiconified.scala
+++ b/src/swing/scala/swing/event/WindowDeiconified.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowDeiconified(window: Frame) extends WindowEvent;
+case class WindowDeiconified(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowEvent.scala b/src/swing/scala/swing/event/WindowEvent.scala
index c6c8b6ffca..dd28f822ed 100644
--- a/src/swing/scala/swing/event/WindowEvent.scala
+++ b/src/swing/scala/swing/event/WindowEvent.scala
@@ -1,5 +1,3 @@
package swing.event
-abstract class WindowEvent extends Event {
- val window: Frame
-}
+abstract class WindowEvent(source: Frame) extends Event(source)
diff --git a/src/swing/scala/swing/event/WindowIconified.scala b/src/swing/scala/swing/event/WindowIconified.scala
index 2b6f6378c3..1ca67dc126 100644
--- a/src/swing/scala/swing/event/WindowIconified.scala
+++ b/src/swing/scala/swing/event/WindowIconified.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowIconified(window: Frame) extends WindowEvent;
+case class WindowIconified(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowOpened.scala b/src/swing/scala/swing/event/WindowOpened.scala
index 952176670a..b1f8a3a7d5 100644
--- a/src/swing/scala/swing/event/WindowOpened.scala
+++ b/src/swing/scala/swing/event/WindowOpened.scala
@@ -1,3 +1,3 @@
package swing.event
-case class WindowOpened(window: Frame) extends WindowEvent;
+case class WindowOpened(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/layout.scala b/src/swing/scala/swing/layout.scala
deleted file mode 100644
index 3628b2de3a..0000000000
--- a/src/swing/scala/swing/layout.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-package swing
-
-import java.awt._
-
-object layout {
-
- val flex = 0
-
- def grid(rows: int, columns: int) = new GridLayout(rows, columns)
- def row = new FlowLayout()
- def column = grid(flex, 1)
-}
diff --git a/src/swing/scala/swing/test/CelsiusConverter.scala b/src/swing/scala/swing/test/CelsiusConverter.scala
index 8d78667aa5..493a901890 100644
--- a/src/swing/scala/swing/test/CelsiusConverter.scala
+++ b/src/swing/scala/swing/test/CelsiusConverter.scala
@@ -1,39 +1,36 @@
-package swing.test;
+package swing.test
import swing._
-import layout._
import event._
-import Orientation.{left, right}
/** A GUI app to convert celsius to centigrade
*/
object CelsiusConverter extends SimpleGUIApplication {
- def top: Frame = new MainFrame {
+ def top = new MainFrame {
title = "Convert Celsius to Fahrenheit"
defaultButton = convertButton
- object tempCelsius extends TextField();
+ object tempCelsius extends TextField
object celsiusLabel extends Label {
text = "Celsius"
- border = new EmptyBorder(5, 5, 5, 5)
+ border = EmptyBorder(5, 5, 5, 5)
}
object convertButton extends Button {
icon = new javax.swing.ImageIcon("c:\\workspace\\gui\\images\\convert.gif")
- border = new EmptyBorder(5, 5, 5, 5)
+ border = EmptyBorder(5, 5, 5, 5)
}
object fahrenheitLabel extends Label {
text = "Fahrenheit "
- border = new EmptyBorder(5, 5, 5, 5)
+ border = EmptyBorder(5, 5, 5, 5)
listenTo(convertButton, tempCelsius)
reactions += {
- case ButtonPressed(_) | TextModified(_) =>
+ case ButtonPressed(_) | ContentModified(_) =>
val c = Integer.parseInt(tempCelsius.text)
val f = c * 9 / 5 + 32
text = "<html><font color = red>"+f+"</font> Fahrenheit</html>"
}
}
- contents += new Panel(tempCelsius, celsiusLabel, convertButton, fahrenheitLabel) {
- layout = grid(2, 2)
- border = new EmptyBorder(10, 10, 10, 10)
+ content = new GridPanel(2,2)(tempCelsius, celsiusLabel, convertButton, fahrenheitLabel) {
+ border = EmptyBorder(10, 10, 10, 10)
}
}
}
diff --git a/src/swing/scala/swing/test/CelsiusConverter2.scala b/src/swing/scala/swing/test/CelsiusConverter2.scala
index 5813b3042d..5df70adcb0 100644
--- a/src/swing/scala/swing/test/CelsiusConverter2.scala
+++ b/src/swing/scala/swing/test/CelsiusConverter2.scala
@@ -1,26 +1,24 @@
-package swing.test;
+package swing.test
import swing._
-import layout._
import event._
-import Orientation.{left, right, center}
object CelsiusConverter2 extends SimpleGUIApplication {
def top = new MainFrame {
title = "Convert Celsius / Fahrenheit"
- object Celsius extends TextField { columns = 5 };
+ object Celsius extends TextField { columns = 5 }
object Fahrenheit extends TextField { columns = 5 }
- contents += new Panel(Celsius, new Label(" Celsius = "),
- Fahrenheit, new Label(" Fahrenheit")) {
- border = new EmptyBorder(15, 10, 10, 10)
+ content = new FlowPanel(Horizontal)(Celsius, new Label(" Celsius = "),
+ Fahrenheit, new Label(" Fahrenheit")) {
+ border = EmptyBorder(15, 10, 10, 10)
}
- listenTo(Fahrenheit, Celsius)
+ listenTo(Fahrenheit.contentModified, Celsius.contentModified)
reactions += {
- case TextModified(Fahrenheit) =>
+ case ContentModified(Fahrenheit) =>
val f = Integer.parseInt(Fahrenheit.text)
val c = (f - 32) * 5 / 9
Celsius.text = c.toString
- case TextModified(Celsius) =>
+ case ContentModified(Celsius) =>
val c = Integer.parseInt(Celsius.text)
val f = c * 9 / 5 + 32
Fahrenheit.text = f.toString
diff --git a/src/swing/scala/swing/test/HelloWorld.scala b/src/swing/scala/swing/test/HelloWorld.scala
index e19a6e92e4..4cbf254bb2 100644
--- a/src/swing/scala/swing/test/HelloWorld.scala
+++ b/src/swing/scala/swing/test/HelloWorld.scala
@@ -1,13 +1,12 @@
-package swing.test;
+package swing.test
-import swing._;
-import javax.swing._;
+import swing._
object HelloWorld extends GUIApplication {
def main(args: Array[String]) = run {
new Frame {
- title = "HelloWorldSwing";
- contents += new Label("Hello World");
+ title = "HelloWorldSwing"
+ content = new Label("Hello World")
}.pack.show
}
}
diff --git a/src/swing/scala/swing/test/SwingApp.scala b/src/swing/scala/swing/test/SwingApp.scala
index 1712b74ee4..b66d0a0e48 100644
--- a/src/swing/scala/swing/test/SwingApp.scala
+++ b/src/swing/scala/swing/test/SwingApp.scala
@@ -1,8 +1,7 @@
-package swing.test;
+package swing.test
import swing._
import swing.event._
-import swing.layout._
object SwingApp extends SimpleGUIApplication {
def top = new MainFrame {
@@ -21,9 +20,8 @@ object SwingApp extends SimpleGUIApplication {
object button extends Button {
text = "I am a button"
}
- contents += new Panel(label, button) {
- layout = column
- border = new EmptyBorder(30, 30, 10, 30)
+ content = new GridPanel(GridPanel.Adapt,1)(label, button) {
+ border = EmptyBorder(5, 5, 5, 5)
}
}
}