MATLAB: Global Position of Docked Figures window

docked figures

I am having difficulty accessing the global position of the docked "Figures" window. I have the units of the figures inside of the window set to pixels and when accessing the 'Position' property of one of those windows I get [1 1 L W], which means that it is somehow parented I guess (it is not at the bottom left of my monitors). However, there is no handle that I can find to the docked "Figures" window to access the global position. I am not sure if it makes a difference, but I have UI elements in each of the figures. Here's a really simple sample:
fig=figure
set(fig,'WindowStyle','docked')
get(fig,'Position')
The output no matter where the figures window is globally located is:
ans =
1 1 some_length some_width
Any help on this would be appreciated.

Best Answer

  • Hi,
    When you dock some figures, they go in the Figure Editor, which is not a classic matlab figure. This is a java component.
    You can access it but it becomes messy (and dangerous) really fast.
    you need to use code looking like :
    % create a dock figure
    fig = figure;
    set(fig,'WindowStyle','docked')
    get(fig,'Position')
    % get the Figure editor
    desktop = com.mathworks.mde.desk.MLDesktop.getInstance;
    container = desktop.getGroupContainer('Figures').getTopLevelAncestor;
    % get the dimensions
    width = get(container.getSize,'width');
    height = get(container.getSize,'height');
    % get the origin
    Location = get(container.getAccessibleContext,'Location');
    Xorigin = get(Location,'X');
    Yorigin = get(Location,'Y');
    % display
    disp([Xorigin Yorigin width height])
    if you really need to manipulate this kind of element, take a look at undocumentedmatlab.com of Yair Altman.