catalogue-sharing-widget/src/main/java/org/gcube/portlets_widgets/catalogue_sharing_widget/client/ShareCatalogueWidget.java

94 lines
2.3 KiB
Java

package org.gcube.portlets_widgets.catalogue_sharing_widget.client;
import org.gcube.portlets_widgets.catalogue_sharing_widget.shared.ItemUrls;
import com.github.gwtbootstrap.client.ui.AlertBlock;
import com.github.gwtbootstrap.client.ui.Form;
import com.github.gwtbootstrap.client.ui.Well;
import com.github.gwtbootstrap.client.ui.base.TextBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class ShareCatalogueWidget extends Composite {
private static ShareCatalogueWidgetUiBinder uiBinder = GWT
.create(ShareCatalogueWidgetUiBinder.class);
interface ShareCatalogueWidgetUiBinder extends
UiBinder<Widget, ShareCatalogueWidget> {
}
public static final ShareServicesAsync ckanServices = GWT.create(ShareServices.class);
public static final String SERVICE_UNAVAILABLE = "The service is currently unavailable, retry later";
@UiField
Well loadingIcon;
@UiField
AlertBlock errorBlock;
@UiField
Form formWithInformation;
@UiField
TextBox itemShortUrl;
@UiField
TextBox itemTitle;
@UiField
TextBox itemName;
@UiField
TextBox itemLongUrl;
public ShareCatalogueWidget(String itemUUID) {
initWidget(uiBinder.createAndBindUi(this));
ckanServices.getPackageUrl(itemUUID, new AsyncCallback<ItemUrls>() {
@Override
public void onSuccess(ItemUrls result) {
if(result == null){
onError(null);
}else{
loadingIcon.setVisible(false);
formWithInformation.setVisible(true);
itemShortUrl.setText(result.getShortUrl() == null ? "" : result.getShortUrl());
itemLongUrl.setText(result.getUrl() == null ? "" : result.getUrl());
itemTitle.setText(result.getProductTitle() == null ? "" : result.getProductTitle());
itemName.setText(result.getProductName() == null ? "" : result.getProductName());
}
}
@Override
public void onFailure(Throwable caught) {
onError(caught.getMessage());
}
});
}
private void onError(String msg) {
loadingIcon.setVisible(false);
formWithInformation.setVisible(false);
errorBlock.setText(SERVICE_UNAVAILABLE + (msg == null ? "" : "(" + msg + ")"));
errorBlock.setVisible(true);
}
}