use of com.google.gwt.user.client.ui.HTML in project perun by CESNET.
the class GetAllRichSubGroups method getTable.
/**
* Returns the table with subgroups.
* @return
*/
public CellTable<RichGroup> getTable() {
// retrieve data
retrieveData();
// Table data provider.
dataProvider = new ListDataProvider<RichGroup>(list);
// Cell table
table = new PerunTable<RichGroup>(list);
table.setHyperlinksAllowed(false);
// Connect the table to the data provider.
dataProvider.addDataDisplay(table);
// Sorting
ListHandler<RichGroup> columnSortHandler = new ListHandler<RichGroup>(dataProvider.getList());
table.addColumnSortHandler(columnSortHandler);
// table selection
table.setSelectionModel(selectionModel, DefaultSelectionEventManager.<RichGroup>createCheckboxManager());
// set empty content & loader
table.setEmptyTableWidget(loaderImage);
loaderImage.setEmptyResultMessage("Group has no sub-groups.");
// checkbox column column
table.addCheckBoxColumn();
table.addIdColumn("Group ID", tableFieldUpdater);
// Add a synchronization clicable icon column.
Column<RichGroup, RichGroup> syncColumn = new Column<RichGroup, RichGroup>(new CustomClickableInfoCellWithImageResource("click")) {
@Override
public RichGroup getValue(RichGroup object) {
return object;
}
@Override
public String getCellStyleNames(Cell.Context context, RichGroup object) {
if (tableFieldUpdater != null) {
return super.getCellStyleNames(context, object) + " pointer image-hover";
} else {
return super.getCellStyleNames(context, object);
}
}
};
syncColumn.setFieldUpdater(new FieldUpdater<RichGroup, RichGroup>() {
@Override
public void update(int index, final RichGroup object, RichGroup value) {
GetEntityById get = new GetEntityById(PerunEntity.RICH_GROUP, object.getId(), new JsonCallbackEvents() {
@Override
public void onFinished(JavaScriptObject jso) {
final RichGroup object = jso.cast();
String name, syncEnabled, syncInterval, syncStartTimestamp, syncTimestamp, syncSuccessTimestamp, syncState, authGroup, syncTimes, syncSuccessStartTimestamp;
name = object.getName();
if (object.isSyncEnabled()) {
syncEnabled = "enabled";
} else {
syncEnabled = "disabled";
}
if (object.getSynchronizationInterval() == null) {
syncInterval = "N/A";
} else {
if (JsonUtils.checkParseInt(object.getSynchronizationInterval())) {
int time = Integer.parseInt(object.getSynchronizationInterval()) * 5 / 60;
if (time == 0) {
time = Integer.parseInt(object.getSynchronizationInterval()) * 5;
syncInterval = time + " minute(s)";
} else {
syncInterval = time + " hour(s)";
}
} else {
syncInterval = object.getSynchronizationInterval();
}
}
if (object.getSynchronizationTimes() != null && object.getSynchronizationTimes().length() > 0) {
syncTimes = object.getSynchronizationTimes().join(", ");
} else {
syncTimes = "N/A";
}
if (object.getLastSynchronizationState() == null) {
if (object.getLastSuccessSynchronizationTimestamp() != null) {
syncState = "OK";
} else {
syncState = "Not synced yet";
}
} else {
if (session.isPerunAdmin()) {
syncState = object.getLastSynchronizationState();
} else {
syncState = "Internal Error";
}
}
if (object.getLastSynchronizationTimestamp() == null) {
syncTimestamp = "N/A";
} else {
syncTimestamp = object.getLastSynchronizationTimestamp().split("\\.")[0];
}
if (object.getStartOfLastSynchronizationTimestamp() == null) {
syncStartTimestamp = "N/A";
} else {
syncStartTimestamp = object.getStartOfLastSynchronizationTimestamp().split("\\.")[0];
}
if (object.getLastSuccessSynchronizationTimestamp() == null) {
syncSuccessTimestamp = "N/A";
} else {
syncSuccessTimestamp = object.getLastSuccessSynchronizationTimestamp().split("\\.")[0];
}
if (object.getStartOfLastSuccessfulSynchronization() == null) {
syncSuccessStartTimestamp = "N/A";
} else {
syncSuccessStartTimestamp = object.getStartOfLastSuccessfulSynchronization().split("\\.")[0];
}
if (Objects.equals(object.getAuthoritativeGroup(), "1")) {
authGroup = "Yes";
} else {
authGroup = "No";
}
String html = "Group name: <b>" + SafeHtmlUtils.fromString(name).asString() + "</b><br>";
html += "Authoritative group: <b>" + SafeHtmlUtils.fromString(authGroup).asString() + "</b><br>";
html += "Synchronization: <b>" + SafeHtmlUtils.fromString(syncEnabled).asString() + "</b><br>";
html += "Sync. Interval: <b>" + SafeHtmlUtils.fromString(syncInterval).asString() + "</b><br>";
html += "Sync. Times: <b>" + SafeHtmlUtils.fromString(syncTimes).asString() + "</b><br>-----------------<br>";
if (object.isSyncEnabled()) {
html += "Last sync. state: <b>" + SafeHtmlUtils.fromString(syncState).asString() + "</b><br>";
html += "Last sync. timestamp (start): <b>" + SafeHtmlUtils.fromString(syncStartTimestamp).asString() + "</b><br>";
html += "Last sync. timestamp (end): <b>" + SafeHtmlUtils.fromString(syncTimestamp).asString() + "</b><br>";
html += "Last successful sync. timestamp (start): <b>" + SafeHtmlUtils.fromString(syncSuccessStartTimestamp).asString() + "</b><br>";
html += "Last successful sync. timestamp (end): <b>" + SafeHtmlUtils.fromString(syncSuccessTimestamp).asString() + "</b><br>";
}
FlexTable layout = new FlexTable();
layout.setWidth("450px");
layout.setWidget(0, 0, new HTML("<p>" + new Image(LargeIcons.INSTANCE.informationIcon())));
layout.setHTML(0, 1, "<p style=\"line-height: 1.2;\">" + html);
layout.getFlexCellFormatter().setAlignment(0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP);
layout.getFlexCellFormatter().setAlignment(0, 1, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP);
layout.getFlexCellFormatter().setStyleName(0, 0, "alert-box-image");
final CustomButton okButton = new CustomButton("Force synchronization", SmallIcons.INSTANCE.arrowRefreshIcon());
okButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ForceGroupSynchronization call = new ForceGroupSynchronization(JsonCallbackEvents.disableButtonEvents(okButton));
call.synchronizeGroup(object.getId());
}
});
if (!session.isVoAdmin(object.getVoId()) && !session.isGroupAdmin(object.getId()))
okButton.setEnabled(false);
okButton.setVisible(object.isSyncEnabled());
final Confirm c = new Confirm("Group synchronization info", layout, okButton, null, true);
c.setHideOnButtonClick(false);
c.setCancelIcon(SmallIcons.INSTANCE.acceptIcon());
c.setCancelButtonText("OK");
c.setCancelClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
c.hide();
}
});
c.show();
}
});
get.retrieveData();
}
});
syncColumn.setSortable(true);
columnSortHandler.setComparator(syncColumn, new Comparator<RichGroup>() {
@Override
public int compare(RichGroup o1, RichGroup o2) {
if (o1 != null && o2 != null) {
int o1val = 0;
int o2val = 0;
if (o1.isSyncEnabled())
o1val = 5;
if (o2.isSyncEnabled())
o2val = 5;
if (Objects.equals(o1.getAuthoritativeGroup(), "1"))
o1val = o1val + 3;
if (Objects.equals(o2.getAuthoritativeGroup(), "1"))
o2val = o2val + 3;
return o1val - o2val;
}
return 0;
}
});
table.addColumn(syncColumn, "Sync");
table.setColumnWidth(syncColumn, "70px");
table.addNameColumn(tableFieldUpdater);
table.addDescriptionColumn(tableFieldUpdater);
return table;
}
use of com.google.gwt.user.client.ui.HTML in project perun by CESNET.
the class HandleApplication method approveApplication.
/**
* Approve application
*
* @param app
*/
public void approveApplication(final Application app) {
this.appId = app.getId();
// test arguments
if (!this.testApplication()) {
return;
}
// new events
final JsonCallbackEvents newEvents = new JsonCallbackEvents() {
@Override
public void onError(PerunError error) {
session.getUiElements().setLogErrorText("Approving application failed.");
events.onError(error);
}
@Override
public void onFinished(JavaScriptObject jso) {
session.getUiElements().setLogSuccessText("Application approved.");
events.onFinished(jso);
}
@Override
public void onLoadingStart() {
events.onLoadingStart();
}
};
final JSONObject appIdObj = new JSONObject();
appIdObj.put("appId", new JSONNumber(appId));
final JSONObject idObj = new JSONObject();
idObj.put("id", new JSONNumber(appId));
// check if can be approved
JsonPostClient jspc = new JsonPostClient(new JsonCallbackEvents() {
@Override
public void onError(final PerunError error) {
session.getUiElements().setLogErrorText("Checking approval failed.");
events.onError(error);
if (error == null) {
PerunError e = (PerunError) JsonUtils.parseJson("{\"errorId\":\"0\",\"name\":\"Cross-site request\",\"type\":\"" + WidgetTranslation.INSTANCE.jsonClientAlertBoxErrorCrossSiteType() + "\",\"message\":\"" + WidgetTranslation.INSTANCE.jsonClientAlertBoxErrorCrossSiteText() + "\"}").cast();
JsonErrorHandler.alertBox(e);
} else if (!error.getName().equals("CantBeApprovedException")) {
JsonErrorHandler.alertBox(error);
} else {
FlexTable layout = new FlexTable();
layout.setWidget(0, 0, new HTML("<p>" + new Image(LargeIcons.INSTANCE.errorIcon())));
if ("NOT_ACADEMIC".equals(error.getReason())) {
layout.setHTML(0, 1, "<p>User is not active academia member and application shouldn't be approved.<p><b>LoA:</b> " + SafeHtmlUtils.fromString(app.getExtSourceLoa() + "").asString() + "</br><b>IdP category:</b> " + (!(error.getCategory().equals("")) ? SafeHtmlUtils.fromString(error.getCategory()).asString() : "N/A") + "</br><b>Affiliation:</b> " + (!(error.getAffiliation().equals("")) ? SafeHtmlUtils.fromString(error.getAffiliation().replace(";", ", ")).asString() : "N/A") + ((error.isSoft()) ? "<p>You can try to override above restriction by clicking 'Approve anyway' button." : ""));
}
if ("NOT_ELIGIBLE".equals(error.getReason())) {
layout.setHTML(0, 1, "<p>User is not eligible for CESNET services and application shouldn't be approved." + ((error.isSoft()) ? "<p>You can try to override above restriction by clicking 'Approve anyway' button." : ""));
} else {
layout.setHTML(0, 1, "<p>" + SafeHtmlUtils.fromString(error.getErrorInfo()).asString() + ((error.isSoft()) ? "<p>You can try to override above restriction by clicking 'Approve anyway' button." : ""));
}
layout.getFlexCellFormatter().setAlignment(0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP);
layout.getFlexCellFormatter().setAlignment(0, 1, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP);
layout.getFlexCellFormatter().setStyleName(0, 0, "alert-box-image");
if (error.isSoft()) {
Confirm c = new Confirm("Application shouldn't be approved", layout, new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
// ok approve sending data
JsonPostClient jspc = new JsonPostClient(newEvents);
jspc.sendData(JSON_URL_APPROVE, prepareJSONObject());
}
}, new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
events.onFinished(null);
}
}, true);
c.setOkButtonText("Approve anyway");
c.setNonScrollable(true);
c.show();
} else {
Confirm c = new Confirm("Application can't be approved", layout, true);
c.setNonScrollable(true);
c.show();
}
}
}
@Override
public void onFinished(JavaScriptObject jso) {
if (app.getUser() != null) {
// ok approve sending data
JsonPostClient jspc2 = new JsonPostClient(newEvents);
jspc2.sendData(JSON_URL_APPROVE, prepareJSONObject());
} else {
JsonPostClient checkJspc = new JsonPostClient(new JsonCallbackEvents() {
@Override
public void onError(PerunError error) {
session.getUiElements().setLogErrorText("Approving application failed.");
events.onError(error);
}
@Override
public void onFinished(JavaScriptObject jso) {
ArrayList<Identity> users = JsonUtils.jsoAsList(jso);
if (users != null && !users.isEmpty()) {
FlexTable ft = new FlexTable();
ft.setWidth("600px");
ft.setHTML(0, 0, "<p><strong>Following similar user(s) were found in system:");
ft.getFlexCellFormatter().setColSpan(0, 0, 3);
ft.setHTML(1, 0, "<strong>" + ApplicationMessages.INSTANCE.name() + "</strong>");
ft.setHTML(1, 1, "<strong>" + ApplicationMessages.INSTANCE.email() + "</strong>");
ft.setHTML(1, 2, "<strong>" + ApplicationMessages.INSTANCE.organization() + "</strong>");
int i = 2;
for (Identity user : users) {
ft.setHTML(i, 0, SafeHtmlUtils.fromString(user.getName()).asString());
if (user.getEmail() != null && !user.getEmail().isEmpty()) {
ft.setHTML(i, 1, SafeHtmlUtils.fromString(user.getEmail()).asString());
} else {
ft.setHTML(i, 1, "N/A");
}
if (user.getOrganization() != null && !user.getOrganization().isEmpty()) {
ft.setHTML(i, 2, SafeHtmlUtils.fromString(user.getOrganization()).asString());
} else {
ft.setHTML(i, 2, "N/A");
}
i++;
}
String type = "";
if (app.getExtSourceType().equals("cz.metacentrum.perun.core.impl.ExtSourceX509")) {
type = "cert";
} else if (app.getExtSourceType().equals("cz.metacentrum.perun.core.impl.ExtSourceIdp")) {
type = "fed";
}
ft.setHTML(i, 0, "<p>Please contact new applicant with question, if he/she isn't already member of any other VO." + "<ul><li>If YES, ask him/her to join identities at <a href=\"" + Utils.getIdentityConsolidatorLink(type, false) + "\" target=\"_blank\">identity consolidator</a> before approving this application." + "</li><li>If NO, you can approve this application anyway. " + "</li><li>If UNSURE, contact <a href=\"mailto:" + Utils.perunReportEmailAddress() + "\">support</a> to help you.</li></ul>");
ft.getFlexCellFormatter().setColSpan(i, 0, 3);
i++;
ft.setHTML(i, 0, "<strong>Do you wish to approve this application anyway ?</strong>");
ft.getFlexCellFormatter().setColSpan(i, 0, 3);
Confirm c = new Confirm("Similar users found!", ft, new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
// ok approve sending data
JsonPostClient jspc = new JsonPostClient(newEvents);
jspc.sendData(JSON_URL_APPROVE, prepareJSONObject());
}
}, new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
events.onFinished(null);
}
}, true);
c.setOkButtonText("Approve");
c.setNonScrollable(true);
c.show();
} else {
// ok approve sending data
JsonPostClient jspc = new JsonPostClient(newEvents);
jspc.sendData(JSON_URL_APPROVE, prepareJSONObject());
}
}
@Override
public void onLoadingStart() {
events.onLoadingStart();
}
});
checkJspc.sendData("registrarManager/checkForSimilarUsers", appIdObj);
}
}
@Override
public void onLoadingStart() {
events.onLoadingStart();
}
});
// we have own error handling
jspc.setHidden(true);
jspc.sendData(JSON_URL_CHECK, idObj);
}
use of com.google.gwt.user.client.ui.HTML in project gwt-test-utils by gwt-test-utils.
the class HTMLTest method getText.
@Test
public void getText() {
// Given
HTML html = new HTML("<a href='#'>link</a><br/>test test ");
// When
String result = html.getText();
// Then
assertThat(result).isEqualTo("linktest test ");
// When 2
html.setText("override <b>not bold text</b>");
// Then 2
assertThat(html.getText()).isEqualTo("override <b>not bold text</b>");
}
use of com.google.gwt.user.client.ui.HTML in project gwt-test-utils by gwt-test-utils.
the class HTMLTest method html_withAnchor.
@Test
public void html_withAnchor() {
// Given
HTML widget = new HTML("<a href=\"foo\" target=\"bar\">baz</a>");
// When
NodeList<Element> nodeList = widget.getElement().getElementsByTagName("a");
// Then
assertThat(nodeList.getLength()).isEqualTo(1);
AnchorElement anchor = nodeList.getItem(0).cast();
assertThat(anchor.getHref()).isEqualTo("foo");
assertThat(anchor.getTarget()).isEqualTo("bar");
}
use of com.google.gwt.user.client.ui.HTML in project gwt-test-utils by gwt-test-utils.
the class HTMLTest method html_withSpecialChars.
@Test
public void html_withSpecialChars() {
// Given
HTML html = new HTML("<span>Résidence : </span>");
// When
String result = html.getHTML();
// Then
assertThat(result).isEqualTo("<span>RĂ©sidence : </span>");
}
Aggregations