源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-10-25 11:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SWT(JFace) Wizard(Eclipse插件编程必备)
演示代码如下: HotelReservation.java
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
<?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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部