tabular-data-manager/src/main/java/org/gcube/portlets/user/td/client/TabularDataPortlet.java

201 lines
6.2 KiB
Java

package org.gcube.portlets.user.td.client;
import org.gcube.portlets.user.td.client.ribbon.TabularDataRibbon;
import org.gcube.portlets.user.td.client.rpc.TabularDataService;
import org.gcube.portlets.user.td.client.rpc.TabularDataServiceAsync;
import org.gcube.portlets.user.tdw.client.TabularData;
import org.gcube.portlets.user.tdw.client.TabularDataGridPanel;
import org.gcube.portlets.user.tdw.client.event.FailureEvent;
import org.gcube.portlets.user.tdw.client.event.FailureEventHandler;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.Portlet;
import com.sencha.gxt.widget.core.client.TabPanel;
import com.sencha.gxt.widget.core.client.button.ToolButton;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.Viewport;
import com.sencha.gxt.widget.core.client.info.Info;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class TabularDataPortlet implements EntryPoint {
protected static final String JSP_TAG_ID = "tdp";
/**
*
*/
public static final int TOOLBOX_WIDTH = 300;
/**
*
*/
public static final int TOOLBOX_HEIGHT= 800;
/**
* Create a remote service proxy to talk to the server-side Greeting service.
*/
@SuppressWarnings("unused")
private final TabularDataServiceAsync greetingService = GWT.create(TabularDataService.class);
//Private TabularData
private static TabularData tabularData;
private static BorderLayoutContainer centerContainer;
private static ContentPanel functionalityPanel;
private static TabPanel functionalityTab;
private static BorderLayoutData eastData;
/**
* {@inheritDoc}
*/
@Override
public void onModuleLoad() {
/*
* Install an UncaughtExceptionHandler which will produce <code>FATAL</code> log messages
*/
Log.setUncaughtExceptionHandler();
// use deferred command to catch initialization exceptions in onModuleLoad2
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
loadMainPanel();
}
});
}
protected void loadMainPanel() {
TabularDataController controller = new TabularDataController();
EventBus eventBus = controller.getEventBus();
tabularData = new TabularData(Constants.TD_DATASOURCE_FACTORY_ID);
tabularData.addFailureHandler(new FailureEventHandler() {
@Override
public void onFailure(FailureEvent event) {
Info.display("Error: "+event.getMessage(), event.getCaught().getMessage());
}
});
controller.setTabularData(tabularData);
//Layout
final BorderLayoutContainer mainPanelLayout = new BorderLayoutContainer();
mainPanelLayout.setBorders(true);
//Ribbon Menu
TabularDataRibbon tabularDataTooBar = new TabularDataRibbon(eventBus);
Widget toolBarPanel = tabularDataTooBar.getContainer();
BorderLayoutData toolBarData = new BorderLayoutData(122);
toolBarData.setMargins(new Margins(5));
toolBarData.setCollapsible(false);
toolBarData.setSplit(false);
mainPanelLayout.setNorthWidget(toolBarPanel, toolBarData);
//Set Center Container
centerContainer = new BorderLayoutContainer();
centerContainer.setResize(true);
centerContainer.setBorders(false);
//Grid Panel
final TabularDataGridPanel gridPanel = tabularData.getGridPanel();
gridPanel.setHeaderVisible(false);
MarginData gridData = new MarginData();
centerContainer.setCenterWidget(gridPanel,gridData);
//Functionality Panel
functionalityPanel= new ContentPanel();
functionalityPanel.setHeaderVisible(false);
functionalityPanel.setResize(true);
functionalityTab=new TabPanel();
//functionalityTab.setPixelSize(600, 250);
functionalityTab.setAnimScroll(true);
functionalityTab.setTabScroll(true);
functionalityTab.setCloseContextMenu(true);
eastData = new BorderLayoutData(200);
eastData.setCollapsible(true);
eastData.setSplit(true);
eastData.setFloatable(false);
eastData.setCollapseMini(true);
eastData.setMargins(new Margins(0, 5, 0, 5));
eastData.setCollapseHidden(true);
//eastData.setCollapsed(true);
functionalityPanel.add(functionalityTab);
//functionalityPanel.setVisible(false);
centerContainer.setEastWidget(functionalityPanel,eastData);
functionalityPanel.collapse();
functionalityPanel.disable();
controller.setFunctionalityTab(functionalityTab);
controller.setFunctionalityPanel(functionalityPanel);
//Set Center Container
mainPanelLayout.setCenterWidget(centerContainer, gridData);
controller.setCenterContainer(centerContainer);
//Main
SimpleContainer mainPanel = new SimpleContainer();
mainPanel.add(mainPanelLayout);
bind(mainPanel);
}
protected void bind(Widget mainWidget)
{
RootPanel root = RootPanel.get(JSP_TAG_ID);
if (root == null) {
Log.trace("Div with id "+JSP_TAG_ID+" not found, starting in dev mode");
Viewport viewport = new Viewport();
viewport.setWidget(mainWidget);
RootPanel.get().add(viewport);
} else {
Log.trace("Application div with id "+JSP_TAG_ID+" found, starting in portal mode");
PortalViewport viewport = new PortalViewport();
//viewport.setEnableScroll(true);
viewport.setWidget(mainWidget);
//RootPanel.get()
root.add(viewport);
}
}
private void configPanel(final Portlet panel) {
panel.setCollapsible(true);
panel.setAnimCollapse(false);
//panel.getHeader().addTool(new ToolButton(ToolButton.GEAR));
panel.getHeader().addTool(new ToolButton(ToolButton.CLOSE));
}
}