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);