/* * This file is part of LibrePlan * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia * Copyright (C) 2010-2011 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.libreplan.web.costcategories; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.costcategories.entities.TypeOfWorkHours; import org.libreplan.web.common.BaseCRUDController; import org.libreplan.web.common.Level; import org.libreplan.web.common.Util; import org.libreplan.web.common.components.NewDataSortableGrid; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.CheckEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zkplus.spring.SpringUtil; import org.zkoss.zul.Messagebox; import java.util.ConcurrentModificationException; import java.util.List; import static org.libreplan.web.I18nHelper._; /** * Controller for CRUD actions over a {@link TypeOfWorkHours} * * @author Jacobo Aragunde Perez <jaragunde@igalia.com> * @author Cristina Alvarino Pereza <cristina.alvarino@comtecsf.es> */ @SuppressWarnings("serial") public class TypeOfWorkHoursCRUDController extends BaseCRUDController<TypeOfWorkHours> { private ITypeOfWorkHoursModel typeOfWorkHoursModel; private NewDataSortableGrid listing; public TypeOfWorkHoursCRUDController(){ typeOfWorkHoursModel = (ITypeOfWorkHoursModel) SpringUtil.getBean("typeOfWorkHoursModel"); } @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); listing = (NewDataSortableGrid) listWindow.getFellowIfAny("listing"); } protected void save() throws ValidationException { typeOfWorkHoursModel.confirmSave(); } public List<TypeOfWorkHours> getTypesOfWorkHours() { return typeOfWorkHoursModel.getTypesOfWorkHours(); } public TypeOfWorkHours getTypeOfWorkHours() { return typeOfWorkHoursModel.getTypeOfWorkHours(); } public void onCheckGenerateCode(Event e) { CheckEvent ce = (CheckEvent) e; if (ce.isChecked()) { try { // We have to auto-generate the code typeOfWorkHoursModel.setCodeAutogenerated(ce.isChecked()); } catch (ConcurrentModificationException err) { messagesForUser.showMessage(Level.ERROR, err.getMessage()); } } Util.reloadBindings(editWindow); } private boolean isReferencedByOtherEntities(TypeOfWorkHours typeOfWorkHours) { try { typeOfWorkHoursModel.checkIsReferencedByOtherEntities(typeOfWorkHours); return false; } catch (ValidationException e) { showCannotDeleteWorkHoursTypeDialog(e.getInvalidValue().getMessage()); } return true; } private void showCannotDeleteWorkHoursTypeDialog(String message) { Messagebox.show(_(message), _("Warning"), Messagebox.OK, Messagebox.EXCLAMATION); } @Override protected String getEntityType() { return _("Hours Type"); } @Override protected String getPluralEntityType() { return _("Hours Types"); } @Override protected void initCreate() { typeOfWorkHoursModel.initCreate(); } @Override protected void initEdit(TypeOfWorkHours typeOfWorkHours) { typeOfWorkHoursModel.initEdit(typeOfWorkHours); } @Override protected TypeOfWorkHours getEntityBeingEdited() { return typeOfWorkHoursModel.getTypeOfWorkHours(); } @Override protected void delete(TypeOfWorkHours typeOfWorkHours) throws InstanceNotFoundException { typeOfWorkHoursModel.confirmRemove(typeOfWorkHours); } protected boolean beforeDeleting(TypeOfWorkHours typeOfWorkHours) { return !isReferencedByOtherEntities(typeOfWorkHours); } public String getCurrencySymbol() { return Util.getCurrencySymbol(); } public String getMoneyFormat() { return Util.getMoneyFormat(); } }