No BSD License  

Highlights from
Graphic User Object (GUO) Toolbox

image thumbnail
from Graphic User Object (GUO) Toolbox by David Mackenzie
Programming tool for creating reusable Graphic User Interface (GUI) components.

TableDemo(Action);
function TableDemo(Action);

persistent Handles T;

% function TableDemo(Action);
% 
% Demonstrates the table class.
% The Action argument selects the button callback code
% and should not be supplied from the command line.
%
% Copyright (c) SINUS Messtechnik GmbH 2002
% www.sinusmess.de - Sound & Vibration Instrumentation
%                  - PCB Services
%                  - Electronic Design & Production

if nargin == 0
   % No Action parameter supplied:  create figure, table and other controls
   
   % Create figure and initialise data
   Handles.TableDemoFig = figure;
   set(Handles.TableDemoFig, 'Position', [50 50 800 420], ...
                             'Name', 'Table Test', ...
                             'ResizeFcn', 'TableDemo(''Resize'')');
   RowMax = 10;
   ColMax = 15;
   load PSE.mat;
   
   % Create table object with visible frame, create table controls and assign data
   T = table(Handles.TableDemoFig, 'Units', 'pixels', ...
                                   'Position', [10 40 780 370], ...
                                   'Visible', 'on');
   T = controls(T, RowMax, ColMax, 'ForegroundColor', 'red');
   T{:,:} = PSE;  % Assign data to table (can also be indexed specifically)
   
   % Create pushbuttons on figure
   Handles.SaveData    = uicontrol(Handles.TableDemoFig, ...
                                   'Style', 'pushbutton', ...
                                   'Position', [10 10 90 20], ...
                                   'String', 'Save Data', ...
                                   'Callback', 'TableDemo(''SaveData'')');
   Handles.RemoveTable = uicontrol(Handles.TableDemoFig, ...
                                   'Style', 'pushbutton', ...
                                   'Position', [100 10 90 20], ...
                                   'String', 'Remove Table', ...
                                   'Callback', 'TableDemo(''RemoveTable'')');                       
   Handles.Scroll      = uicontrol(Handles.TableDemoFig, ...
                                   'Style', 'pushbutton', ...
                                   'Position', [190 10 90 20], ...
                                   'String', 'Scroll to 3,4', ...
                                   'Callback', 'TableDemo(''Scroll'')');                       
   Handles.ScrollBack  = uicontrol(Handles.TableDemoFig, ...
                                   'Style', 'pushbutton', ...
                                   'Position', [280 10 90 20], ...
                                   'String', 'Scroll to 1,1', ...
                                   'Callback', 'TableDemo(''ScrollBack'')');                       
   Handles.SetMagic    = uicontrol(Handles.TableDemoFig, ...
                                   'Style', 'pushbutton', ...
                                   'Position', [370 10 90 20], ...
                                   'String', 'Set Magic Square', ...
                                   'Callback', 'TableDemo(''SetMagic'')');                       

else
   % Action argument supplied (selects callback function for figure or control).
   % Other callbacks are handled automatically in the table class directory.
   
   switch Action
   case 'Resize'       % ResizeFcn of Handles.TableDemoFig
      FigurePos = get(Handles.TableDemoFig, 'Position');
      TablePos = get(T, 'Position');
      TablePos(3) = FigurePos(3) - 20;
      TablePos(4) = FigurePos(4) - 50;
      T = set(T, 'Position', TablePos);
   case 'SaveData'     % Assign data from table (can also be indexed specifically)
      a = T{:,:};
      save save.mat a;
   case 'RemoveTable'  % Delete table
      T = delete(T);
      set(Handles.SaveData,    'Enable','off');
      set(Handles.RemoveTable, 'Enable','off');
      set(Handles.Scroll,      'Enable','off');
      set(Handles.ScrollBack,  'Enable','off');
      set(Handles.SetMagic,    'Enable','off');
   case 'Scroll'       % Set coordinates of upper left corner displayed within table
      T = scroll(T, 3, 4);
   case 'ScrollBack'   % Set coordinates of upper left corner displayed within table
      T = scroll(T, 1, 1);
   case 'SetMagic'     % Assign data to table (indexed specifically)
      T(1:5,3:7) = num2cell(magic(5));
   otherwise           % This should never happen...
      msgbox(['Unknown Action: ' Action], 'TableDemo', 'error');
   end
end

Contact us at files@mathworks.com