www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoppoint/ExprListFcns.m

    function varargout = ExprListFcns(varargin)
%EXPRLISTFCNS

%  Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc.



if nargin==0
    error(message('mbc:cgoppoint:TooFewInputs2'));
elseif isa(varargin{1},'cgoppoint')
    if nargin>1 && ischar(varargin{2}) && isempty(varargin{1})
        switch lower(varargin{2})
        case 'right_click'
            i_RightClick(varargin{3});
        case 'click'
            i_Click(varargin{3});
        case 'dbl_click'
            i_DblClick(varargin{3});
        case 'get_callbacks'
            varargout{1} = i_GetCallbacks;
        end
    end
end


%------------------------------------------------------------------
function h=i_GetHandle
%------------------------------------------------------------------
h=findall(0 , 'tag' , 'DatasetViewer');


%------------------------------------------------------------------
function d=i_GetData
%------------------------------------------------------------------
CGBH = cgbrowser;
if CGBH.GuiExists
    d=CGBH.getViewData;
    pFN = CGBH.CurrentNode;
    pF = pFN.getdata;
    d.oppoint = pF.info;
    d.opptr = pF;
else
    d=get(i_GetHandle , 'UserData');
end


%-----------------------------------------------------------------------
%
% Column heading clicks
%  - sort data by column
%
%-----------------------------------------------------------------------





%-----------------------------------------------------------------------
%
% Right clicks on list
%  - display appropriate context menu
%
%-----------------------------------------------------------------------



%-----------------------------------------------------------------------
function i_RightClick(list)
%-----------------------------------------------------------------------
d = i_GetData;

pl=get(0,'PointerLocation');
fp=get(gcf,'Position');
fp=fp(1:2);

i_Click(list,'internal');

pass_list = 0;
switch lower(list)
case {'factorexpr'}
    %MenuData = d.Handles.FactorEM;
    MenuData = d.Handles.fm;
    pass_list = 1;
case {'factor'}
    switch d.InputMode
    case 'normal'
        MenuData = d.Handles.fm;
    case 'grid'
        MenuData = d.Handles.InputsM;
    end
    pass_list = 1;
case 'tableexpr'
    MenuData = d.Handles.fm;
    %MenuData = d.Handles.FactorEM;
    pass_list = 1;
case 'plot'
    MenuData = d.Handles.fm;
    pass_list = 1;
case 'inputs'
    MenuData = d.Handles.InputsM;
case {'linkingdata','linkingfactors','linkingtop'}
    MenuData = d.Handles.LinkM;
    pass_list = 1;
otherwise
    MenuData = [];
end

if ~isempty(MenuData)
    if iscell(MenuData.SetupCB)
        feval(MenuData.SetupCB{:});
    elseif ~isempty(MenuData.SetupCB)
        if pass_list
            feval(MenuData.SetupCB,list);
        else
            feval(MenuData.SetupCB);
        end
    end
    set(MenuData.menu,'Visible','off');
    set(MenuData.menu,'Position',pl-fp,'Visible','on');
end


%-----------------------------------------------------------------------
function i_Click(list,varargin)
%-----------------------------------------------------------------------
d = i_GetData;
intflag = (nargin==2);

switch lower(list)
case 'factor'
    switch d.InputMode
    case 'normal'
        ExprClick = d.CB.FactorClick;
    case 'grid'
        ExprClick = d.CB.InputsClick;
    end
case 'factorexpr'
    switch d.InputMode
    case 'normal'
        ExprClick = d.CB.FactorsExprClick;
    case 'grid'
        ExprClick = d.CB.FactorsExprClick;
    end
case 'tableexpr'
    ExprClick = d.CB.DataExprClick;
case 'plot'
    ExprClick = d.CB.PlotExprClick;
case 'linkingdata'
    ExprClick = d.CB.DataLinkClick;
    if ~intflag, feval(d.Handles.LinkM.SetupCB,list); end
case 'linkingfactors'
    ExprClick = d.CB.FactorsExprClick;  % normal behaviour
    if ~intflag, feval(d.Handles.LinkM.SetupCB,list); end
case 'linkingtop'
    ExprClick = d.CB.FactorClick;  % normal behaviour
    if ~intflag, feval(d.Handles.LinkM.SetupCB,list); end
otherwise
    ExprClick = [];
end

if ~isempty(ExprClick)
    feval(ExprClick);
end

%-----------------------------------------------------------------------
function i_DblClick(list)
%-----------------------------------------------------------------------
d = i_GetData;

ExprClick = [];
switch lower(list)
case 'factor'
    switch d.InputMode
    case 'grid'
        ExprClick = d.CB.InputsDblClick;
    end
end

if ~isempty(ExprClick)
    feval(ExprClick);
end

%-----------------------------------------------------------------------
function cb = i_GetCallbacks
%-----------------------------------------------------------------------
cb.ListClick = @i_Click;