Skip to content

Commit ff2cbd7

Browse files
committed
1301 - optional participants in calendar events
1 parent 96778e5 commit ff2cbd7

File tree

6 files changed

+103
-27
lines changed

6 files changed

+103
-27
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.logicaldoc.gui.common.client.beans;
2+
3+
/**
4+
* An attendee of a calendar event
5+
*
6+
* @author Marco Meschieri - LogicalDOC
7+
* @since 9.1.1
8+
*/
9+
public class GUIAttendee extends GUIUser {
10+
11+
private static final long serialVersionUID = 1L;
12+
13+
private boolean notify = true;
14+
15+
private boolean required = true;
16+
17+
public GUIAttendee() {
18+
super();
19+
}
20+
21+
public boolean isNotify() {
22+
return notify;
23+
}
24+
25+
public boolean isRequired() {
26+
return required;
27+
}
28+
29+
public void setNotify(boolean notify) {
30+
this.notify = notify;
31+
}
32+
33+
public void setRequired(boolean required) {
34+
this.required = required;
35+
}
36+
37+
@Override
38+
public int hashCode() {
39+
final int prime = 31;
40+
int result = 1;
41+
result = prime * result + (notify ? 1231 : 1237);
42+
result = prime * result + (required ? 1231 : 1237);
43+
return result;
44+
}
45+
46+
@Override
47+
public boolean equals(Object obj) {
48+
if (this == obj)
49+
return true;
50+
if (obj == null)
51+
return false;
52+
if (getClass() != obj.getClass())
53+
return false;
54+
GUIAttendee other = (GUIAttendee) obj;
55+
if (notify != other.notify)
56+
return false;
57+
if (required != other.required)
58+
return false;
59+
return true;
60+
}
61+
}

logicaldoc-gui/src/main/java/com/logicaldoc/gui/common/client/beans/GUICalendarEvent.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class GUICalendarEvent implements Serializable {
4646

4747
private Date end = null;
4848

49-
private List<GUIUser> attendees = new ArrayList<>();
49+
private List<GUIAttendee> attendees = new ArrayList<>();
5050

5151
private List<GUIGroup> attendeesGroups = new ArrayList<>();
5252

@@ -153,7 +153,7 @@ public GUIGroup getAttendeeGroup(long id) {
153153
return null;
154154
}
155155

156-
public void addAttendee(GUIUser newPart) {
156+
public void addAttendee(GUIAttendee newPart) {
157157
if (getAttendee(newPart.getId()) != null)
158158
return;
159159
attendees.add(newPart);
@@ -166,8 +166,8 @@ public void addAttendee(GUIGroup newPart) {
166166
}
167167

168168
public void removeAttendee(long id) {
169-
List<GUIUser> newParts = new ArrayList<>();
170-
for (GUIUser guiUser : attendees) {
169+
List<GUIAttendee> newParts = new ArrayList<>();
170+
for (GUIAttendee guiUser : attendees) {
171171
if (id != guiUser.getId())
172172
newParts.add(guiUser);
173173
}
@@ -227,11 +227,11 @@ public void setOrganizer(String creator) {
227227
this.organizer = creator;
228228
}
229229

230-
public List<GUIUser> getAttendees() {
230+
public List<GUIAttendee> getAttendees() {
231231
return attendees;
232232
}
233233

234-
public void setAttendees(List<GUIUser> attendees) {
234+
public void setAttendees(List<GUIAttendee> attendees) {
235235
this.attendees = attendees;
236236
}
237237

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/calendar/CalendarEventDialog.java

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.logicaldoc.gui.common.client.DefaultAsyncCallback;
1212
import com.logicaldoc.gui.common.client.Feature;
1313
import com.logicaldoc.gui.common.client.Session;
14+
import com.logicaldoc.gui.common.client.beans.GUIAttendee;
1415
import com.logicaldoc.gui.common.client.beans.GUICalendarEvent;
1516
import com.logicaldoc.gui.common.client.beans.GUIDocument;
1617
import com.logicaldoc.gui.common.client.beans.GUIGroup;
@@ -31,6 +32,7 @@
3132
import com.logicaldoc.gui.frontend.client.services.CalendarService;
3233
import com.logicaldoc.gui.frontend.client.services.DocumentService;
3334
import com.smartgwt.client.types.Alignment;
35+
import com.smartgwt.client.types.AutoFitWidthApproach;
3436
import com.smartgwt.client.types.HeaderControls;
3537
import com.smartgwt.client.types.ListGridFieldType;
3638
import com.smartgwt.client.types.SelectionStyle;
@@ -72,6 +74,8 @@
7274
*/
7375
public class CalendarEventDialog extends Window {
7476

77+
private static final String REQUIRED = "required";
78+
7579
private static final String DELEVENT = "delevent";
7680

7781
private static final String NOTIFY = "notify";
@@ -324,8 +328,14 @@ private Tab prepareAttendees() {
324328

325329
ListGridField notify = new ListGridField(NOTIFY, I18N.message(NOTIFY));
326330
notify.setType(ListGridFieldType.BOOLEAN);
327-
notify.setWidth(70);
328-
331+
notify.setAutoFitWidth(true);
332+
notify.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
333+
334+
ListGridField required = new ListGridField(REQUIRED, I18N.message(REQUIRED));
335+
required.setType(ListGridFieldType.BOOLEAN);
336+
required.setAutoFitWidth(true);
337+
required.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
338+
329339
UserListGridField avatar = new UserListGridField();
330340

331341
attendeesGrid = new ListGrid();
@@ -334,7 +344,7 @@ private Tab prepareAttendees() {
334344
attendeesGrid.setWidth100();
335345
attendeesGrid.setCanEdit(true);
336346
attendeesGrid.setEditByCell(true);
337-
attendeesGrid.setFields(id, avatar, name, email, notify);
347+
attendeesGrid.setFields(id, avatar, name, email, required, notify);
338348

339349
fillAttandeesGrid(attendeesGrid);
340350

@@ -451,13 +461,14 @@ private void prepareAttendeesContextMenu(final ListGrid attendeesGrid) {
451461

452462
private void fillAttandeesGrid(final ListGrid attendeesGrid) {
453463
List<ListGridRecord> records = new ArrayList<>();
454-
for (GUIUser attender : calendarEvent.getAttendees()) {
464+
for (GUIAttendee attendee : calendarEvent.getAttendees()) {
455465
ListGridRecord rec = new ListGridRecord();
456-
rec.setAttribute("id", attender.getId());
457-
rec.setAttribute("avatar", attender.getId());
458-
rec.setAttribute("name", attender.getFullName());
459-
rec.setAttribute(EMAIL, attender.getEmail());
460-
rec.setAttribute(NOTIFY, attender.isEnabled());
466+
rec.setAttribute("id", attendee.getId());
467+
rec.setAttribute("avatar", attendee.getId());
468+
rec.setAttribute("name", attendee.getFullName());
469+
rec.setAttribute(EMAIL, attendee.getEmail());
470+
rec.setAttribute(NOTIFY, attendee.isNotify());
471+
rec.setAttribute(REQUIRED, attendee.isRequired());
461472
records.add(rec);
462473
}
463474
attendeesGrid.setData(records.toArray(new ListGridRecord[0]));
@@ -553,9 +564,7 @@ protected void onSelection(List<GUIDocument> selection) {
553564
return;
554565
}
555566

556-
for (
557-
558-
GUIDocument doc : clipboard) {
567+
for (GUIDocument doc : clipboard) {
559568
calendarEvent.addDocument(doc);
560569
}
561570
clipboard.clear();
@@ -842,7 +851,7 @@ private void saveReminders() {
842851
}
843852

844853
private void saveAttendees() {
845-
List<GUIUser> userAttendees = new ArrayList<>();
854+
List<GUIAttendee> userAttendees = new ArrayList<>();
846855
List<GUIGroup> groupAttendees = new ArrayList<>();
847856
ListGridRecord[] records = attendeesGrid.getRecords();
848857
if (records != null)
@@ -853,11 +862,12 @@ private void saveAttendees() {
853862
attendee.setName(rec.getAttributeAsString("name"));
854863
groupAttendees.add(attendee);
855864
} else {
856-
GUIUser attendee = new GUIUser();
865+
GUIAttendee attendee = new GUIAttendee();
857866
attendee.setId(rec.getAttributeAsLong("id"));
858867
attendee.setEmail(rec.getAttributeAsString(EMAIL));
859868
attendee.setName(rec.getAttributeAsString("name"));
860-
attendee.setEnabled(Boolean.TRUE.equals(rec.getAttributeAsBoolean(NOTIFY)));
869+
attendee.setNotify(Boolean.TRUE.equals(rec.getAttributeAsBoolean(NOTIFY)));
870+
attendee.setRequired(Boolean.TRUE.equals(rec.getAttributeAsBoolean(REQUIRED)));
861871
userAttendees.add(attendee);
862872
}
863873
}
@@ -921,6 +931,7 @@ private void addAttendee(final ListGrid list, String id, String name, String ema
921931
rec.setAttribute("name", name);
922932
rec.setAttribute(EMAIL, email);
923933
rec.setAttribute(NOTIFY, true);
934+
rec.setAttribute(REQUIRED, true);
924935
list.addData(rec);
925936
}
926937

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/calendar/UserCalendarPanel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import com.logicaldoc.gui.common.client.Feature;
88
import com.logicaldoc.gui.common.client.Menu;
99
import com.logicaldoc.gui.common.client.Session;
10+
import com.logicaldoc.gui.common.client.beans.GUIAttendee;
1011
import com.logicaldoc.gui.common.client.beans.GUICalendarEvent;
1112
import com.logicaldoc.gui.common.client.beans.GUIReminder;
12-
import com.logicaldoc.gui.common.client.beans.GUIUser;
1313
import com.logicaldoc.gui.common.client.i18n.I18N;
1414
import com.logicaldoc.gui.common.client.util.ItemFactory;
1515
import com.logicaldoc.gui.common.client.util.LD;
@@ -116,7 +116,7 @@ private void newEvent() {
116116
calEvent.setOrganizer(Session.get().getUser().getFullName());
117117
calEvent.setOrganizerId(Session.get().getUser().getId());
118118

119-
GUIUser user = new GUIUser();
119+
GUIAttendee user = new GUIAttendee();
120120
user.setId(Session.get().getUser().getId());
121121
user.setUsername(Session.get().getUser().getUsername());
122122
user.setFirstName(Session.get().getUser().getFirstName());
@@ -156,12 +156,12 @@ public void onSuccess(Void arg0) {
156156
refresh();
157157
}
158158
}
159-
159+
160160
@Override
161161
public boolean equals(Object other) {
162162
return super.equals(other);
163163
}
164-
164+
165165
@Override
166166
public int hashCode() {
167167
return super.hashCode();

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/DocumentToolbar.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.logicaldoc.gui.common.client.Menu;
1212
import com.logicaldoc.gui.common.client.Session;
1313
import com.logicaldoc.gui.common.client.beans.GUIAccessControlEntry;
14+
import com.logicaldoc.gui.common.client.beans.GUIAttendee;
1415
import com.logicaldoc.gui.common.client.beans.GUICalendarEvent;
1516
import com.logicaldoc.gui.common.client.beans.GUIDocument;
1617
import com.logicaldoc.gui.common.client.beans.GUIFolder;
@@ -297,7 +298,7 @@ private void addCalendar() {
297298
GUICalendarEvent calEvent = new GUICalendarEvent();
298299
calEvent.setOrganizer(Session.get().getUser().getFullName());
299300
calEvent.setOrganizerId(Session.get().getUser().getId());
300-
GUIUser user = new GUIUser();
301+
GUIAttendee user = new GUIAttendee();
301302
user.setId(Session.get().getUser().getId());
302303
user.setUsername(Session.get().getUser().getUsername());
303304
user.setFirstName(Session.get().getUser().getFirstName());

logicaldoc-i18n/src/main/resources/i18n/messages.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2640,4 +2640,7 @@ ttlhistwebservice = Life of the Web Service's calls
26402640
qrcode = QR Code
26412641
idle = idle
26422642
archivereadytosign = Archive ready to sign
2643-
archivereadytoimport = Archive ready to import
2643+
archivereadytoimport = Archive ready to import
2644+
required = Required
2645+
calendarinviteopt = Dear {0}, you are invited to attend this event.
2646+
calendarinvitereq = Dear {0}, you are required to attend this event.

0 commit comments

Comments
 (0)