File Applications/uiinspect/uiinspect.m uiinspect Inspect an object handle (Java/COM/HG) and display its methods/props/callbacks in a unified window Syntax: hFig = uiinspect(obj, hFig) % hFig input argument is optional Description: UIINSPECT(OBJ) inspects an object handle (e.g., Java, COM, Handle Graphics, Matlab class, Dot-Net etc.) and displays inspection results in a Matlab figure window with all the relevant object methods (as can be displayed via Matlab's methodsview function), properties (as can be displayed via Matlab's inspect function), static fields and callbacks. UIINSPECT also displays properties that are not normally displayed with Matlab's inspect function. Property meta-data such as type, accessibility, visibility and default value are also displayed (where available). If the inspected object is an HG handle, then a component tree is displayed instead of the methods pane (see attached animated screenshot). Unlike Matlab's inspect function, multiple UIINSPECT windows can be opened simultaneously. Object properties and callbacks may be modified interactively within the UIINSPECT window. UIINSPECT(OBJ) reuses an already-displayed UIINSPECT window if its title is the same (i.e., same object or class); otherwise a new window is created. UIINPECT(OBJ,hFIG) forces using the specified hFig window handle, even if another window would otherwise have been reused/created. hFig = UIINSPECT(...) returns a handle to the UIINSPECT figure window. UIINSPECT creates a regular Matlab figure window which may be accessed via this hFig handle (unlike Matlab's methodsview function which opens a Java frame that is not easily accessible from Matlab). Examples: hFig = uiinspect(0); % root (desktop) hFig = uiinspect(handle(0)); % root handle hFig = uiinspect(gcf); % current figure uiinspect(get(gcf,'JavaFrame')); % current figure's Java Frame uiinspect(classhandle(handle(gcf))); % a schema.class object uiinspect(findprop(handle(gcf),'MenuBar')); % a schema.prop object uiinspect('java.lang.String'); % a Java class name uiinspect(java.lang.String('yes')); % a Java object uiinspect(actxserver('Excel.Application')); % a COM object uiinspect(Employee) % a Matlab class object uiinspect(?handle) % a Matlab metaclass object uiinspect('meta.class') % a Matlab class name uiinspect(System.Diagnostics.Process.GetCurrentProcess) % a .Net object Technical explanation & details: http://undocumentedmatlab.com/blog/uiinspect/ Known issues/limitations: - Fix: some fields generate a Java Exception, or a Matlab warning - other future enhancements may be found in the TODO list below Warning: This code heavily relies on undocumented and unsupported Matlab functionality. It works on Matlab 7+, but use at your own risk! Bugs and suggestions: Please send to Yair Altman (altmany at gmail dot com) Change log: 2015-03-02: Fix for R2014a and older Matlab releases 2014-11-21: Additional fixes for R2014b (HG2) 2014-10-24: Fixed properties panel for .Net objects 2014-10-24: Fixed a reported "invalid object handle" bug 2014-10-20: Fixes for multiple edge cases 2014-10-13: Fixes for R2014a, R2014b 2013-06-30: Fixes for the upcoming HG2 2013-01-25: Added context-menu option to export handle to workspace 2013-01-23: Prevented intermittent crash reported for uiinspect(0); auto-expanded callbacks table if only one category; added hidden properties to the properties tooltip; updated FEX link in help; updated javadoc hyperlinks; fixed callbacks table 2012-01-16: Fixes for R2012a 2011-12-09: Fixed Matlab R2011b crash when inspecting COM object 2011-06-14: Fixed problems with the Value field of the "Other properties" table for static fields 2011-03-22: Fixed display of non-static Java class fields; fixed display of some cases of Java class names; minor fixes for Matlab class properties 2011-03-03: Fixed several issues in the Value field of the "Other properties" table 2011-02-28: Removed R2010b warning messages; minor fix for Dot-Net classes 2010-11-02: Minor fixes for callbacks table; fixed online docpage for Swing classes 2010-11-01: Major fix for pre-R2010 compatibility 2010-10-20: Minor fix suggested by Andrew Stamps; added automatic callbacks grouping 2010-06-13: Fixed download (m-file => zip-file) 2010-06-11: Displayed class modifiers; improved performance; removed empty panels by default; fixed warning msgs when sorting props table; fixes for R2010b 2010-03-18: Minor fix in copy-handle-value-to-clipboard (in tree context-menu) 2010-03-17: Fixes for R2010a 2010-01-16: Fixed a few bugs in properties meta-info of Matlab classes 2009-10-23: Added CaretPositionChanged & InputMethodTextChanged to list of standard callbacks; minor fix to requesting focus of Java handles; minor fix to version-check display 2009-05-22: Added support for Matlab classes (helped by Darik Gamble); improved display for classname input 2009-05-20: Fixed methods info gathering for some handles 2009-05-19: Improved information display for HG handles; added HG-handle screenshot to animated gif (added to COM, Java screenshots); enabled reuse of uiinspect window 2009-05-04: Fixed setting callbacks on non-handle('CallbackProperties')ed Java objects; fixed input param edge-case; hyperlinked the className to Sun's Javadocs where relevant; auto-checked newer version; removed main menu 2009-04-16: Fixed occasional endless loop upon callback update error 2009-04-01: Fixed case of no methods (e.g., uimenus); fixed superclass/interfaces of classname input; auto-hide callbacks pane if no CBs are available 2009-03-30: Added Extra method details checkbox (default=off); auto-hide inspectable checkbox if irrelevant; auto-sort methods by args list; hyperlinked classes; fixed title for classname inputs 2009-03-14: Fixed string property value displayed; fixed display of Java classes added to the dynamic classpath; fixed display of classname static fields value; updated list of standard callbacks 2009-03-05: Fixed single property edge-case; fixed prop name case sensitivity problem; fixed properties tooltip; accept class names; added display of class interfaces & static fields 2008-01-25: Fixes for many edge-cases 2007-12-08: First version posted on MathWorks File Exchange See also: ishandle, iscom, inspect, methodsview, FindJObj (on the File Exchange)