O1Library Docs
Fall 2023
Docs API

# TraceGeneratingView

o1.gui.viewimpl.default$.mutable$.TraceGeneratingView
trait TraceGeneratingView[Model, TraceData] extends Controls[Model], GeneratesTrace[Model, TraceData]

## Attributes

Graph
Supertypes
  trait GeneratesTrace[Model, TraceData]
  trait Controls[Model]
  trait Fast
  class Object
  trait Matchable
  class Any
  Show all
Known subtypes
  class Traced[TraceData]
  class Traced[TraceData]

## Members list

### Value members

#### Concrete methods

override def isDone: Boolean

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

Definition Classes
  Controls

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 `Pic`s of equal dimensions.

## Attributes

override def onClick(position: Pos): Unit

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

Definition Classes
  Controls

override def onClick(event: MouseClicked): Unit

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

Definition Classes
  Controls

override def onKeyDown(key: Key): Unit

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

Definition Classes
  Controls

override def onKeyDown(event: KeyPressed): Unit

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

Definition Classes
  Controls

override 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

Definition Classes
  Controls

override def onKeyUp(event: KeyReleased): 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 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

Definition Classes
  Controls

override def onMouseDown(position: Pos): Unit

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

Definition Classes
  Controls

override def onMouseDown(event: MousePressed): Unit

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

Definition Classes
  Controls

override def onMouseDrag(position: Pos): Unit

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

Definition Classes
  Controls

override def onMouseDrag(event: MouseDragged): Unit

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

Definition Classes
  Controls

override def onMouseEnter(event: MouseEntered): Unit

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

Definition Classes
  Controls

override def onMouseExit(event: MouseExited): Unit

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

Definition Classes
  Controls

override def onMouseMove(position: Pos): Unit

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

Definition Classes
  Controls

override def onMouseMove(event: MouseMoved): Unit

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

Definition Classes
  Controls

override def onMouseUp(position: Pos): Unit

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

Definition Classes
  Controls

override def onMouseUp(event: MouseReleased): Unit

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

Definition Classes
  Controls

override 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

Definition Classes
  Controls

override 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

Definition Classes
  Controls

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

Definition Classes
  Controls

override def onType(event: KeyTyped): Unit

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

Definition Classes
  Controls

override def onWheel(rotation: Int): Unit

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

Definition Classes
  Controls

override def onWheel(event: MouseWheelMoved): Unit

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

Definition Classes
  Controls

override def sound: Option[Sound]

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

Definition Classes
  Controls

#### Inherited methods

final override def isPaused: Boolean

Indicates whether the view is paused. This implementation delegates to the underlying `View` that is being traced.

Indicates whether the view is paused. This implementation delegates to the underlying `View` that is being traced.

## Attributes

Definition Classes
  GeneratesTrace -> Controls
Inherited from:
  GeneratesTrace

def model: Model

the model object represented in the view.

the model object represented in the view.

## Attributes

Inherited from:
  HasModelField (hidden)

final override def onStop(): Unit

Causes an additional effect when the view is stopped (with `stop()`). This implementation delegates to the underlying `View` that is being traced. In addition, if the traced view had been started with `startAndGet` and reaches its tick limit before being done, this method causes the returned future to complete with a failure.

Causes an additional effect when the view is stopped (with `stop()`). This implementation delegates to the underlying `View` that is being traced. In addition, if the traced view had been started with `startAndGet` and reaches its tick limit before being done, this method causes the returned future to complete with a failure.

## Attributes

Definition Classes
  GeneratesTrace -> Controls
Inherited from:
  GeneratesTrace

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:
  Controls

def simulate(tickLimit: Int): Unit

## Attributes

Inherited from:
  Controls (hidden)

final def simulateAndGet(tickLimit: Int): Seq[(TraceData, TraceEvent)]

Simulates this trace-generating view with simulate and returns the resulting trace. This is equivalent to calling first simulate, then trace. See also startAndGet.

Simulates this trace-generating view with simulate and returns the resulting trace. This is equivalent to calling first simulate, then trace. See also startAndGet.

## Parameters

tickLimit

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

## Attributes

Inherited from:
  GeneratesTrace

def start(): Unit

## Attributes

Inherited from:
  Controls (hidden)

final def startAndGet(tickLimit: Long): Future[Seq[(TraceData, TraceEvent)]]

Starts this trace-generating view with start and returns a Future that evaluates to the resulting trace. The `Future` succeeds when the view is done; if the view isn’t done after a given number of clock ticks, the `Future` fails with TraceAborted, producing a partial trace. See also simulateAndGet.

Starts this trace-generating view with start and returns a Future that evaluates to the resulting trace. The `Future` succeeds when the view is done; if the view isn’t done after a given number of clock ticks, the `Future` fails with TraceAborted, producing a partial trace. See also simulateAndGet.

## Parameters

tickLimit

  the maximum number of ticks to process before the future completes with a failure; defaults to `Long.MaxValue`

## Attributes

Inherited from:
  GeneratesTrace

final override def toString: String

Returns a brief textual description of the view.

Returns a brief textual description of the view.

## Attributes

Definition Classes
  GeneratesTrace -> Any
Inherited from:
  GeneratesTrace

final def trace: Seq[(TraceData, TraceEvent)]

Returns a trace of the events processed by this view. The trace comes in a collection of pairs, each of which is composed of a `TraceData` value that describes at the time of the event and a TraceEvent value that describes the event itself.

Returns a trace of the events processed by this view. The trace comes in a collection of pairs, each of which is composed of a `TraceData` value that describes at the time of the event and a TraceEvent value that describes the event itself.

## Attributes

Inherited from:
  GeneratesTrace

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