2009-11-10 10 views
6

Ich frage mich, wie man die neue QUESTION_WITH_CANCEL Dialogart verwendet, wenn sie mit MessageDialog.open(int kind, Shell parent, String title, String message,int style) geöffnet wird.Wie Verwenden von MessageDialog.open() mit FRAGE_WITH_CANCEL?

Da die offene Methode boolean zurückkehrt und jetzt haben wir 3 möglichen Zustand von Ja, Nein oder Abbrechen.

Antwort

13

Sie nicht die statische Methode MessageDialog.open(bunch of parameters) verwenden können, werden Sie das schaffen müssen Dialog und rufen Sie das nicht statische open() selbst, um seinen Rückgabewert zu überprüfen.

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; 
    } 
+0

Ich werde es versuchen. –

+0

Hat es wie erwartet funktioniert? – Jerome

+0

Die Schaltflächen sind in einer seltsamen Reihenfolge (Eclipse 3.5.2): Nein Abbrechen Ja statt Ja Nein Abbrechen. Wie mache ich sie in der "richtigen" Reihenfolge? – dplass

0

Mit Blick auf die JavaDoc, glaube ich No und Abbrechen die gleiche Wirkung haben: falsch

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

So viel weiß ich, aber das ist nicht die Frage, die ich gestellt habe. Ich brauche den Dialog QUESTION_WITH_CANCEL. Wenn ich nur Standard-Ja/Nein benötige, würde ich den Standard-Bestätigungsdialog verwenden. –