summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIngo Maier <ingo.maier@epfl.ch>2009-06-02 05:40:15 +0000
committerIngo Maier <ingo.maier@epfl.ch>2009-06-02 05:40:15 +0000
commit045e04db5a2b58822e51cc59cd60562ebb43d33c (patch)
treefe4677d7ccfdceae8e9149e92cb16fd0565c5604 /src
parent5906c86214c80de9aaf97005c88c6092a6813951 (diff)
downloadscala-045e04db5a2b58822e51cc59cd60562ebb43d33c.tar.gz
scala-045e04db5a2b58822e51cc59cd60562ebb43d33c.tar.bz2
scala-045e04db5a2b58822e51cc59cd60562ebb43d33c.zip
Fun with subclipse.
Diffstat (limited to 'src')
-rw-r--r--src/swing/scala/swing/ButtonGroup.scala2
-rw-r--r--src/swing/scala/swing/Container.scala13
-rw-r--r--src/swing/scala/swing/LayoutContainer.scala2
-rw-r--r--src/swing/scala/swing/ListView.scala2
-rw-r--r--src/swing/scala/swing/Slider.scala3
-rw-r--r--src/swing/scala/swing/TabbedPane.scala4
-rw-r--r--src/swing/scala/swing/test/LinePainting.scala74
7 files changed, 55 insertions, 45 deletions
diff --git a/src/swing/scala/swing/ButtonGroup.scala b/src/swing/scala/swing/ButtonGroup.scala
index 0f518d4ddc..3756a91364 100644
--- a/src/swing/scala/swing/ButtonGroup.scala
+++ b/src/swing/scala/swing/ButtonGroup.scala
@@ -21,7 +21,7 @@ class ButtonGroup(initialButtons: AbstractButton*) {
override def size = peer.getButtonCount
def iterator: Iterator[AbstractButton] = new Iterator[AbstractButton] {
val enum = peer.getElements
- def next = Component.wrapperFor[AbstractButton](enum.nextElement)
+ def next = UIElement.cachedWrapper[AbstractButton](enum.nextElement)
def hasNext = enum.hasMoreElements
}
}
diff --git a/src/swing/scala/swing/Container.scala b/src/swing/scala/swing/Container.scala
index 0bea4d8c46..6434d73ae1 100644
--- a/src/swing/scala/swing/Container.scala
+++ b/src/swing/scala/swing/Container.scala
@@ -8,32 +8,33 @@ object Container {
* Utility trait for wrapping containers. Provides an immutable
* implementation of the contents member.
*/
- trait Wrapper extends Component with Container {
+ trait Wrapper extends Container with Publisher {
+ override def peer: javax.swing.JComponent
+
protected val _contents = new Content
def contents: Seq[Component] = _contents
protected class Content extends BufferWrapper[Component] {
- def wrap(c: java.awt.Component): Component = Component.wrapperFor(c.asInstanceOf[javax.swing.JComponent])
override def clear { peer.removeAll() }
override def remove(n: Int): Component = {
val c = peer.getComponent(n)
peer.remove(n)
- wrap(c)
+ UIElement.cachedWrapper(c)
}
protected def insertAt(n: Int, c: Component) { peer.add(c.peer, n) }
def +=(c: Component): this.type = { peer.add(c.peer) ; this }
def length = peer.getComponentCount
- def apply(n: Int) = wrap(peer.getComponent(n))
+ def apply(n: Int) = UIElement.cachedWrapper(peer.getComponent(n))
}
peer.addContainerListener(new java.awt.event.ContainerListener {
def componentAdded(e: java.awt.event.ContainerEvent) {
publish(ComponentAdded(Wrapper.this,
- Component.wrapperFor(e.getChild.asInstanceOf[javax.swing.JComponent])))
+ UIElement.cachedWrapper(e.getChild.asInstanceOf[javax.swing.JComponent])))
}
def componentRemoved(e: java.awt.event.ContainerEvent) {
publish(ComponentRemoved(Wrapper.this,
- Component.wrapperFor(e.getChild.asInstanceOf[javax.swing.JComponent])))
+ UIElement.cachedWrapper(e.getChild.asInstanceOf[javax.swing.JComponent])))
}
})
}
diff --git a/src/swing/scala/swing/LayoutContainer.scala b/src/swing/scala/swing/LayoutContainer.scala
index 1526c7ed7e..7594edd8e1 100644
--- a/src/swing/scala/swing/LayoutContainer.scala
+++ b/src/swing/scala/swing/LayoutContainer.scala
@@ -56,7 +56,7 @@ trait LayoutContainer extends Container.Wrapper {
override def size = peer.getComponentCount
def iterator: Iterator[(Component, Constraints)] =
Iterator.range(0,size).map { c =>
- val comp = Component.wrapperFor[Component](peer.getComponent(c).asInstanceOf[JComponent])
+ val comp = UIElement.cachedWrapper[Component](peer.getComponent(c).asInstanceOf[JComponent])
(comp, constraintsFor(comp))
}
}
diff --git a/src/swing/scala/swing/ListView.scala b/src/swing/scala/swing/ListView.scala
index ec61bb6908..1948fc71d7 100644
--- a/src/swing/scala/swing/ListView.scala
+++ b/src/swing/scala/swing/ListView.scala
@@ -117,7 +117,7 @@ object ListView {
override lazy val peer: ListCellRenderer = new DefaultListCellRenderer
def componentFor(list: ListView[_], isSelected: Boolean, hasFocus: Boolean, a: Any, index: Int): Component = {
val c = peer.getListCellRendererComponent(list.peer, a, index, isSelected, hasFocus).asInstanceOf[JComponent]
- val w = Component.wrapperFor[Component](c)
+ val w = UIElement.cachedWrapper[Component](c)
if (w eq null) Component.wrap(c) else w
}
}
diff --git a/src/swing/scala/swing/Slider.scala b/src/swing/scala/swing/Slider.scala
index 0819aff6c1..2b6ebf9230 100644
--- a/src/swing/scala/swing/Slider.scala
+++ b/src/swing/scala/swing/Slider.scala
@@ -12,7 +12,8 @@ import event._
* @see javax.swing.JSlider
*/
class Slider extends Component with Orientable with Publisher {
- override lazy val peer: javax.swing.JSlider = new javax.swing.JSlider
+ override lazy val peer: javax.swing.JSlider with OrientedMixin =
+ new javax.swing.JSlider with OrientedMixin
def min: Int = peer.getMinimum
def min_=(v: Int) { peer.setMinimum(v) }
diff --git a/src/swing/scala/swing/TabbedPane.scala b/src/swing/scala/swing/TabbedPane.scala
index dd8ac36203..ad2cbb81a4 100644
--- a/src/swing/scala/swing/TabbedPane.scala
+++ b/src/swing/scala/swing/TabbedPane.scala
@@ -29,7 +29,7 @@ object TabbedPane {
def title: String = _title//parent.peer.getTitleAt(index)
def title_=(t: String) { _title = title0; if (parent != null) parent.peer.setTitleAt(index, t) }
protected var _content = content0
- def content: Component = _content//Component.wrapperFor(peer.getComponentAt(index).asInstanceOf[JComponent])
+ def content: Component = _content//UIElement.cachedWrapper(peer.getComponentAt(index).asInstanceOf[JComponent])
def content_=(c: Component) { _content = c; if (parent != null) parent.peer.setComponentAt(index, c.peer) }
protected var _tip = tip0
def tip: String = _tip//peer.getToolTipTextAt(index)
@@ -85,7 +85,7 @@ class TabbedPane extends Component with Publisher {
def +=(t: Page): this.type = { t.parent = TabbedPane.this; peer.addTab(t.title, null, t.content.peer, t.tip); this }
def length = peer.getTabCount
def apply(n: Int) = new Page(TabbedPane.this, peer.getTitleAt(n),
- Component.wrapperFor(peer.getComponentAt(n).asInstanceOf[javax.swing.JComponent]),
+ UIElement.cachedWrapper(peer.getComponentAt(n).asInstanceOf[javax.swing.JComponent]),
peer.getToolTipTextAt(n))
}
diff --git a/src/swing/scala/swing/test/LinePainting.scala b/src/swing/scala/swing/test/LinePainting.scala
index aba0540746..946d267ece 100644
--- a/src/swing/scala/swing/test/LinePainting.scala
+++ b/src/swing/scala/swing/test/LinePainting.scala
@@ -1,45 +1,53 @@
package scala.swing.test
-
-import java.awt.{Color, Dimension, Graphics, Graphics2D, Point, geom}
-
import scala.swing.Swing._
import scala.swing.{MainFrame, Panel, SimpleGUIApplication}
-import scala.swing.event.{MousePressed, MouseDragged, MouseReleased}
+import scala.swing.event._
+import java.awt.{Color, Dimension, Graphics, Graphics2D, Point, geom}
/**
* Dragging the mouse draws a simple graph
*
- * @author Frank Teubler
+ * @author Frank Teubler, Ingo Maier
*/
object LinePainting extends SimpleGUIApplication {
- def top = new MainFrame {
- title = "SimpleDraw"
- contents = new Panel {
- background = Color.white
- preferredSize = new Dimension(200, 200)
-
- listenTo(Mouse.clicks, Mouse.moves)
-
- reactions += {
- case e: MousePressed => moveTo(e.point)
- case e: MouseDragged => lineTo(e.point)
- case e: MouseReleased => lineTo(e.point)
- }
-
- /* records the dragging */
- val path = new geom.GeneralPath
-
- def lineTo(p: Point) { path.lineTo(p.x, p.y); repaint() }
- def moveTo(p: Point) { path.moveTo(p.x, p.y); repaint() }
-
- override def paintComponent(g: Graphics) = {
- super.paintComponent(g)
- /* we need Graphics2D */
- val g2 = g.asInstanceOf[Graphics2D]
- g2.draw(path)
- }
+ lazy val ui = new Panel {
+ background = Color.white
+ preferredSize = (200,200)
+
+ focusable = true
+ listenTo(mouse.clicks, mouse.moves, keys)
+
+
+ reactions += {
+ case e: MousePressed =>
+ moveTo(e.point)
+ requestFocusInWindow()
+ case e: MouseDragged => lineTo(e.point)
+ case e: MouseReleased => lineTo(e.point)
+ case KeyTyped(_,'c',_,_) =>
+ path = new geom.GeneralPath
+ repaint()
+ case _: FocusLost => repaint()
}
- }
-}
+ /* records the dragging */
+ var path = new geom.GeneralPath
+ def lineTo(p: Point) { path.lineTo(p.x, p.y); repaint() }
+ def moveTo(p: Point) { path.moveTo(p.x, p.y); repaint() }
+
+ override def paintComponent(g: Graphics2D) = {
+ super.paintComponent(g)
+ g.setColor(new Color(100,100,100))
+ g.drawString("Press left mouse button and drag to paint." +
+ (if(hasFocus) " Press 'c' to clear." else ""), 10, size.height-10)
+ g.setColor(Color.black)
+ g.draw(path)
+ }
+ }
+
+ def top = new MainFrame {
+ title = "Simple Line Painting Demo"
+ contents = ui
+ }
+} \ No newline at end of file