diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.java index 8da0679..90a56e7 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.java @@ -1,9 +1,9 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.dialogs; - import org.gcube.application.geoportalcommon.shared.GeoNaItemRef; import org.gcube.application.geoportalcommon.shared.PublicLink; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerServiceAsync; +import org.gcube.portlets.user.geoportaldataviewer.client.util.LoaderIcon; import com.github.gwtbootstrap.client.ui.Alert; import com.github.gwtbootstrap.client.ui.Button; @@ -16,6 +16,7 @@ import com.github.gwtbootstrap.client.ui.Tooltip; import com.github.gwtbootstrap.client.ui.constants.VisibilityChange; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.MouseOverEvent; @@ -26,6 +27,7 @@ import com.google.gwt.user.client.Random; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; @@ -35,7 +37,7 @@ import com.google.gwt.user.client.ui.Widget; * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * - * Sep 19, 2019 + * Sep 19, 2019 */ public class DialogShareableLink extends Composite { @@ -45,10 +47,10 @@ public class DialogShareableLink extends Composite { @UiField ControlGroup cgPublicLink; - + @UiField ControlGroup cgPrivateLongLink; - + @UiField ControlGroup cgPublicLongLink; @@ -57,58 +59,61 @@ public class DialogShareableLink extends Composite { @UiField TextBox textPrivateLink; - + @UiField TextBox textPrivateLongLink; - + @UiField TextBox textPublicLongLink; - + @UiField Alert errorAlert; - + @UiField Alert actionAlert; - + // @UiField // Well alertFilePublicLink; - + @UiField Fieldset fieldSetPrivate; - + @UiField Fieldset fieldSetPublic; - + @UiField VerticalPanel fieldPrivateSharing; // @UiField // VerticalPanel filedEnableDisableSharing; - + @UiField Label labelLinkSharing; - + @UiField Button privateLinkCopyButton; - + @UiField Button privateLongLinkCopyButton; - + @UiField Button publicLinkCopyButton; - + @UiField Button publicLongLinkCopyButton; // // @UiField // Well wellPrivateLinkDescription; - + @UiField Button showPrivateLongLinkButton; - + @UiField Button showPublicLongLinkButton; - + + @UiField + HTMLPanel info_panel; + // @UiField // HTMLPanel panelFieldsContainer; @@ -117,22 +122,23 @@ public class DialogShareableLink extends Composite { private String fileVersion; private boolean itemIsPublicStatus; - + private PublicLink openPublicLink; - + private PublicLink restrictedPublicLink; - + private final String privateShareToFileDescription = "By sharing the following Private Link " + "with your coworkers, you will enact the users of the group the folder is shared with, " + "to access the file and the shared folder content. Login required"; - + + private LoaderIcon loadingIcon = new LoaderIcon("loading..."); /** * The Interface DialogShareableLinkUiBinder. * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * - * Sep 19, 2019 + * Sep 19, 2019 */ interface DialogShareableLinkUiBinder extends UiBinder { } @@ -140,80 +146,81 @@ public class DialogShareableLink extends Composite { /** * Instantiates a new dialog shareable link. * - * @param item the item + * @param item the item * @param version the version */ public DialogShareableLink(GeoNaItemRef item, String version) { initWidget(uiBinder.createAndBindUi(this)); - + this.geonItemRef = item; this.fileVersion = version; this.actionAlert.setAnimation(true); - - //cgRemovePublicLink.setVisible(false); + + // cgRemovePublicLink.setVisible(false); // fieldSetPrivate.setVisible(false); // fieldPrivateSharing.setVisible(false); cgPublicLink.setVisible(true); fieldPrivateSharing.setVisible(false); fieldSetPrivate.setVisible(false); - + GeoportalDataViewerServiceAsync.Util.getInstance().getMyLogin(new AsyncCallback() { @Override public void onFailure(Throwable caught) { // TODO Auto-generated method stub - + } @Override public void onSuccess(String result) { - if(result!=null) { + if (result != null) { fieldPrivateSharing.setVisible(true); fieldSetPrivate.setVisible(true); } } }); - showMessage("", false); + loadingIcon.getElement().getStyle().setMarginBottom(20,Unit.PX); + showLoadingIcon(true); - //alertFilePublicLink.setVisible(true); + // alertFilePublicLink.setVisible(true); loadAndShowPublicLinksForItem(item); - //getElement().setClassName("gwt-DialogBoxNew"); + // getElement().setClassName("gwt-DialogBoxNew"); modalBox.setTitle("Share Link..."); ModalFooter modalFooter = new ModalFooter(); final Button buttClose = new Button("Close"); modalFooter.add(buttClose); - + buttClose.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { modalBox.hide(); } }); - + addEvents(); - textPrivateLink.setId(Random.nextInt()+Random.nextInt()+""); - textPrivateLongLink.setId(Random.nextInt()+Random.nextInt()+""); - textPublicLink.setId(Random.nextInt()+Random.nextInt()+""); - textPublicLongLink.setId(Random.nextInt()+Random.nextInt()+""); - + textPrivateLink.setId(Random.nextInt() + Random.nextInt() + ""); + textPrivateLongLink.setId(Random.nextInt() + Random.nextInt() + ""); + textPublicLink.setId(Random.nextInt() + Random.nextInt() + ""); + textPublicLongLink.setId(Random.nextInt() + Random.nextInt() + ""); + modalBox.add(this); modalBox.add(modalFooter); modalBox.show(); } - + /** * Adds the events. */ private void addEvents() { - + showPrivateLongLinkButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { showPrivateLongLinkButton.setVisible(false); @@ -221,16 +228,16 @@ public class DialogShareableLink extends Composite { textPrivateLongLink.setText(restrictedPublicLink.getCompleteURL()); } }); - + showPublicLongLinkButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { - if(openPublicLink!=null && openPublicLink.getCompleteURL()!=null) { + if (openPublicLink != null && openPublicLink.getCompleteURL() != null) { showPublicLongLinkButton.setVisible(false); cgPublicLongLink.setVisible(true); textPublicLongLink.setText(openPublicLink.getCompleteURL()); - }else { + } else { textPublicLongLink.setText("Not available"); showPublicLongLinkButton.setText("Not available"); showPublicLongLinkButton.addStyleName("href-disabled"); @@ -240,149 +247,147 @@ public class DialogShareableLink extends Composite { } } }); - + privateLinkCopyButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { - + final Element elem = event.getRelativeElement(); elem.setTitle("Copied to clipboard"); Tooltip.changeVisibility(elem, VisibilityChange.TOGGLE.get()); Timer timer = new Timer() { - + @Override public void run() { Tooltip.changeVisibility(elem, VisibilityChange.HIDE.get()); } }; - + timer.schedule(1000); copyToClipboard(textPrivateLink.getId()); } }); - + privateLinkCopyButton.addMouseOverHandler(new MouseOverHandler() { - + @Override public void onMouseOver(MouseOverEvent event) { final Element elem = event.getRelativeElement(); elem.setTitle("Copy"); } }); - - + privateLongLinkCopyButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { final Element elem = event.getRelativeElement(); Tooltip.changeVisibility(elem, VisibilityChange.TOGGLE.get()); Timer timer = new Timer() { - + @Override public void run() { Tooltip.changeVisibility(elem, VisibilityChange.HIDE.get()); } }; - + timer.schedule(1000); copyToClipboard(textPrivateLongLink.getId()); } }); - + privateLongLinkCopyButton.addMouseOverHandler(new MouseOverHandler() { - + @Override public void onMouseOver(MouseOverEvent event) { final Element elem = event.getRelativeElement(); elem.setTitle("Copy"); } }); - + publicLinkCopyButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { final Element elem = event.getRelativeElement(); Tooltip.changeVisibility(elem, VisibilityChange.TOGGLE.get()); Timer timer = new Timer() { - + @Override public void run() { Tooltip.changeVisibility(elem, VisibilityChange.HIDE.get()); } }; - + timer.schedule(1000); copyToClipboard(textPublicLink.getId()); } }); - + publicLinkCopyButton.addMouseOverHandler(new MouseOverHandler() { - + @Override public void onMouseOver(MouseOverEvent event) { final Element elem = event.getRelativeElement(); elem.setTitle("Copy"); } }); - + publicLongLinkCopyButton.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { final Element elem = event.getRelativeElement(); Tooltip.changeVisibility(elem, VisibilityChange.TOGGLE.get()); Timer timer = new Timer() { - + @Override public void run() { Tooltip.changeVisibility(elem, VisibilityChange.HIDE.get()); } }; - + timer.schedule(1000); copyToClipboard(textPublicLongLink.getId()); } }); - + publicLongLinkCopyButton.addMouseOverHandler(new MouseOverHandler() { - + @Override public void onMouseOver(MouseOverEvent event) { final Element elem = event.getRelativeElement(); elem.setTitle("Copy"); } }); - + textPrivateLink.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { textPrivateLink.selectAll(); } }); - + textPrivateLongLink.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { textPrivateLongLink.selectAll(); } }); - + textPublicLongLink.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { textPublicLongLink.selectAll(); } }); - + } - - + /** * Copy to clipboard. * @@ -390,15 +395,14 @@ public class DialogShareableLink extends Composite { */ private native void copyToClipboard(String myDivId) /*-{ - var copyText = $doc.getElementById(myDivId); - console.log("text copied is :"+copyText.value); - copyText.select(); - //For mobile devices - copyText.setSelectionRange(0, 99999); - $doc.execCommand("copy"); - //alert("Copied the text: " + copyText.value); + var copyText = $doc.getElementById(myDivId); + console.log("text copied is :" + copyText.value); + copyText.select(); + //For mobile devices + copyText.setSelectionRange(0, 99999); + $doc.execCommand("copy"); + //alert("Copied the text: " + copyText.value); }-*/; - /** * Load and show public links for item. @@ -407,30 +411,31 @@ public class DialogShareableLink extends Composite { */ private void loadAndShowPublicLinksForItem(GeoNaItemRef item) { - GeoportalDataViewerServiceAsync.Util.getInstance().getPublicLinksFor(item, - new AsyncCallback() { + GeoportalDataViewerServiceAsync.Util.getInstance().getPublicLinksFor(item, new AsyncCallback() { @Override public void onSuccess(GeoNaItemRef itemReferences) { + showLoadingIcon(false); openPublicLink = itemReferences.getOpenLink(); restrictedPublicLink = itemReferences.getRestrictedLink(); String toPublicURL = openPublicLink.getShortURL() != null && !openPublicLink.getShortURL().isEmpty() ? openPublicLink.getShortURL() : openPublicLink.getCompleteURL(); - + textPublicLink.setValue(toPublicURL); textPublicLongLink.setValue(openPublicLink.getCompleteURL()); - - String toPrivateURL = restrictedPublicLink.getShortURL() != null && !restrictedPublicLink.getShortURL().isEmpty() - ? restrictedPublicLink.getShortURL() - : restrictedPublicLink.getCompleteURL(); - + + String toPrivateURL = restrictedPublicLink.getShortURL() != null + && !restrictedPublicLink.getShortURL().isEmpty() ? restrictedPublicLink.getShortURL() + : restrictedPublicLink.getCompleteURL(); + textPrivateLink.setValue(toPrivateURL); textPrivateLongLink.setValue(restrictedPublicLink.getCompleteURL()); } @Override public void onFailure(Throwable caught) { + showLoadingIcon(false); openPublicLink = null; disableTextBox(textPublicLink); disableTextBox(textPrivateLink); @@ -439,6 +444,17 @@ public class DialogShareableLink extends Composite { }); } + public void showLoadingIcon(boolean show) { + try { + if(show) + info_panel.add(loadingIcon); + else + info_panel.remove(loadingIcon); + }catch (Exception e) { + + } + } + /** * Disable text box. * @@ -448,7 +464,7 @@ public class DialogShareableLink extends Composite { textBox.setEnabled(false); textBox.getElement().getStyle().setOpacity(0.3); } - + /** * Show error. * @@ -458,16 +474,16 @@ public class DialogShareableLink extends Composite { errorAlert.setVisible(true); errorAlert.setText(msg); } - + /** * Show message. * - * @param msg the msg + * @param msg the msg * @param visible the visible */ private void showMessage(String msg, boolean visible) { actionAlert.setVisible(visible); - actionAlert.setText(msg==null?"":msg); + actionAlert.setText(msg == null ? "" : msg); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.ui.xml index fac703c..a4d1dc7 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dialogs/DialogShareableLink.ui.xml @@ -44,12 +44,11 @@ } + - -