www.gusucode.com > mbcview 工具箱matlab源码程序 > mbcview/@cgtradeoffgui/@tableSetupList/tableSetupList.m

    function obj = tableSetupList(varargin)
%TABLESETUPLIST Object constructor for tableSetupList
%
%  OBJ = TABLESETUPLIST(PROP, VAL, ...) creates a tableSetupList object
%  that displays and allows editing of the tables in a tradeoff object.

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

obj = cgtradeoffgui.tableSetupList;
abstractlayoutcomponent(obj, varargin{:});

obj.hList = mbcwidgets.List('Parent',obj.Parent,...
    'IconLocation',cgrespath,...
    'UIContextMenu',obj.hContext,...
    'SelectionMode','SingleRow',...
    'ColumnHeaders',{'Tables In Tradeoff','Filled By','Additional Inputs'},...
    'ColumnWidths',[150 150 250],...
    'IconLocation',cgrespath,...
    'Visible',obj.Visible,...
    'ActionPerformedCallBack',{@i_editfill,obj},...
    'KeyTypedCallback',{@i_keyhandler,obj},...
    'SelectionChangedCallback',{@i_selecttable,obj,obj.hMenuEditFill,obj.hMenuRemove});

% Create Table information pane
hPanel = mbcgui.container.layoutpanel(...
    'Parent', obj.Parent, ...
    'Visible', obj.Visible, ...
    'BorderType', 'beveledout', ...
    'LayoutBorder', [4 4 4 4]);
obj.hTableText = uicontrol('Parent',  hPanel, ...
    'Style', 'text', ...
    'HorizontalAlignment', 'left', ...
    'Enable', 'inactive');
set(hPanel, 'LayoutComponent', obj.hTableText);

obj.Display = xreggridbaglayout(obj.Parent, ...
    'dimension', [2 1], ...
    'rowsizes', [40 -1], ...
    'elements', {hPanel, obj.hList});

% Create context menu
obj.hContext = uicontextmenu('Parent', ancestor(obj.Parent,'figure'));
obj.hMenuEditFill = uimenu(obj.hContext, ...
    'Label', '&Change Filling Item...', ...
    'Callback', {@i_editfill, obj});
obj.hMenuAddNew = uimenu(obj.hContext, ...
    'Label', 'Add &New Table...', ...
    'Callback', {@i_addnewtable, obj});
obj.hMenuAddExist = uimenu(obj.hContext, ...
    'Label', 'Add &Existing Table...', ...
    'Callback', {@i_addexisttable, obj});
obj.hMenuRemove = uimenu(obj.hContext, ...
    'Label', '&Remove Table', ...
    'Callback', {@i_removetable, obj});

obj.addPropertyListeners('TradeoffPointer', @i_refresh);

obj.refresh;
   

function i_refresh(src, evt)
evt.AffectedObject.refresh;


function i_selecttable(src, evt, obj,hMenuEditFill,hMenuRemove)

if ~isempty(evt.data.SelectedDataRows)
    obj.send('TableSelected', ...
        xregGui.xregEventData(obj, 'TableSelected', struct('Table', obj.SelectedTable)) ...
        );
    en = 'on';
else
    en = 'odd';
end
set([hMenuEditFill; hMenuRemove], 'Enable', en);



function i_keyhandler(src, evt, obj)
% Check for enter, del and ins key

if evt.data.Modifiers==0
    switch evt.data.KeyCode
        case mbcgui.util.KeyCode.INSERT
            % Insert
            i_addnewtable(src, evt, obj);
        case mbcgui.util.KeyCode.DELETE
            % Delete
            i_removetable(src, evt, obj);
        case mbcgui.util.KeyCode.ENTER
            %Enter
            i_editfill(src, evt, obj);
    end
end



function i_editfill(src, evt, obj)
PR = xregGui.PointerRepository;
id = PR.stackSetPointer(obj.Parent, 'watch');
pT = obj.SelectedTable;
if ~isempty(pT)
    [unused, ok] = guiSetFillExpression(obj.TradeoffPointer.info, pT);
    if ok
        obj.refresh;
        obj.send('TableEdited', ...
            xregGui.xregEventData(obj, 'TableEdited', struct('Table', pT)) ...
            );
    end
end
PR.stackRemovePointer(obj.Parent, id);


function i_addnewtable(src, evt, obj)
PR = xregGui.PointerRepository;
id = PR.stackSetPointer(obj.Parent, 'watch');
[unused, ok] = guiAddNewTable(obj.TradeoffPointer.info);
if ok
    obj.refresh;
    obj.send('TableAdded', handle.EventData(obj, 'TableAdded'));
end
PR.stackRemovePointer(obj.Parent, id);


function i_addexisttable(src, evt, obj)
PR = xregGui.PointerRepository;
id = PR.stackSetPointer(obj.Parent, 'watch');
[unused, ok] = guiAddTable(obj.TradeoffPointer.info);
if ok
    obj.refresh;
    obj.send('TableAdded', handle.EventData(obj, 'TableAdded'));
end
PR.stackRemovePointer(obj.Parent, id);


function i_removetable(src, evt, obj)
PR = xregGui.PointerRepository;
id = PR.stackSetPointer(obj.Parent, 'watch');
pT = obj.SelectedTable;
if ~isempty(pT)
    % Pop up a dialog to make sure the user really wants to do this
    resp=questdlg(sprintf('Do you want to remove table "%s" from this tradeoff?', pT.getname),...
        'Confirm Removal','Yes','No','Yes');
    if strcmp(resp, 'Yes')
        removeTable(obj.TradeoffPointer.info, pT);
        obj.refresh;
        obj.send('TableRemoved', handle.EventData(obj, 'TableRemoved'));
    end
end
PR.stackRemovePointer(obj.Parent, id);