258 lines
8.0 KiB
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();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|