Robochameleon  v1.0
module_view.m
Go to the documentation of this file.
1 classdef module_view
2  properties(GetAccess=private,SetAccess=private,Hidden)
3  biograph_struct;
4  internalUnits;
5  label;
6  end
7 
8  methods (Access=public)
9  function obj=module_view(biograph_struc,internalUnits,label)
10  % Setter
11  obj.biograph_struct = biograph_struc;
12  obj.internalUnits = internalUnits;
13  obj.label = label;
14 
15  % Create and show biograph
16  obj.createBiograph();
17  end
18 
19  function node_callback(obj,node)
20  obj.internalUnits{node.UserData}.view();
21  end
22  end
23 
24  methods (Access=private)
25  function createBiograph(obj)
26  if isempty(obj.biograph_struct.dg) % no edges
27  warning('Module %s encloses no units. No graph will be drawn.',obj.biograph_struct.label);
28  elseif isscalar(obj.biograph_struct.dg) % one edge
29  warning('Module %s encloses only one unit. No graph will be drawn.',obj.biograph_struct.label);
30  else % more than one edge
31  bg = biograph(obj.biograph_struct.dg);
32  set(bg, 'NodeCallbacks', @(node)obj.node_callback(node))
33  bg.ShowTextInNodes = 'Label';
34  N = numel(obj.internalUnits);
35  for i=1:N
36  bg.Nodes(i).Label = obj.biograph_struct.labels{i};
37  bg.Nodes(i).Description = '';
38  bg.Nodes(i).UserData = i;
39 % if(obj.internalUnits{i}.debugMode)
40 % bg.Nodes(i).Shape = 'house';
41 % end
42  classes = superclasses(obj.internalUnits{i});
43  switch classes{1}
44  case 'unit'
45  bg.Nodes(i).Color = [1 1 1];
46  case 'module'
47  bg.Nodes(i).Color = [200 200 200]/255;
48  end
49  end
50  view(bg);
51  handles = allchild(0);
52  hg = handles(1);
53  hg.Name = obj.label;
54  end
55  end
56  end
57 end
58 
Superclass: basic building block to hold functions.
Definition: unit.m:27
Superclass: graphical interface for units.
Definition: module_view.m:16