ViewComponent

o1.gui.mutable.ViewComponent

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.

Type parameters

Model

the type of the model object

Parameters

initialDelay

an additional delay in milliseconds between calling start and the clock starting (optional; defaults to 600)

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).

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)

tickRate

the clock of the view will tick roughly this many times per second (optional; defaults to 24)

Attributes

Graph
Supertypes
trait Controls[Model]
trait Fast
class ViewComponentImpl[Model]
class Component
trait UIElement
trait Publisher
trait Reactor
trait Proxy
class Object
trait Matchable
class Any
Show all
Known subtypes
class Traced[TraceData]

Members list

Type members

Classlikes

final class Traced[TraceData](val extractTrace: Model => TraceData) extends ViewComponent[Model], TraceGeneratingView[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. Provides additional methods for accessing such traces: trace, simulateAndGet, and startAndGet. A few examples of using these methods are given below.

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’äs model.

for (traceItem, traceEvent) <- myTracedView.simulateAndGet(500) do
   println(traceEvent + ": " + traceItem)

Or, equivalently:

myTracedView.simulate(500)
 for (traceItem, traceEvent) <- myTracedView.trace do
   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 by descriptions of the view’s model.

val futureTrace = myTracedView.startAndGet(tickLimit=100) recover {
   case Aborted(message, partialTrace) => partialTrace
 }
 for trace <- futureTrace; (traceItem, traceEvent) <- trace do
   println(traceEvent + ": " + traceItem)

Type parameters

TraceData

the type of the model-state descriptions in the trace

Parameters

extractTrace

a function that determines how to describe a model state in the generated trace

Attributes

Supertypes
trait TraceGeneratingView[Model, TraceData]
trait GeneratesTrace[Model, TraceData]
class ViewComponent[Model]
trait Controls[Model]
trait Fast
class ViewComponentImpl[Model]
class Component
trait UIElement
trait Publisher
trait Reactor
trait Proxy
class Object
trait Matchable
class Any
Show all

Inherited classlikes

object keys extends Publisher

Attributes

Inherited from:
Component
Supertypes
trait Publisher
trait Reactor
class Object
trait Matchable
class Any
object mouse

Contains publishers for various mouse events. They are separated for efficiency reasons.

Contains publishers for various mouse events. They are separated for efficiency reasons.

Attributes

Inherited from:
Component
Supertypes
class Object
trait Matchable
class Any

Value members

Concrete methods

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. 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.

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.

Type parameters

TraceData

the type of the model-state descriptions in the trace

Parameters

extractTrace

a function that determines how to describe a model state in the generated trace

Attributes

See also

Inherited methods

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.

Attributes

Inherited from:
ViewComponentImpl

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement
def border: Border

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement
def cursor: Cursor

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Installed reaction won't receive events from the given publisher anylonger.

Installed reaction won't receive events from the given publisher anylonger.

Attributes

Inherited from:
Reactor

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component
override def equals(that: Any): Boolean

Compares the receiver object (this) with the argument object (that) for equivalence.

Compares the receiver object (this) with the argument object (that) for equivalence.

Any implementation of this method should be an equivalence relation:

  • It is reflexive: for any instance x of type Any, x.equals(x) should return true.
  • It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any instances x, y, and z of type Any if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is usually necessary to override hashCode to ensure that objects which are "equal" (o1.equals(o2) returns true) hash to the same scala.Int. (o1.hashCode.equals(o2.hashCode)).

Parameters

that

the object to compare against this object for equality.

Attributes

Returns

true if the receiver object is equivalent to the argument; false otherwise.

Definition Classes
Proxy -> Any
Inherited from:
Proxy

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component
def font: Font

Attributes

Inherited from:
UIElement
def font_=(f: Font): Unit

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
Component
override def hashCode(): Int

Calculates a hash code value for the object.

Calculates a hash code value for the object.

The default hashing algorithm is platform dependent.

Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

Attributes

Returns

the hash code value for this object.

Definition Classes
Proxy -> Any
Inherited from:
Proxy

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

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.

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.

Attributes

Inherited from:
Controls
override def isPaused: Boolean

Indicates whether the view is paused. By default, always returns false.

Indicates whether the view is paused. By default, always returns false.

Attributes

See also
Definition Classes
Inherited from:
Controls

Listen to the given publisher as long as deafTo isn't called for them.

Listen to the given publisher as long as deafTo isn't called for them.

Attributes

Inherited from:
Reactor
def locale: Locale

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement
def model: Model

the model object represented in the view.

the model object represented in the view.

Attributes

Inherited from:
HasModelField (hidden)
def name: String

Attributes

Inherited from:
Component
def name_=(s: String): Unit

Attributes

Inherited from:
Component

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.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

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.

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.

Parameters

position

the position of the mouse cursor relative to the view’s top left-hand corner

Attributes

Inherited from:
Controls

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.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

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.

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.

Parameters

key

the key that was pressed down

Attributes

Inherited from:
Controls

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.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls
def onKeyUp(key: Key): Unit

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.

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.

Parameters

key

the key that was released

Attributes

Inherited from:
Controls

Causes an effect whenever a mouse button is pressed down above the view. Does nothing by default but can be overridden.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever a mouse button is pressed down above the view. Does nothing by default but can be overridden.

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.

Parameters

position

the position of the mouse cursor relative to the view’s top left-hand corner

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse cursor is dragged above the view. Does nothing by default but can be overridden.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse cursor is dragged above the view. Does nothing by default but can be overridden.

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.

Parameters

position

the position of the mouse cursor relative to the view’s top left-hand corner

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse cursor enters the view. Does nothing by default but can be overridden.

Causes an effect whenever the mouse cursor enters the view. Does nothing by default but can be overridden.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse cursor exits the view. Does nothing by default but can be overridden.

Causes an effect whenever the mouse cursor exits the view. Does nothing by default but can be overridden.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse cursor moves above the view. Does nothing by default but can be overridden.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse cursor moves above the view. Does nothing by default but can be overridden.

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.

Parameters

position

the position of the mouse cursor relative to the view’s top left-hand corner

Attributes

Inherited from:
Controls

Causes an effect whenever a mouse button is released above the view. Does nothing by default but can be overridden.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever a mouse button is released above the view. Does nothing by default but can be overridden.

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.

Parameters

position

the position of the mouse cursor relative to the view’s top left-hand corner

Attributes

Inherited from:
Controls
override def onStop(): Unit

Causes an additional effect when the view is stopped (with stop()). By default, this method does nothing.

Causes an additional effect when the view is stopped (with stop()). By default, this method does nothing.

Attributes

Definition Classes
Inherited from:
Controls
def onTick(time: Long): Unit

Causes an effect whenever the view’s internal clock ticks. Does nothing by default but can be overridden.

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.

Parameters

time

the running number of the clock tick (the first tick being number 1, the second 2, etc.)

Attributes

Inherited from:
Controls
def onTick(): Unit

Causes an effect whenever the view’s internal clock ticks. Does nothing by default but can be overridden.

Causes an effect whenever the view’s internal clock ticks. Does nothing by default but can be overridden.

Attributes

Inherited from:
Controls

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.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

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.

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.

Parameters

character

the key that was typed

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse wheel is rotated above the view. Does nothing by default but can be overridden.

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.

Parameters

event

the GUI event that caused this handler to be called

Attributes

Inherited from:
Controls

Causes an effect whenever the mouse wheel is rotated above the view. Does nothing by default but can be overridden.

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.

Parameters

rotation

the number of steps the wheel rotated (negative means up, positive down)

Attributes

Inherited from:
Controls

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

Renders the view as a Java AWT BufferedImage onto the component.

Renders the view as a Java AWT BufferedImage onto the component.

Attributes

Definition Classes
Inherited from:
ViewComponentImpl

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement
def publish(e: Event): Unit

Notify all registered reactions.

Notify all registered reactions.

Attributes

Inherited from:
Publisher
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).

Attributes

Inherited from:
ViewComponentImpl

Attributes

Inherited from:
UIElement
def repaint(): Unit

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component
def revalidate(): Unit

Attributes

Inherited from:
Component
def self: Any

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement
final def simulate(tickLimit: Int): 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. 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.

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.

Parameters

tickLimit

the maximum number of ticks to simulate; Int.MaxValue (which is the default) means there is no such limit

Attributes

Inherited from:
ViewComponentImpl

Attributes

Inherited from:
UIElement

Determines whether the view should play a sound, given the current state of its model. By default, no sounds are played.

Determines whether the view should play a sound, given the current state of its model. By default, no sounds are played.

Attributes

Returns

a Sound that the view should play; None if no sound is appropriate for the current state

Inherited from:
Controls
final def start(): Unit

Starts the view: loads the model into the component and starts the clock. Cf. simulate.

Starts the view: loads the model into the component and starts the clock. Cf. simulate.

Attributes

Inherited from:
ViewComponentImpl
final def stop(): Unit

Stops the view: stops the clock and stops listening to events. A stopped view cannot be restarted.

Stops the view: stops the clock and stops listening to events. A stopped view cannot be restarted.

Attributes

Inherited from:
ViewComponentImpl
override def subscribe(listener: Reaction): Unit

Attributes

Definition Classes
Inherited from:
LazyPublisher (hidden)
override def toString: String

Returns a brief textual description of the view.

Returns a brief textual description of the view.

Attributes

Definition Classes
Inherited from:
ViewComponentImpl

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component
final def traced: Traced[String]

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, the toString description of the View’s (mutable) model. This is equivalent to calling tracedWith and passing in that toString method.

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, the toString description of the View’s (mutable) model. This is equivalent to calling tracedWith and passing in that toString method.

Attributes

Inherited from:
Controls
final def tracedPics: Traced[Pic]

Returns a View that stores a pictorial trace of the ticks and GUI events that the View’s event handlers process. This is equivalent to calling tracedWith and passing in the View’s makePic method.

Returns a View that stores a pictorial trace of the ticks and GUI events that the View’s event handlers process. This is equivalent to calling tracedWith and passing in the View’s makePic method.

Attributes

Inherited from:
Controls
override def unsubscribe(listener: Reaction): Unit

Attributes

Definition Classes
Inherited from:
LazyPublisher (hidden)
def validate(): Unit

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Attributes

Inherited from:
UIElement

Used by certain layout managers, e.g., BoxLayout or OverlayLayout to align components relative to each other.

Used by certain layout managers, e.g., BoxLayout or OverlayLayout to align components relative to each other.

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

Attributes

Inherited from:
Component

Inherited and Abstract methods

def makePic: Pic

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.

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 Pics of equal dimensions.

Attributes

Inherited from:
Controls

Inherited fields

protected val listeners: RefSet[Reaction]

Attributes

Inherited from:
Publisher
lazy override val peer: JComponent

The underlying Swing peer.

The underlying Swing peer.

Attributes

Inherited from:
Component

All reactions of this reactor.

All reactions of this reactor.

Attributes

Inherited from:
Reactor