chooseDialog
Class: matlab.uitest.TestCase
Namespace: matlab.uitest
Description
chooseDialog(
selects testCase
,dialogType
,fig
,option
)option
in the frontmost nonblocking dialog box of the specified type in the figure window.
chooseDialog(
makes a selection in the frontmost blocking dialog box of the specified type. Because the blocking dialog box prevents additional commands
from running while it is open, it must be created as part of the method call by using the
testCase
,dialogType
,fig
,fcn
,option
)fcn
function handle.
When you use this syntax, the method first creates a blocking dialog box by invoking the specified function handle. The method then closes the dialog box by selecting the specified option in the dialog box, which allows code execution to continue.
Input Arguments
testCase
— Test case
matlab.uitest.TestCase
object
Test case, specified as a matlab.uitest.TestCase
object.
dialogType
— Type of dialog box
"uiconfirm"
Type of the dialog box to select an option in, specified as
"uiconfirm"
, which corresponds to a confirmation dialog box created
with the uiconfirm
function. The dialog box is nonblocking if it is created by calling
uiconfirm
with no output. Otherwise, the dialog box is
blocking.
Data Types: string
| char
fig
— Target figure
matlab.ui.Figure
object
Target figure, specified as a matlab.ui.Figure
object. The figure must be created with the uifigure
function.
option
— Dialog box option to select
string scalar | character vector | positive integer scalar
Dialog box option to select, specified as a string scalar, character vector, or positive integer scalar. You can use a string scalar or character vector to specify the button label for the option or a positive integer scalar to specify the index of the option.
Example: "Proceed"
Example: 1
Data Types: string
| char
| double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
fcn
— Code that creates blocking dialog box
function handle
Code that creates the blocking dialog box to select an option in, specified as a
function handle. The function handle must create a blocking dialog box of type
dialogType
in the target figure fig
.
Example: @() createBlockingDialog(fig)
Examples
Select Option in Nonblocking Dialog Box
Programmatically select an option in a nonblocking confirmation dialog box in front of a figure.
Create a UI figure with a push button that creates a modal confirmation dialog box when clicked. To program the button behavior, specify its ButtonPushedFcn
callback property. See the code of the callback function buttonCallback
, which creates a confirmation dialog box, at the end of this example.
fig = uifigure;
b = uibutton(fig,Text="Close",ButtonPushedFcn=@buttonCallback);
Create a test case for interactive testing.
testCase = matlab.uitest.TestCase.forInteractiveUse;
Test a press gesture on the button. The gesture executes the buttonCallback
function, which creates a confirmation dialog box in the figure. The confirmation dialog box is nonblocking and lets you run additional commands while it is open.
testCase.press(b)
Programmatically select the "Proceed"
option in the dialog box by using the chooseDialog
method. The dialog box closes. Due to the dialogCallback
function that executes when the dialog box closes, the figure behind the dialog box also closes after the "Proceed"
option is selected.
testCase.chooseDialog("uiconfirm",fig,"Proceed")
Callback Functions
This code shows the callback functions used in this example:
The
buttonCallback
function executes when the button in the figure is clicked. The function creates a confirmation dialog box in the figure and specifies thedialogCallback
function as the dialog boxCloseFcn
callback.The
dialogCallback
function executes when the dialog box closes. Selecting the"Proceed"
option in the dialog box closes the figure. Selecting the"Cancel"
option in the dialog box does not affect the figure.
function buttonCallback(src,~) uiconfirm(src.Parent,"Close this figure?","Confirm Close", ... Icon="warning", ... Options=["Proceed" "Cancel"], ... CloseFcn=@dialogCallback) end function dialogCallback(~,event) switch event.SelectedOption case "Proceed" close(event.Source) case "Cancel" return end end
Select Option in Blocking Dialog Box
Programmatically select an option in a blocking confirmation dialog box in front of a figure.
Create a UI figure with a push button that creates a modal confirmation dialog box when clicked. To program the button behavior, specify its ButtonPushedFcn
callback property. See the code of the callback function buttonCallback
, which creates a confirmation dialog box, at the end of this example.
fig = uifigure;
b = uibutton(fig,Text="Close",ButtonPushedFcn=@buttonCallback);
Create a test case for interactive testing.
testCase = matlab.uitest.TestCase.forInteractiveUse;
Testing a press gesture on the button executes the callback, which creates a blocking confirmation dialog box in the figure. Programmatically select the "Proceed"
option in the dialog box by using the chooseDialog
method. This code first creates the blocking dialog box by invoking the specified function handle, which presses the button in the figure. The method then closes the dialog box by selecting the "Proceed"
option, which allows code execution to continue. Due to the callback function used in this example, the figure behind the dialog box also closes after the "Proceed"
option is selected.
testCase.chooseDialog("uiconfirm",fig,@() testCase.press(b),"Proceed")
Callback Function
This code shows the callback function used in this example. The buttonCallback
function executes when the button in the figure is clicked. The function creates a blocking confirmation dialog box in the figure. Selecting the "Proceed"
option in the dialog box closes the figure. Selecting the "Cancel"
option in the dialog box does not affect the figure.
function buttonCallback(src,~) selection = uiconfirm(src.Parent,"Close this figure?","Confirm Close", ... Icon="warning", ... Options=["Proceed" "Cancel"]); switch selection case "Proceed" close(src.Parent) case "Cancel" return end end
Close Sequence of Blocking Dialog Boxes
Programmatically close a sequence of blocking confirmation dialog boxes using the chooseDialog
and dismissDialog
methods. To close the dialog boxes, first embed all the dialog box creation logic into a function handle, and then perform the final gesture using that function handle.
In a UI figure, create a push button that can result in a sequence of blocking dialog boxes when clicked. To program the button behavior, specify its ButtonPushedFcn
callback property.
fig = uifigure;
b = uibutton(fig,Text="Close",ButtonPushedFcn=@buttonCallback);
This code shows the callback function used to create the dialog boxes. The buttonCallback
function executes when the button in the figure is clicked. The function creates a blocking confirmation dialog box in the figure with "Proceed"
and "Cancel"
options:
Selecting the
"Proceed"
option in the dialog box creates another blocking confirmation dialog box through thereconfirm
function.Selecting the
"Cancel"
option in the dialog box does not affect the figure.
The reconfirm
function executes when the "Proceed"
option is selected in the original dialog box. The function creates another blocking confirmation dialog box in the figure with "Yes"
and "No"
options:
Selecting the
"Yes"
option in the dialog box closes the figure.Selecting the
"No"
option in the dialog box does not affect the figure.
function buttonCallback(src,~) selection = uiconfirm(src.Parent,"Close this figure?","Confirm Close", ... Icon="warning", ... Options=["Proceed" "Cancel"]); switch selection case "Proceed" reconfirm(src) % Display another dialog box to reconfirm case "Cancel" return end end function reconfirm(src) selection = uiconfirm(src.Parent,"Are you sure?","Confirm Close", ... Icon="warning", ... Options=["Yes" "No"]); switch selection case "Yes" close(src.Parent) % Close the figure case "No" return end end
To test the app, create a test case for interactive testing. You use this test case first to test a press gesture on the button, which executes the callback and creates a blocking confirmation dialog box in the figure. Then, you programmatically select the "Proceed"
option in the dialog box by using the chooseDialog
method and dismiss the resulting dialog box by using the dismissDialog
method.
testCase = matlab.uitest.TestCase.forInteractiveUse;
Because blocking dialog boxes prevent commands from running while they are open, you cannot call the press
, chooseDialog
, and dismissDialog
methods independently. Instead, you must embed all the dialog box creation logic into a single function handle and then perform the final gesture using that function handle. In this code, fcn1
and fcn2
, respectively, specify the code that must run for the first and second dialog boxes to be created. In particular, fcn2
represents all the dialog box creation logic in the test.
fcn1 = @() testCase.press(b); fcn2 = @() testCase.chooseDialog("uiconfirm",fig,fcn1,"Proceed");
To programmatically close the expected dialog boxes, perform the final gesture using the dismissDialog
method with the function handle fcn2
that includes all the dialog box creation logic. This call to the dismissDialog
method results in these gestures:
Press the button in the figure, which creates the first blocking dialog box.
Select the
"Proceed"
option in the first blocking dialog box, which closes the dialog box and creates the second blocking dialog box.Close the second blocking dialog box by dismissing it.
testCase.dismissDialog("uiconfirm",fig,fcn2)
Closing the blocking dialog boxes allows code execution to continue. For example, close the figure used for testing.
close(fig)
More About
Blocking and Nonblocking Dialog Boxes
A modal dialog box is either nonblocking or blocking. A nonblocking dialog box lets you access the MATLAB® command prompt while the dialog box is open. In contrast, a blocking dialog box prevents you from accessing the command prompt while it is open.
Version History
Introduced in R2024b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)