1 6 package com.nightlabs.ipanema.person.edit.blockbased; 7 8 import org.eclipse.swt.SWT; 9 import org.eclipse.swt.events.SelectionEvent; 10 import org.eclipse.swt.events.SelectionListener; 11 import org.eclipse.swt.layout.GridData; 12 import org.eclipse.swt.widgets.Button; 13 import org.eclipse.swt.widgets.Composite; 14 import org.eclipse.swt.widgets.Control; 15 16 import com.nightlabs.ipanema.base.IpanemaBasePlugin; 17 import com.nightlabs.ipanema.person.Person; 18 import com.nightlabs.ipanema.person.PersonStruct; 19 import com.nightlabs.ipanema.person.PersonStructCache; 20 import com.nightlabs.ipanema.person.TextPersonDataField; 21 import com.nightlabs.ipanema.person.edit.PersonDataFieldEditor; 22 import com.nightlabs.rcp.composite.LabeledTextComposite; 23 import com.nightlabs.rcp.exceptionhandler.ExceptionHandlerRegistry; 24 25 28 public class PersonPersonalDataWizardPage extends PersonDataBlockWizardPage implements PersonDataBlockEditorChangedListener{ 29 30 private LabeledTextComposite displayName; 31 private Button autoCreateDisplayName; 32 35 public PersonPersonalDataWizardPage(String pageName, String title, Person person) { 36 super(pageName,title,person,PersonStruct.PERSONALDATA); 37 } 38 39 43 public Control createPageContents(Composite parent) { 44 createWrapper(parent); 45 46 displayName = new LabeledTextComposite(wrapperComp, IpanemaBasePlugin.getResourceString("person.edit.wizard.pages.PersonalDataPage.labels.displayName"), SWT.NONE); 47 GridData displayNameGD = new GridData(); 48 displayNameGD.horizontalAlignment = GridData.FILL; 50 displayNameGD.grabExcessHorizontalSpace = true; 52 displayName.setLayoutData(displayNameGD); 53 54 autoCreateDisplayName = new Button(wrapperComp, SWT.CHECK); 55 GridData autoCreateDisplayNameGD = new GridData(); 56 autoCreateDisplayName.setLayoutData(autoCreateDisplayNameGD); 59 autoCreateDisplayName.setText(IpanemaBasePlugin.getResourceString("person.edit.wizard.pages.PersonalDataPage.labels.autoCreateDisplayName")); 60 autoCreateDisplayName.addSelectionListener( 61 new SelectionListener() { 62 63 public void widgetSelected(SelectionEvent arg0) { 64 displayName.getTextControl().setEnabled(!autoCreateDisplayName.getSelection()); 65 } 66 public void widgetDefaultSelected(SelectionEvent arg0) { 67 } 68 } 69 ); 70 autoCreateDisplayName.setSelection(true); 71 displayName.getTextControl().setEnabled(false); 72 73 Composite dummy = new Composite(wrapperComp,SWT.NONE); 74 GridData dummyGD = new GridData(); 75 dummyGD.heightHint = 10; 76 dummy.setLayoutData(dummyGD); 77 78 setPersonDataBlockEditorColumnHint(1); 79 createPersonDataBlockEditors(); 80 getPersonDataBlockEditor().addPersonDataBlockEditorChangedListener(this); 81 pageChanged(); 82 return wrapperComp; 83 } 84 85 protected void pageChanged() { 86 try { 87 updatePerson(); 88 TextPersonDataField name = (TextPersonDataField)getPersonDataBlock().getPersonDataField(PersonStruct.PERSONALDATA_NAME); 89 TextPersonDataField firstName = (TextPersonDataField)getPersonDataBlock().getPersonDataField(PersonStruct.PERSONALDATA_FIRSTNAME); 90 displayName.getTextControl().setText(getPerson().getPersonDisplayName()); 91 92 if (firstName.isEmpty()) 93 updateStatus(IpanemaBasePlugin.getResourceString("person.edit.wizard.pages.PersonalDataPage.errormessage.specifyFirstName")); 94 else if (name.isEmpty()) 95 updateStatus(IpanemaBasePlugin.getResourceString("person.edit.wizard.pages.PersonalDataPage.errormessage.specifyName")); 96 else 97 updateStatus(null); 98 } catch (Throwable t) { 99 ExceptionHandlerRegistry.syncHandleException(t); 100 } 101 } 102 105 public void personDataBlockEditorChanged(PersonDataBlockEditor dataBlockEditor, PersonDataFieldEditor dataFieldEditor) { 106 pageChanged(); 107 } 108 109 110 115 public void updatePerson() { 116 super.updatePerson(); 117 getPerson().setAutoGenerateDisplayName(autoCreateDisplayName.getSelection()); 118 getPerson().setPersonDisplayName(displayName.getTextControl().getText(), PersonStructCache.getPersonStructure()); 119 } 120 121 122 } 123 | Popular Tags |