From b1e56a171a2bc8e11c5a4358cb3f22c3af9cc956 Mon Sep 17 00:00:00 2001 From: Lorenzo Tilve Date: Fri, 15 Jan 2010 00:28:36 +0100 Subject: [PATCH] ItEr43S10SoporteImpresionMultiplesPaxinasItEr42S15: Added support for printing selected zoom level --- .../FunctionalityExposedForExtensions.java | 8 +++-- .../main/java/org/zkoss/ganttz/Planner.java | 13 ++++++++ .../zkoss/ganttz/timetracker/TimeTracker.java | 9 ++++++ .../ganttz/timetracker/zoom/ZoomLevel.java | 13 ++++++++ .../company/CompanyPlanningController.java | 16 ++++++++++ .../tabs/MultipleTabsPlannerController.java | 9 +++++- .../web/planner/tabs/PlanningTabCreator.java | 13 ++++++-- .../org/navalplanner/web/print/CutyPrint.java | 4 +++ .../main/webapp/common/css/navalpro_zk.css | 9 +----- .../src/main/webapp/planner/css/print.css | 30 ++++++++++++++++++- 10 files changed, 109 insertions(+), 15 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index d16bfd182..95399b120 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -171,13 +171,16 @@ public class FunctionalityExposedForExtensions implements IContext { this.adapter = configuration.getAdapter(); this.navigator = configuration.getNavigator(); this.diagramGraph = diagramGraph; + final IDetailItemModificator firstLevelModificators = configuration .getFirstLevelModificators(); final IDetailItemModificator secondLevelModificators = configuration .getSecondLevelModificators(); + this.timeTracker = new TimeTracker(new Interval(TimeTrackerState - .year(2009), TimeTrackerState.year(2011)), - firstLevelModificators, secondLevelModificators, planner); + .year(2009), TimeTrackerState.year(2011)), planner + .getZoomLevel(), firstLevelModificators, + secondLevelModificators, planner); } /** @@ -396,6 +399,7 @@ public class FunctionalityExposedForExtensions implements IContext { if (layout.getSelectedIndex() == 2) { parameters.put("extension", ".png"); } + parameters.put("zoom", planner.getZoomLevel().toString()); configuration.print(parameters); } }); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 5cf256359..41f260cea 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -87,6 +87,8 @@ public class Planner extends HtmlMacroComponent { private boolean isShowingCriticalPath = false; + private ZoomLevel initialZoomLevel = ZoomLevel.DETAIL_ONE; + public Planner() { registerNeededScripts(); } @@ -396,4 +398,15 @@ public class Planner extends HtmlMacroComponent { context.print(); } + public ZoomLevel getZoomLevel() { + if (ganttPanel == null) { + return initialZoomLevel; + } + return ganttPanel.getTimeTracker().getDetailLevel(); + } + + public void setInitialZoomLevel(final ZoomLevel zoomLevel) { + this.initialZoomLevel = zoomLevel; + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java index 705340420..0edfd6b6f 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java @@ -85,6 +85,15 @@ public class TimeTracker { this.componentOnWhichGiveFeedback = componentOnWhichGiveFeedback; } + public TimeTracker(Interval interval, ZoomLevel zoomLevel, + IDetailItemModificator firstLevelModificator, + IDetailItemModificator secondLevelModificator, + Component componentOnWhichGiveFeedback) { + this(interval, firstLevelModificator, secondLevelModificator, + componentOnWhichGiveFeedback); + detailLevel = zoomLevel; + } + public ZoomLevel getDetailLevel() { return detailLevel; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java index e86a0da40..1427c59cf 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java @@ -106,4 +106,17 @@ public enum ZoomLevel { return name; } + public static ZoomLevel getFromString(String zoomLevelParameter) { + ZoomLevel requiredZoomLevel = ZoomLevel.DETAIL_ONE; + if (zoomLevelParameter != null) { + for (ZoomLevel z : ZoomLevel.values()) { + if (zoomLevelParameter.equals(z.name)) { + requiredZoomLevel = z; + } + } + } + return requiredZoomLevel; + + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningController.java index 5538e2042..ae02d1f7f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningController.java @@ -22,6 +22,7 @@ package org.navalplanner.web.planner.company; import java.util.ArrayList; import java.util.List; +import java.util.Map; import org.apache.commons.lang.Validate; import org.navalplanner.business.planner.entities.TaskElement; @@ -32,6 +33,7 @@ import org.springframework.stereotype.Component; import org.zkoss.ganttz.Planner; import org.zkoss.ganttz.extensions.ICommandOnTask; import org.zkoss.ganttz.resourceload.ScriptsRequiredByResourceLoadPanel; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.OnZKDesktopRegistry; import org.zkoss.ganttz.util.script.IScriptsRegister; import org.zkoss.zk.ui.util.Composer; @@ -55,6 +57,8 @@ public class CompanyPlanningController implements Composer{ private ICommandOnTask doubleClickCommand; + private Map parameters; + public CompanyPlanningController() { getScriptsRegister().register(ScriptsRequiredByResourceLoadPanel.class); } @@ -67,6 +71,14 @@ public class CompanyPlanningController implements Composer{ @Override public void doAfterCompose(org.zkoss.zk.ui.Component comp) { planner = (Planner) comp; + String zoomLevelParameter = null; + if ((parameters.get("zoom") != null) && !(parameters.isEmpty())) { + zoomLevelParameter = parameters.get("zoom")[0]; + } + planner + .setInitialZoomLevel(ZoomLevel + .getFromString(zoomLevelParameter)); + } public void setConfigurationForPlanner() { @@ -86,4 +98,8 @@ public class CompanyPlanningController implements Composer{ this.doubleClickCommand = doubleClickCommand; } + public void setURLParameters(Map parameters) { + this.parameters = parameters; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java index cc065fd13..a0f5c4752 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java @@ -22,6 +22,8 @@ package org.navalplanner.web.planner.tabs; import static org.navalplanner.web.I18nHelper._; import static org.zkoss.ganttz.adapters.TabsConfiguration.configure; +import java.util.Map; + import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.orders.daos.IOrderDAO; import org.navalplanner.business.orders.entities.Order; @@ -51,6 +53,7 @@ import org.zkoss.ganttz.extensions.TabProxy; import org.zkoss.ganttz.resourceload.ResourcesLoadPanel.IToolbarCommand; import org.zkoss.ganttz.util.LongOperationFeedback; import org.zkoss.ganttz.util.LongOperationFeedback.ILongOperation; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -112,9 +115,13 @@ public class MultipleTabsPlannerController implements Composer, private URLHandlerRegistry registry; private TabsConfiguration buildTabsConfiguration() { + + Map parameters = Executions.getCurrent() + .getParameterMap(); + planningTab = doFeedbackOn(PlanningTabCreator.create(mode, companyPlanningController, orderPlanningController, orderDAO, - breadcrumbs)); + breadcrumbs, parameters)); resourceLoadTab = ResourcesLoadTabCreator.create(mode, resourceLoadController, upCommand(), resourceLoadControllerGlobal, diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java index 6ee6fc221..b6c7d2194 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java @@ -63,24 +63,30 @@ public class PlanningTabCreator { private final IOrderDAO orderDAO; + private final Map parameters; + public static ITab create(Mode mode, CompanyPlanningController companyPlanningController, OrderPlanningController orderPlanningController, IOrderDAO orderDAO, - Component breadcrumbs) { + Component breadcrumbs, + Map parameters) { return new PlanningTabCreator(mode, companyPlanningController, - orderPlanningController, breadcrumbs, orderDAO).create(); + orderPlanningController, breadcrumbs, orderDAO, parameters) + .create(); } private PlanningTabCreator(Mode mode, CompanyPlanningController companyPlanningController, OrderPlanningController orderPlanningController, - Component breadcrumbs, IOrderDAO orderDAO) { + Component breadcrumbs, IOrderDAO orderDAO, + Map parameters) { this.mode = mode; this.companyPlanningController = companyPlanningController; this.orderPlanningController = orderPlanningController; this.breadcrumbs = breadcrumbs; this.orderDAO = orderDAO; + this.parameters = parameters; } private ITab create() { @@ -133,6 +139,7 @@ public class PlanningTabCreator { args .put("companyPlanningController", companyPlanningController); + companyPlanningController.setURLParameters(parameters); return Executions.createComponents("/planner/_company.zul", parent, args); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/print/CutyPrint.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/print/CutyPrint.java index 989c89612..bbd977671 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/print/CutyPrint.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/print/CutyPrint.java @@ -97,6 +97,10 @@ public class CutyPrint { captureString += " --url=http://" + request.getLocalName() + ":" + request.getLocalPort() + url; + if ((parameters != null) && (parameters.get("zoom") != null)) { + captureString += "?zoom=" + parameters.get("zoom"); + } + // Static width and time delay parameters (FIX) captureString += " --min-width=2600 --delay=1000 "; diff --git a/navalplanner-webapp/src/main/webapp/common/css/navalpro_zk.css b/navalplanner-webapp/src/main/webapp/common/css/navalpro_zk.css index b6f7a6bdb..22412fb94 100644 --- a/navalplanner-webapp/src/main/webapp/common/css/navalpro_zk.css +++ b/navalplanner-webapp/src/main/webapp/common/css/navalpro_zk.css @@ -18,10 +18,7 @@ body .main-area { margin-left: -90px; - } - - body .main-area { - margin-left: -90px; + margin-top: -28px; } .toolbar-box { @@ -29,10 +26,6 @@ height: 0px !important; } - .plannerlayout_center { - margin-top: -25px; - } - /* Calculate dynamically */ body { width: 2500px; diff --git a/navalplanner-webapp/src/main/webapp/planner/css/print.css b/navalplanner-webapp/src/main/webapp/planner/css/print.css index 1be13b420..cd4699aa9 100644 --- a/navalplanner-webapp/src/main/webapp/planner/css/print.css +++ b/navalplanner-webapp/src/main/webapp/planner/css/print.css @@ -1,6 +1,35 @@ /* Print CSS used for CutyCapt capture requests */ + .mainmenu, .user-area, .help-link { + display: none; + } + + body .perspectives-column { + display: none; + } + + body .main-area { + margin-left: -90px; + margin-top: -28px; + } + + .toolbar-box { + display: none; + height: 0px !important; + } + + + body .z-border-layout { + background-color: #FFFFFF; + } + + .plannerlayout .leftpanelcontainer, + .plannerlayout .rightpanellayout .z-center-body { + overflow: hidden !important; + } + + body { width: 2600px; } @@ -50,4 +79,3 @@ a.ruta, .toolbar-box { display: inline !important; } -