Moving code that enables global buttons out from the perspectives

FEA: ItEr75S04BugFixing
This commit is contained in:
Lorenzo Tilve Álvaro 2011-11-02 15:11:14 +01:00
parent 6f2204bcbe
commit b875043d89
8 changed files with 79 additions and 113 deletions

View file

@ -482,7 +482,9 @@ public class Planner extends HtmlMacroComponent {
private void insertGlobalCommands() {
Component commontoolbar = getCommonCommandsInsertionPoint();
Component plannerToolbar = getSpecificCommandsInsertionPoint();
commontoolbar.getChildren().removeAll(commontoolbar.getChildren());
if (!contextualizedGlobalCommands.isEmpty()) {
commontoolbar.getChildren().removeAll(commontoolbar.getChildren());
}
for (CommandContextualized<?> c : contextualizedGlobalCommands) {
// Comparison through icon as name is internationalized
if (c.getCommand().getImage()

View file

@ -32,7 +32,6 @@ planner = self;
<separator/>
<!-- Commands -->
<templateFinderPopup id="templateFinderPopup" acceptButtonLabel="${ganttzk_i18n:_('Create Project')}" caption="${i18n:_('Choosing Template')}" />
<button onClick="planner.invalidate()"
image="/common/img/ico_refresh.png"

View file

@ -166,19 +166,6 @@ public class OrderCRUDController extends GenericForwardComposer {
private Component messagesContainer;
private TemplateFinderPopup templateFinderPopup;
public void createOrderFromTemplate() {
templateFinderPopup.openForOrderCreation(createOrderFromTemplateButton,
"after_start", new IOnResult<OrderTemplate>() {
@Override
public void found(OrderTemplate template) {
showCreateFormFromTemplate(template);
}
});
}
public void showCreateFormFromTemplate(OrderTemplate template) {
showOrderElementFilter();
showCreateButtons(false);
@ -261,28 +248,7 @@ public class OrderCRUDController extends GenericForwardComposer {
private void setupGlobalButtons() {
Hbox perspectiveButtonsInsertionPoint = (Hbox) page
.getFellow("perspectiveButtonsInsertionPoint");
perspectiveButtonsInsertionPoint.getChildren().clear();
createOrderButton.setParent(perspectiveButtonsInsertionPoint);
createOrderButton.addEventListener(Events.ON_CLICK,
new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
goToCreateForm();
}
});
createOrderFromTemplateButton
.setParent(perspectiveButtonsInsertionPoint);
createOrderFromTemplateButton.addEventListener(Events.ON_CLICK,
new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
createOrderFromTemplate();
}
});
saveOrderAndContinueButton.setParent(perspectiveButtonsInsertionPoint);
saveOrderAndContinueButton.addEventListener(Events.ON_CLICK,
new EventListener() {
@Override
@ -291,7 +257,6 @@ public class OrderCRUDController extends GenericForwardComposer {
}
});
cancelEditionButton.setParent(perspectiveButtonsInsertionPoint);
cancelEditionButton.addEventListener(Events.ON_CLICK,
new EventListener() {
@Override
@ -1418,10 +1383,27 @@ public class OrderCRUDController extends GenericForwardComposer {
}
public void showCreateButtons(boolean showCreate) {
createOrderButton.setVisible(showCreate);
if (!showCreate) {
Hbox perspectiveButtonsInsertionPoint = (Hbox) page
.getFellow("perspectiveButtonsInsertionPoint");
perspectiveButtonsInsertionPoint.getChildren().clear();
saveOrderAndContinueButton
.setParent(perspectiveButtonsInsertionPoint);
cancelEditionButton.setParent(perspectiveButtonsInsertionPoint);
}
if (createOrderButton != null) {
createOrderButton.setVisible(showCreate);
}
if (createOrderFromTemplateButton != null) {
createOrderFromTemplateButton.setVisible(showCreate);
saveOrderAndContinueButton.setVisible(!showCreate);
cancelEditionButton.setVisible(!showCreate);
}
if (saveOrderAndContinueButton != null) {
saveOrderAndContinueButton.setVisible(!showCreate);
}
if (cancelEditionButton != null) {
cancelEditionButton.setVisible(!showCreate);
}
}
public void highLight(final OrderElement orderElement) {

View file

@ -61,13 +61,9 @@ import org.libreplan.business.planner.entities.TaskGroup;
import org.libreplan.business.planner.entities.TaskMilestone;
import org.libreplan.business.scenarios.IScenarioManager;
import org.libreplan.business.scenarios.entities.Scenario;
import org.libreplan.business.templates.entities.OrderTemplate;
import org.libreplan.business.users.daos.IUserDAO;
import org.libreplan.business.users.entities.User;
import org.libreplan.business.users.entities.UserRole;
import org.libreplan.business.workreports.entities.WorkReportLine;
import org.libreplan.web.orders.assigntemplates.TemplateFinderPopup;
import org.libreplan.web.orders.assigntemplates.TemplateFinderPopup.IOnResult;
import org.libreplan.web.planner.TaskElementAdapter;
import org.libreplan.web.planner.chart.Chart;
import org.libreplan.web.planner.chart.EarnedValueChartFiller;
@ -92,9 +88,7 @@ import org.zkoss.ganttz.Planner;
import org.zkoss.ganttz.adapters.IStructureNavigator;
import org.zkoss.ganttz.adapters.PlannerConfiguration;
import org.zkoss.ganttz.adapters.PlannerConfiguration.IPrintAction;
import org.zkoss.ganttz.extensions.ICommand;
import org.zkoss.ganttz.extensions.ICommandOnTask;
import org.zkoss.ganttz.extensions.IContext;
import org.zkoss.ganttz.timetracker.TimeTracker;
import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener;
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
@ -108,7 +102,6 @@ import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Div;
@ -126,6 +119,7 @@ import org.zkoss.zul.Vbox;
* Model for company planning view.
*
* @author Manuel Rego Casasnovas <mrego@igalia.com>
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
*/
@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@ -231,63 +225,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
configuration.setDoubleClickCommand(doubleClickCommand);
}
if (SecurityUtils.isUserInRole(UserRole.ROLE_CREATE_ORDER)) {
ICommand<TaskElement> createNewOrderCommand = new ICommand<TaskElement>() {
@Override
public String getName() {
return _("Create new project");
}
@Override
public String getImage() {
return "/common/img/ico_add.png";
}
@Override
public void doAction(IContext<TaskElement> context) {
tabs.goToCreateForm();
}
};
configuration.addGlobalCommand(createNewOrderCommand);
ICommand<TaskElement> createNewOrderFromTemplateCommand = new ICommand<TaskElement>() {
@Override
public String getName() {
return _("Create new project from template");
}
@Override
public String getImage() {
return "/common/img/ico_copy.png";
}
@Override
public void doAction(IContext<TaskElement> context) {
TemplateFinderPopup templateFinderPopup = (TemplateFinderPopup) planner
.getFellowIfAny("templateFinderPopup");
Button createOrderFromTemplateButton = planner
.findCommandComponent(getName());
if (templateFinderPopup != null) {
templateFinderPopup.openForOrderCreation(
createOrderFromTemplateButton, "after_start",
new IOnResult<OrderTemplate>() {
@Override
public void found(OrderTemplate template) {
goToCreateOtherOrderFromTemplate(template);
}
});
}
}
};
configuration.addGlobalCommand(createNewOrderFromTemplateCommand);
}
addAdditionalCommands(additional, configuration);
addPrintSupport(configuration);
disableSomeFeatures(configuration);

View file

@ -28,7 +28,9 @@ import org.libreplan.web.common.entrypoints.EntryPoints;
/**
* Entry points for {@link MultipleTabsPlannerController} <br />
*
* @author Óscar González Fernández <ogonzalez@igalia.com>
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
*/
@EntryPoints(page = "/planner/index.zul", registerAs = "globalView")
public interface IGlobalViewEntryPoints {

View file

@ -33,11 +33,14 @@ import org.libreplan.business.orders.entities.OrderElement;
import org.libreplan.business.planner.entities.TaskElement;
import org.libreplan.business.resources.daos.IResourcesSearcher;
import org.libreplan.business.templates.entities.OrderTemplate;
import org.libreplan.business.users.entities.UserRole;
import org.libreplan.web.common.entrypoints.EntryPointsHandler;
import org.libreplan.web.common.entrypoints.URLHandlerRegistry;
import org.libreplan.web.limitingresources.LimitingResourcesController;
import org.libreplan.web.montecarlo.MonteCarloController;
import org.libreplan.web.orders.OrderCRUDController;
import org.libreplan.web.orders.assigntemplates.TemplateFinderPopup;
import org.libreplan.web.orders.assigntemplates.TemplateFinderPopup.IOnResult;
import org.libreplan.web.planner.allocation.AdvancedAllocationController.IBack;
import org.libreplan.web.planner.company.CompanyPlanningController;
import org.libreplan.web.planner.order.IOrderPlanningGate;
@ -45,6 +48,7 @@ import org.libreplan.web.planner.order.OrderPlanningController;
import org.libreplan.web.planner.order.PlanningStateCreator;
import org.libreplan.web.planner.tabs.Mode.ModeTypeChangedListener;
import org.libreplan.web.resourceload.ResourceLoadController;
import org.libreplan.web.security.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@ -66,10 +70,13 @@ import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zul.Button;
/**
* Creates and handles several tabs
*
* @author Óscar González Fernández <ogonzalez@igalia.com>
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
*/
@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@ -365,6 +372,29 @@ public class MultipleTabsPlannerController implements Composer,
planningTab.toggleToFeedback();
}
handler.registerBookmarkListener(this, comp.getPage());
if (SecurityUtils.isUserInRole(UserRole.ROLE_CREATE_ORDER)) {
org.zkoss.zk.ui.Component createOrderButton = comp.getPage().getFellow(
"createOrderButton");
createOrderButton.addEventListener(Events.ON_CLICK,
new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
goToCreateForm();
}
});
final Button createOrderFromTemplateButton = (Button) comp
.getPage()
.getFellow("createOrderFromTemplateButton");
createOrderFromTemplateButton.addEventListener(Events.ON_CLICK,
new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
goToCreateOrderFromTemplate(createOrderFromTemplateButton);
}
});
}
}
private TabsRegistry getTabsRegistry() {
@ -399,6 +429,18 @@ public class MultipleTabsPlannerController implements Composer,
}
public void goToCreateOrderFromTemplate(org.zkoss.zk.ui.Component button) {
TemplateFinderPopup templateFinderPopup = (TemplateFinderPopup) button
.getPage().getFellow("templateFinderPopup");
templateFinderPopup.openForOrderCreation(button, "after_start",
new IOnResult<OrderTemplate>() {
@Override
public void found(OrderTemplate template) {
goToCreateotherOrderFromTemplate(template);
}
});
}
@Override
public void goToOrder(Order order) {
planningTab.toggleToNoFeedback();

View file

@ -114,7 +114,17 @@ signature="java.lang.Boolean isDefaultPasswordsControl()"?>
<!-- borderlayout class="main-layout" height="2000px" width="2000px"-->
<west class="perspectives-column" width="90px">
<vbox>
<hbox id="perspectiveButtonsInsertionPoint" sclass="toolbar-box global-commands" height="30px" width="100%" />
<hbox id="perspectiveButtonsInsertionPoint" sclass="toolbar-box global-commands" height="30px" width="100%">
<button id="createOrderButton" image="/common/img/ico_add.png" sclass="planner-icon"
tooltiptext="${i18n:_('Create New Project')}" />
<button id="createOrderFromTemplateButton" image="/common/img/ico_copy.png" sclass="planner-icon"
tooltiptext="${i18n:_('Create From Template')}" />
<templateFinderPopup id="templateFinderPopup" acceptButtonLabel="${i18n:_('Create Project')}" caption="${i18n:_('Choosing Template')}" />
</hbox>
<vbox id="registeredItemsInsertionPoint" width="90px"/>
</vbox>
</west>

View file

@ -28,14 +28,6 @@
<borderlayout sclass="orderslayout" width="auto" apply="${orderController}">
<north height="30px" border="0" sclass="toolbar-box">
<hbox align="center" id="toolbar">
<templateFinderPopup id="templateFinderPopup" acceptButtonLabel="${i18n:_('Create Project')}"
caption="${i18n:_('Choosing Template')}" />
<button id="createOrderButton" image="/common/img/ico_add.png" sclass="planner-icon"
tooltiptext="${i18n:_('Create New Project')}" visible="false" />
<button id="createOrderFromTemplateButton" image="/common/img/ico_copy.png" sclass="planner-icon"
tooltiptext="${i18n:_('Create From Template')}" visible="false" />
<button id="saveOrderAndContinueButton" image="/common/img/ico_save.png" sclass="planner-icon"
tooltiptext="${i18n:_('Save Project')}" />