From 3d07be06cfbdb0a8868dd6407090d53a225c0226 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Tue, 26 Nov 2013 17:37:13 +0000 Subject: [PATCH] added multi reference option in UI git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/reports@86210 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 4 +- .settings/com.google.gdt.eclipse.core.prefs | 2 +- .settings/org.eclipse.wst.common.component | 9 -- pom.xml | 4 +- .../reportgenerator/client/Headerbar.java | 77 ++++----- .../client/Presenter/Presenter.java | 150 ++++++------------ .../client/ReportGenerator.java | 2 +- .../reportgenerator/client/ReportService.java | 4 +- .../client/ReportServiceAsync.java | 5 +- .../reportgenerator/client/ToolboxPanel.java | 4 +- .../client/dialog/ImportVMEReportDialog.java | 43 +++-- .../client/events/SelectedReportEvent.java | 8 +- .../client/model/TemplateComponent.java | 8 +- .../client/targets/ClientReportReference.java | 33 +++- .../client/targets/D4sRichTextarea.java | 2 - .../server/servlet/ReportServiceImpl.java | 129 +++++++++------ 16 files changed, 245 insertions(+), 239 deletions(-) diff --git a/.classpath b/.classpath index 0383786..06d096f 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -31,5 +31,5 @@ - + diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs index d5e5d52..b3aab8d 100644 --- a/.settings/com.google.gdt.eclipse.core.prefs +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -2,6 +2,6 @@ <<<<<<<=.mine >>>>>>>=.r71295 eclipse.preferences.version=1 -lastWarOutDir=/Users/massi/Documents/workspace/reports/target/reports-4.6.4-SNAPSHOT +lastWarOutDir=/Users/massi/Documents/workspace/reports/target/reports-4.6.6-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index a5078d4..400921f 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -8,15 +8,6 @@ uses - - uses - - - uses - - - uses - uses diff --git a/pom.xml b/pom.xml index 38f0f4f..c55bae7 100644 --- a/pom.xml +++ b/pom.xml @@ -12,8 +12,8 @@ org.gcube.portlets.user reports war - 4.6.4-SNAPSHOT - gCube Reports Portlet + 4.6.6-SNAPSHOT + gCube Reports Manager gCube Reports Portlet. diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java index 9ee314d..861e9a0 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java @@ -21,6 +21,7 @@ import com.extjs.gxt.ui.client.widget.MessageBox; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.Style.WhiteSpace; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.CellPanel; @@ -113,7 +114,7 @@ public class Headerbar extends Composite{ MenuItem sectionsMenu; MenuItem biblioMenu; MenuItem exportMenu; - MenuItem importMenu; + MenuItem vmeMenu; MenuItemSeparator separator1; MenuItemSeparator separator2; MenuItemSeparator separator3; @@ -145,8 +146,9 @@ public class Headerbar extends Composite{ exportMenu = getExportsMenu(); menuBar.addItem(exportMenu); menuBar.addSeparator(); - importMenu = getImportMenu(); - menuBar.addItem(importMenu); + vmeMenu = getVMEMenu(); + menuBar.addItem(vmeMenu); + mainLayout.setSize("100%", "24px"); mainLayout.setStyleName("menubar"); @@ -304,6 +306,41 @@ public class Headerbar extends Composite{ } } }; + + private MenuItem getVMEMenu() { + MenuBar importMenu = new MenuBar(true); + + importMenu.setAnimationEnabled(true); + MenuItem toReturn = new MenuItem("VME Options", importMenu); + toReturn.getElement().getStyle().setWhiteSpace(WhiteSpace.NOWRAP); + + Command importVMEReport = new Command() { + public void execute() { + presenter.showVMEImportDialog(); + } + }; + + importVME = new MenuItem(IMPORT_VME, true, importVMEReport); + + importMenu.addItem(importVME); + importMenu.addSeparator(); + //add the submenu items for editing report refs + for (final VMETypeIdentifier type : VMETypeIdentifier.values()) { + if (type != VMETypeIdentifier.Vme) { + MenuItem item = new MenuItem("Edit " + type.getId(), true, new Command() { + public void execute() { + presenter.showVMEReportRefImportDialog(type); + } + }); + importMenu.addItem(item); + } + } + importMenu.addSeparator(); + MenuItem exportVME = new MenuItem("Export Current to VME-DB", true, importVMEReport); + importMenu.addItem(exportVME); + + return toReturn; + } /** * @@ -344,40 +381,6 @@ public class Headerbar extends Composite{ return toReturn; } - private MenuItem getImportMenu() { - MenuBar importMenu = new MenuBar(true); - - importMenu.setAnimationEnabled(true); - MenuItem toReturn = new MenuItem("Import", importMenu); - - Command importVMEReport = new Command() { - public void execute() { - presenter.showVMEImportDialog(); - } - }; - - importVME = new MenuItem(IMPORT_VME, true, importVMEReport); - - MenuBar importVMERef = new MenuBar(true); - MenuItem importVMERefItem = new MenuItem(IMPORT_VME_REF, importVMERef); - - //add the submenu items for report refs - for (final VMETypeIdentifier type : VMETypeIdentifier.values()) { - if (type != VMETypeIdentifier.Vme) { - MenuItem item = new MenuItem(type.getId(), true, new Command() { - public void execute() { - presenter.showVMERefAssociateDialog(type); - } - }); - importVMERef.addItem(item); - } - } - - importMenu.addItem(importVME); - importMenu.addItem(importVMERefItem); - return toReturn; - } - private MenuItem getExportsMenu() { MenuBar exportsMenu = new MenuBar(true); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java index 6bedbde..f8e1c5b 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java @@ -145,15 +145,16 @@ public class Presenter { eventBus.addHandler(SelectedReportEvent.TYPE, new SelectedReportEventHandler() { @Override public void onReportSelected(SelectedReportEvent event) { - if (event.getType() == VMETypeIdentifier.Vme) { - importVMEReport(event.getId()); - } else { + if (event.isAssociation()) { try { associateVMRReportRef(event.getType(), event.getId()); } catch (Exception e) { e.printStackTrace(); } } + else { + importVMEReport(event.getId(), event.getType()); + } } }); @@ -190,10 +191,10 @@ public class Presenter { switch (event.getOperationResult()) { case SAVED: - refreshWorkspace(); + //refreshWorkspace(); break; case SAVED_OPEN: - refreshWorkspace(); + // refreshWorkspace(); toolBoxPanel.showExportedVersion(event.getItemId(), event.getItemId()); break; default: @@ -263,7 +264,7 @@ public class Presenter { public void onSuccess(Model wfReport) { dlg.hide(); - loadModel(wfReport); + loadModel(wfReport, true); header.setMenuForWorkflowDocument(sessionInfo.isEditable()); titleBar.addWorkflowButtons(true); pollServiceForLockRenewal(); @@ -278,7 +279,7 @@ public class Presenter { public void onSuccess(Model result) { dlg.hide(); if (result != null) { - loadModel(result); + loadModel(result, true); header.enableExports(); } else commonCommands.newTemplate.execute(); @@ -318,7 +319,7 @@ public class Presenter { @Override public void onSuccess(Model toLoad) { if (toLoad != null) - loadModel(toLoad); + loadModel(toLoad, true); else Window.alert("Could not Load template, error on server: "); } @@ -455,20 +456,7 @@ public class Presenter { return GWT.getHostPageBaseURL() + "../../"; } - /** - * - */ - public void addTextToolBar() { - - RichTextToolbar rtbar = new RichTextToolbar(new RichTextArea(), false, getCommands(), true); - SimplePanel deco = new SimplePanel(); - rtbar.setEnabled(false); - deco.add(rtbar); - deco.setSize("100%", "25"); - rtbar.setWidth("100%"); - ReportGenerator.get().getToolbarPanel().clear(); - ReportGenerator.get().getToolbarPanel().add(deco); - } + /** * remove the user-added components from the workspace, and from the model * @@ -490,7 +478,7 @@ public class Presenter { titleBar.getSectionSwitchPanel().setPageDisplayer(model.getCurrentPage(), model.getTotalPages()); titleBar.getSectionSwitchPanel().setVisible(false); resizeWorkingArea(model.getPageWidth(), model.getPageHeight()); - + toolBoxPanel.clear(); toolBoxPanel.collapse(); @@ -595,56 +583,6 @@ public class Presenter { this.@org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter::location = $wnd.location.href; }-*/; - - /** - * - * @param area . - */ - public void disaableTextToolBar(RichTextArea area) { - - } - /** - * used when the resizing textAreas depending on the content - * @param myY a - * @param pixel a - */ - public void shiftComponentsByTextArea(int myY, int pixel) { - int section = model.getCurrentPage(); - List comps = model.getSectionComponent(section); - - if (comps != null) { - for (TemplateComponent tc : comps) { - if (tc.getType() != ComponentType.FAKE_TEXTAREA) { - if (tc.getY() > myY) { - GWT.log("FOUND " + tc.getX() + ", " + tc.getY(), null); - GWT.log("pixel " + pixel , null); - int newY = tc.getY()+pixel;// : tc.getY()-pixel; - // - tc.setY(newY); - GWT.log("moveWidget " + tc.getX() + ", " + tc.getY(), null); - moveWidget(tc.getContent(), tc.getX(),newY); - GWT.log("MOVED " + tc.getX() + ", " + tc.getY(), null); - } - } - //Window.alert("myY - tc.getY() " + myY + ", " + tc.getY()); - - } - } - - } - - /** - * - * @param toMove . - * @param left . - * @param top . - */ - public void moveWidget(Widget toMove, int left, int top) { - //wp.getMainLayout().add(toMove); - wp.moveWidget(toMove, left, top); - } - - /** * Import a Section in the View and in the Model * @param toLoad the SerializableModel instance where toget the section @@ -678,7 +616,22 @@ public class Presenter { while (! ( model.getCurrentPage() == sect2Seek) ) nextPageButtonClicked(); } + /** + * + */ + public void addTextToolBar(boolean enableCommands) { + RichTextToolbar rtbar = new RichTextToolbar(new RichTextArea(), false, getCommands(), true); + rtbar.enableCommands(enableCommands); + currentSelectedToolbar = rtbar; + SimplePanel deco = new SimplePanel(); + rtbar.setEnabled(false); + deco.add(rtbar); + deco.setSize("100%", "25"); + rtbar.setWidth("100%"); + ReportGenerator.get().getToolbarPanel().clear(); + ReportGenerator.get().getToolbarPanel().add(deco); + } /** * enable the format text toolbar for the given Rich Textarea passed as argument * @param d4sArea the enabled text area @@ -697,7 +650,7 @@ public class Presenter { rtbar.setWidth("100%"); ReportGenerator.get().getToolbarPanel().add(deco); } - + /** * enable the format text toolbar for the given Rich Textarea passed as argument * @param d4sArea the enabled text area @@ -818,29 +771,11 @@ public class Presenter { titleBar.getSectionSwitchPanel().showPrevButton(); } - - /** - * load the template to edit in the MODEL and in the VIEW - * @param serializedpath the temp file to open - */ - public void openImportedFimesXML(String serializedpath) { - model.getModelService().readImportedModel(serializedpath, new AsyncCallback() { - @Override - public void onSuccess(Model toLoad) { - loadModel(toLoad); - } - @Override - public void onFailure(Throwable caught) { - Window.alert("Could not Load report, please try again later: " + caught.getMessage()); - } - }); - } - /** * * @param toLoad */ - private void loadModel(Model toLoad) { + private void loadModel(Model toLoad, boolean savingEnabled) { //reset the UI cleanAllNotSession(); @@ -854,7 +789,7 @@ public class Presenter { titleBar.getSectionSwitchPanel().setVisible(true); resizeWorkingArea(model.getPageWidth(), model.getPageHeight()); - addTextToolBar(); + addTextToolBar(savingEnabled); int currPage = model.getCurrentPage(); //load the UI components of the current page GWT.log("READ CURR PAGE"+currPage, null); @@ -866,7 +801,7 @@ public class Presenter { } if (currPage > 1) titleBar.getSectionSwitchPanel().showPrevButton(); - + //show the structure showReportStructure(); } @@ -904,7 +839,7 @@ public class Presenter { titleBar.setTemplateName(model.getTemplateName()); titleBar.getSectionSwitchPanel().setPageDisplayer(model.getCurrentPage(), model.getTotalPages()); titleBar.getSectionSwitchPanel().setVisible(true); - addTextToolBar(); + addTextToolBar(true); int currPage = model.getCurrentPage(); //load the UI components of the current page GWT.log("READ CURR PAGE"+currPage, null); @@ -1188,7 +1123,7 @@ public class Presenter { public void showReportStructure() { toolBoxPanel.showStructure(new ReportStructurePanel(eventBus, model.getSerializableModel(), ToolboxPanel.TOOLBOX_WIDTH+"px", ToolboxPanel.TOOLBOX_HEIGHT+"px")); - } + } public HorizontalPanel getExportsPanel() { return exportsPanel; @@ -1248,21 +1183,28 @@ public class Presenter { * */ public void showVMEImportDialog() { - ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), VMETypeIdentifier.Vme); + ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), VMETypeIdentifier.Vme, false); dlg.show(); } + /** + * + */ + public void showVMEReportRefImportDialog(VMETypeIdentifier refType) { + ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), refType, false); + dlg.show(); + } /** * */ public void showVMERefAssociateDialog(VMETypeIdentifier refType) { - ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), refType); + ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), refType, true); dlg.show(); } - private void importVMEReport(String reportId) { + private void importVMEReport(String reportId, final VMETypeIdentifier type) { showLoading(); - reportService.importVMEReport(reportId, new AsyncCallback() { + reportService.importVMEReport(reportId, type, new AsyncCallback() { @Override public void onFailure(Throwable caught) { Window.alert("Could not Load Report Model, error on server.: " + caught.getMessage()); @@ -1270,8 +1212,8 @@ public class Presenter { @Override public void onSuccess(Model toLoad) { - if (toLoad != null) - loadModel(toLoad); + if (toLoad != null) + loadModel(toLoad, type == VMETypeIdentifier.Vme); else Window.alert("Could not Load Report Model, error on server."); } @@ -1282,7 +1224,7 @@ public class Presenter { private void associateVMRReportRef(VMETypeIdentifier type, String reportId) throws Exception { GWT.log("Type="+type); GWT.log("Id"+reportId); - reportService.importVMEReportRef(reportId, type, new AsyncCallback() { + reportService.getVMEReportRef2Associate(reportId, type, new AsyncCallback() { @Override public void onFailure(Throwable caught) { diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java index e765dd0..7341db3 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java @@ -132,7 +132,7 @@ public class ReportGenerator implements EntryPoint { eastPanel.add(workSpacePanel); eastPanel.add(divHidden); bottomScrollerPanel.add(eastPanel); - presenter.addTextToolBar(); + presenter.addTextToolBar(true); // Add image and button to the RootPanel RootPanel.get("ReportGeneratorDIV").add(mainLayout); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java index f76feb2..9218b62 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java @@ -25,9 +25,9 @@ public interface ReportService extends RemoteService{ ArrayList listVMEReportRefByType(VMETypeIdentifier refType); - Model importVMEReport(String id); + Model importVMEReport(String id, VMETypeIdentifier refType); - Model importVMEReportRef(String id, VMETypeIdentifier refType); + Model getVMEReportRef2Associate(String id, VMETypeIdentifier refType); String save(String filePath, String workspaceFolderId, String ItemName, TypeExporter type, boolean overwrite) diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java index 7be7eaa..c881d61 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java @@ -77,10 +77,11 @@ public interface ReportServiceAsync { void listVMEReports(AsyncCallback> callback); - void importVMEReport(String id, AsyncCallback callback); + void importVMEReport(String id, VMETypeIdentifier refType, + AsyncCallback callback); void listVMEReportRefByType(VMETypeIdentifier refType, AsyncCallback> callback); - void importVMEReportRef(String id, VMETypeIdentifier refType, AsyncCallback callback); + void getVMEReportRef2Associate(String id, VMETypeIdentifier refType, AsyncCallback callback); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java index cda6958..0c71234 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java @@ -30,8 +30,8 @@ public class ToolboxPanel extends VerticalPanel { public ToolboxPanel(AppControllerExplorer appController) { this.appController = appController; - AsyncTreePanel tp = appController.getTree(TOOLBOX_WIDTH, TOOLBOX_HEIGHT); - this.tp = tp; +// AsyncTreePanel tp = appController.getTree(TOOLBOX_WIDTH, TOOLBOX_HEIGHT); +// this.tp = tp; // add(tp); // this.appController.hideSharingFacilities(); //sharing disabled we have problems from Reports } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java index 6ac38ef..c3659ef 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java @@ -46,9 +46,10 @@ public class ImportVMEReportDialog extends Window { * * @param eventBus the bus to fire events into */ - public ImportVMEReportDialog(final HandlerManager eventBus, VMETypeIdentifier type) { + public ImportVMEReportDialog(final HandlerManager eventBus, VMETypeIdentifier type, final boolean isAssociation) { this.eventBus = eventBus; this.type = type; + setModal(true); mainPanel.setHeaderVisible(false); setWidth(WIDTH); setHeight(HEIGHT); @@ -78,7 +79,8 @@ public class ImportVMEReportDialog extends Window { add(hp); add(mainPanel); showLoading(); - if (type == VMETypeIdentifier.Vme) + if (type == VMETypeIdentifier.Vme) { + setHeading("Select the VME"); reportService.listVMEReports(new AsyncCallback>() { @Override public void onFailure(Throwable caught) { @@ -90,8 +92,10 @@ public class ImportVMEReportDialog extends Window { mainPanel.unmask(); showAvailableReports(reports); } - }); + }); + } else { + setHeading("Select the " + type.getId()); reportService.listVMEReportRefByType(type, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { @@ -101,7 +105,7 @@ public class ImportVMEReportDialog extends Window { @Override public void onSuccess(ArrayList refReports) { mainPanel.unmask(); - showAvailableReferenceReports(refReports); + showAvailableReferenceReports(refReports, isAssociation); } }); } @@ -110,7 +114,7 @@ public class ImportVMEReportDialog extends Window { * * @param reports */ - public void showAvailableReferenceReports(List reports) { + public void showAvailableReferenceReports(List reports, boolean isAssociation) { ColumnModel cm = null; List configs = new ArrayList(); @@ -127,7 +131,7 @@ public class ImportVMEReportDialog extends Window { column.setHeader("Name"); column.setWidth(150); configs.add(column); - + cm = new ColumnModel(configs); /** @@ -158,13 +162,24 @@ public class ImportVMEReportDialog extends Window { } })); - gridPanel.addButton(new Button("Edit Selected", new SelectionListener() { - @Override - public void componentSelected(ButtonEvent ce) { - hide(); - eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), type)); - } - })); + if (isAssociation) { + gridPanel.addButton(new Button("Associate Selected", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + hide(); + eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), type, true)); + } + })); + } + else { + gridPanel.addButton(new Button("Edit Selected", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + hide(); + eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), type, false)); + } + })); + } mainPanel.add(gridPanel); mainPanel.setLayout(new FitLayout()); mainPanel.layout(); @@ -245,7 +260,7 @@ public class ImportVMEReportDialog extends Window { @Override public void componentSelected(ButtonEvent ce) { hide(); - eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), VMETypeIdentifier.Vme)); + eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), VMETypeIdentifier.Vme, false)); } })); mainPanel.add(gridPanel); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java index 4664276..1451e33 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java @@ -8,11 +8,13 @@ public class SelectedReportEvent extends GwtEvent{ public static Type TYPE = new Type(); private final String id; private final VMETypeIdentifier type; + private final boolean isAssociation; - public SelectedReportEvent(String id, VMETypeIdentifier type) { + public SelectedReportEvent(String id, VMETypeIdentifier type, boolean isAssociation) { super(); this.id = id; this.type = type; + this.isAssociation = isAssociation; } public String getId() { @@ -23,6 +25,10 @@ public class SelectedReportEvent extends GwtEvent{ return type; } + public boolean isAssociation() { + return isAssociation; + } + @Override public Type getAssociatedType() { return TYPE; diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java index 860c9f5..a0834e7 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java @@ -377,10 +377,10 @@ public class TemplateComponent { case REPORT_REFERENCE: GWT.log("FOUND Master SEQUENCE trying getGroup"); - ReportReferences ref = (ReportReferences) sc.getPossibleContent(); - ArrayList tuple = ref.getTuples(); + ReportReferences refs = (ReportReferences) sc.getPossibleContent(); + ArrayList tuple = refs.getTuples(); - ClientReportReference cmSeq = new ClientReportReference(presenter, ref.getRefType(), tuple); + ClientReportReference cmSeq = new ClientReportReference(presenter, refs.getRefType(), tuple, refs.isSingleRelation()); this.content = cmSeq; break; } @@ -498,7 +498,7 @@ public class TemplateComponent { break; case REPORT_REFERENCE: ClientReportReference cRef = (ClientReportReference) this.content; - ReportReferences ref = new ReportReferences(cRef.getRefType(), cRef.getTupleList()); + ReportReferences ref = new ReportReferences(cRef.getRefType(), cRef.getTupleList(), cRef.isSingleRelation()); content = ref; break; } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java index 6e0acbf..26710bf 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java @@ -2,15 +2,14 @@ package org.gcube.portlets.user.reportgenerator.client.targets; import java.util.ArrayList; -import org.gcube.portlets.d4sreporting.common.shared.Tuple; +import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; +import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter; import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent; import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier; import com.google.gwt.core.shared.GWT; -import com.google.gwt.event.dom.client.HasClickHandlers; -import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.VerticalPanel; /** @@ -27,19 +26,23 @@ public class ClientReportReference extends Composite implements ClientSequence { private ArrayList tupleList; private SequenceWidget first; private Presenter p; + private boolean singleRelation; //allow or not to add new entries /** * s * @param p * @param ms */ - public ClientReportReference(Presenter p, String refType, ArrayList tupleList) { + public ClientReportReference(Presenter p, String refType, ArrayList tupleList, boolean singleRelation) { this.p = p; this.refType = refType; this.tupleList = tupleList; + this.singleRelation = singleRelation; for (Tuple seq : tupleList) { if (myPanel.getWidgetCount()==0) { // if is the first one first = getMasterSequence(seq); + if (isSingleRelation()) + first.removeAddAnotherButton(); myPanel.add(first); } else { SequenceWidget seqW = new SequenceWidget(p, this, seq, false, false); @@ -48,7 +51,7 @@ public class ClientReportReference extends Composite implements ClientSequence { } initWidget(myPanel); } - + /** * the first seq has to behave differently */ @@ -56,11 +59,23 @@ public class ClientReportReference extends Composite implements ClientSequence { SequenceWidget toReturn = new SequenceWidget(p, this, seq, true, false); if (tupleList.size() == 1) { toReturn.enableClear(); - toReturn.removeAddAnotherButton(); + if (isTupleEmpty(tupleList.get(0))) { + toReturn.clearAssociation(); + } } return toReturn; } + private boolean isTupleEmpty(Tuple toCheck) { + boolean toReturn = false; + for (BasicComponent bc : toCheck.getGroupedComponents()) { + if (bc.getPossibleContent() == null) + return true; + + } + return toReturn; + + } public ArrayList getTupleList() { return tupleList; @@ -72,6 +87,10 @@ public class ClientReportReference extends Composite implements ClientSequence { } + public boolean isSingleRelation() { + return singleRelation; + } + @Override public ArrayList getGroupedComponents() { return groupedComponents; @@ -105,7 +124,7 @@ public class ClientReportReference extends Composite implements ClientSequence { tupleList.remove(toRemove.getSequence()); if (tupleList.size() == 1) first.enableClear(); - + GWT.log("List Tuple Size = "+tupleList.size()); return toRemove; } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java index b1b40e3..ce8d811 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java @@ -102,7 +102,6 @@ public class D4sRichTextarea extends ReportTextArea { div.setHTML(area.getHTML()); int newHeight = div.getOffsetHeight()+20 ; if (newHeight > height-10 && newHeight != currHeight) { - presenter.shiftComponentsByTextArea(myInstance.top, newHeight - currHeight); resizePanel(width, div.getOffsetHeight()); //Window.alert("myInstance.top: " + myInstance.top); presenter.resizeTemplateComponentInModel(myInstance, width, newHeight); @@ -123,7 +122,6 @@ public class D4sRichTextarea extends ReportTextArea { div.setHTML(area.getHTML()); int newHeight = div.getOffsetHeight()+20 ; if (newHeight > height-10 && newHeight != currHeight) { - presenter.shiftComponentsByTextArea(myInstance.top, newHeight - currHeight); resizePanel(myPanel.getOffsetWidth(), div.getOffsetHeight()); //Window.alert("myInstance.top: " + myInstance.top); presenter.resizeTemplateComponentInModel(myInstance, myPanel.getOffsetWidth()+5, newHeight); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java index e11d8b2..35d4f3a 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java @@ -1502,7 +1502,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe ArrayList toReturn = new ArrayList(); ReportType type = new ReportType(); type.setTypeIdentifier(refType.toString()); - + for (ReportEntry re : getFakeReports(type)) { String name = re.getNameValueList().get(0).getValue(); toReturn.add(new VMEReportBean(""+re.getId(), "", name, -1)); @@ -1510,7 +1510,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe return toReturn; } - + private List getFakeReports(ReportType type, NameValue... filters) { Random generator = new Random(); int n = generator.nextInt(15) + 5; @@ -1520,7 +1520,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe for (int i = 0; i < n; i++) { re = new ReportEntry(); re.setId(i); - + NameValue rfmo = new NameValue(); rfmo.setName("Rfmo"); rfmo.setValue(i % 2 == 0 ? "NAFO" : "NEAFC"); @@ -1534,7 +1534,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe namesValues.add(rfmo); namesValues.add(name); namesValues.add(year); - + re.setNameValueList(namesValues); toReturn.add(re); } @@ -1556,36 +1556,58 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } @Override - public Model importVMEReport(String id) { - String reportName = "Sample VME Report imported with id: " + id; - ReportsModeler rm = new ReportsModeler( - UUID.randomUUID().toString(), - reportName, - getASLSession().getUsername(), - new Date(), - new Date(), - getASLSession().getUsername() - ); - rm.add(new Instruction(null)); - rm.add(new Title("Name for id " + id, false)); - rm.add(new Heading(1, "VME Name (Non Editable) ")); - rm.add(new TextInput("Corner Rise Seamounts")); - rm.add(new Heading(2, "This is a Heading of Level 2 that is editable")); - rm.add(new TextInput("Corner Rise Seamounts again")); - rm.add(new TextInput()); - rm.nextSection(); - rm = addSection2(rm); - rm.nextSection(); - ReportComponent rp = new TextInput("With props and id"); - rp.setId(UUID.randomUUID().toString()); - rp.setProperties(new Property("theId", "theValue")); - rm.add(rp); - - rp = new Heading(1, "Ciao!"); - rp.setId(UUID.randomUUID().toString()); - rp.setProperties(new Property("theId", "theValue")); - rm.add(rp); - + public Model importVMEReport(String id, VMETypeIdentifier refType) { + ReportsModeler rm = null; + if (refType == VMETypeIdentifier.Vme) { + String reportName = "Sample VME Report imported with id: " + id; + rm = new ReportsModeler( + UUID.randomUUID().toString(), + reportName, + getASLSession().getUsername(), + new Date(), + new Date(), + getASLSession().getUsername() + ); + rm.add(new Instruction(null)); + rm.add(new Title("Name for id " + id, false)); + rm.add(new Heading(1, "VME Name (Non Editable) ")); + rm.add(new TextInput("Corner Rise Seamounts")); + rm.add(new Heading(2, "This is a Heading of Level 2 that is editable")); + rm.add(new TextInput("Corner Rise Seamounts again")); + rm.add(new TextInput()); + rm.nextSection(); + rm = addSection2(rm); + rm.nextSection(); + ReportComponent rp = new TextInput("With props and id"); + rp.setId(UUID.randomUUID().toString()); + rp.setProperties(new Property("theId", "theValue")); + rm.add(rp); + + rp = new Heading(1, "Ciao!"); + rp.setId(UUID.randomUUID().toString()); + rp.setProperties(new Property("theId", "theValue")); + rm.add(rp); + } + else { + String reportName = refType.getId() + " VME Reference Report with id: " + id; + rm = new ReportsModeler( + UUID.randomUUID().toString(), + reportName, + getASLSession().getUsername(), + new Date(), + new Date(), + getASLSession().getUsername() + ); + rm.add(new Title("Test" + refType.getId())); + rm.add(new Heading(2, "Year")); + rm.add(new TextInput()); + rm.add(new Heading(2, "Validity Period - Start")); + rm.add(new TextInput()); + rm.add(new Heading(2, "Validity Period - End")); + rm.add(new TextInput()); + rm.add(getTestReference(ReferenceReportType.InformationSource, false)); + rm.add(new Heading(1, "Ciao!")); + } try { return rm.getReportInstance(); } catch (Exception e) { @@ -1594,8 +1616,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe return null; } - - public Model importVMEReportRef(String id, VMETypeIdentifier refType) { + @Override + public Model getVMEReportRef2Associate(String id, VMETypeIdentifier refType) { String reportName = "Sample Reference Report: " + id; ReportsModeler rm = new ReportsModeler( UUID.randomUUID().toString(), @@ -1623,7 +1645,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe rm.add(new ReferenceReport(ReferenceReportType.InformationSource, dBTableRows)); try { Model toReturn = rm.getReportInstance(); - ReportsReader.readReportStructure(toReturn); + //ReportsReader.readReportStructure(toReturn); return toReturn; } catch (Exception e) { e.printStackTrace(); @@ -1631,6 +1653,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe return null; } + private ReportsModeler addSection2(ReportsModeler rm) { rm.add(new Heading(1, "Specific Measure")); ReportSequence seq = new ReportSequence(UUID.randomUUID().toString()); @@ -1640,34 +1663,42 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe seq.add(new TextInput()); seq.add(new Heading(2, "Validity Period - End")); seq.add(new TextInput()); - + seq.add(getTestReference(ReferenceReportType.InformationSource, true)); + rm.add(seq); + return rm; + } + /** + * TODO: remove + * @return + */ + private ReferenceReport getTestReference(ReferenceReportType type, boolean single) { //construct the options (the references) ArrayList dBTableRows = new ArrayList(); ArrayList md = new ArrayList(); + + Random generator = new Random(); + int year = generator.nextInt(15) + 2000; //construct the references - md.add(new Column("Meeting Date", "2009")); + md.add(new Column("Meeting Date", ""+year)); md.add(new Column("Report Summary", "Aenean vulputate ac dui eu interdum. Nullam tincidunt hendrerit sollicitudin.")); md.add(new Column("Committee", "Lorem ipsum dolor sit amet, consectetur adipiscing elit")); md.add(new Column("URL", "http://archive.nafo.int/open/fc/2012/fcdoc12-01.pdf")); md.add(new Column("Citation", "(Rossi et Al) adipiscing elit oekfha lfkahjf lakjfha lkfahjf alkjdfh ")); md.add(new Column("Type", "The type")); dBTableRows.add(new DBTableRow("primaryKey", md)); - seq.add(new ReferenceReport(ReferenceReportType.InformationSource, dBTableRows)); - rm.add(seq); - return rm; + return new ReferenceReport(type, dBTableRows, single); } /** * TODO: remove once you get real names * @return */ private static String generateRandomWord() { - Random random = new Random(); - char[] word = new char[random.nextInt(8)+3]; // words of length 3 through 10. (1 and 2 letter words are boring.) - for(int j = 0; j < word.length; j++) - { - word[j] = (char)('a' + random.nextInt(26)); - } - return new String(word); + Random random = new Random(); + char[] word = new char[random.nextInt(7)+5]; // words of length 5 through 12 + for(int j = 0; j < word.length; j++) { + word[j] = (char)('a' + random.nextInt(26)); + } + return new String(word); } }