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

    function obj = tableTableView(varargin)
%TABLETABLEVIEW Constructor for tableTableView object
%
%  OBJ = TABLETABLEVIEW(PROP, VALUE, ...) creates an object that displays a
%  particular table from a tradeoff in a table display.

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

%  $Revision: 1.1.6.7.10.1 $    $Date: 2013/10/09 06:29:08 $ 

if nargin && isa(varargin{1}, 'cgtradeoffgui.tableTableView')
   obj = varargin{1};
   varargin(1) = [];
else
   obj = cgtradeoffgui.tableTableView;
end

% Call the inherited constructor
obj.View(varargin{:});

jt = com.mathworks.toolbox.mbc.gui.peer.TradeoffTablePeer;
obj.hTable = mbcwidgets.Table2D(jt, ...
    'parent', obj.Parent, ...
    'visible', obj.Visible, ...
    'position', obj.Position, ...
    'Editable', true, ...
    'UIContextMenu', obj.UIContextMenu);
CMap = int16(get(ancestor(obj.Parent,'figure'),'ColorMap')*255);
obj.hTable.Peer.setColorMap(CMap(:,1),CMap(:,2),CMap(:,3));

% Turn off table border
obj.hTable.Peer.setBorder([]);

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

if obj.ShowLegend
    obj.pSwitchLegendMode;
end

% Expose table's copy/paste actions as view actions
obj.Actions = obj.hTable.CopyPasteActions;

% Attach table change listeners
obj.addListeners(handle.listener(obj.hTable, 'ValueChanged', {@i_celledit, obj}));
obj.addListeners(handle.listener(obj.hTable, 'SelectionChanged', {@i_selchange, obj}));

% Add property listeners
obj.addPropertyListeners({'ShowLegend', 'UIContextMenu'}, ...
    {@i_switchlegend, {@i_passonuic, obj.hTable}});

% Hook up to the message service if it exists
if ~isempty(obj.MessageService)
    obj.pPostSetMessageService;
end


function i_celledit(src, evt, obj)
% Update entry in table object with the edit
if ~isempty(obj.MessageService)
    pTbl = obj.MessageService.CurrentTable;
    if ~isempty(pTbl)
        hTbl = pTbl.info;
        values = get(hTbl, 'values');
        values(evt.data.Rows, evt.data.Columns) = evt.data.NewValue;
        pTbl.info = set(hTbl, 'values', {values, 'Manual edit'});
        
        % Update the table cell with the true values from the table object
        New_Values = pTbl.get('values');
        src.updateData(New_Values);
        
        obj.disableMessageServiceListeners;
        obj.MessageService.notifyTableCellChange;
        obj.enableMessageServiceListeners;
    end
end


function i_selchange(src, evt, obj)
if ~isempty(obj.MessageService) && ~isempty(obj.MessageService.CurrentTable)
    obj.disableMessageServiceListeners;
    P = xregGui.PointerRepository;
    ptrID = P.stackSetPointer(obj.Parent, 'watch');
    idx = evt.data.FocusDataIndex;
    if all(idx>0)
        obj.MessageService.setSelectedPoint('table', {idx(1), idx(2)});
    end
    P.stackRemovePointer(obj.Parent, ptrID);
    obj.enableMessageServiceListeners;
end


function i_switchlegend(src, evt)
evt.AffectedObject.pSwitchLegendMode;


function i_passonuic(src, evt, hTable)
set(hTable, 'UIContextMenu', evt.NewValue);