You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gcube-ckan-datacatalog/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java

176 lines
4.6 KiB
Java

/**
*
*/
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;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanRole;
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{
private CkanMetadataManagementPanel managementPanel;
private ScrollPanel centerScrollable = new ScrollPanel();
private CkanFramePanel ckanFramePanel = new CkanFramePanel();
private Image loading = new Image(CkanPortletResources.ICONS.loading());
private RootPanel rootPanel;
private HandlerManager eventBus;
/**
* 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;
managementPanel = new CkanMetadataManagementPanel(eventBus);
initPanel();
GCubeCkanDataCatalog.service.getCKanConnector(new AsyncCallback<String>() {
@Override
public void onSuccess(String ckanUrlConnector) {
instanceCkanFrame(ckanUrlConnector);
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
updateSize();
}
@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
GCubeCkanDataCatalog.service.getMyRole(new AsyncCallback<CkanRole>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(CkanRole result) {
switch (result) {
case ADMIN:
setTopPanelVisible(true);
break;
case EDITOR:
setTopPanelVisible(true);
break;
case MEMBER:
setTopPanelVisible(false);
break;
case SYSADMIN:
setTopPanelVisible(true);
break;
default:
break;
}
}
});
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();
}
/**
* Instance ckan frame.
*
* @param ckanUrlConnector the ckan url connector
* @return the frame
*/
private Frame instanceCkanFrame(String ckanUrlConnector){
return ckanFramePanel.instanceFrame(ckanUrlConnector);
}
/**
* Inits the panel.
*/
private void initPanel() {
setTopPanelVisible(false);
addToTop(managementPanel);
centerScrollable.add(ckanFramePanel);
addToMiddle(centerScrollable);
}
/**
* Update window size.
*/
public void updateSize(){
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));
int rootWidth = Window.getClientWidth() - 2* leftBorder - rightScrollBar;
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");
}
}