44 */
55package io .imunity .console .views .directory_browser .identities ;
66
7+ import static io .imunity .vaadin .elements .CssClassNames .MEDIUM_VAADIN_FORM_ITEM_LABEL ;
8+
79import java .time .Instant ;
810import java .time .LocalDateTime ;
911import java .time .ZoneId ;
1012import java .util .Date ;
1113import java .util .Locale ;
1214
1315import com .vaadin .flow .component .checkbox .Checkbox ;
16+ import com .vaadin .flow .component .confirmdialog .ConfirmDialog ;
1417import com .vaadin .flow .component .datetimepicker .DateTimePicker ;
1518import com .vaadin .flow .component .formlayout .FormLayout ;
1619import com .vaadin .flow .component .formlayout .FormLayout .FormItem ;
20+ import com .vaadin .flow .component .html .Span ;
1721import com .vaadin .flow .component .select .Select ;
1822
1923import io .imunity .console .views .directory_browser .EntityWithLabel ;
2024import io .imunity .vaadin .elements .DialogWithActionFooter ;
25+ import io .imunity .vaadin .endpoint .common .api .HtmlTooltipFactory ;
2126import pl .edu .icm .unity .base .entity .EntityInformation ;
2227import pl .edu .icm .unity .base .entity .EntityScheduledOperation ;
2328import pl .edu .icm .unity .base .entity .EntityState ;
@@ -28,6 +33,7 @@ class ChangeEntityStateDialog extends DialogWithActionFooter
2833{
2934 private static final Locale EUROPEAN_TIME_FORMAT = Locale .forLanguageTag ("DE" );
3035
36+ private final HtmlTooltipFactory htmlTooltipFactory ;
3137 private final MessageSource msg ;
3238 private final EntityWithLabel entity ;
3339 private final Callback callback ;
@@ -37,14 +43,16 @@ class ChangeEntityStateDialog extends DialogWithActionFooter
3743 private Select <EntityScheduledOperation > entityScheduledChange ;
3844 private DateTimePicker changeTime ;
3945 private DateTimePicker removalTime ;
40- private FormLayout . FormItem changeTimeFormItem ;
46+ private FormItem changeTimeFormItem ;
4147
4248 private FormItem removalFormItem ;
4349
44- ChangeEntityStateDialog (MessageSource msg , EntityWithLabel entity , Callback callback )
50+ ChangeEntityStateDialog (MessageSource msg , HtmlTooltipFactory htmlTooltipFactory , EntityWithLabel entity ,
51+ Callback callback )
4552 {
4653 super (msg ::getMessage );
4754 this .msg = msg ;
55+ this .htmlTooltipFactory = htmlTooltipFactory ;
4856 this .entity = entity ;
4957 this .callback = callback ;
5058 setHeaderTitle (msg .getMessage ("ChangeEntityStateDialog.caption" ));
@@ -113,18 +121,16 @@ private FormLayout getContents()
113121 });
114122
115123 FormLayout main = new FormLayout ();
124+ main .addClassName (MEDIUM_VAADIN_FORM_ITEM_LABEL .getName ());
116125 main .setResponsiveSteps (new FormLayout .ResponsiveStep ("0" , 1 ));
117- FormLayout embedded = new FormLayout ();
118- embedded .setResponsiveSteps (new FormLayout .ResponsiveStep ("0" , 1 ));
119- embedded .addFormItem (entityScheduledChange , msg .getMessage ("ChangeEntityStateDialog.scheduledOperation" ));
120- changeTimeFormItem = embedded .addFormItem (changeTime ,
121- msg .getMessage ("ChangeEntityStateDialog.scheduledChangeTime" ));
122-
123126 main .addFormItem (entityState , msg .getMessage ("ChangeEntityStateDialog.newState" ));
124- removalFormItem = main .addFormItem (removalTime , msg .getMessage ("ChangeEntityStateDialog.removalTime" ));
127+ removalFormItem = main .addFormItem (removalTime , msg .getMessage ("ChangeEntityStateDialog.removalGracePeriodEnd" ));
128+ removalFormItem .add (htmlTooltipFactory .get (msg .getMessage ("ChangeEntityStateDialog.removalGracePeriodEndDescription" )));
125129 removalFormItem .setVisible (false );
126- main .addFormItem (scheduleEnable , "" );
127- main .addFormItem (embedded , "" );
130+ main .addFormItem (scheduleEnable , "" );
131+ main .addFormItem (entityScheduledChange , msg .getMessage ("ChangeEntityStateDialog.scheduledOperation" ));
132+ changeTimeFormItem = main .addFormItem (changeTime ,
133+ msg .getMessage ("ChangeEntityStateDialog.scheduledChangeTime" ));
128134 main .setSizeFull ();
129135
130136
@@ -184,8 +190,23 @@ private void onConfirm()
184190 newInfo .setScheduledOperationTime (zonedDate );
185191 }
186192
187- if (callback .onChanged (newInfo ))
188- close ();
193+ if (newInfo .getScheduledOperation () != null && newInfo .getRemovalByUserTime () != null )
194+ {
195+ ConfirmDialog confirm = new ConfirmDialog ();
196+ confirm .setConfirmButton (msg .getMessage ("ok" ), e ->
197+ {
198+ if (callback .onChanged (newInfo ))
199+ close ();
200+ });
201+ confirm .setCancelable (true );
202+ confirm .add (new Span (msg .getMessage ("ChangeEntityStateDialog.warningScheduledChangeAndRemoval" )));
203+ confirm .open ();
204+
205+ } else
206+ {
207+ if (callback .onChanged (newInfo ))
208+ close ();
209+ }
189210 }
190211
191212 interface Callback
0 commit comments