databases-manager-portlet/src/main/java/org/gcube/portlets/user/databasesmanager/client/toolbar/GxtToolbarFunctionality.java

414 lines
10 KiB
Java

package org.gcube.portlets.user.databasesmanager.client.toolbar;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.gcube.portlets.user.databasesmanager.client.GWTdbManagerServiceAsync;
import org.gcube.portlets.user.databasesmanager.client.datamodel.SubmitQueryData;
import org.gcube.portlets.user.databasesmanager.client.events.SubmitQueryEvent;
import org.gcube.portlets.user.databasesmanager.client.form.GxtFormSubmitQuery;
import org.gcube.portlets.user.databasesmanager.client.utils.ConstantsPortlet;
//import org.gcube.portlets.user.dbmanager.client.GWTdbManagerServiceAsync;
//import org.gcube.portlets.user.dbmanager.client.datamodel.SubmitQueryData;
//import org.gcube.portlets.user.dbmanager.client.events.SubmitQueryEvent;
//import org.gcube.portlets.user.dbmanager.client.form.GxtFormSubmitQuery;
//import org.gcube.portlets.user.dbmanager.client.utils.ConstantsPortlet;
import com.extjs.gxt.ui.client.Style.ButtonArrowAlign;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.event.shared.HandlerManager;
public class GxtToolbarFunctionality {
private HandlerManager eventBus = null;
private Button btnSubmitQuery;
// private Button btnGetInfo;
private Button btnShowCreateTable;
private Button btnSimpleSample;
private Button btnSmartSample;
private Button btnRandomSample;
private SubmitQueryData data;
private ToolBar toolBar;
// the dialog that contains the form
private Dialog dialog = new Dialog();
// RPC service
private GWTdbManagerServiceAsync RPCservice = null;
private static Logger rootLogger = Logger
.getLogger("GxtToolbarFunctionality");
public GxtToolbarFunctionality(HandlerManager eBus,
GWTdbManagerServiceAsync service) {
eventBus = eBus;
RPCservice = service;
toolBar = new ToolBar();
initToolBar();
addSelectionListenersOnToolBar();
}
private void initToolBar() {
// setLayout(new FlowLayout(10));
// Button for Submit Query
btnSubmitQuery = new Button(ConstantsPortlet.SUBMITQUERY);
// btnSubmitQuery.setIcon(Resources.ICONS.text());
btnSubmitQuery.setScale(ButtonScale.SMALL);
btnSubmitQuery.setArrowAlign(ButtonArrowAlign.BOTTOM);
toolBar.add(btnSubmitQuery);
// // Button to get information about a database
// btnGetInfo = new Button(ConstantsPortlet.GETINFO);
// btnGetInfo.setScale(ButtonScale.SMALL);
// btnGetInfo.setArrowAlign(ButtonArrowAlign.BOTTOM);
// toolBar.add(btnGetInfo);
// Button to get the "show create table"
btnShowCreateTable = new Button(ConstantsPortlet.SHOWCREATETABLE);
btnShowCreateTable.setScale(ButtonScale.SMALL);
btnShowCreateTable.setArrowAlign(ButtonArrowAlign.BOTTOM);
toolBar.add(btnShowCreateTable);
toolBar.add(new SeparatorToolItem());
// Button for Simple Sample
btnSimpleSample = new Button(ConstantsPortlet.SAMPLING);
btnSimpleSample.setScale(ButtonScale.SMALL);
btnSimpleSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
toolBar.add(btnSimpleSample);
// Button for Smart Sample
btnSmartSample = new Button(ConstantsPortlet.SMARTSAMPLING);
btnSmartSample.setScale(ButtonScale.SMALL);
btnSmartSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
toolBar.add(btnSmartSample);
// button fro Random Sample
btnRandomSample = new Button(ConstantsPortlet.RANDOMSAMPLING);
btnRandomSample.setScale(ButtonScale.SMALL);
btnRandomSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
toolBar.add(btnRandomSample);
// add(toolBar, new FlowData(10));
btnSubmitQuery.disable();
// btnGetInfo.disable();
btnShowCreateTable.disable();
btnSimpleSample.disable();
btnSmartSample.disable();
btnRandomSample.disable();
}
private void addSelectionListenersOnToolBar() {
btnSubmitQuery
.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
data = null;
// dialog to insert inputs in order to submit a query
// final Dialog dialog = new Dialog();
dialog.setLayout(new FitLayout());
dialog.setModal(true);
dialog.setBlinkModal(true);
dialog.setButtons(Dialog.OKCANCEL);
// dialog.setPlain(true);
// dialog.setCollapsible(false);
dialog.setResizable(false);
dialog.setHeading("Submit Query");
dialog.setWidth(290);
dialog.setHeight(250);
final GxtFormSubmitQuery form = new GxtFormSubmitQuery();
dialog.add(form);
dialog.show();
dialog.getButtonById(Dialog.OK).addSelectionListener(
new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// System.out.println("button OK event");
dialog.mask("Loading", "x-mask-loading");
// dialog.hide();
// recover info from dialog
setInfoOnSubmitQuery(form);
// System.out
// .println("GxtToolbarFunctionality-> query submitted");
rootLogger.log(Level.SEVERE,
"query submitted");
}
});
dialog.getButtonById(Dialog.CANCEL)
.addSelectionListener(
new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(
ButtonEvent ce) {
// System.out
// .println("button Cancel event");
rootLogger.log(Level.INFO,
"button Cancel event");
dialog.hide();
}
});
}
});
btnSimpleSample
.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
// TODO: insert the result of the sample operation
// TODO: manage the exception case (returned from
// algorithm "Simple Sample") with an alert
// System.out.println("simple sample event");
Dialog d = new Dialog();
d.setHeading("Simple Sample");
// d.setBodyStyle("fontWeight:bold;padding:13px;");
d.setBodyStyle("padding:9px;");
d.setSize(600, 400);
d.setScrollMode(Scroll.AUTO);
d.setHideOnButtonClick(true);
d.setModal(true);
d.setMaximizable(true);
d.addText("Result Table 1");
d.show();
}
});
btnSmartSample
.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
// TODO: insert the result of the sample operation
// TODO: manage the exception case (returned from
// algorithm "Smart Sample") with an alert
// System.out.println("simple sample event");
Dialog d = new Dialog();
d.setHeading("Smart Sample");
// d.setBodyStyle("fontWeight:bold;padding:13px;");
d.setBodyStyle("padding:9px;");
d.setSize(600, 400);
d.setScrollMode(Scroll.AUTO);
d.setHideOnButtonClick(true);
d.setModal(true);
d.setMaximizable(true);
d.addText("Result Table 2");
d.show();
}
});
btnRandomSample
.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
// TODO: insert the result of the sample operation
// TODO: manage the exception case (returned from
// algorithm "Random Sample") with an alert
// System.out.println("simple sample event");
Dialog d = new Dialog();
d.setHeading("Random Sample");
// d.setBodyStyle("fontWeight:bold;padding:13px;");
d.setBodyStyle("padding:9px;");
d.setSize(600, 400);
d.setScrollMode(Scroll.AUTO);
d.setHideOnButtonClick(true);
d.setModal(true);
d.setMaximizable(true);
d.addText("Result Table 3");
d.show();
}
});
}
public void disableButtonOnToolbar(int infoTreeDepthSelectedItem,
boolean infoSelectedItemIsSchema) {
// System.out.println("GxtToolbarFunctionality-> depth: "
// + infoTreeDepthSelectedItem);
rootLogger.log(Level.INFO, "selectedItem depth: "
+ infoTreeDepthSelectedItem);
switch (infoTreeDepthSelectedItem) {
case 1:
btnSubmitQuery.disable();
// btnGetInfo.disable();
btnShowCreateTable.disable();
btnSimpleSample.disable();
btnSmartSample.disable();
btnRandomSample.disable();
break;
case 2:
btnSubmitQuery.disable();
// btnGetInfo.enable();
btnShowCreateTable.disable();
btnSimpleSample.disable();
btnSmartSample.disable();
btnRandomSample.disable();
break;
case 3:
btnSubmitQuery.enable();
// btnGetInfo.disable();
btnShowCreateTable.disable();
btnSimpleSample.disable();
btnSmartSample.disable();
btnRandomSample.disable();
break;
case 4: // check to verify that this level refers to schema or table
// and
// manage it differently
if (infoSelectedItemIsSchema == true) {
// this tree level is a schema
btnSubmitQuery.enable();
// btnShowCreateTable.enable();
btnShowCreateTable.disable();
btnSimpleSample.disable();
btnSmartSample.disable();
btnRandomSample.disable();
} else {
// this tree level is a table
btnSubmitQuery.enable();
btnShowCreateTable.enable();
btnSimpleSample.enable();
btnSmartSample.enable();
btnRandomSample.enable();
}
break;
case 5: // if there is the schema this level refers to table
btnSubmitQuery.enable();
btnShowCreateTable.enable();
btnSimpleSample.enable();
btnSmartSample.enable();
btnRandomSample.enable();
break;
}
}
public ToolBar getToolBar() {
return this.toolBar;
}
private void setInfoOnSubmitQuery(GxtFormSubmitQuery form) {
data = form.getSubmitQueryData();
String query = data.getQuery();
if ((query == null) || (query.equals(""))) {
MessageBox.alert("Warning", "Query field null", null);
} else {
eventBus.fireEvent(new SubmitQueryEvent());
}
}
public SubmitQueryData getSubmitQueryData() {
return data;
}
public Dialog getDialogForm() {
return dialog;
}
}