2020public class MyGroupsPage extends VerticalLayout {
2121
2222 MongoDBOperations database ;
23+ ArrayList <Details > groupDetails ;
24+ ArrayList <Group > groups ;
2325
2426 public MyGroupsPage ()
2527 {
@@ -28,26 +30,71 @@ public MyGroupsPage()
2830 /**setHeightFull();
2931 setAlignItems(Alignment.CENTER);
3032 setJustifyContentMode(JustifyContentMode.CENTER);**/
33+ generateGroupDetails ();
34+ }
3135
32- ArrayList < Group > groups = ( ArrayList < Group >) database . getGroupsByUser ( SecurityUtils . getUsername ());
33- ArrayList < Details > groupDetails = new ArrayList <>( );
34-
36+ private void generateGroupDetails () {
37+ groups = ( ArrayList <Group >) database . getGroupsByUser ( SecurityUtils . getUsername () );
38+ groupDetails = new ArrayList <>();
3539 if (!groups .isEmpty ()) {
3640 for (Group g : groups ) {
3741 Details group = new Details ();
38- group .setSummaryText (g .getName ());
42+ if (database .checkIfAdmin (SecurityUtils .getUsername (), g .getName ())) {
43+ group .setSummaryText (g .getName () + " (Owned)" );
44+ } else {
45+ group .setSummaryText (g .getName ());
46+ }
3947 Button leaveButton = new Button ("Leave" );
48+ leaveButton .addClickListener (buttonClickEvent -> {
49+ database .removeUserFromGroup (SecurityUtils .getUsername (), g .getName ());
50+ // Check if no users are left then run database.deleteGroupPassword
51+ if (database .getUsersByGroup (g .getName ()).size () <= 0 ) {
52+ database .deleteGroupFinal (g .getName ());
53+ }
54+ removeAll ();
55+ generateGroupDetails ();
56+ });
4057 ArrayList <User > users = (ArrayList <User >) database .getUsersByGroup (g .getName ());
4158 if (!users .isEmpty ()) {
4259 for (User u : users ) {
4360 // Only show this version if the user owns the group
44- Details userSubDetails = new Details ();
45- Button button = new Button ("Kick" );
46- userSubDetails .setSummaryText (u .getLogin ());
47- userSubDetails .addContent (button );
48- Label padding = new Label ();
49- padding .getStyle ().set ("width" , "1em" );
50- group .addContent (new HorizontalLayout (padding , userSubDetails ), leaveButton );
61+ if (database .checkIfAdmin (SecurityUtils .getUsername (), g .getName ())) {
62+ Details userSubDetails = new Details ();
63+ boolean isAdmin = database .checkIfAdmin (u .getLogin (), g .getName ());
64+ if (isAdmin ) {
65+ userSubDetails .setSummaryText (u .getLogin () + " (Admin)" );
66+ } else {
67+ userSubDetails .setSummaryText (u .getLogin ());
68+ }
69+ if (!isAdmin ) {
70+ Label padding = new Label ();
71+ padding .getStyle ().set ("width" , "1em" );
72+ Button kickButton = new Button ("Kick" );
73+ kickButton .setDisableOnClick (true );
74+ kickButton .addClickListener (event -> {
75+ database .removeUserFromGroup (u .getLogin (), g .getName ());
76+ });
77+ userSubDetails .addContent (new HorizontalLayout (padding , kickButton ));
78+ }
79+ Label padding = new Label ();
80+ padding .getStyle ().set ("width" , "1em" );
81+ Label padding2 = new Label ();
82+ padding2 .getStyle ().set ("width" , "1em" );
83+ group .addContent (new HorizontalLayout (padding , userSubDetails ), new HorizontalLayout (padding2 , leaveButton ));
84+ } else {
85+ Details userSubDetails = new Details ();
86+ boolean isAdmin = database .checkIfAdmin (u .getLogin (), g .getName ());
87+ if (isAdmin ) {
88+ userSubDetails .setSummaryText (u .getLogin () + " (Admin)" );
89+ } else {
90+ userSubDetails .setSummaryText (u .getLogin ());
91+ }
92+ Label padding = new Label ();
93+ padding .getStyle ().set ("width" , "1em" );
94+ Label padding2 = new Label ();
95+ padding2 .getStyle ().set ("width" , "1em" );
96+ group .addContent (new HorizontalLayout (padding , userSubDetails ), new HorizontalLayout (padding2 , leaveButton ));
97+ }
5198 }
5299 }
53100 groupDetails .add (group );
@@ -58,6 +105,5 @@ public MyGroupsPage()
58105 } else {
59106 add (new H3 ("You are not a member of any groups!" ));
60107 }
61-
62108 }
63109}
0 commit comments