SWT(JFace) Wizard(Eclipse插件编程必备)
SWT(JFace) Wizard(Eclipse插件编程必备)
发布时间:2016-12-28 来源:查字典编辑
摘要:演示代码如下:HotelReservation.java复制代码代码如下:packageswt_jface.demo12;importorg...

演示代码如下:

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("rnrnrn");

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("rnrnrn");

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>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类