classdef View < matlab.ui.componentcontainer.ComponentContainer
properties ( Access = private )
Line(1, 1) matlab.graphics.primitive.Line
Model(1, 1) Model
Listener(:, 1) event.listener {mustBeScalarOrEmpty}
end
methods
function obj = View( model, namedArgs )
arguments
model(1, 1) Model
namedArgs.?View
end
obj@matlab.ui.componentcontainer.ComponentContainer( ...
"Parent", [], ...
"Units", "normalized", ...
"Position", [0, 0, 1, 1] )
obj.Model = model;
obj.Listener = listener( obj.Model, ...
"DataChanged", @obj.onDataChanged );
set( obj, namedArgs )
onDataChanged( obj )
end
end
methods ( Access = protected )
function setup( obj )
.
ax = axes( "Parent", obj );
obj.Line = line( ...
"Parent", ax, ...
"XData", NaN, ...
"YData", NaN, ...
"Color", ax.ColorOrder(1, :), ...
"LineWidth", 1.5 );
end
function update( ~ )
end
end
methods ( Access = private )
function onDataChanged( obj, ~, ~ )
data = obj.Model.Data;
set( obj.Line, "XData", 1:numel( data ), "YData", data )
end
end
end