From 7068d7827b1625ebdf985841b55b5243c01fd4ec Mon Sep 17 00:00:00 2001 From: Jonatan Kronqvist Date: Wed, 28 Aug 2013 16:04:54 +0300 Subject: [PATCH] The colon in the calendar event caption is now also hideable. Fixes #12460 Change-Id: Idc81c3cc614bc59c2a93615bd5ac5cac9b72f752 --- .../VAADIN/themes/tests-calendar/styles.css | 10 +- .../calendar/schedule/DateCellDayEvent.java | 13 ++- .../calendar/TestHideTimeAndSeparator.html | 47 ++++++++ .../calendar/TestHideTimeAndSeparator.java | 105 ++++++++++++++++++ 4 files changed, 170 insertions(+), 5 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.html create mode 100644 uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.java diff --git a/WebContent/VAADIN/themes/tests-calendar/styles.css b/WebContent/VAADIN/themes/tests-calendar/styles.css index 7a37fcfdaf..e3fa107751 100644 --- a/WebContent/VAADIN/themes/tests-calendar/styles.css +++ b/WebContent/VAADIN/themes/tests-calendar/styles.css @@ -93,4 +93,12 @@ .v-calendar .v-calendar-event-color4 .v-calendar-event-content { border-color: #cd6a00; background-color: #faa345; - } \ No newline at end of file + } + +/** + * Hide time in captions + */ +.v-calendar-event-hide-time .v-calendar-event-caption>span, +.v-calendar-event-hide-time .v-calendar-event-caption>br { + display: none; +} \ No newline at end of file diff --git a/client/src/com/vaadin/client/ui/calendar/schedule/DateCellDayEvent.java b/client/src/com/vaadin/client/ui/calendar/schedule/DateCellDayEvent.java index b69d2a4fe7..39de122694 100644 --- a/client/src/com/vaadin/client/ui/calendar/schedule/DateCellDayEvent.java +++ b/client/src/com/vaadin/client/ui/calendar/schedule/DateCellDayEvent.java @@ -185,10 +185,15 @@ public class DateCellDayEvent extends FocusableHTML implements * If false, event is so small that caption must be in time-row */ private void updateCaptions(boolean bigMode) { - String separator = bigMode ? "
" : ": "; - caption.setInnerHTML("" + calendarEvent.getTimeAsText() - + "" + separator - + Util.escapeHTML(calendarEvent.getCaption())); + String innerHtml; + String escapedCaption = Util.escapeHTML(calendarEvent.getCaption()); + String timeAsText = calendarEvent.getTimeAsText(); + if (bigMode) { + innerHtml = "" + timeAsText + "
" + escapedCaption; + } else { + innerHtml = "" + timeAsText + ": " + escapedCaption; + } + caption.setInnerHTML(innerHtml); eventContent.setInnerHTML(""); } diff --git a/uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.html b/uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.html new file mode 100644 index 0000000000..38a6be24ce --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.html @@ -0,0 +1,47 @@ + + + + + + + TestHideTimeAndSeparator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestHideTimeAndSeparator
open/run/com.vaadin.tests.components.calendar.TestHideTimeAndSeparator?restartApplication
assertNotVisiblevaadin=runcomvaadintestscomponentscalendarTestHideTimeAndSeparator::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCalendar[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]/domChild[35]/domChild[0]/domChild[0]
assertNotVisiblevaadin=runcomvaadintestscomponentscalendarTestHideTimeAndSeparator::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCalendar[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]/domChild[34]/domChild[0]/domChild[0]
assertVisiblevaadin=runcomvaadintestscomponentscalendarTestHideTimeAndSeparator::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCalendar[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]/domChild[35]/domChild[0]/domChild[0]
assertVisiblevaadin=runcomvaadintestscomponentscalendarTestHideTimeAndSeparator::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCalendar[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]/domChild[34]/domChild[0]/domChild[0]
assertTextvaadin=runcomvaadintestscomponentscalendarTestHideTimeAndSeparator::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VCalendar[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]/domChild[35]/domChild[0]/domChild[0]8:00 AM:
+ + diff --git a/uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.java b/uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.java new file mode 100644 index 0000000000..d82e75c94d --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/calendar/TestHideTimeAndSeparator.java @@ -0,0 +1,105 @@ +package com.vaadin.tests.components.calendar; + +import com.vaadin.annotations.Theme; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Calendar; +import com.vaadin.ui.components.calendar.event.CalendarEvent; +import com.vaadin.ui.components.calendar.event.CalendarEventProvider; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +@Theme("tests-calendar") +public class TestHideTimeAndSeparator extends AbstractTestUI { + + class GenericEvent implements CalendarEvent { + private final Date start; + private final Date end; + private final String caption; + private final boolean hideTime; + + public GenericEvent(Date start, Date end, String caption, boolean hideTime) { + this.start = start; + this.end = end; + this.caption = caption; + this.hideTime = hideTime; + } + + @Override + public Date getStart() { + return start; + } + + @Override + public Date getEnd() { + return end; + } + + @Override + public String getCaption() { + return caption; + } + + @Override + public String getDescription() { + return "This is a " + caption; + } + + @Override + public String getStyleName() { + return hideTime ? "hide-time" : null; + } + + @Override + public boolean isAllDay() { + return false; + } + + } + + CalendarEvent shortEventHidden = new GenericEvent(makeDate(2013, 1, 2, 8, 0), makeDate(2013, 1, 2, 8, 30), "Short event", true); + CalendarEvent longEventHidden = new GenericEvent(makeDate(2013, 1, 2, 10, 0), makeDate(2013, 1, 2, 12, 0), "Long event", true); + CalendarEvent shortEvent = new GenericEvent(makeDate(2013, 1, 3, 8, 0), makeDate(2013, 1, 3, 8, 30), "Short event", false); + CalendarEvent longEvent = new GenericEvent(makeDate(2013, 1, 3, 10, 0), makeDate(2013, 1, 3, 12, 0), "Long event", false); + + @Override + protected void setup(VaadinRequest request) { + Calendar cal = new Calendar(); + cal.setWidth("100%"); + cal.setHeight("500px"); + + cal.addEvent(shortEventHidden); + cal.addEvent(longEventHidden); + cal.addEvent(shortEvent); + cal.addEvent(longEvent); + + cal.setStartDate(makeDate(2013, 1, 1)); + cal.setEndDate(makeDate(2013, 1, 7)); + cal.setFirstVisibleHourOfDay(7); + + addComponent(cal); + } + + @Override + protected String getTestDescription() { + return "The time should be hideable by CSS"; + } + + @Override + protected Integer getTicketNumber() { + return 12460; + } + + private Date makeDate(int year, int month, int day, int hour, int minute) { + java.util.Calendar juc = java.util.Calendar.getInstance(); + juc.set(year, month, day, hour, minute); + return juc.getTime(); + } + private Date makeDate(int year, int month, int day) { + java.util.Calendar juc = java.util.Calendar.getInstance(); + juc.set(year, month, day); + return juc.getTime(); + } +} -- 2.39.5