ItEr43S10SoporteImpresionMultiplesPaxinasItEr42S15: Added support for printing selected zoom level

This commit is contained in:
Lorenzo Tilve 2010-01-15 00:28:36 +01:00 committed by Javier Moran Rua
parent 3f75fb7666
commit b1e56a171a
10 changed files with 109 additions and 15 deletions

View file

@ -171,13 +171,16 @@ public class FunctionalityExposedForExtensions<T> implements IContext<T> {
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<T> implements IContext<T> {
if (layout.getSelectedIndex() == 2) {
parameters.put("extension", ".png");
}
parameters.put("zoom", planner.getZoomLevel().toString());
configuration.print(parameters);
}
});

View file

@ -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;
}
}

View file

@ -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;
}

View file

@ -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;
}
}

View file

@ -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<TaskElement> doubleClickCommand;
private Map<String, String[]> 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<String, String[]> parameters) {
this.parameters = parameters;
}
}

View file

@ -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<String, String[]> parameters = Executions.getCurrent()
.getParameterMap();
planningTab = doFeedbackOn(PlanningTabCreator.create(mode,
companyPlanningController, orderPlanningController, orderDAO,
breadcrumbs));
breadcrumbs, parameters));
resourceLoadTab = ResourcesLoadTabCreator.create(mode,
resourceLoadController, upCommand(),
resourceLoadControllerGlobal,

View file

@ -63,24 +63,30 @@ public class PlanningTabCreator {
private final IOrderDAO orderDAO;
private final Map<String, String[]> parameters;
public static ITab create(Mode mode,
CompanyPlanningController companyPlanningController,
OrderPlanningController orderPlanningController,
IOrderDAO orderDAO,
Component breadcrumbs) {
Component breadcrumbs,
Map<String, String[]> 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<String, String[]> 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);
}

View file

@ -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 ";

View file

@ -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;

View file

@ -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;
}