2016-06-13 09:48:29 +02:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view;
|
|
|
|
|
|
|
|
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GCubeCkanDataCatalog;
|
|
|
|
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.resource.CkanPortletResources;
|
2016-06-23 12:49:45 +02:00
|
|
|
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
2016-06-20 17:08:46 +02:00
|
|
|
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanRole;
|
2016-06-13 09:48:29 +02:00
|
|
|
|
|
|
|
import com.google.gwt.core.shared.GWT;
|
|
|
|
import com.google.gwt.event.logical.shared.ResizeEvent;
|
|
|
|
import com.google.gwt.event.logical.shared.ResizeHandler;
|
|
|
|
import com.google.gwt.event.shared.HandlerManager;
|
|
|
|
import com.google.gwt.user.client.Window;
|
|
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
|
|
import com.google.gwt.user.client.ui.Frame;
|
|
|
|
import com.google.gwt.user.client.ui.Image;
|
|
|
|
import com.google.gwt.user.client.ui.RootPanel;
|
|
|
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Class GCubeCkanDataCatalogPanel.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
|
|
* Jun 9, 2016
|
|
|
|
*/
|
|
|
|
public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
|
|
|
|
2016-06-20 15:22:21 +02:00
|
|
|
|
2016-06-13 09:48:29 +02:00
|
|
|
private CkanMetadataManagementPanel managementPanel;
|
|
|
|
private ScrollPanel centerScrollable = new ScrollPanel();
|
2016-06-23 12:49:45 +02:00
|
|
|
private CkanFramePanel ckanFramePanel;
|
2016-06-13 09:48:29 +02:00
|
|
|
private Image loading = new Image(CkanPortletResources.ICONS.loading());
|
|
|
|
private RootPanel rootPanel;
|
|
|
|
private HandlerManager eventBus;
|
2016-06-22 18:40:38 +02:00
|
|
|
private String baseURLCKANConnector;
|
2016-06-23 12:49:45 +02:00
|
|
|
private String gCubeTokeValue;
|
2016-06-13 09:48:29 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Instantiates a new g cube ckan data catalog panel.
|
|
|
|
*
|
|
|
|
* @param rootPanel the root panel
|
|
|
|
* @param eventManager the event manager
|
|
|
|
*/
|
|
|
|
public GCubeCkanDataCatalogPanel(RootPanel rootPanel, HandlerManager eventManager){
|
|
|
|
this.rootPanel = rootPanel;
|
|
|
|
this.eventBus = eventManager;
|
2016-06-23 12:49:45 +02:00
|
|
|
ckanFramePanel = new CkanFramePanel(eventBus);
|
2016-06-13 09:48:29 +02:00
|
|
|
managementPanel = new CkanMetadataManagementPanel(eventBus);
|
|
|
|
initPanel();
|
2016-06-20 16:05:58 +02:00
|
|
|
String pathParameter = Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
|
|
|
|
String queryParameter = Window.Location.getParameter(GCubeCkanDataCatalog.GET_QUERY_PARAMETER);
|
2016-06-20 15:22:21 +02:00
|
|
|
|
2016-06-23 12:49:45 +02:00
|
|
|
GCubeCkanDataCatalog.service.getCKanConnector(pathParameter, queryParameter, new AsyncCallback<CkanConnectorAccessPoint>() {
|
2016-06-13 09:48:29 +02:00
|
|
|
|
|
|
|
@Override
|
2016-06-23 12:49:45 +02:00
|
|
|
public void onSuccess(CkanConnectorAccessPoint ckan) {
|
|
|
|
// GWT.log("Instancing CKAN iframe with url: "+uriToCkan);
|
|
|
|
baseURLCKANConnector = ckan.getBaseUrl();
|
|
|
|
gCubeTokeValue = ckan.getGcubeTokenValue();
|
|
|
|
instanceCkanFrame(ckan.buildURI());
|
2016-06-13 09:48:29 +02:00
|
|
|
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
|
|
|
|
Window.alert("Sorry, An error occurred during contacting Gcube Ckan Data Catalogue!");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
//MANAGE CKAN MANAGEMENT PANEL ACCORDING TO MY ROLE
|
2016-06-20 17:08:46 +02:00
|
|
|
GCubeCkanDataCatalog.service.getMyRole(new AsyncCallback<CkanRole>() {
|
2016-06-13 09:48:29 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(CkanRole result) {
|
|
|
|
|
2016-06-22 16:23:51 +02:00
|
|
|
setTopPanelVisible(true);
|
|
|
|
|
2016-06-13 09:48:29 +02:00
|
|
|
switch (result) {
|
|
|
|
case ADMIN:
|
2016-06-22 16:23:51 +02:00
|
|
|
showEditInsertButtons(true);
|
2016-06-13 09:48:29 +02:00
|
|
|
break;
|
|
|
|
case EDITOR:
|
2016-06-22 16:23:51 +02:00
|
|
|
showEditInsertButtons(true);
|
2016-06-13 09:48:29 +02:00
|
|
|
break;
|
|
|
|
case MEMBER:
|
2016-06-22 16:23:51 +02:00
|
|
|
showEditInsertButtons(false);
|
2016-06-13 09:48:29 +02:00
|
|
|
break;
|
|
|
|
case SYSADMIN:
|
2016-06-22 16:23:51 +02:00
|
|
|
showEditInsertButtons(true);
|
2016-06-13 09:48:29 +02:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2016-06-20 17:08:46 +02:00
|
|
|
});
|
2016-06-13 09:48:29 +02:00
|
|
|
|
|
|
|
Window.addResizeHandler(new ResizeHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResize(ResizeEvent event) {
|
|
|
|
|
|
|
|
GWT.log("onWindowResized width: " + event.getWidth() + " height: " + event.getHeight());
|
|
|
|
updateSize();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
rootPanel.add(loading);
|
|
|
|
rootPanel.add(this);
|
|
|
|
updateSize();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the top panel height.
|
|
|
|
*
|
|
|
|
* @return the top panel height
|
|
|
|
*/
|
|
|
|
public int getTopPanelHeight(){
|
|
|
|
|
|
|
|
if(managementPanel.isVisible())
|
|
|
|
return managementPanel.getCurrentHeight();
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the top panel visible.
|
|
|
|
*
|
|
|
|
* @param bool the new top panel visible
|
|
|
|
*/
|
|
|
|
public void setTopPanelVisible(boolean bool){
|
|
|
|
managementPanel.setVisible(bool);
|
|
|
|
updateSize();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-06-22 16:23:51 +02:00
|
|
|
/**
|
2016-06-23 12:49:45 +02:00
|
|
|
* show or hide edit/insert buttons according to the role.
|
|
|
|
*
|
|
|
|
* @param show the show
|
2016-06-22 16:23:51 +02:00
|
|
|
*/
|
|
|
|
public void showEditInsertButtons(boolean show){
|
|
|
|
managementPanel.showInsertAndEditProductButtons(show);
|
|
|
|
}
|
|
|
|
|
2016-06-13 09:48:29 +02:00
|
|
|
/**
|
|
|
|
* Instance ckan frame.
|
|
|
|
*
|
|
|
|
* @param ckanUrlConnector the ckan url connector
|
|
|
|
* @return the frame
|
|
|
|
*/
|
2016-06-22 18:40:38 +02:00
|
|
|
public Frame instanceCkanFrame(String ckanUrlConnector){
|
2016-06-13 09:48:29 +02:00
|
|
|
|
|
|
|
return ckanFramePanel.instanceFrame(ckanUrlConnector);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inits the panel.
|
|
|
|
*/
|
|
|
|
private void initPanel() {
|
|
|
|
setTopPanelVisible(false);
|
|
|
|
addToTop(managementPanel);
|
2016-06-22 16:23:51 +02:00
|
|
|
centerScrollable.add(ckanFramePanel);
|
|
|
|
addToMiddle(centerScrollable);
|
2016-06-13 09:48:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update window size.
|
|
|
|
*/
|
|
|
|
public void updateSize(){
|
|
|
|
|
2016-06-22 16:23:51 +02:00
|
|
|
RootPanel workspace = rootPanel;
|
|
|
|
int topBorder = workspace.getAbsoluteTop();
|
|
|
|
int leftBorder = workspace.getAbsoluteLeft();
|
|
|
|
int footer = 0; //85 footer is bottombar + sponsor
|
|
|
|
int rightScrollBar = 0;
|
|
|
|
int rootHeight = Window.getClientHeight() - topBorder - 5 - footer;// - ((footer == null)?0:(footer.getOffsetHeight()-15));
|
2016-06-13 09:48:29 +02:00
|
|
|
int rootWidth = Window.getClientWidth() - 2* leftBorder - rightScrollBar;
|
2016-06-22 16:23:51 +02:00
|
|
|
GWT.log("New iFrame size w: "+rootWidth + " h: "+rootHeight);
|
|
|
|
this.setSize(rootWidth+"px",rootHeight+"px");
|
|
|
|
int height = rootHeight - getTopPanelHeight();
|
|
|
|
if(ckanFramePanel.getFrame()!=null)
|
|
|
|
ckanFramePanel.getFrame().setSize(rootWidth+"px", height+"px");
|
|
|
|
}
|
2016-06-22 18:40:38 +02:00
|
|
|
|
|
|
|
/**
|
2016-06-23 12:49:45 +02:00
|
|
|
* Gets the base urlckan connector.
|
|
|
|
*
|
2016-06-22 18:40:38 +02:00
|
|
|
* @return the baseURLCKANConnector
|
|
|
|
*/
|
|
|
|
public String getBaseURLCKANConnector() {
|
|
|
|
return baseURLCKANConnector;
|
|
|
|
}
|
2016-06-23 12:49:45 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the gcube token value to ckan connector.
|
|
|
|
*
|
|
|
|
* @return the gcube token value to ckan connector
|
|
|
|
*/
|
|
|
|
public String getGcubeTokenValueToCKANConnector() {
|
|
|
|
return gCubeTokeValue;
|
|
|
|
}
|
|
|
|
|
2016-06-13 09:48:29 +02:00
|
|
|
}
|