Creating Graphical User Interfaces    

The List Box Callback

The list box callback handles only one case: a double click on an item. Double clicking is the standard way to open a file from a list box. If the selected item is a file, it is passed to the open command; if it is a directory, the GUI changes to that directory and lists the contents.

The callback makes use of the fact that the open command can handle a number of different file types. However, the callback treats FIG-files differently. Instead of opening the FIG-file, it passes it to the guide command for editing. An error dialog captures any errors that occur when opening a file, instead of displaying them on the command line.

Determining Which Item the User Selected

Since a single click on an item also invokes the list box callback, it is necessary to query the figure SelectionType property to determine when the user has performed a double click. A double click on an item sets the SelectionType property to open.

All the items in the list box are referenced by an index from 1 to n, where 1 refers to the first item and n is the index of the nth item. MATLAB saves this index in the list box Value property.

The callback uses this index to get the name of the selected item from the list of items contained in the String property.

Determining if the Selected Item is a File or Directory

The load_listbox function uses the dir command to obtain a list of values that indicate whether an item is a file or directory. These values (1 for directory, 0 for file) are saved in the handles structure. The list box callback queries these values to determine if current selection is a file or directory.

The open statement is called within a try/catch block to enable errors to be returned in an error dialog (errordlg), instead of at the command line.

Opening Unknown File Types

You can extend the file types that the open command recognizes to include any file having a three-character extension. You do this by creating an M-file with the name openxyz, where xyz is the extension. Note that the list box callback does not take this approach for .fig files since openfig.m is required by the application M-file. See open for more information.


 Loading the List Box Accessing Workspace Variables from a List Box