博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SWT(JFace) Wizard(Eclipse插件编程必备)
阅读量:5152 次
发布时间:2019-06-13

本文共 33216 字,大约阅读时间需要 110 分钟。

演示代码如下: 

HotelReservation.java 

复制代码代码如下:
package swt_jface.demo12; 
import org.eclipse.jface.dialogs.Dialog; 
import org.eclipse.jface.window.ApplicationWindow; 
import org.eclipse.jface.wizard.WizardDialog; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Control; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Shell; 
public class HotelReservation extends ApplicationWindow { 
protected Control createContents(Composite parent) { 
Button button = new Button(parent, SWT.PUSH); 
button.setText("Make a reservation"); 
button.addListener(SWT.Selection, new Listener() { 
public void handleEvent(Event event) { 
ReservationWizard wizard = new ReservationWizard(); 
WizardDialog dialog = new WizardDialog(getShell(), wizard); 
dialog.setBlockOnOpen(true); 
int returnCode = dialog.open(); 
if(returnCode == Dialog.OK) 
System.out.println(wizard.data); 
else 
System.out.println("Cancelled"); 
}); 
return button; 
public HotelReservation(Shell parentShell) { 
super(parentShell); 
public static void main(String[] args) { 
HotelReservation reservation = new HotelReservation(null); 
reservation.setBlockOnOpen(true); 
reservation.open(); 
package swt_jface.demo12; 
import org.eclipse.jface.dialogs.Dialog; 
import org.eclipse.jface.window.ApplicationWindow; 
import org.eclipse.jface.wizard.WizardDialog; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Control; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Shell; 
public class HotelReservation extends ApplicationWindow { 
    protected Control createContents(Composite parent) { 
        Button button = new Button(parent, SWT.PUSH); 
        button.setText("Make a reservation"); 
        button.addListener(SWT.Selection, new Listener() { 
            public void handleEvent(Event event) { 
                ReservationWizard wizard = new ReservationWizard(); 
                WizardDialog dialog = new WizardDialog(getShell(), wizard); 
                dialog.setBlockOnOpen(true); 
                int returnCode = dialog.open(); 
                if(returnCode == Dialog.OK) 
                    System.out.println(wizard.data); 
                else 
                    System.out.println("Cancelled"); 
            } 
        }); 
        return button; 
    } 
    public HotelReservation(Shell parentShell) { 
        super(parentShell); 
    } 
    public static void main(String[] args) { 
        HotelReservation reservation = new HotelReservation(null); 
        reservation.setBlockOnOpen(true); 
        reservation.open(); 
    } 

CustomerInfoPage.java 

复制代码代码如下:
package swt_jface.demo12; 
import org.eclipse.jface.wizard.WizardPage; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Text; 
public class CustomerInfoPage extends WizardPage { 
Text textName; 
Text textPhone; 
Text textEmail; 
Text textAddress; 
public CustomerInfoPage() { 
super("CustomerInfo"); 
setTitle("Customer Information"); 
setPageComplete(false); 
public void createControl(Composite parent) { 
Composite composite = new Composite(parent, SWT.NULL); 
composite.setLayout(new GridLayout(2, false)); 
new Label(composite, SWT.NULL).setText("Full name: "); 
textName = new Text(composite, SWT.SINGLE | SWT.BORDER); 
textName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
new Label(composite, SWT.NULL).setText("Phone Number: "); 
textPhone = new Text(composite, SWT.SINGLE | SWT.BORDER); 
textPhone.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
new Label(composite, SWT.NULL).setText("Email address: "); 
textEmail = new Text(composite, SWT.SINGLE | SWT.BORDER); 
textEmail.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
new Label(composite, SWT.NULL).setText("Address: "); 
textAddress = new Text(composite, SWT.MULTI | SWT.BORDER); 
textAddress.setText("\r\n\r\n\r\n"); 
textAddress.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
Listener listener = new Listener() { 
public void handleEvent(Event event) { 
if (event.widget == null || !(event.widget instanceof Text)) return; 
String string = ((Text) event.widget).getText(); 
if (event.widget == textName) { 
((ReservationWizard) getWizard()).data.customerName = string; 
} else if (event.widget == textPhone) { 
((ReservationWizard) getWizard()).data.customerPhone = string; 
} else if (event.widget == textEmail) { 
if (string.indexOf('@') < 0) { 
setErrorMessage("Invalid email address: " + string); 
((ReservationWizard) getWizard()).data.customerEmail = null; 
} else { 
setErrorMessage(null); 
((ReservationWizard) getWizard()).data.customerEmail = string; 
} else if (event.widget == textAddress) { 
((ReservationWizard) getWizard()).data.customerAddress = string; 
ReservationData data = ((ReservationWizard) getWizard()).data; 
if (data.customerName != null 
&& data.customerPhone != null 
&& data.customerEmail != null 
&& data.customerAddress != null) { 
setPageComplete(true); 
} else { 
setPageComplete(false); 
}; 
textName.addListener(SWT.Modify, listener); 
textPhone.addListener(SWT.Modify, listener); 
textEmail.addListener(SWT.Modify, listener); 
textAddress.addListener(SWT.Modify, listener); 
if (getDialogSettings() != null && validDialogSettings()) { 
textName.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_NAME)); 
textPhone.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_PHONE)); 
textEmail.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_EMAIL)); 
textAddress.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_ADDRESS)); 
setControl(composite); 
private boolean validDialogSettings() { 
if (getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_NAME) == null 
|| getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_ADDRESS) == null 
|| getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_EMAIL) == null 
|| getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_PHONE) == null) return false; 
return true; 
package swt_jface.demo12; 
import org.eclipse.jface.wizard.WizardPage; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Text; 
public class CustomerInfoPage extends WizardPage { 
    Text textName; 
    Text textPhone; 
    Text textEmail; 
    Text textAddress; 
    public CustomerInfoPage() { 
        super("CustomerInfo"); 
        setTitle("Customer Information"); 
        setPageComplete(false); 
    } 
    public void createControl(Composite parent) { 
        Composite composite = new Composite(parent, SWT.NULL); 
        composite.setLayout(new GridLayout(2, false)); 
        new Label(composite, SWT.NULL).setText("Full name: "); 
        textName = new Text(composite, SWT.SINGLE | SWT.BORDER); 
        textName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        new Label(composite, SWT.NULL).setText("Phone Number: "); 
        textPhone = new Text(composite, SWT.SINGLE | SWT.BORDER); 
        textPhone.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        new Label(composite, SWT.NULL).setText("Email address: "); 
        textEmail = new Text(composite, SWT.SINGLE | SWT.BORDER); 
        textEmail.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        new Label(composite, SWT.NULL).setText("Address: "); 
        textAddress = new Text(composite, SWT.MULTI | SWT.BORDER); 
        textAddress.setText("\r\n\r\n\r\n"); 
        textAddress.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        Listener listener = new Listener() { 
            public void handleEvent(Event event) { 
                if (event.widget == null || !(event.widget instanceof Text)) return; 
                String string = ((Text) event.widget).getText(); 
                if (event.widget == textName) { 
                    ((ReservationWizard) getWizard()).data.customerName = string; 
                } else if (event.widget == textPhone) { 
                    ((ReservationWizard) getWizard()).data.customerPhone = string; 
                } else if (event.widget == textEmail) { 
                    if (string.indexOf('@') < 0) { 
                        setErrorMessage("Invalid email address: " + string); 
                        ((ReservationWizard) getWizard()).data.customerEmail = null; 
                    } else { 
                        setErrorMessage(null); 
                        ((ReservationWizard) getWizard()).data.customerEmail = string; 
                    } 
                } else if (event.widget == textAddress) { 
                    ((ReservationWizard) getWizard()).data.customerAddress = string; 
                } 
                ReservationData data = ((ReservationWizard) getWizard()).data; 
                if (data.customerName != null 
                    && data.customerPhone != null 
                    && data.customerEmail != null 
                    && data.customerAddress != null) { 
                    setPageComplete(true); 
                } else { 
                    setPageComplete(false); 
                } 
            } 
        }; 
        textName.addListener(SWT.Modify, listener); 
        textPhone.addListener(SWT.Modify, listener); 
        textEmail.addListener(SWT.Modify, listener); 
        textAddress.addListener(SWT.Modify, listener); 
        if (getDialogSettings() != null && validDialogSettings()) { 
                textName.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_NAME)); 
                textPhone.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_PHONE)); 
                textEmail.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_EMAIL)); 
                textAddress.setText(getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_ADDRESS)); 
        } 
        setControl(composite); 
    } 
    private boolean validDialogSettings() { 
        if (getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_NAME) == null 
            || getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_ADDRESS) == null 
            || getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_EMAIL) == null 
            || getDialogSettings().get(ReservationWizard.KEY_CUSTOMER_PHONE) == null) return false; 
        return true; 
    } 

FrontPage.java 

复制代码代码如下:
package swt_jface.demo12; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 
import org.eclipse.jface.wizard.WizardPage; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.layout.RowLayout; 
import org.eclipse.swt.widgets.Combo; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Listener; 
public class FrontPage extends WizardPage { 
Combo comboRoomTypes; 
Combo comboArrivalYear; 
Combo comboArrivalMonth; 
Combo comboArrivalDay; 
Combo comboDepartureYear; 
Combo comboDepartureMonth; 
Combo comboDepartureDay; 
FrontPage() { 
super("FrontPage"); 
setTitle("Your reservation information"); 
setDescription("Select the type of room and your arrival date & departure date"); 
public void createControl(Composite parent) { 
Composite composite = new Composite(parent, SWT.NULL); 
GridLayout gridLayout = new GridLayout(2, false); 
composite.setLayout(gridLayout); 
new Label(composite, SWT.NULL).setText("Arrival date: "); 
Composite compositeArrival = new Composite(composite, SWT.NULL); 
compositeArrival.setLayout(new RowLayout()); 
String[] months = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" 
}; 
Calendar calendar = new GregorianCalendar(); 
((ReservationWizard)getWizard()).data.arrivalDate = calendar.getTime(); 
comboArrivalMonth = new Combo(compositeArrival, SWT.BORDER | SWT.READ_ONLY); 
for(int i=0; i<months.length; i++) comboArrivalMonth.add(months[i]); 
comboArrivalMonth.select(calendar.get(Calendar.MONTH)); 
comboArrivalDay = new Combo(compositeArrival, SWT.BORDER | SWT.READ_ONLY); 
for(int i=0; i<31; i++) comboArrivalDay.add("" + (i+1)); 
comboArrivalDay.select(calendar.get(Calendar.DAY_OF_MONTH)-1); 
comboArrivalYear = new Combo(compositeArrival, SWT.BORDER | SWT.READ_ONLY); 
for(int i=2004; i<2010; i++) comboArrivalYear.add("" + i); 
comboArrivalYear.select(calendar.get(Calendar.YEAR)-2004); 
calendar.add(Calendar.DATE, 1); 
((ReservationWizard)getWizard()).data.departureDate = calendar.getTime(); 
new Label(composite, SWT.NULL).setText("Departure date: "); 
Composite compositeDeparture = new Composite(composite, SWT.NULL | SWT.READ_ONLY); 
compositeDeparture.setLayout(new RowLayout()); 
comboDepartureMonth = new Combo(compositeDeparture, SWT.NULL | SWT.READ_ONLY); 
for(int i=0; i<months.length; i++) comboDepartureMonth.add(months[i]); 
comboDepartureMonth.select(calendar.get(Calendar.MONTH)); 
comboDepartureDay = new Combo(compositeDeparture, SWT.NULL | SWT.READ_ONLY); 
for(int i=0; i<31; i++) comboDepartureDay.add("" + (i+1)); 
comboDepartureDay.select(calendar.get(Calendar.DAY_OF_MONTH)-1); 
comboDepartureYear = new Combo(compositeDeparture, SWT.NULL | SWT.READ_ONLY); 
for(int i=2004; i<2010; i++) comboDepartureYear.add("" + i); 
comboDepartureYear.select(calendar.get(Calendar.YEAR)-2004); 
Label line = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL); 
GridData gridData = new GridData(GridData.FILL_HORIZONTAL); 
gridData.horizontalSpan = 2; 
line.setLayoutData(gridData); 
new Label(composite, SWT.NULL).setText("Room type: "); 
comboRoomTypes = new Combo(composite, SWT.BORDER | SWT.READ_ONLY); 
comboRoomTypes.add("Standard room (rate: $198)"); 
comboRoomTypes.add("Deluxe room (rate: $298)"); 
comboRoomTypes.select(0); 
Listener selectionListener = new Listener() { 
public void handleEvent(Event event) { 
int arrivalDay = comboArrivalDay.getSelectionIndex() + 1; 
int arrivalMonth = comboArrivalMonth.getSelectionIndex(); 
int arrivalYear = comboArrivalYear.getSelectionIndex() + 2004; 
int departureDay = comboDepartureDay.getSelectionIndex() + 1; 
int departureMonth = comboDepartureMonth.getSelectionIndex(); 
int departureYear = comboDepartureYear.getSelectionIndex() + 2004; 
setDates(arrivalDay, arrivalMonth, arrivalYear, departureDay, departureMonth, departureYear); 
}; 
comboArrivalDay.addListener(SWT.Selection, selectionListener); 
comboArrivalMonth.addListener(SWT.Selection, selectionListener); 
comboArrivalYear.addListener(SWT.Selection, selectionListener); 
comboDepartureDay.addListener(SWT.Selection, selectionListener); 
comboDepartureMonth.addListener(SWT.Selection, selectionListener); 
comboDepartureYear.addListener(SWT.Selection, selectionListener); 
comboRoomTypes.addListener(SWT.Selection, new Listener() { 
public void handleEvent(Event event) { 
((ReservationWizard)getWizard()).data.roomType = comboRoomTypes.getSelectionIndex(); 
}); 
setControl(composite); 
private void setDates(int arrivalDay, int arrivalMonth, int arrivalYear, int departureDay, int departureMonth, int departureYear) { 
Calendar calendar = new GregorianCalendar(); 
calendar.set(Calendar.DAY_OF_MONTH, arrivalDay); 
calendar.set(Calendar.MONTH, arrivalMonth); 
calendar.set(Calendar.YEAR, arrivalYear); 
Date arrivalDate = calendar.getTime(); 
calendar.set(Calendar.DAY_OF_MONTH, departureDay); 
calendar.set(Calendar.MONTH, departureMonth); 
calendar.set(Calendar.YEAR, departureYear); 
Date departureDate = calendar.getTime(); 
System.out.println(arrivalDate + " - " + departureDate); 
if(! arrivalDate.before(departureDate)) { 
setErrorMessage("The arrival date is not before the departure date"); 
setPageComplete(false); 
}else{ 
setErrorMessage(null); 
setPageComplete(true); 
((ReservationWizard)getWizard()).data.arrivalDate = arrivalDate; 
((ReservationWizard)getWizard()).data.departureDate = departureDate; 
package swt_jface.demo12; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 
import org.eclipse.jface.wizard.WizardPage; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.layout.RowLayout; 
import org.eclipse.swt.widgets.Combo; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Listener; 
public class FrontPage extends WizardPage { 
    Combo comboRoomTypes; 
    Combo comboArrivalYear; 
    Combo comboArrivalMonth; 
    Combo comboArrivalDay; 
    Combo comboDepartureYear; 
    Combo comboDepartureMonth; 
    Combo comboDepartureDay; 
    FrontPage() { 
        super("FrontPage"); 
        setTitle("Your reservation information"); 
        setDescription("Select the type of room and your arrival date & departure date"); 
    } 
    public void createControl(Composite parent) { 
        Composite composite = new Composite(parent, SWT.NULL); 
        GridLayout gridLayout = new GridLayout(2, false); 
        composite.setLayout(gridLayout); 
        new Label(composite, SWT.NULL).setText("Arrival date: "); 
        Composite compositeArrival = new Composite(composite, SWT.NULL); 
        compositeArrival.setLayout(new RowLayout()); 
        String[] months = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
                "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" 
        }; 
        Calendar calendar = new GregorianCalendar(); 
        ((ReservationWizard)getWizard()).data.arrivalDate = calendar.getTime(); 
        comboArrivalMonth = new Combo(compositeArrival, SWT.BORDER | SWT.READ_ONLY); 
        for(int i=0; i<months.length; i++) comboArrivalMonth.add(months[i]); 
        comboArrivalMonth.select(calendar.get(Calendar.MONTH)); 
        comboArrivalDay = new Combo(compositeArrival, SWT.BORDER | SWT.READ_ONLY); 
        for(int i=0; i<31; i++) comboArrivalDay.add("" + (i+1)); 
        comboArrivalDay.select(calendar.get(Calendar.DAY_OF_MONTH)-1); 
        comboArrivalYear = new Combo(compositeArrival, SWT.BORDER | SWT.READ_ONLY); 
        for(int i=2004; i<2010; i++) comboArrivalYear.add("" + i); 
        comboArrivalYear.select(calendar.get(Calendar.YEAR)-2004); 
        calendar.add(Calendar.DATE, 1); 
        ((ReservationWizard)getWizard()).data.departureDate = calendar.getTime(); 
        new Label(composite, SWT.NULL).setText("Departure date: "); 
        Composite compositeDeparture = new Composite(composite, SWT.NULL | SWT.READ_ONLY); 
        compositeDeparture.setLayout(new RowLayout()); 
        comboDepartureMonth = new Combo(compositeDeparture, SWT.NULL | SWT.READ_ONLY); 
        for(int i=0; i<months.length; i++) comboDepartureMonth.add(months[i]); 
        comboDepartureMonth.select(calendar.get(Calendar.MONTH)); 
        comboDepartureDay = new Combo(compositeDeparture, SWT.NULL | SWT.READ_ONLY); 
        for(int i=0; i<31; i++) comboDepartureDay.add("" + (i+1)); 
        comboDepartureDay.select(calendar.get(Calendar.DAY_OF_MONTH)-1); 
        comboDepartureYear = new Combo(compositeDeparture, SWT.NULL | SWT.READ_ONLY); 
        for(int i=2004; i<2010; i++) comboDepartureYear.add("" + i); 
        comboDepartureYear.select(calendar.get(Calendar.YEAR)-2004); 
        Label line = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL); 
        GridData gridData = new GridData(GridData.FILL_HORIZONTAL); 
        gridData.horizontalSpan = 2; 
        line.setLayoutData(gridData); 
        new Label(composite, SWT.NULL).setText("Room type: "); 
        comboRoomTypes = new Combo(composite, SWT.BORDER | SWT.READ_ONLY); 
        comboRoomTypes.add("Standard room (rate: $198)"); 
        comboRoomTypes.add("Deluxe room (rate: $298)"); 
        comboRoomTypes.select(0); 
        Listener selectionListener = new Listener() { 
            public void handleEvent(Event event) { 
                int arrivalDay = comboArrivalDay.getSelectionIndex() + 1; 
                int arrivalMonth = comboArrivalMonth.getSelectionIndex(); 
                int arrivalYear = comboArrivalYear.getSelectionIndex() + 2004; 
                int departureDay = comboDepartureDay.getSelectionIndex() + 1; 
                int departureMonth = comboDepartureMonth.getSelectionIndex(); 
                int departureYear = comboDepartureYear.getSelectionIndex() + 2004; 
                setDates(arrivalDay, arrivalMonth, arrivalYear, departureDay, departureMonth, departureYear); 
            } 
        }; 
        comboArrivalDay.addListener(SWT.Selection, selectionListener); 
        comboArrivalMonth.addListener(SWT.Selection, selectionListener); 
        comboArrivalYear.addListener(SWT.Selection, selectionListener); 
        comboDepartureDay.addListener(SWT.Selection, selectionListener); 
        comboDepartureMonth.addListener(SWT.Selection, selectionListener); 
        comboDepartureYear.addListener(SWT.Selection, selectionListener); 
        comboRoomTypes.addListener(SWT.Selection, new Listener() { 
            public void handleEvent(Event event) { 
                ((ReservationWizard)getWizard()).data.roomType = comboRoomTypes.getSelectionIndex(); 
            } 
        }); 
        setControl(composite); 
    } 
    private void setDates(int arrivalDay, int arrivalMonth, int arrivalYear, int departureDay, int departureMonth, int departureYear) { 
        Calendar calendar = new GregorianCalendar(); 
        calendar.set(Calendar.DAY_OF_MONTH, arrivalDay); 
        calendar.set(Calendar.MONTH, arrivalMonth); 
        calendar.set(Calendar.YEAR, arrivalYear); 
        Date arrivalDate = calendar.getTime(); 
        calendar.set(Calendar.DAY_OF_MONTH, departureDay); 
        calendar.set(Calendar.MONTH, departureMonth); 
        calendar.set(Calendar.YEAR, departureYear); 
        Date departureDate = calendar.getTime(); 
        System.out.println(arrivalDate + " - " + departureDate); 
        if(! arrivalDate.before(departureDate)) { 
            setErrorMessage("The arrival date is not before the departure date"); 
            setPageComplete(false); 
        }else{ 
            setErrorMessage(null); 
            setPageComplete(true); 
            ((ReservationWizard)getWizard()).data.arrivalDate = arrivalDate; 
            ((ReservationWizard)getWizard()).data.departureDate = departureDate; 
        } 
    } 

PaymentInfoPage.java 

复制代码代码如下:
package swt_jface.demo12; 
import org.eclipse.jface.wizard.WizardPage; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Combo; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Text; 
public class PaymentInfoPage extends WizardPage { 
Combo comboCreditCardTypes; 
Text textCreditCardNumber; 
Text textCreditCardExpiration; 
public PaymentInfoPage() { 
super("PaymentInfo"); 
setTitle("Payment information"); 
setDescription("Please enter your credit card details"); 
setPageComplete(false); 
public void createControl(Composite parent) { 
Composite composite = new Composite(parent, SWT.NULL); 
composite.setLayout(new GridLayout(2, false)); 
new Label(composite, SWT.NULL).setText("Credit card type: "); 
comboCreditCardTypes = new Combo(composite, SWT.READ_ONLY | SWT.BORDER); 
comboCreditCardTypes.add("American Express"); 
comboCreditCardTypes.add("Master Card"); 
comboCreditCardTypes.add("Visa"); 
comboCreditCardTypes.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
new Label(composite, SWT.NULL).setText("Credit card number: "); 
textCreditCardNumber = new Text(composite, SWT.SINGLE | SWT.BORDER); 
textCreditCardNumber.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
new Label(composite, SWT.NULL).setText("Expiration (MM/YY)"); 
textCreditCardExpiration = new Text(composite, SWT.SINGLE | SWT.BORDER); 
textCreditCardExpiration.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
comboCreditCardTypes.addListener(SWT.Selection, new Listener() { 
public void handleEvent(Event event) { 
((ReservationWizard)getWizard()).data.creditCardType = comboCreditCardTypes.getSelectionIndex(); 
if(((ReservationWizard)getWizard()).data.creditCardNumber != null && 
((ReservationWizard)getWizard()).data.creditCardExpiration != null) 
setPageComplete(true); 
else 
setPageComplete(false); 
}); 
textCreditCardNumber.addListener(SWT.Modify, new Listener() { 
public void handleEvent(Event event) { 
((ReservationWizard)getWizard()).data.creditCardNumber = textCreditCardNumber.getText(); 
if(((ReservationWizard)getWizard()).data.creditCardNumber != null && 
((ReservationWizard)getWizard()).data.creditCardExpiration != null) 
setPageComplete(true); 
else 
setPageComplete(false); 
}); 
textCreditCardExpiration.addListener(SWT.Modify, new Listener() { 
public void handleEvent(Event event) { 
String text = textCreditCardExpiration.getText().trim(); 
if(text.length() == 5 && text.charAt(2) == '/') { 
((ReservationWizard)getWizard()).data.creditCardExpiration = text; 
setErrorMessage(null); 
}else{ 
((ReservationWizard)getWizard()).data.creditCardExpiration = null; 
setErrorMessage("Invalid expiration date: " + text); 
if(((ReservationWizard)getWizard()).data.creditCardNumber != null && 
((ReservationWizard)getWizard()).data.creditCardExpiration != null) 
setPageComplete(true); 
else 
setPageComplete(false); 
}); 
setControl(composite); 
package swt_jface.demo12; 
import org.eclipse.jface.wizard.WizardPage; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Combo; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Text; 
public class PaymentInfoPage extends WizardPage { 
    Combo comboCreditCardTypes; 
    Text textCreditCardNumber; 
    Text textCreditCardExpiration; 
    public PaymentInfoPage() { 
        super("PaymentInfo"); 
        setTitle("Payment information"); 
        setDescription("Please enter your credit card details"); 
        setPageComplete(false); 
    } 
    public void createControl(Composite parent) { 
        Composite composite = new Composite(parent, SWT.NULL); 
        composite.setLayout(new GridLayout(2, false)); 
        new Label(composite, SWT.NULL).setText("Credit card type: "); 
        comboCreditCardTypes = new Combo(composite, SWT.READ_ONLY | SWT.BORDER); 
        comboCreditCardTypes.add("American Express"); 
        comboCreditCardTypes.add("Master Card"); 
        comboCreditCardTypes.add("Visa"); 
        comboCreditCardTypes.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        new Label(composite, SWT.NULL).setText("Credit card number: "); 
        textCreditCardNumber = new Text(composite, SWT.SINGLE | SWT.BORDER); 
        textCreditCardNumber.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        new Label(composite, SWT.NULL).setText("Expiration (MM/YY)"); 
        textCreditCardExpiration = new Text(composite, SWT.SINGLE | SWT.BORDER); 
        textCreditCardExpiration.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 
        comboCreditCardTypes.addListener(SWT.Selection, new Listener() { 
            public void handleEvent(Event event) { 
                ((ReservationWizard)getWizard()).data.creditCardType = comboCreditCardTypes.getSelectionIndex(); 
                if(((ReservationWizard)getWizard()).data.creditCardNumber != null && 
                ((ReservationWizard)getWizard()).data.creditCardExpiration != null) 
                    setPageComplete(true); 
                else 
                    setPageComplete(false); 
            } 
        }); 
        textCreditCardNumber.addListener(SWT.Modify, new Listener() { 
            public void handleEvent(Event event) { 
                ((ReservationWizard)getWizard()).data.creditCardNumber = textCreditCardNumber.getText(); 
                if(((ReservationWizard)getWizard()).data.creditCardNumber != null && 
                ((ReservationWizard)getWizard()).data.creditCardExpiration != null) 
                    setPageComplete(true); 
                else 
                    setPageComplete(false); 
            } 
        }); 
        textCreditCardExpiration.addListener(SWT.Modify, new Listener() { 
            public void handleEvent(Event event) { 
                String text = textCreditCardExpiration.getText().trim(); 
                if(text.length() == 5 && text.charAt(2) == '/') { 
                    ((ReservationWizard)getWizard()).data.creditCardExpiration = text; 
                    setErrorMessage(null); 
                }else{ 
                    ((ReservationWizard)getWizard()).data.creditCardExpiration = null; 
                    setErrorMessage("Invalid expiration date: " + text); 
                } 
                if(((ReservationWizard)getWizard()).data.creditCardNumber != null && 
                ((ReservationWizard)getWizard()).data.creditCardExpiration != null) 
                    setPageComplete(true); 
                else 
                    setPageComplete(false); 
            } 
        }); 
        setControl(composite); 
    } 

ReservationWizard.java 

复制代码代码如下:
package swt_jface.demo12; 
import java.io.IOException; 
import java.lang.reflect.InvocationTargetException; 
import java.util.Date; 
import org.eclipse.core.runtime.IProgressMonitor; 
import org.eclipse.jface.dialogs.DialogSettings; 
import org.eclipse.jface.dialogs.MessageDialog; 
import org.eclipse.jface.operation.IRunnableWithProgress; 
import org.eclipse.jface.resource.ImageDescriptor; 
import org.eclipse.jface.wizard.Wizard; 
class ReservationData { 
Date arrivalDate; 
Date departureDate; 
int roomType; 
String customerName; 
String customerPhone; 
String customerEmail; 
String customerAddress; 
int creditCardType; 
String creditCardNumber; 
String creditCardExpiration; 
public String toString() { 
StringBuffer sb = new StringBuffer(); 
sb.append("* HOTEL ROOM RESERVATION DETAILS *\n"); 
sb.append("Arrival date:\t" + arrivalDate.toString() + "\n"); 
sb.append("Departure date:\t" + departureDate.toString() + "\n"); 
sb.append("Room type:\t" + roomType + "\n"); 
sb.append("Customer name:\t" + customerName + "\n"); 
sb.append("Customer email:\t" + customerEmail + "\n"); 
sb.append("Credit card no.:\t" + creditCardNumber + "\n"); 
return sb.toString(); 
public class ReservationWizard extends Wizard { 
static final String DIALOG_SETTING_FILE = "C:/userInfo.xml"; 
static final String KEY_CUSTOMER_NAME = "customer-name"; 
static final String KEY_CUSTOMER_EMAIL = "customer-email"; 
static final String KEY_CUSTOMER_PHONE = "customer-phone"; 
static final String KEY_CUSTOMER_ADDRESS = "customer-address"; 
ReservationData data = new ReservationData(); 
public ReservationWizard() { 
setWindowTitle("Hotel room reservation wizard"); 
setNeedsProgressMonitor(true); 
setDefaultPageImageDescriptor(ImageDescriptor.createFromFile(null, "C:/icons/hotel.gif")); 
DialogSettings dialogSettings = new DialogSettings("userInfo"); 
try { 
dialogSettings.load(DIALOG_SETTING_FILE); 
} catch (IOException e) { 
e.printStackTrace(); 
setDialogSettings(dialogSettings); 
public void addPages() { 
addPage(new FrontPage()); 
addPage(new CustomerInfoPage()); 
addPage(new PaymentInfoPage()); 
public boolean performFinish() { 
if(getDialogSettings() != null) { 
getDialogSettings().put(KEY_CUSTOMER_NAME, data.customerName); 
getDialogSettings().put(KEY_CUSTOMER_PHONE, data.customerPhone); 
getDialogSettings().put(KEY_CUSTOMER_EMAIL, data.customerEmail); 
getDialogSettings().put(KEY_CUSTOMER_ADDRESS, data.customerAddress); 
try { 
getDialogSettings().save(DIALOG_SETTING_FILE); 
} catch (IOException e1) { 
e1.printStackTrace(); 
try { 
getContainer().run(true, true, new IRunnableWithProgress() { 
public void run(IProgressMonitor monitor) 
throws InvocationTargetException, InterruptedException { 
monitor.beginTask("Store data", 100); 
monitor.worked(40); 
System.out.println(data); 
Thread.sleep(2000); 
monitor.done(); 
}); 
} catch (InvocationTargetException e) { 
e.printStackTrace(); 
} catch (InterruptedException e) { 
e.printStackTrace(); 
return true; 
public boolean performCancel() { 
boolean ans = MessageDialog.openConfirm(getShell(), "Confirmation", "Are you sure to cancel the task?"); 
if(ans) 
return true; 
else 
return false; 
package swt_jface.demo12; 
import java.io.IOException; 
import java.lang.reflect.InvocationTargetException; 
import java.util.Date; 
import org.eclipse.core.runtime.IProgressMonitor; 
import org.eclipse.jface.dialogs.DialogSettings; 
import org.eclipse.jface.dialogs.MessageDialog; 
import org.eclipse.jface.operation.IRunnableWithProgress; 
import org.eclipse.jface.resource.ImageDescriptor; 
import org.eclipse.jface.wizard.Wizard; 
class ReservationData { 
    Date arrivalDate; 
    Date departureDate; 
    int roomType; 
    String customerName; 
    String customerPhone; 
    String customerEmail; 
    String customerAddress; 
    int creditCardType; 
    String creditCardNumber; 
    String creditCardExpiration; 
    public String toString() { 
        StringBuffer sb = new StringBuffer(); 
        sb.append("* HOTEL ROOM RESERVATION DETAILS *\n"); 
        sb.append("Arrival date:\t" + arrivalDate.toString() + "\n"); 
        sb.append("Departure date:\t" + departureDate.toString() + "\n"); 
        sb.append("Room type:\t" + roomType + "\n"); 
        sb.append("Customer name:\t" + customerName + "\n"); 
        sb.append("Customer email:\t" + customerEmail + "\n"); 
        sb.append("Credit card no.:\t" + creditCardNumber + "\n"); 
        return sb.toString(); 
    } 
public class ReservationWizard extends Wizard { 
    static final String DIALOG_SETTING_FILE = "C:/userInfo.xml"; 
    static final String KEY_CUSTOMER_NAME = "customer-name"; 
    static final String KEY_CUSTOMER_EMAIL = "customer-email"; 
    static final String KEY_CUSTOMER_PHONE = "customer-phone"; 
    static final String KEY_CUSTOMER_ADDRESS = "customer-address"; 
    ReservationData data = new ReservationData(); 
    public ReservationWizard() { 
        setWindowTitle("Hotel room reservation wizard"); 
        setNeedsProgressMonitor(true); 
        setDefaultPageImageDescriptor(ImageDescriptor.createFromFile(null, "C:/icons/hotel.gif")); 
        DialogSettings dialogSettings = new DialogSettings("userInfo"); 
        try { 
            dialogSettings.load(DIALOG_SETTING_FILE); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        }         
        setDialogSettings(dialogSettings); 
    } 
    public void addPages() { 
        addPage(new FrontPage()); 
        addPage(new CustomerInfoPage()); 
        addPage(new PaymentInfoPage());     
    } 
    public boolean performFinish() { 
        if(getDialogSettings() != null) { 
            getDialogSettings().put(KEY_CUSTOMER_NAME, data.customerName); 
            getDialogSettings().put(KEY_CUSTOMER_PHONE, data.customerPhone); 
            getDialogSettings().put(KEY_CUSTOMER_EMAIL, data.customerEmail); 
            getDialogSettings().put(KEY_CUSTOMER_ADDRESS, data.customerAddress); 
            try { 
                getDialogSettings().save(DIALOG_SETTING_FILE); 
            } catch (IOException e1) { 
                e1.printStackTrace(); 
            } 
        } 
        try { 
            getContainer().run(true, true, new IRunnableWithProgress() { 
                public void run(IProgressMonitor monitor) 
                    throws InvocationTargetException, InterruptedException { 
                    monitor.beginTask("Store data", 100); 
                    monitor.worked(40); 
                    System.out.println(data); 
                    Thread.sleep(2000); 
                    monitor.done(); 
                } 
            }); 
        } catch (InvocationTargetException e) { 
            e.printStackTrace(); 
        } catch (InterruptedException e) { 
            e.printStackTrace(); 
        } 
        return true; 
    } 
    public boolean performCancel() { 
        boolean ans = MessageDialog.openConfirm(getShell(), "Confirmation", "Are you sure to cancel the task?"); 
        if(ans) 
            return true; 
        else 
            return false; 
    }     

userInfo.xml 

复制代码代码如下:
<?xml version="1.0" encoding="UTF-8"?> 
<section name="userInfo"> 
<item value="お早 
" key="customer-address"/> 
<item value="123" key="customer-phone"/> 
<item value="123" key="customer-name"/> 
<item value="123@sina.com" key="customer-email"/> 
</section> 
 
 
     
  ...
  ...
 attach_img

转载于:https://www.cnblogs.com/winifredfs/p/10164118.html

你可能感兴趣的文章
第一次作业
查看>>
《JavaScript高级程序设计》学习笔记——最佳实践
查看>>
【CCPC-Wannafly Winter Camp Day3 (Div1) G】排列(水题)
查看>>
js 中三元运算符的运用
查看>>
DLL函数重定向
查看>>
docker 常用命令
查看>>
Python学习笔记--8.7 函数--可变参数、关键字参数
查看>>
四则运算的代码的改进(三)
查看>>
thinkphp 内置标签volist 控制换行
查看>>
使用存储过程和视图存储配置
查看>>
数据分析告诉我们的四个经验教训
查看>>
ReportView动态加载带参数的RDCL文件及子报表
查看>>
inside tomcat 6, 环境搭建
查看>>
INF6027 Introduction to Data Science Analysis of the UK Police Dataset
查看>>
设计模式(创建型模式-单例模式)
查看>>
超市收银系统_定义商品的父类和各个子类的实现——1
查看>>
LAMP环境搭建(Ubuntu)
查看>>
Java学习笔记(15)
查看>>
New year comes again
查看>>
编写符合ANSI和Unicode的应用程序
查看>>