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

258 lines
8.0 KiB
Java

/**
*
*/
package org.gcube.portlets.user.td.client.ribbon;
import org.gcube.portlets.user.td.client.event.CloseTabularResourceEvent;
import org.gcube.portlets.user.td.client.event.CloseTabularResourceType;
import org.gcube.portlets.user.td.client.event.ExportTableEvent;
import org.gcube.portlets.user.td.client.event.ExportTableType;
import org.gcube.portlets.user.td.client.event.ImportTableEvent;
import org.gcube.portlets.user.td.client.event.ImportTableType;
import org.gcube.portlets.user.td.client.event.OpenFunctionalityEvent;
import org.gcube.portlets.user.td.client.event.OpenFunctionalityType;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceEvent;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceType;
import org.gcube.portlets.user.td.client.resource.TabularDataResources;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonArrowAlign;
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.widget.core.client.button.ButtonGroup;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
/**
*
* @author "Giancarlo Panichi"
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class FileToolBar {
protected EventBus eventBus;
protected ToolBar toolBar;
protected TextButton openButton;
//protected TextButton saveButton;
protected TextButton closeButton;
protected TextButton propertiesButton;
protected TextButton importCSVButton;
protected TextButton importJSONButton;
protected TextButton importSDMXButton;
protected TextButton exportSDMXButton;
protected TextButton exportCSVButton;
protected TextButton exportJSONButton;
public FileToolBar(EventBus eventBus)
{
this.eventBus = eventBus;
toolBar = new ToolBar();
build();
}
public ToolBar getToolBar()
{
return toolBar;
}
protected void build()
{
toolBar.setHeight("94px");
//File
ButtonGroup dataGroup = new ButtonGroup();
dataGroup.setHeight("78px");
dataGroup.setStyleName("margin:2px");
dataGroup.setHeadingText("File");
toolBar.add(dataGroup);
FlexTable dataLayout = new FlexTable();
dataGroup.add(dataLayout);
openButton = new TextButton("Open", TabularDataResources.INSTANCE.open32());
openButton.setScale(ButtonScale.LARGE);
openButton.setIconAlign(IconAlign.TOP);
openButton.setToolTip("Open table");
openButton.setArrowAlign(ButtonArrowAlign.BOTTOM);
openButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new OpenTabularResourceEvent(OpenTabularResourceType.TABLE));
}
});
dataLayout.setWidget(0, 0, openButton);
dataLayout.getFlexCellFormatter().setRowSpan(0, 0, 2);
/*
saveButton = new TextButton("Save", TabularDataResources.INSTANCE.save32());
saveButton.setScale(ButtonScale.LARGE);
saveButton.setIconAlign(IconAlign.TOP);
saveButton.setToolTip("Save table");
saveButton.setArrowAlign(ButtonArrowAlign.BOTTOM);
saveButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
//eventBus.fireEvent(new ImportTableEvent(ImportTableType.SDMX));
}
});
dataLayout.setWidget(0, 1, saveButton);
dataLayout.getFlexCellFormatter().setRowSpan(0, 1, 2);
*/
closeButton = new TextButton("Close", TabularDataResources.INSTANCE.close());
closeButton.setToolTip("Close table");
dataLayout.setWidget(0, 2, closeButton);
closeButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new CloseTabularResourceEvent(CloseTabularResourceType.TABLE));
}
});
propertiesButton = new TextButton("Properties", TabularDataResources.INSTANCE.properties());
propertiesButton.setToolTip("Properties");
dataLayout.setWidget(1, 2, propertiesButton);
propertiesButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new OpenFunctionalityEvent(OpenFunctionalityType.PROPERTIES));
}
});
cleanCells(dataLayout.getElement());
//Import
ButtonGroup importGroup = new ButtonGroup();
importGroup.setHeight("78px");
importGroup.setStyleName("margin:2px");
importGroup.setHeadingText("Import");
toolBar.add(importGroup);
FlexTable importLayout = new FlexTable();
importGroup.add(importLayout);
importSDMXButton = new TextButton("SDMX", TabularDataResources.INSTANCE.sdmx32());
importSDMXButton.setScale(ButtonScale.LARGE);
importSDMXButton.setIconAlign(IconAlign.TOP);
importSDMXButton.setToolTip("Import a new table from SDMX");
importSDMXButton.setArrowAlign(ButtonArrowAlign.BOTTOM);
importSDMXButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new ImportTableEvent(ImportTableType.SDMX));
}
});
importLayout.setWidget(0, 0, importSDMXButton);
importLayout.getFlexCellFormatter().setRowSpan(0, 0, 2);
importCSVButton = new TextButton("CSV", TabularDataResources.INSTANCE.csv());
importCSVButton.setToolTip("Import a new table from CSV");
importCSVButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new ImportTableEvent(ImportTableType.CSV));
}
});
importLayout.setWidget(0, 2, importCSVButton);
importJSONButton = new TextButton("JSON", TabularDataResources.INSTANCE.json());
importJSONButton.setToolTip("Import a new table from JSON");
importJSONButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new ImportTableEvent(ImportTableType.JSON));
}
});
importLayout.setWidget(1, 2, importJSONButton);
cleanCells(importLayout.getElement());
//Export
ButtonGroup exportGroup = new ButtonGroup();
exportGroup.setHeight("78px");
exportGroup.setStyleName("margin:2px");
exportGroup.setHeadingText("Export");
toolBar.add(exportGroup);
FlexTable exportLayout = new FlexTable();
exportGroup.add(exportLayout);
exportSDMXButton = new TextButton("SDMX", TabularDataResources.INSTANCE.sdmx32());
exportSDMXButton.setScale(ButtonScale.LARGE);
exportSDMXButton.setIconAlign(IconAlign.TOP);
exportSDMXButton.setArrowAlign(ButtonArrowAlign.BOTTOM);
exportSDMXButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new ExportTableEvent(ExportTableType.SDMX));
}
});
exportLayout.setWidget(0, 0, exportSDMXButton);
exportLayout.getFlexCellFormatter().setRowSpan(0, 0, 2);
exportCSVButton = new TextButton("CSV", TabularDataResources.INSTANCE.csv());
exportCSVButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new ExportTableEvent(ExportTableType.CSV));
}
});
exportLayout.setWidget(0, 2, exportCSVButton);
exportJSONButton = new TextButton("JSON", TabularDataResources.INSTANCE.json());
exportJSONButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new ExportTableEvent(ExportTableType.JSON));
}
});
exportLayout.setWidget(1, 2, exportJSONButton);
cleanCells(exportLayout.getElement());
}
protected void cleanCells(Element elem) {
NodeList<Element> tds = elem.<XElement> cast().select("td");
for (int i = 0; i < tds.getLength(); i++) {
Element td = tds.getItem(i);
if (!td.hasChildNodes() && td.getClassName().equals("")) {
td.removeFromParent();
}
}
}
}