1 6 package com.nightlabs.ipanema.person.edit.blockbased; 7 8 import java.util.HashMap ; 9 import java.util.Iterator ; 10 import java.util.List ; 11 import java.util.Map ; 12 13 import org.eclipse.swt.SWT; 14 import org.eclipse.swt.widgets.Composite; 15 import org.eclipse.swt.widgets.Control; 16 17 import com.nightlabs.ipanema.person.Person; 18 import com.nightlabs.ipanema.person.PersonDataBlock; 19 import com.nightlabs.ipanema.person.PersonDataNotFoundException; 20 import com.nightlabs.ipanema.person.id.PersonStructBlockID; 21 import com.nightlabs.rcp.composite.TightWrapperComposite; 22 import com.nightlabs.rcp.exceptionhandler.ExceptionHandlerRegistry; 23 import com.nightlabs.rcp.extensionpoint.EPProcessorException; 24 import com.nightlabs.rcp.wizard.DynamicPathWizardPage; 25 26 32 public class PersonCompoundDataBlockWizardPage extends DynamicPathWizardPage { 33 34 private Person person; 35 private Map personDataBlockEditors = new HashMap (); 36 private Map personDataBlocks = new HashMap (); 37 private PersonStructBlockID[] structBlockIDs; 38 private int personDataBlockEditorColumnHint = 2; 39 40 41 TightWrapperComposite wrapperComp; 42 43 private static PersonStructBlockID[] getArrayFromList(List structBlockIDs) { 44 PersonStructBlockID[] blockIDs = new PersonStructBlockID[structBlockIDs.size()]; 45 int i = 0; 46 for (Iterator iter = structBlockIDs.iterator(); iter.hasNext();) { 47 PersonStructBlockID structBlockID = (PersonStructBlockID) iter.next(); 48 blockIDs[i] = structBlockID; 49 i++; 50 } 51 return blockIDs; 52 } 53 54 public PersonCompoundDataBlockWizardPage ( 55 String pageName, 56 String title, 57 Person person, 58 List structBlockIDs 59 ) { 60 this(pageName, title, person, getArrayFromList(structBlockIDs)); 61 } 62 63 67 public PersonCompoundDataBlockWizardPage ( 68 String pageName, 69 String title, 70 Person person, 71 PersonStructBlockID[] structBlockIDs 72 ) { 73 super(pageName); 74 this.setTitle(title); 75 if (person == null) 76 throw new IllegalArgumentException ("Parameter person must not be null"); 77 this.person = person; 78 this.structBlockIDs = structBlockIDs; 79 for (int i = 0; i < structBlockIDs.length; i++) { 80 try { 81 personDataBlocks.put(structBlockIDs[i],person.getPersonDataBlockGroup(structBlockIDs[i]).getPersonDataBlock(0)); 82 } catch (PersonDataNotFoundException e) { 83 ExceptionHandlerRegistry.syncHandleException(e); 84 throw new RuntimeException (e); 85 } 86 } 87 } 88 89 96 protected void createWrapper(Composite parent) { 97 wrapperComp = new TightWrapperComposite(parent,SWT.NONE,true); 98 setControl(wrapperComp); 99 } 100 101 105 protected void createPersonDataBlockEditors() { 106 personDataBlockEditors.clear(); 107 for (int i = 0; i < structBlockIDs.length; i++) { 108 PersonDataBlock dataBlock = (PersonDataBlock)personDataBlocks.get(structBlockIDs[i]); 109 try { 110 PersonDataBlockEditor editor = 111 PersonDataBlockEditorFactoryRegistry.getSharedInstace().getPersonDataBlockEditor( 112 dataBlock, 114 wrapperComp, 115 SWT.NONE, 116 getPersonDataBlockEditorColumnHint() 117 ); 118 119 editor.refresh(dataBlock); 120 personDataBlockEditors.put( 121 structBlockIDs[i], 122 editor 123 ); 124 } catch (EPProcessorException e) { 125 ExceptionHandlerRegistry.asyncHandleException(e); 126 } 127 } 128 } 129 130 135 public Person getPerson() { 136 return person; 137 } 138 139 148 public PersonDataBlockEditor getPersonDataBlockEditor(PersonStructBlockID structBlockID) { 149 return (PersonDataBlockEditor)personDataBlockEditors.get(structBlockID); 150 } 151 152 158 public PersonDataBlock getPersonDataBlock(PersonStructBlockID structBlockID) { 159 return (PersonDataBlock)personDataBlocks.get(structBlockID); 160 } 161 162 167 public int getPersonDataBlockEditorColumnHint() { 168 return personDataBlockEditorColumnHint; 169 } 170 176 public void setPersonDataBlockEditorColumnHint( 177 int personDataBlockEditorColumnHint) { 178 this.personDataBlockEditorColumnHint = personDataBlockEditorColumnHint; 179 } 180 181 184 public void updatePerson() { 185 for (Iterator iter = personDataBlockEditors.values().iterator(); iter.hasNext();) { 186 PersonDataBlockEditor editor = (PersonDataBlockEditor) iter.next(); 187 editor.updatePerson(); 188 } 189 } 190 191 198 public Control createPageContents(Composite parent) { 199 createWrapper(parent); 200 createPersonDataBlockEditors(); 201 return wrapperComp; 202 } 203 } 204 | Popular Tags |