package org.gcube.portlets.user.reportgenerator.client.Presenter; import org.gcube.portlets.user.reportgenerator.client.ReportConstants; import org.gcube.portlets.user.reportgenerator.client.dialog.ImageUploaderDialog; import org.gcube.portlets.user.reportgenerator.client.dialog.ImporterDialog; import org.gcube.portlets.user.workspace.lighttree.client.ItemType; import org.gcube.portlets.user.workspace.lighttree.client.event.PopupEvent; import org.gcube.portlets.user.workspace.lighttree.client.event.PopupHandler; import org.gcube.portlets.user.workspace.lighttree.client.load.WorkspaceLightTreeLoadPopup; import org.gcube.portlets.user.workspace.lighttree.client.save.WorkspaceLightTreeSavePopup; import com.extjs.gxt.ui.client.event.ColorPaletteEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.widget.ColorPalette; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.PopupPanel; /** * * * /** * CommonCommands class contains the menu commands for the UI * * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it * * @version December 2012 (2.7) */ public class CommonCommands { /** * */ public Command openTemplate; /** * */ public Command importTemplateCommand; /** * */ public Command insertImage; /** * */ public Command saveTemplate; /** * */ public Command pickColor; private Presenter presenter; /** * * @param presenter . */ public CommonCommands(final Presenter presenter) { this.presenter = presenter; openTemplate = new Command() { public void execute() { final int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 50; final int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 25; GWT.runAsync(WorkspaceLightTreeLoadPopup.class, new RunAsyncCallback() { public void onSuccess() { WorkspaceLightTreeLoadPopup wpTreepopup = new WorkspaceLightTreeLoadPopup("Open Template", true, true); wpTreepopup.setShowableTypes(ItemType.REPORT_TEMPLATE); wpTreepopup.setSelectableTypes(ItemType.REPORT_TEMPLATE); wpTreepopup.addPopupHandler(new PopupHandler() { public void onPopup(PopupEvent event) { if (! event.isCanceled()) { if (event.getSelectedItem() != null) { presenter.openTemplate(event.getSelectedItem().getName(), event.getSelectedItem().getId(), true); } } } }); wpTreepopup.setPopupPosition(left, top); wpTreepopup.show(); } public void onFailure(Throwable reason) { Window.alert("There are networks problem, please check your connection."); } }); } }; insertImage = new Command() { public void execute() { int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 50; int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 25; ImageUploaderDialog dlg = new ImageUploaderDialog(presenter); dlg.setAnimationEnabled(true); dlg.setPopupPosition(left, top); dlg.show(); } }; pickColor = new Command() { public void execute() { int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 600; int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 50; final PopupPanel pp = new PopupPanel(true); ColorPalette colorPalette = new ColorPalette(); colorPalette.addListener(Events.Select, new Listener() { @SuppressWarnings("deprecation") public void handleEvent(ColorPaletteEvent be) { presenter.getCurrentSelected().getExtendedFormatter().setForeColor(be.getColor()); pp.hide(); } }); pp.add(colorPalette); pp.setAnimationEnabled(false); pp.setPopupPosition(left, top); pp.show(); } }; importTemplateCommand = new Command() { public void execute() { if (! ReportConstants.isDeployed) { int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 50; int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 25; ImporterDialog dlg = new ImporterDialog(null, presenter); dlg.setPopupPosition(left, top); dlg.setAnimationEnabled(true); dlg.show(); } else { GWT.runAsync(WorkspaceLightTreeLoadPopup.class, new RunAsyncCallback() { public void onSuccess() { WorkspaceLightTreeLoadPopup wpTreepopup = new WorkspaceLightTreeLoadPopup("Pick the item you want to import from", true, true); wpTreepopup.setShowableTypes(ItemType.REPORT_TEMPLATE); wpTreepopup.addPopupHandler(new PopupHandler() { public void onPopup(PopupEvent event) { if (! event.isCanceled()) { if (event.getSelectedItem() != null) { int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 50; int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 25; ImporterDialog dlg = new ImporterDialog(event.getSelectedItem(), presenter); dlg.setPopupPosition(left, top); dlg.setAnimationEnabled(true); dlg.show(); } } } }); int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 50; int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 25; wpTreepopup.setPopupPosition(left, top); wpTreepopup.show(); } public void onFailure(Throwable reason) { Window.alert("There are networks problem, please check your connection."); } }); } } }; saveTemplate = new Command() { public void execute() { if (presenter.getModel().getTemplateName().endsWith("d4sR")) presenter.saveReport(); else saveReportAsDialog(); } }; } //end constructor public void saveReportAsDialog() { final int left = presenter.getHeader().getMainLayout().getAbsoluteLeft() + 50; final int top = presenter.getHeader().getMainLayout().getAbsoluteTop() + 25; GWT.runAsync(WorkspaceLightTreeSavePopup.class, new RunAsyncCallback() { public void onSuccess() { WorkspaceLightTreeSavePopup wpTreepopup = new WorkspaceLightTreeSavePopup("Save Template, choose folder please:", true); wpTreepopup.setSelectableTypes( ItemType.FOLDER, ItemType.ROOT); wpTreepopup.setShowEmptyFolders(true); wpTreepopup.addPopupHandler(new PopupHandler() { public void onPopup(PopupEvent event) { //checking user input String inputUser = event.getName(); String newTemplateName = inputUser; if (presenter.getModel().getTemplateName().compareTo(newTemplateName) != 0) { newTemplateName = newTemplateName.trim(); presenter.getModel().setTemplateName(newTemplateName+".d4sR"); } presenter.changeTemplateName(newTemplateName); presenter.saveReport(event.getSelectedItem().getId(), newTemplateName); } }); wpTreepopup.setPopupPosition(left, top); wpTreepopup.show(); } public void onFailure(Throwable reason) { Window.alert("There are networks problem, please check your connection."); } }); } }