function sl_customization(cm)

% Copyright 1990-2013 The MathWorks, Inc.
% $Revision: 1.1.8.1 $
   
    cm.addCustomMenuFcn('Simulink:ContextMenu',@getMyMenuItems);
    cm.addCustomFilterFcn('sig_call_back',@myFilter);
end

%% Define the custom menu function.
function schemaFcns = getMyMenuItems(callbackInfo) 
  schemaFcns = {@getItem1}; 
end

%% create filter for menu to appear only for Simscape Probe blocks
function state = myFilter(callbackInfo)
  if strmatch(get_param(gcb,'maskdescription'),'Simscape Probe','exact')
    state = 'Enabled';
  else
    state = 'Hidden';
  end
end


%% Define the schema function for first menu item.
function schema = getItem1(callbackInfo)
  schema = sl_container_schema;
  if strmatch(get_param(gcb,'maskdescription'),'Simscape Probe','exact')
    schema.state = 'Enabled';
    schema.childrenFcns = {@units, @outPort @tagType}; 
    schema.label = 'Configure Probe';
  else
    schema.state = 'Hidden';
  end
end
%% Define Sub-menu entries
function schema = units(callbackInfo)
  schema = sl_action_schema;
  schema.label = 'Set Units';
  schema.callback = @setUnits;
end

function schema = outPort(callbackInfo)
  schema = sl_action_schema;
  schema.label = 'Add Output Port';
  schema.callback = @addOutputPort;
end

function schema = tagType(callbackInfo)
  schema = sl_toggle_schema;
  schema.label = 'Global';
  if strcmp(get_param([gcb, '/Goto'], 'TagVisibility'),'global') == 1
    schema.checked = 'checked';
  else
    schema.checked = 'unchecked';
  end
  schema.callback = @setTag;
end

%% Function callbacks from menu options
function setUnits(callbackInfo)

open_system([gcb, '/PS-S']) % Open PS-S dialog box to set units
    
end

function addOutputPort(callbackInfo)
p=get_param([gcb, '/PS-S'],'Position'); % get position of PS-S block as a reference
hOutblock = add_block('built-in/Outport', [gcb '/Out'],...
            'MakeNameUnique', 'on','Position', ...
            [p(1)+150 p(2)+100 p(3)+175 p(4)+100]); 
add_line(gcb, ['PS-S', '/1'], ['Out', '/1'],'autorouting','on');
end

function setTag(callbackInfo)
tv=get_param([gcb, '/Goto'],'TagVisibility');
  if  regexp(tv,'global') == 1
     set_param([gcb, '/Goto'],'TagVisibility', 'local');
  elseif regexp(tv,'local') == 1
     set_param([gcb, '/Goto'],'TagVisibility', 'global');
  end
end

