package aQute.bnd.service.message; import java.util.regex.Pattern; import org.osgi.util.promise.Promise; import aQute.service.reporter.Reporter; /** * A simple dialog handler for prompting for an input string from the user, * displaying a message to the user, or showing a set of errors and warnings. * These methods can be called on any thread. */ public interface Dialogs { /** * Display a message and optionally a set of buttons. Return the index of * the selected button or -1 if the dialog was canceled. * * @param title The title of the dialog, must not be null * @param message The message displayed, must not be null * @param buttons A list of buttons, may be null * @param defaultIndex The default index. Must be -1 for none or between * 0..n, where n is the number of buttons specified. * @return -1 if canceled, otherwise the index of the given button that was * pressed. */ Promise<Integer> message(String title, String message, String[] buttons, int defaultIndex) throws Exception; /** * Display a dialog where the user can input a string. An initial value can * be supplied and a validator can optionally beused to validate any input. * Either null is returned when the user cancels or a string with valid * input. * * @param title The title of the dialog, must not be null * @param query The query displayed, must not be null * @param initialValue The initial value, can be null * @param validator A pattern that must match the input, can be null if no * validator is necessary * @return A string object or null if no input was given */ Promise<String> prompt(String title, String query, String initialValue, Pattern validator) throws Exception; /** * Display a list of errors and warnings. This method will return * immediately, it will not wait for the user to dismiss this window. * Multiple calls might actually be aggregated into a single dialog * * @param message The message displayed, must not be null * @param reporter Contains the errors and warnings */ void errors(String message, Reporter reporter) throws Exception; /** * Create a progress monitor */ Progress createProgress(String title) throws Exception; }