package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.utils; import java.util.List; import com.github.gwtbootstrap.client.ui.Icon; import com.github.gwtbootstrap.client.ui.Popover; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Cursor; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; /** * Labels and texts for core ckan information * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ public class InfoIconsLabels { // TAGS public static final String TAGS_INFO_ID_POPUP = "tags-popup-panel-info"; public static final String TAGS_INFO_CAPTION = "Tags"; public static final String TAGS_INFO_TEXT = "Tags are meaningful information that can be associated to the " + "product and by means of them it can be retrieved. A tag can contain only alphanumeric characters. " + "If the tag is composed by a single word it must have a size of at least two characters." + "Examples of good tags: \"This is a sample tag\", \"tagY\". Example of bad tag: \"c\"."; // LICENSES public static final String LICENSES_INFO_ID_POPUP = "licenses-popup-panel-info"; public static final String LICENSES_INFO_CAPTION = "Licenses"; public static final String LICENSES_INFO_TEXT = "License definitions and additional information can be found at opendefinition.org"; // VISIBILITY public static final String VISIBILITY_INFO_ID_POPUP = "visibility-popup-panel-info"; public static final String VISIBILITY_INFO_CAPTION = "Visibility"; public static final String VISIBILITY_INFO_TEXT = "Restricted products can only be accessed by certain users, while Public products can be accessed by anyone."; // AUTHOR public static final String AUTHOR_INFO_ID_POPUP = "author-popup-panel-info"; public static final String AUTHOR_INFO_CAPTION = "Author's fullname"; public static final String AUTHOR_INFO_TEXT = "The author of this product. Example: Joe Bloggs."; // AUTHOR EMAIL public static final String AUTHOR_EMAIL_INFO_ID_POPUP = "author-email-popup-panel-info"; public static final String AUTHOR_EMAIL_INFO_CAPTION = "Author's email"; public static final String AUTHOR_EMAIL_INFO_TEXT = "The author's email. Example: joe.bloggs@catalogue.com"; // MAINTAINER public static final String MAINTAINER_INFO_ID_POPUP = "maintainer-popup-panel-info"; public static final String MAINTAINER_INFO_CAPTION = "Maintainer"; public static final String MAINTAINER_INFO_TEXT = "The maintainer of this product (a person or an organization). Examples: Joe Bloggs, D4Science"; // MAINTAINER EMAIL public static final String MAINTAINER_EMAIL_INFO_ID_POPUP = "maintainer-email-popup-panel-info"; public static final String MAINTAINER_EMAIL_INFO_CAPTION = "Maintainer's email"; public static final String MAINTAINER_EMAIL_INFO_TEXT = "The maintainer's email. Example: joe.bloggs@catalogue.com"; // PROFILES public static final String PROFILES_INFO_ID_POPUP = "product-profiles-popup-panel-info"; public static final String PROFILES_INFO_CAPTION = "Product Profiles"; public static final String PROFILES_INFO_TEXT = "Select a profile, different from none, for your product among the ones available"; // RESOURCES public static final String RESOURCES_INFO_ID_POPUP = "resouces-popup-panel-info"; public static final String RESOURCES_INFO_CAPTION = "Product Resources"; public static final String RESOURCES_INFO_TEXT = "Folder content will be added as resources of the product"; // CUSTOM FIELDS public static final String CUSTOM_FIELDS_INFO_ID_POPUP = "custom-fields-popup-panel-info"; public static final String CUSTOM_FIELDS_INFO_CAPTION = "Product Custom Fields"; public static final String CUSTOM_FIELDS_INFO_TEXT = "Custom fields are customable metadata that will be added to the product. You have to choose a unique key for the field and a value for this. You can remove them at any time until you create theproduct."; // TITLE public static final String TITLE_INFO_ID_POPUP = "title-popup-panel-info"; public static final String TITLE_INFO_TEXT = "Product Title must contain only alphanumer characters, dots, underscore or hyphen minus. No others symbols are allowed."; public static final String TITLE_INFO_CAPTION = "Product Title"; /** * Prepare the popover and the gcube popup panel for information. * @param text * @param captionText * @param iconElement * @param popover * @param focusPanel */ public static void preparePopupPanelAndPopover( final String popupId, final String text, final String captionText, Icon iconElement, Popover popover, FocusPanel focusPanel, final List popupOpenedIds ){ // prepare the popover popover.setText(new HTML("

" + text +"

").getHTML()); popover.setHeading(new HTML("" + captionText +"").getHTML()); // set icon cursor iconElement.getElement().getStyle().setCursor(Cursor.HELP); // prepare the gcube dialog focusPanel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { // Retrieve elemnt that should have this id GcubeDialogExtended popup = null; try{ Element element = DOM.getElementById(popupId); popup = (GcubeDialogExtended) Widget.asWidgetOrNull(getWidget(element)); }catch(Exception e){ GWT.log("ERROR", e); } // if it doesn't exist, create it if(popup == null){ popup = new GcubeDialogExtended(captionText, text); popup.getElement().setId(popupId); popup.setModal(false); // add its id popupOpenedIds.add(popupId); } // then center and show popup.center(); popup.show(); } }); } /** * Check if an element of such type is actually a widget * @param element * @return */ public static IsWidget getWidget(Element element) { EventListener listener = DOM .getEventListener(element); // No listener attached to the element, so no widget exist for this // element if (listener == null) { GWT.log("Widget is NULL"); return null; } if (listener instanceof Widget) { // GWT uses the widget as event listener GWT.log("Widget is " + listener); return (Widget) listener; } return null; } /** * Close any dialog box opened */ public static void closeDialogBox(List popupOpenedIds) { for (String popupid : popupOpenedIds) { GcubeDialogExtended popup = null; try{ Element element = DOM.getElementById(popupid); popup = (GcubeDialogExtended) Widget.asWidgetOrNull(getWidget(element)); popup.hide(); }catch(Exception e){ GWT.log("ERROR", e); } } } }