1 6 package com.nightlabs.base.entitylist; 7 8 import java.util.ArrayList ; 9 import java.util.Iterator ; 10 import java.util.List ; 11 12 import org.eclipse.swt.SWT; 13 import org.eclipse.swt.events.SelectionEvent; 14 import org.eclipse.swt.events.SelectionListener; 15 import org.eclipse.swt.layout.GridData; 16 import org.eclipse.swt.layout.RowLayout; 17 import org.eclipse.swt.widgets.Button; 18 import org.eclipse.swt.widgets.Composite; 19 20 import com.nightlabs.rcp.composite.TightWrapperComposite; 21 22 28 public class EntityManagementButtonArea extends TightWrapperComposite { 29 30 private Composite managementArea; 31 private Button buttonSave; 32 private List managers; 33 34 private EntityDataChangedListener dataChangedListener = new EntityDataChangedListener() { 35 public void entityDataChanged(EntityManager comp) { 36 buttonSave.setEnabled(true); 37 } 38 }; 39 40 public EntityManagementButtonArea(Composite parent, int style, EntityManager manager) { 41 this(parent, style, new EntityManager[]{manager}); 42 } 43 44 52 public EntityManagementButtonArea(Composite parent, int style, EntityManager[] associatedManagers) { 53 super(parent, style, true); 54 managers = new ArrayList (); 55 if (associatedManagers != null) { 56 for (int i = 0; i < associatedManagers.length; i++) { 57 managers.add(associatedManagers[i]); 58 associatedManagers[i].addDataChangedListener(dataChangedListener); 59 } 60 } 61 GridData gd = new GridData(GridData.FILL_HORIZONTAL); 62 managementArea = new Composite(this, SWT.NONE); 63 this.setLayoutData(gd); 64 RowLayout rl = new RowLayout(); 65 managementArea.setLayout(rl); 66 buttonSave = new Button(managementArea,SWT.PUSH); 67 buttonSave.setText("Save"); 68 buttonSave.setEnabled(false); 69 buttonSave.addSelectionListener( 70 new SelectionListener() { 71 public void widgetSelected(SelectionEvent e) { 72 if (managers != null) { 73 for (Iterator iter = managers.iterator(); iter.hasNext();) { 74 EntityManager manager = (EntityManager) iter.next(); 75 try { 76 manager.save(); 77 } catch (Exception e1) { 78 throw new RuntimeException (e1); 79 } 80 } 81 } 82 } 83 public void widgetDefaultSelected(SelectionEvent e) { 84 widgetSelected(e); 85 } 86 } 87 ); 88 } 89 90 93 public void dispose() { 94 for (Iterator iter = managers.iterator(); iter.hasNext();) { 95 EntityManager manager = (EntityManager) iter.next(); 96 manager.removeDataChangedListener(dataChangedListener); 97 } 98 managers.clear(); 99 super.dispose(); 100 } 101 102 } 103 | Popular Tags |