MATLAB: How to enable datacursormode and zoom for only one axes in a figure

datacursormodeguiMATLAB

Hello dear community,
I have question about the GUI I made programatically with OOP. I am not using GUIDE or AppDesigner.
I have different tabs in my GUI and I have different plots in each tab. I created 2 selection custom uicontextmenu. When user right clicks on the axis area, a menu opens and selections are "Enable Cursor" and "Enable Zoom". I created the callback for each case which creates the data cursor object or zoom object according to user selection.
The problem is this datacursor and zoom mode became active for other plots in the other tabs, too. I only want single one become active. The reason all become active is datacursormode and zoom functions gets the figure handle as an input. So the entire figure is affected.
Also another problem when I activated zoom, the custom uicontextmenu I have created disappeared, instead it is replaced with 'PostContextMenu' which is the rightClickAction property of the zoom object. I couldn't find a way to turn it back to my custom 2 options menu again.
Do you have any ideas for my 2 problems? Any help will be appreciated.
Thanks very much! 🙂

Best Answer

For your first question, call setAllowAxesZoom on the zoom mode object returned by the zoom function. See the "Zoom Mode Utility Functions" section on that documentation page. I don't believe the datacursormode object offers the same functionality, but that seems like a reasonable enhancement request to send to Technical Support using the telephone icon in the upper-right corner of this page.
For your second question, try setting the UIContextMenu property of the zoom mode object to your custom uicontextmenu when the RightClickAction is set to 'PostContextMenu', or turn Enable 'off' then set your UIContextMenu and turn Enable back 'on'.