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