1 package org.argeo.people.web.parts;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.cms.ui.CmsUiProvider;
8 import org.argeo.cms.util.CmsUtils;
9 import org.argeo.connect.util.ConnectJcrUtils;
10 import org.argeo.people.ContactValueCatalogs;
11 import org.argeo.people.PeopleTypes;
12 import org.argeo.people.util.PeopleJcrUtils;
13 import org.eclipse.rap.rwt.RWT;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.events.SelectionAdapter;
16 import org.eclipse.swt.events.SelectionEvent;
17 import org.eclipse.swt.layout.RowLayout;
18 import org.eclipse.swt.widgets.Button;
19 import org.eclipse.swt.widgets.Composite;
20 import org.eclipse.swt.widgets.Control;
21
22
23 public class ContactButtonsPart implements CmsUiProvider {
24
25 @Override
26 public Control createUi(Composite parent, Node context) throws RepositoryException {
27 parent.setLayout(new RowLayout(SWT.HORIZONTAL));
28
29 createCategoryButton(parent, context);
30
31 configurePrimaryButton(createPrimaryButton(parent, context));
32
33
34
35
36 return parent;
37 }
38
39 private Button createCategoryButton(Composite parent, Node context) throws RepositoryException {
40 Button btn = new Button(parent, SWT.NONE);
41 btn.setLayoutData(CmsUtils.rowData16px());
42 btn.setData(RWT.CUSTOM_VARIANT, getCssStyle(context));
43 return btn;
44 }
45
46 private String getCssStyle(Node entity) throws RepositoryException {
47
48 Node contactable = entity.getParent().getParent();
49 boolean isPro = ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_CONTACT_REF);
50
51 if (entity.isNodeType(PeopleTypes.PEOPLE_MAIL)) {
52 return "people_icon_email";
53 }
54
55 else if (entity.isNodeType(PeopleTypes.PEOPLE_PHONE))
56 return "people_icon_phone";
57 else if (entity.isNodeType(PeopleTypes.PEOPLE_MOBILE))
58 return "people_icon_mobile";
59 else if (entity.isNodeType(PeopleTypes.PEOPLE_FAX))
60 return "people_icon_fax";
61
62 else if (entity.isNodeType(PeopleTypes.PEOPLE_POSTAL_ADDRESS)) {
63 if (contactable.isNodeType(PeopleTypes.PEOPLE_PERSON )&& isPro)
64 return "people_icon_work";
65 return "people_icon_address";
66 }
67
68 else if (entity.isNodeType(PeopleTypes.PEOPLE_URL)) {
69
70 return "people_icon_url";
71 }
72
73 else if (entity.isNodeType(PeopleTypes.PEOPLE_SOCIAL_MEDIA)) {
74 String category = ConnectJcrUtils.get(entity, Property.JCR_TITLE);
75 if (ContactValueCatalogs.CONTACT_CAT_GOOGLEPLUS.equals(category))
76 return "people_icon_google_plus";
77 else if (ContactValueCatalogs.CONTACT_CAT_FACEBOOK.equals(category))
78 return "people_icon_facebook";
79 else if (ContactValueCatalogs.CONTACT_CAT_LINKEDIN.equals(category))
80 return "people_icon_linkedin";
81 else if (ContactValueCatalogs.CONTACT_CAT_TWITTER.equals(category))
82 return "people_icon_twitter";
83 else if (ContactValueCatalogs.CONTACT_CAT_XING.equals(category))
84 return "people_icon_xing";
85 return "people_icon_social_media";
86 }
87
88 else if (entity.isNodeType(PeopleTypes.PEOPLE_IMPP)) {
89 return "people_icon_impp";
90 }
91 return null;
92 }
93
94 @SuppressWarnings("unused")
95 private Button createDeleteButton(Composite parent, Node context) {
96 Button btn = new Button(parent, SWT.NONE);
97 btn.setLayoutData(CmsUtils.rowData16px());
98 btn.setData(RWT.CUSTOM_VARIANT, "cms_icon_delete");
99 return btn;
100 }
101
102 private Button createPrimaryButton(Composite parent, Node context) throws RepositoryException {
103 Button btn = new Button(parent, SWT.NONE);
104 btn.setLayoutData(CmsUtils.rowData16px());
105
106 boolean isPrimary = PeopleJcrUtils.isPrimary(context.getParent().getParent(), context);
107
108 if (isPrimary)
109 btn.setData(RWT.CUSTOM_VARIANT, "people_icon_primary");
110 else
111 btn.setData(RWT.CUSTOM_VARIANT, "people_icon_not_primary");
112 return btn;
113 }
114
115 @SuppressWarnings("unused")
116 private void configureDeleteButton(final Button btn) {
117 btn.addSelectionListener(new SelectionAdapter() {
118 private static final long serialVersionUID = 1L;
119
120 @Override
121 public void widgetSelected(final SelectionEvent event) {
122
123
124
125
126
127
128
129
130
131
132
133
134
135 }
136 });
137 }
138
139 private void configurePrimaryButton(final Button btn) {
140 btn.addSelectionListener(new SelectionAdapter() {
141 private static final long serialVersionUID = 1L;
142
143 @Override
144 public void widgetSelected(final SelectionEvent event) {
145
146
147
148
149 }
150 });
151 }
152 }