diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java
index 1b4bebd50..960e0866b 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java
@@ -934,6 +934,7 @@ public abstract class BaseCalendarEditionController extends
appendStandardEffortListcell(item, calendarException.getCapacity());
appendExtraEffortListcell(item, calendarException.getCapacity());
appendCodeListcell(item, calendarException);
+ appendOriginListcell(item, calendarException);
appendOperationsListcell(item, calendarException);
markAsSelected(item, calendarException);
@@ -1017,6 +1018,17 @@ public abstract class BaseCalendarEditionController extends
item.appendChild(listcell);
}
+ private void appendOriginListcell(Listitem item,
+ CalendarException calendarException) {
+ Listcell listcell = new Listcell();
+ String origin = _("Inherited");
+ if (baseCalendarModel.isOwnException(calendarException)) {
+ origin = _("Direct");
+ }
+ listcell.appendChild(new Label(origin));
+ item.appendChild(listcell);
+ }
+
private void appendOperationsListcell(Listitem item, CalendarException calendarException) {
Listcell listcell = new Listcell();
listcell.appendChild(createRemoveButton(calendarException));
@@ -1036,6 +1048,11 @@ public abstract class BaseCalendarEditionController extends
reloadDayInformation();
}
});
+ if (!baseCalendarModel.isOwnException(calendarException)) {
+ result.setDisabled(true);
+ result
+ .setTooltiptext(_("derived exception can not be removed"));
+ }
return result;
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java
index 38af82b7b..54cffdb15 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java
@@ -34,14 +34,14 @@ import org.joda.time.LocalDate;
import org.navalplanner.business.calendars.daos.IBaseCalendarDAO;
import org.navalplanner.business.calendars.daos.ICalendarExceptionTypeDAO;
import org.navalplanner.business.calendars.entities.BaseCalendar;
-import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
import org.navalplanner.business.calendars.entities.CalendarAvailability;
import org.navalplanner.business.calendars.entities.CalendarData;
-import org.navalplanner.business.calendars.entities.CalendarData.Days;
import org.navalplanner.business.calendars.entities.CalendarException;
import org.navalplanner.business.calendars.entities.CalendarExceptionType;
import org.navalplanner.business.calendars.entities.Capacity;
import org.navalplanner.business.calendars.entities.ResourceCalendar;
+import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
+import org.navalplanner.business.calendars.entities.CalendarData.Days;
import org.navalplanner.business.common.IntegrationEntity;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.common.entities.Configuration;
@@ -564,6 +564,11 @@ public class BaseCalendarModel extends IntegrationEntityModel implements
return getBaseCalendar().getExceptions();
}
+ @Override
+ public boolean isOwnException(CalendarException exception) {
+ return getBaseCalendar().getOwnExceptions().contains(exception);
+ }
+
@Override
public void removeException(LocalDate date) {
if (getBaseCalendar() != null) {
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java
index 284d77b48..32521b0b6 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java
@@ -205,4 +205,6 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel {
void generateCalendarCodes();
boolean isLastActivationPeriod(CalendarAvailability calendarAvailability);
+
+ boolean isOwnException(CalendarException exception);
}
diff --git a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul
index d7c8ebf8c..91616d878 100644
--- a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul
+++ b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul
@@ -149,6 +149,7 @@
+