KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > base > entitylist > EntityManagementButtonArea


1 /*
2  * Created on Jun 15, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.base.entitylist;
7
8 import java.util.ArrayList JavaDoc;
9 import java.util.Iterator JavaDoc;
10 import java.util.List JavaDoc;
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 /**
23  * Button area associated to one or more EntityManager.
24  *
25  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
26  *
27  */

28 public class EntityManagementButtonArea extends TightWrapperComposite {
29
30     private Composite managementArea;
31     private Button buttonSave;
32     private List JavaDoc 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     /**
45      * Create a Composite with Buttons that manages the storage of Entities when
46      * their data changed.
47      *
48      * @param parent Parent Composite
49      * @param style SWT style
50      * @param associatedManagers An array of all Managers associated to this area. (e.g. several ManagementComposites or one ManagementView).
51      */

52     public EntityManagementButtonArea(Composite parent, int style, EntityManager[] associatedManagers) {
53         super(parent, style, true);
54         managers = new ArrayList JavaDoc();
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 JavaDoc iter = managers.iterator(); iter.hasNext();) {
74                                 EntityManager manager = (EntityManager) iter.next();
75                                 try {
76                                     manager.save();
77                                 } catch (Exception JavaDoc e1) {
78                                     throw new RuntimeException JavaDoc(e1);
79                                 }
80                             }
81                         }
82           }
83           public void widgetDefaultSelected(SelectionEvent e) {
84                         widgetSelected(e);
85           }
86         }
87     );
88     }
89
90     /**
91      * @see org.eclipse.swt.widgets.Widget#dispose()
92      */

93     public void dispose() {
94         for (Iterator JavaDoc 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