1 6 package com.nightlabs.ipanema.person.edit.blockbased; 7 8 import java.util.ArrayList ; 9 import java.util.Iterator ; 10 import java.util.LinkedList ; 11 import java.util.List ; 12 13 import org.eclipse.swt.SWT; 14 import org.eclipse.swt.layout.GridData; 15 import org.eclipse.swt.layout.GridLayout; 16 import org.eclipse.swt.widgets.Composite; 17 import org.eclipse.swt.widgets.Control; 18 19 import com.nightlabs.ipanema.person.Person; 20 import com.nightlabs.ipanema.person.edit.PersonEditor; 21 import com.nightlabs.ipanema.person.id.PersonStructBlockID; 22 import com.nightlabs.rcp.composite.TightWrapperComposite; 23 24 28 public class FullDataBlockCoverageComposite extends Composite { 29 30 31 private int numColumns; 32 34 public FullDataBlockCoverageComposite(Composite parent, int style, String editorScope, Person person) { 35 super(parent, style); 36 this.numColumns = 1; 37 PersonStructBlockID[] fullCoverageBlockIDs = PersonEditorStructBlockRegistry.getSharedInstance().computeRemainingBlockKeys(editorScope); 38 createPersonEditors(); 39 List [] splitBlockIDs = new List [numColumns]; 40 for (int i=0; i<numColumns; i++) { 41 splitBlockIDs[i] = new ArrayList (); 42 } 43 for (int i=0; i<fullCoverageBlockIDs.length; i++){ 44 splitBlockIDs[i % numColumns].add(fullCoverageBlockIDs[i]); 45 } 46 47 GridLayout thisLayout = new GridLayout(); 48 thisLayout.numColumns = numColumns; 49 thisLayout.makeColumnsEqualWidth = true; 50 this.setLayout(thisLayout); 51 52 this.setLayoutData(new GridData(GridData.FILL_BOTH)); 53 54 for (int i=0; i<numColumns; i++) { 55 TightWrapperComposite wrapper = new TightWrapperComposite(this,SWT.BORDER,true); 56 BlockBasedPersonEditor personEditor = (BlockBasedPersonEditor)personEditors.get(i); 57 personEditor.setPerson(person); 58 personEditor.setEditorDomain(editorScope,"#FullDatBlockCoverageComposite"+i); 59 personEditor.setEditorPersonStructBlockList(splitBlockIDs[i]); 60 Control personEditorControl = personEditor.createControl(wrapper,true); 61 GridData editorControlGD = new GridData(GridData.FILL_BOTH); 62 personEditorControl.setLayoutData(editorControlGD); 63 } 64 65 } 66 67 private List personEditors = new LinkedList (); 68 69 private void createPersonEditors() { 70 personEditors.clear(); 71 for (int i=0; i<numColumns; i++) { 72 personEditors.add(new BlockBasedPersonEditor()); 73 } 74 } 75 76 public void updatePerson() { 77 for (Iterator iter = personEditors.iterator(); iter.hasNext();) { 78 PersonEditor editor = (PersonEditor) iter.next(); 79 editor.updatePerson(); 80 } 81 } 82 83 84 } 85 | Popular Tags |