abstract class ViewComponent[Model <: AnyRef] extends ViewImpl.ViewComponent[Model] with ControlDefaults[Model]
A Swing-embeddable view (complete with a picture, a ticking clock, event handlers, etc.). It works like a ViewFrame except that it’s a Swing component, not a standalone GUI frame. See ViewFrame for an overview.
- Model
the type of the model object
- Alphabetic
- By Inheritance
- ViewComponent
- ControlDefaults
- HasModelField
- TooltipDefaults
- ViewComponent
- Controls
- Component
- UIElement
- LazyPublisher
- Publisher
- Reactor
- Proxy
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ViewComponent(initialModel: Model, tickRate: Double = TicksPerSecondDefault, initialDelay: Int = 600, refreshPolicy: RefreshPolicy = Always)
- initialModel
the model to be displayed in the view (the only required parameter). It usually makes sense to use a mutable object here and change its state via the event handlers (cf. o1.gui.immutable.ViewComponent).
- tickRate
the clock of the view will tick roughly this many times per second (optional; defaults to 24)
- initialDelay
an additional delay in milliseconds between calling start and the clock starting (optional; defaults to 600)
- refreshPolicy
a policy for how eagerly the view should try to update the graphical representation of its model (optional; changing this may improve efficiency in some circumstances)
Type Members
- trait SuperMixin extends JComponent
- Attributes
- protected
- Definition Classes
- Component
- final class Traced[TraceData] extends ViewComponent[Model] with TraceGeneratingDefaults[Model, TraceData]
A view that wraps around another, collecting a log or trace of events while delegating its actual event-handling to the wrapped view.
A view that wraps around another, collecting a log or trace of events while delegating its actual event-handling to the wrapped view. Provides additional methods for accessing such traces: trace, simulateAndGet, and startAndGet. A few examples of using these methods are given below.
simulate
500 clock ticks on the trace-collecing view and print the trace of clock ticks accompanied by descriptions of the view’äsmodel
.for((traceItem, traceEvent) <- myTracedView.simulateAndGet(500)) { println(traceEvent + ": " + traceItem) }
Or, equivalently:
myTracedView.simulate(500) for((traceItem, traceEvent) <- myTracedView.trace) { println(traceEvent + ": " + traceItem) }
Alternatively, start the trace-collecting view and run it interactively until it is done or a tick limit is reached. Then print the trace of ticks and GUI events accompanied with descriptions of the view’s
model
.val futureTrace = myTracedView.startAndGet(tickLimit=100) recover { case Aborted(message, partialTrace) => partialTrace } for(trace <- futureTrace; (traceItem, traceEvent) <- trace) { println(traceEvent + ": " + traceItem) }
- TraceData
the type of the model-state descriptions in the trace
Abstract Value Members
- abstract def makePic: Pic
Returns a Pic that graphically represents the current state of the view’s
model
object.Returns a Pic that graphically represents the current state of the view’s
model
object. This method is automatically invoked by the view after GUI events and clock ticks. Left abstract by this class so any concrete view needs to add a custom implementation.For best results, all invocations of this method on a single view object should return
Pic
s of equal dimensions.- Definition Classes
- ControlDefaults
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def adjustSpeed(newTickRate: Double): Unit
Sets a new tick rate for the view, replacing any previously set by the constructor or this method.
Sets a new tick rate for the view, replacing any previously set by the constructor or this method.
- Definition Classes
- ViewComponent
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def background: scala.swing.Color
- Definition Classes
- UIElement
- def background_=(c: scala.swing.Color): Unit
- Definition Classes
- UIElement
- def border: Border
- Definition Classes
- Component
- def border_=(b: Border): Unit
- Definition Classes
- Component
- def bounds: Rectangle
- Definition Classes
- UIElement
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- def componentOrientation: ComponentOrientation
- Definition Classes
- UIElement
- def componentOrientation_=(x: ComponentOrientation): Unit
- Definition Classes
- UIElement
- def cursor: Cursor
- Definition Classes
- UIElement
- def cursor_=(c: Cursor): Unit
- Definition Classes
- UIElement
- def deafTo(ps: Publisher*): Unit
- Definition Classes
- Reactor
- def displayable: Boolean
- Definition Classes
- UIElement
- def enabled: Boolean
- Definition Classes
- Component
- def enabled_=(b: Boolean): Unit
- Definition Classes
- Component
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(that: Any): Boolean
- Definition Classes
- Proxy → Any
- def focusable: Boolean
- Definition Classes
- Component
- def focusable_=(b: Boolean): Unit
- Definition Classes
- Component
- def font: Font
- Definition Classes
- UIElement
- def font_=(f: Font): Unit
- Definition Classes
- UIElement
- def foreground: scala.swing.Color
- Definition Classes
- UIElement
- def foreground_=(c: scala.swing.Color): Unit
- Definition Classes
- UIElement
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hasFocus: Boolean
- Definition Classes
- Component
- def hashCode(): Int
- Definition Classes
- Proxy → Any
- def ignoreRepaint: Boolean
- Definition Classes
- UIElement
- def ignoreRepaint_=(b: Boolean): Unit
- Definition Classes
- UIElement
- def inputVerifier: (Component) => Boolean
- Definition Classes
- Component
- def inputVerifier_=(v: (Component) => Boolean): Unit
- Definition Classes
- Component
- def isDone: Boolean
Determines if the given state is a “done state” for the view.
Determines if the given state is a “done state” for the view. By default, this is never the case, but that behavior can be overridden.
Once done, the view stops reacting to events and updating its graphics and may close its GUI window, depending on the constructor parameters of the view.
- Definition Classes
- ControlDefaults
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isPaused: Boolean
Indicates whether the view is paused.
Indicates whether the view is paused. By default, always returns
false
.- Definition Classes
- ControlDefaults → Controls
- See also
- def listenTo(ps: Publisher*): Unit
- Definition Classes
- Reactor
- val listeners: RefSet[Reaction]
- Attributes
- protected
- Definition Classes
- Publisher
- def locale: Locale
- Definition Classes
- UIElement
- def location: Point
- Definition Classes
- UIElement
- def locationOnScreen: Point
- Definition Classes
- UIElement
- def maximumSize: Dimension
- Definition Classes
- UIElement
- def maximumSize_=(x: Dimension): Unit
- Definition Classes
- UIElement
- def minimumSize: Dimension
- Definition Classes
- UIElement
- def minimumSize_=(x: Dimension): Unit
- Definition Classes
- UIElement
- def model: Model
the model object represented in the view.
the model object represented in the view.
- Definition Classes
- HasModelField
- def name: String
- Definition Classes
- Component
- def name_=(s: String): Unit
- Definition Classes
- Component
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def onClick(event: event.MouseClicked): Unit
Causes an effect whenever a mouse button is clicked (pressed+released, possibly multiple times in sequence) above the view.
Causes an effect whenever a mouse button is clicked (pressed+released, possibly multiple times in sequence) above the view. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onClick(position: Pos): Unit
Causes an effect whenever a mouse button is clicked (pressed+released, possibly multiple times in sequence) above the view.
Causes an effect whenever a mouse button is clicked (pressed+released, possibly multiple times in sequence) above the view. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- position
the position of the mouse cursor relative to the view’s top left-hand corner
- Definition Classes
- ControlDefaults
- def onFirstSubscribe(): Unit
- Attributes
- protected
- Definition Classes
- Component → UIElement → LazyPublisher
- def onKeyDown(event: event.KeyPressed): Unit
Causes an effect whenever a key on the keyboard is pressed down while the view has the keyboard focus.
Causes an effect whenever a key on the keyboard is pressed down while the view has the keyboard focus. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onKeyDown(key: Key): Unit
Causes an effect whenever a key on the keyboard is pressed down while the view has the keyboard focus.
Causes an effect whenever a key on the keyboard is pressed down while the view has the keyboard focus. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- key
the key that was pressed down
- Definition Classes
- ControlDefaults
- def onKeyUp(event: event.KeyReleased): Unit
Causes an effect whenever a key on the keyboard is released while the view has the keyboard focus.
Causes an effect whenever a key on the keyboard is released while the view has the keyboard focus. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onKeyUp(key: Key): Unit
Causes an effect whenever a key on the keyboard is released while the view has the keyboard focus.
Causes an effect whenever a key on the keyboard is released while the view has the keyboard focus. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- key
the key that was released
- Definition Classes
- ControlDefaults
- def onLastUnsubscribe(): Unit
- Attributes
- protected
- Definition Classes
- UIElement → LazyPublisher
- def onMouseDown(event: event.MousePressed): Unit
Causes an effect whenever a mouse button is pressed down above the view.
Causes an effect whenever a mouse button is pressed down above the view. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onMouseDown(position: Pos): Unit
Causes an effect whenever a mouse button is pressed down above the view.
Causes an effect whenever a mouse button is pressed down above the view. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- position
the position of the mouse cursor relative to the view’s top left-hand corner
- Definition Classes
- ControlDefaults
- def onMouseDrag(event: event.MouseDragged): Unit
Causes an effect whenever the mouse cursor is dragged above the view.
Causes an effect whenever the mouse cursor is dragged above the view. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onMouseDrag(position: Pos): Unit
Causes an effect whenever the mouse cursor is dragged above the view.
Causes an effect whenever the mouse cursor is dragged above the view. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- position
the position of the mouse cursor relative to the view’s top left-hand corner
- Definition Classes
- ControlDefaults
- def onMouseEnter(event: event.MouseEntered): Unit
Causes an effect whenever the mouse cursor enters the view.
Causes an effect whenever the mouse cursor enters the view. Does nothing by default but can be overridden.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onMouseExit(event: event.MouseExited): Unit
Causes an effect whenever the mouse cursor exits the view.
Causes an effect whenever the mouse cursor exits the view. Does nothing by default but can be overridden.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onMouseMove(event: event.MouseMoved): Unit
Causes an effect whenever the mouse cursor moves above the view.
Causes an effect whenever the mouse cursor moves above the view. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onMouseMove(position: Pos): Unit
Causes an effect whenever the mouse cursor moves above the view.
Causes an effect whenever the mouse cursor moves above the view. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- position
the position of the mouse cursor relative to the view’s top left-hand corner
- Definition Classes
- ControlDefaults
- def onMouseUp(event: event.MouseReleased): Unit
Causes an effect whenever a mouse button is released above the view.
Causes an effect whenever a mouse button is released above the view. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onMouseUp(position: Pos): Unit
Causes an effect whenever a mouse button is released above the view.
Causes an effect whenever a mouse button is released above the view. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- position
the position of the mouse cursor relative to the view’s top left-hand corner
- Definition Classes
- ControlDefaults
- def onStop(): Unit
Causes an additional effect when the view is stopped (with
stop()
).Causes an additional effect when the view is stopped (with
stop()
). By default, this method does nothing.- Definition Classes
- ControlDefaults → Controls
- def onTick(time: Long): Unit
Causes an effect whenever the view’s internal clock ticks.
Causes an effect whenever the view’s internal clock ticks. Does nothing by default but can be overridden.
If you don’t need the number of the clock tick, you may find it simpler to implement the other method of the same name instead of this one.
- time
the running number of the clock tick (the first tick being number 1, the second 2, etc.)
- Definition Classes
- ControlDefaults
- def onTick(): Unit
Causes an effect whenever the view’s internal clock ticks.
Causes an effect whenever the view’s internal clock ticks. Does nothing by default but can be overridden.
- Definition Classes
- ControlDefaults
- def onType(event: event.KeyTyped): Unit
Causes an effect whenever a key on the keyboard is typed (pressed+released) while the view has the keyboard focus.
Causes an effect whenever a key on the keyboard is typed (pressed+released) while the view has the keyboard focus. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onType(character: Char): Unit
Causes an effect whenever a key on the keyboard is typed (pressed+released) while the view has the keyboard focus.
Causes an effect whenever a key on the keyboard is typed (pressed+released) while the view has the keyboard focus. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- character
the key that was typed
- Definition Classes
- ControlDefaults
- def onWheel(event: event.MouseWheelMoved): Unit
Causes an effect whenever the mouse wheel is rotated above the view.
Causes an effect whenever the mouse wheel is rotated above the view. Does nothing by default but can be overridden.
If you don’t need much information about the GUI event, you may find it simpler to implement the other method of the same name instead of this one.
- event
the GUI event that caused this handler to be called
- Definition Classes
- ControlDefaults
- def onWheel(rotation: Int): Unit
Causes an effect whenever the mouse wheel is rotated above the view.
Causes an effect whenever the mouse wheel is rotated above the view. Does nothing by default but can be overridden.
If the desired behavior depends on detailed information about the GUI event, you may want to implement the other method of the same name instead of this one.
- rotation
the number of steps the wheel rotated (negative means up, positive down)
- Definition Classes
- ControlDefaults
- def opaque: Boolean
- Definition Classes
- Component
- def opaque_=(b: Boolean): Unit
- Definition Classes
- Component
- def paint(g: Graphics2D): Unit
- Definition Classes
- Component
- def paintBorder(g: Graphics2D): Unit
- Attributes
- protected
- Definition Classes
- Component
- def paintChildren(g: Graphics2D): Unit
- Attributes
- protected
- Definition Classes
- Component
- final def paintComponent(myGraphics: Graphics2D): Unit
Renders the view as a Java AWT
BufferedImage
onto the component.Renders the view as a Java AWT
BufferedImage
onto the component.- Definition Classes
- ViewComponent → Component
- lazy val peer: JComponent
- Definition Classes
- Component → UIElement
- def preferredSize: Dimension
- Definition Classes
- UIElement
- def preferredSize_=(x: Dimension): Unit
- Definition Classes
- UIElement
- def publish(e: Event): Unit
- Definition Classes
- Publisher
- val reactions: Reactions
- Definition Classes
- Reactor
- final def refresh(): Unit
Programmatically requests an update to the graphics of the view (even though no clock tick or triggering GUI event occurred).
Programmatically requests an update to the graphics of the view (even though no clock tick or triggering GUI event occurred).
- Definition Classes
- ViewComponent
- val refreshPolicy: RefreshPolicy
- Definition Classes
- ViewComponent
- def repaint(rect: Rectangle): Unit
- Definition Classes
- UIElement
- def repaint(): Unit
- Definition Classes
- UIElement
- def requestFocus(): Unit
- Definition Classes
- Component
- def requestFocusInWindow(): Boolean
- Definition Classes
- Component
- def revalidate(): Unit
- Definition Classes
- Component
- def self: Any
- Definition Classes
- UIElement → Proxy
- def showing: Boolean
- Definition Classes
- UIElement
- final def simulate(tickLimit: Int = Int.MaxValue): Unit
Runs the view as if by calling start except that it runs “headless”, without expectation of being visible in a GUI and independently of a real-time clock.
Runs the view as if by calling start except that it runs “headless”, without expectation of being visible in a GUI and independently of a real-time clock. A number of simulated clock ticks are immediately sent to the view; this continues until either the view determines it is done or a predetermined maximum number of ticks has been reached.
- tickLimit
the maximum number of ticks to simulate;
Int.MaxValue
(which is the default) means there is no such limit
- Definition Classes
- ViewComponent → Controls
- def size: Dimension
- Definition Classes
- UIElement
- def sound: Option[sound.sampled.Sound]
Determines whether the view should play a sound, given the current state of its model.
Determines whether the view should play a sound, given the current state of its model. By default, no sounds are played.
- returns
a Sound that the view should play;
None
if no sound is appropriate for the current state
- Definition Classes
- ControlDefaults
- final def start(): Unit
Starts the view: loads the model into the component and starts the clock.
Starts the view: loads the model into the component and starts the clock. Cf. simulate.
- Definition Classes
- ViewComponent → Controls
- final def stop(): Unit
Stops the view: stops the clock and stops listening to events.
Stops the view: stops the clock and stops listening to events. A stopped view cannot be restarted.
- Definition Classes
- ViewComponent
- def subscribe(listener: Reaction): Unit
- Definition Classes
- LazyPublisher → Publisher
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString: String
Returns a brief textual description of the view.
Returns a brief textual description of the view.
- Definition Classes
- ViewComponent → Component → Proxy → AnyRef → Any
- def toolkit: Toolkit
- Definition Classes
- UIElement
- def tooltip: String
- Definition Classes
- Component
- def tooltip_=(t: String): Unit
- Definition Classes
- Component
- final def traced: Traced[String]
Returns a
View
that stores a trace of the ticks and GUI events that its event handlers process.Returns a
View
that stores a trace of the ticks and GUI events that its event handlers process. This parameterless method stores, at each event, thetoString
description of theView
’s (mutable) model. This is equivalent to calling tracedWith and passing in thattoString
method.- Definition Classes
- ControlDefaults
- final def tracedPics: Traced[Pic]
Returns a
View
that stores a pictorial trace of the ticks and GUI events that theView
’s event handlers process.Returns a
View
that stores a pictorial trace of the ticks and GUI events that theView
’s event handlers process. This is equivalent to calling tracedWith and passing in theView
’smakePic
method.- Definition Classes
- ControlDefaults
- final def tracedWith[TraceData](extractTrace: (Model) => TraceData): Traced[TraceData]
Returns a view that collects of the ticks and GUI events that the
View
’s event handlers process, using the given function to generate that trace.Returns a view that collects of the ticks and GUI events that the
View
’s event handlers process, using the given function to generate that trace. That trace-collecting view, which an instance of the Traced subclass, delegates the actual event handling to this original view but provides an additional interface for tracing.- TraceData
the type of the model-state descriptions in the trace
- extractTrace
a function that determines how to describe a model state in the generated trace
- Definition Classes
- ViewComponent → ControlDefaults
- See also
- def unsubscribe(listener: Reaction): Unit
- Definition Classes
- LazyPublisher → Publisher
- def validate(): Unit
- Definition Classes
- UIElement
- def visible: Boolean
- Definition Classes
- UIElement
- def visible_=(b: Boolean): Unit
- Definition Classes
- UIElement
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- def xLayoutAlignment: Double
- Definition Classes
- Component
- def xLayoutAlignment_=(x: Double): Unit
- Definition Classes
- Component
- def yLayoutAlignment: Double
- Definition Classes
- Component
- def yLayoutAlignment_=(y: Double): Unit
- Definition Classes
- Component
- object keys extends Publisher
- Definition Classes
- Component
- object mouse
- Definition Classes
- Component
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated @deprecated
- Deprecated
(Since version ) see corresponding Javadoc for more information.