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
19
20
21
22
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
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
45 Composite parent = this;
46 this.setLayout(new GridLayout(6, false));
47
48
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
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
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
103
104 formPart.refresh();
105
106
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 }