fixed dom message about explore_vres_landing_page

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@146700 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2017-04-07 16:43:26 +00:00
parent 5011dbc176
commit 6f9a110038
2 changed files with 48 additions and 30 deletions

View File

@ -7,15 +7,18 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GCubeCkanDataCat
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.IFrameInstanciedEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.IFrameInstanciedEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.resource.CkanPortletResources; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.resource.CkanPortletResources;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.shared.GWT; import com.google.gwt.core.shared.GWT;
import com.google.gwt.dom.client.Style.Display; import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.LoadEvent; import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler; import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Frame; import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.NamedFrame;
/** /**
@ -26,10 +29,11 @@ import com.google.gwt.user.client.ui.Image;
*/ */
public class CkanFramePanel extends FlowPanel{ public class CkanFramePanel extends FlowPanel{
private Frame frame; private NamedFrame frame;
//private static final String FRAME_NAME = "ckan-content-frame";
private HandlerManager eventBus; private HandlerManager eventBus;
private Image loading = new Image(CkanPortletResources.ICONS.loading()); private Image loading = new Image(CkanPortletResources.ICONS.loading());
private String messageToSend;
/** /**
* Instantiates a new ckan frame panel. * Instantiates a new ckan frame panel.
@ -41,6 +45,24 @@ public class CkanFramePanel extends FlowPanel{
addLoading(); addLoading();
} }
/**
* Post message.
*
* @param msg the msg (as json)
* @param javaScriptObject
* @param
* @param
*/
protected native void sendMessage(String msg, String frameName) /*-{
console.log("Sending message " + msg);
// $wnd.parent.postMessage(msg,'*');
//var f = $wnd.frames[frameName];
//console.log(f);
//f.contentWindow.postMessage(msg, "*");
$wnd.frames[frameName].postMessage(msg,"*")
console.log("Message sent");
}-*/;
/** /**
* Prints the. * Prints the.
* *
@ -56,7 +78,7 @@ public class CkanFramePanel extends FlowPanel{
* @param ckanUrlConnector the ckan url connector * @param ckanUrlConnector the ckan url connector
* @return the frame * @return the frame
*/ */
public Frame instanceFrame(String ckanUrlConnector) { public Frame instanceFrame(String ckanUrlConnector, final String messageToSend,final String ckanUrl) {
GWT.log("Instancing new IFRAME with uri: "+ckanUrlConnector); GWT.log("Instancing new IFRAME with uri: "+ckanUrlConnector);
try{ try{
if(frame != null) if(frame != null)
@ -64,10 +86,12 @@ public class CkanFramePanel extends FlowPanel{
}catch(Exception e){ }catch(Exception e){
print("Error " + e); print("Error " + e);
} }
addLoading(); addLoading();
frame = new Frame(ckanUrlConnector); frame = new NamedFrame(GCubeCkanDataCatalog.GCUBE_CKAN_IFRAME);
frame.setUrl(ckanUrlConnector);
frame.getElement().setId(GCubeCkanDataCatalog.GCUBE_CKAN_IFRAME); frame.getElement().setId(GCubeCkanDataCatalog.GCUBE_CKAN_IFRAME);
frame.setWidth("100%"); frame.setWidth("100%");
// frame.setHeight("100%"); // frame.setHeight("100%");
@ -78,9 +102,10 @@ public class CkanFramePanel extends FlowPanel{
@Override @Override
public void onLoad(LoadEvent arg0) { public void onLoad(LoadEvent arg0) {
CkanFramePanel.this.remove(loading); CkanFramePanel.this.remove(loading);
sendMessage(messageToSend, GCubeCkanDataCatalog.GCUBE_CKAN_IFRAME);
} }
}); });
add(frame); add(frame);
@ -97,7 +122,7 @@ public class CkanFramePanel extends FlowPanel{
public Frame getFrame() { public Frame getFrame() {
return frame; return frame;
} }
/** /**
* add loading image * add loading image
*/ */

View File

@ -51,6 +51,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
private boolean isManageProductToShow = false; private boolean isManageProductToShow = false;
private static String latestSelectedProductIdentifier; private static String latestSelectedProductIdentifier;
public static final int IFRAME_FIX_HEIGHT = 1800; public static final int IFRAME_FIX_HEIGHT = 1800;
private JSONObject obj;
/** /**
* Instantiates a new g cube ckan data catalog panel. * Instantiates a new g cube ckan data catalog panel.
@ -65,6 +66,14 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
this.rootPanel = rootPanel; this.rootPanel = rootPanel;
this.eventBus = eventManager; this.eventBus = eventManager;
//postMessage(obj.toString(), ckanFramePanel.getFrame());
// send message about gateway url
obj = new JSONObject();
String landingPageVREs = Window.Location.getProtocol() + "//" + Window.Location.getHostName() + "/explore";
JSONString value = new JSONString(landingPageVREs);
obj.put("explore_vres_landing_page", value);
ckanFramePanel = new CkanFramePanel(eventBus); ckanFramePanel = new CkanFramePanel(eventBus);
managementPanel = new CkanMetadataManagementPanel(eventBus); managementPanel = new CkanMetadataManagementPanel(eventBus);
ckanOrganizationsPanel = new CkanOrganizationsPanel(this); ckanOrganizationsPanel = new CkanOrganizationsPanel(this);
@ -219,13 +228,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
// listen for DOM messages // listen for DOM messages
listenForPostMessage(); listenForPostMessage();
// send message about gateway url
JSONObject obj = new JSONObject();
String landingPageVREs = Window.Location.getProtocol() + "//" + Window.Location.getHostName() + "/explore";
JSONString value = new JSONString(landingPageVREs);
obj.put("explore_vres_landing_page", value);
postMessage(obj.toString());
} }
public static String getLatestSelectedProductIdentifier(){ public static String getLatestSelectedProductIdentifier(){
@ -279,7 +282,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
ckanFramePanel.setVisible(true); ckanFramePanel.setVisible(true);
ckanOrganizationsPanel.setVisible(false); ckanOrganizationsPanel.setVisible(false);
ckanGroupsPanel.setVisible(false); ckanGroupsPanel.setVisible(false);
return ckanFramePanel.instanceFrame(ckanUrlConnector); return ckanFramePanel.instanceFrame(ckanUrlConnector, obj.toString(), ckanAccessPoint.getBaseUrl());
} }
/** /**
@ -326,16 +329,6 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
// workspace.setHeight(height+"px"); // workspace.setHeight(height+"px");
} }
/**
* Post message.
*
* @param msg the msg (as json)
*/
protected native void postMessage(String msg) /*-{
console.log("Sending message " + msg);
$wnd.postMessage(msg, "*");
}-*/;
/** /**
* Print a message * Print a message
* @param string * @param string
@ -354,7 +347,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
that.@org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel::onPostMessage(Ljava/lang/String;Ljava/lang/String;)(msg.data, msg.origin); that.@org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel::onPostMessage(Ljava/lang/String;Ljava/lang/String;)(msg.data, msg.origin);
}); });
}-*/; }-*/;
/** /**
* On post message. * On post message.
* *
@ -362,11 +355,11 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
* @param origin the origin * @param origin the origin
*/ */
private void onPostMessage(String data, String origin) { private void onPostMessage(String data, String origin) {
GWT.log("Read data: "+data+", from origin: "+origin); printString("Read data: "+data+", from origin: "+origin);
GWT.log("Ckan base url: "+ckanAccessPoint.getBaseUrl()); printString("Ckan base url: "+ckanAccessPoint.getBaseUrl());
// parsing data.. it is a json bean of the type // parsing data.. it is a json bean of the type
GWT.log("Incoming message is " + data + " from " + origin); printString("Incoming message is " + data + " from " + origin);
if (ckanAccessPoint.getBaseUrl().indexOf(origin)>=0) { if (ckanAccessPoint.getBaseUrl().indexOf(origin)>=0) {
// The data has been sent from your site // The data has been sent from your site