开发者

SWT(JFace) Wizard(Eclipse插件编程必备)

演示代码如下:

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);

    zJWHAub    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;

   http://www.devze.com; 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 = calendhttp://www.devze.comar.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-phzJWHAubone";

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, Inte开发者_Python培训rruptedException {

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>

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜