View Javadoc
1   package org.argeo.people.ui.composites;
2   
3   import javax.jcr.Node;
4   
5   import org.argeo.cms.ui.eclipse.forms.AbstractFormPart;
6   import org.argeo.cms.ui.eclipse.forms.FormToolkit;
7   import org.argeo.cms.ui.eclipse.forms.IManagedForm;
8   import org.argeo.connect.ui.ConnectEditor;
9   import org.argeo.connect.ui.ConnectUiUtils;
10  import org.argeo.connect.ui.ConnectWorkbenchUtils;
11  import org.argeo.people.PeopleNames;
12  import org.argeo.people.ui.PeopleMsg;
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.Text;
18  //import org.eclipse.ui.forms.AbstractFormPart;
19  //import org.eclipse.ui.forms.IManagedForm;
20  //import org.eclipse.ui.forms.widgets.FormToolkit;
21  
22  /** Simple composite to display and edit information about a bank account */
23  public class BankAccountComposite extends Composite {
24  	private static final long serialVersionUID = -3303030374442774568L;
25  
26  	private final Node currAccount;
27  
28  	private final ConnectEditor editor;
29  	private final FormToolkit toolkit;
30  	private final IManagedForm form;
31  	// Don't forget to unregister on dispose
32  	private AbstractFormPart formPart;
33  
34  	public BankAccountComposite(Composite parent, int style, ConnectEditor editor, Node bankAccount) {
35  		super(parent, style);
36  		this.currAccount = bankAccount;
37  		this.editor = editor;
38  		this.toolkit = editor.getFormToolkit();
39  		this.form = editor.getManagedForm();
40  		populate();
41  	}
42  
43  	private void populate() {
44  		// initialization
45  		Composite parent = this;
46  		this.setLayout(new GridLayout(6, false));
47  
48  		// Main Info
49  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.accountHolder.lead());
50  		final Text holderTxt = toolkit.createText(parent, "", SWT.BORDER);
51  		holderTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
52  
53  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.bankName.lead());
54  		final Text bankNameTxt = toolkit.createText(parent, "", SWT.BORDER);
55  		bankNameTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
56  
57  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.currency.lead());
58  		final Text currencyTxt = toolkit.createText(parent, "", SWT.BORDER);
59  		GridData gd = new GridData(SWT.LEFT, SWT.TOP, false, false);
60  		gd.widthHint = 50;
61  		currencyTxt.setLayoutData(gd);
62  
63  		// Bank number
64  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.accountNumber.lead());
65  		final Text accNbTxt = toolkit.createText(parent, "", SWT.BORDER);
66  		accNbTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
67  
68  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.bankNumber.lead());
69  		final Text bankNbTxt = toolkit.createText(parent, "", SWT.BORDER);
70  		bankNbTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));
71  
72  		// BIC / IBAN
73  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.BIC.lead());
74  		final Text bicTxt = toolkit.createText(parent, "", SWT.BORDER);
75  		bicTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
76  
77  		ConnectUiUtils.createBoldLabel(toolkit, parent, PeopleMsg.IBAN.lead());
78  		final Text ibanTxt = toolkit.createText(parent, "", SWT.BORDER);
79  		ibanTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));
80  
81  		formPart = new AbstractFormPart() {
82  			public void refresh() {
83  				super.refresh();
84  				if (!holderTxt.isDisposed()) {
85  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, holderTxt, currAccount,
86  							PeopleNames.PEOPLE_ACCOUNT_HOLDER);
87  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, bankNameTxt, currAccount,
88  							PeopleNames.PEOPLE_BANK_NAME);
89  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, currencyTxt, currAccount,
90  							PeopleNames.PEOPLE_CURRENCY);
91  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, accNbTxt, currAccount,
92  							PeopleNames.PEOPLE_ACCOUNT_NB);
93  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, bankNbTxt, currAccount,
94  							PeopleNames.PEOPLE_BANK_NB);
95  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, bicTxt, currAccount, PeopleNames.PEOPLE_BIC);
96  					ConnectWorkbenchUtils.refreshFormTextWidget(editor, ibanTxt, currAccount, PeopleNames.PEOPLE_IBAN);
97  					holderTxt.getParent().layout(true, true);
98  				}
99  			}
100 		};
101 
102 		// TODO must explicitly be called because it is created by the refresh
103 		// of a form part
104 		formPart.refresh();
105 
106 		// Listeners
107 		ConnectWorkbenchUtils.addModifyListener(holderTxt, currAccount, PeopleNames.PEOPLE_ACCOUNT_HOLDER, formPart);
108 		ConnectWorkbenchUtils.addModifyListener(bankNameTxt, currAccount, PeopleNames.PEOPLE_BANK_NAME, formPart);
109 		ConnectWorkbenchUtils.addModifyListener(currencyTxt, currAccount, PeopleNames.PEOPLE_CURRENCY, formPart);
110 		ConnectWorkbenchUtils.addModifyListener(accNbTxt, currAccount, PeopleNames.PEOPLE_ACCOUNT_NB, formPart);
111 		ConnectWorkbenchUtils.addModifyListener(bankNbTxt, currAccount, PeopleNames.PEOPLE_BANK_NB, formPart);
112 		ConnectWorkbenchUtils.addModifyListener(bicTxt, currAccount, PeopleNames.PEOPLE_BIC, formPart);
113 		ConnectWorkbenchUtils.addModifyListener(ibanTxt, currAccount, PeopleNames.PEOPLE_IBAN, formPart);
114 
115 		formPart.initialize(form);
116 		form.addPart(formPart);
117 	}
118 
119 	@Override
120 	public boolean setFocus() {
121 		return true;
122 	}
123 
124 	@Override
125 	public void dispose() {
126 		form.removePart(formPart);
127 		formPart.dispose();
128 		super.dispose();
129 	}
130 }