收录日期:2019/10/22 14:25:13 时间:2009-11-10 23:27:17 标签:eclipse,eclipse-rcp

I'm wondering how to use the new *QUESTION_WITH_CANCEL* dialog kind when opened with MessageDialog.open(int kind, Shell parent, String title, String message,int style).

Since the open method is returning boolean and now we have 3 possible state from Yes, No, or Cancel.

You can't use the static method MessageDialog.open(bunch of parameters), you'll have to create the Dialog and call the non-static open() yourself to check its return value.

	MessageDialog dg = new MessageDialog(
			window.getShell(),
			"My title",
			null,
			"My question",
			MessageDialog.QUESTION_WITH_CANCEL, 
			new String[]{
				IDialogConstants.YES_LABEL, 
				IDialogConstants.NO_LABEL, 
				IDialogConstants.CANCEL_LABEL},
			0
			);
	switch(dg.open()) {
	case 0: 
		//yes
		System.out.println("yes");
		break;
	case 1:
		//no
		System.out.println("no");
		break;
	case 2:
		//cancel
		System.out.println("cancel");
		break;
	}

Looking at the JavaDoc, I believe No and Cancel have the same effect: false

Returns:
    true if the user presses the OK or Yes button, false otherwise