Class CalendarableModel
- java.lang.Object
-
- org.eclipse.nebula.widgets.compositetable.timeeditor.CalendarableModel
-
public class CalendarableModel extends java.lang.Object
Represents the model behind the calendar control. This model manages three concerns: 1) Setting/maintaining the visible range of days (startDate, numberOfDays) 2) Keeping the events for a particular day within the range of visible days 3) Keeping track of the number of columns required to display the events in a given day from the set of visible days.- Since:
- 3.2
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.ArrayList[]
dayColumns
private static int
DEFAULT_START_HOUR
private int
defaultStartHour
private EventContentProvider
eventContentProvider
private EventCountProvider
eventCountProvider
private CalendarableItem[][][]
eventLayout
private int
numberOfDays
private int
numberOfDivisionsInHour
private java.util.Date
startDate
-
Constructor Summary
Constructors Constructor Description CalendarableModel()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Date
calculateDate(java.util.Date startDate, int numberOfDaysFromStartDate)
Returns the date that is the numberOfDaysFromStartDate.int
computeHourFromRow(int row)
FIXME: Test me pleaseint
computeMinuteFromRow(int row)
FIXME: Test me pleaseint
computeNumberOfAllDayEventRows()
Method computeNumberOfAllDayEventRows.int
computeStartHour()
Method computeStartHour.CalendarableItem
findAllDayCalendarable(int day, boolean forward, CalendarableItem selection)
private int
findCalendarable(CalendarableItem selection, int currentRow, CalendarableItem[][] eventLayoutForDay)
CalendarableItem
findNextCalendarable(int selectedDay, int selectedRow, CalendarableItem selection, boolean isAllDayEventRow)
CalendarableItem
findPreviousCalendarable(int selectedDay, int selectedRow, CalendarableItem selection, boolean isAllDayEventRow)
CalendarableItem
findTimedCalendarable(int day, int currentRow, int stopPosition, boolean forward, CalendarableItem selection)
CalendarableItem[]
getAllDayCalendarables(int day)
java.util.List
getCalendarableItems(int dayOffset)
Return the events for a particular day offset.int
getDay(CalendarableItem calendarable)
Method getDay.int
getDefaultStartHour()
Method getDefaultStartHourCalendarableItem[][]
getEventLayout(int dayOffset)
Gets the eventLayout for a particular dayOffsetint
getNumberOfColumnsWithinDay(int dayOffset)
int
getNumberOfDays()
int
getNumberOfDivisionsInHour()
java.util.Date
getStartDate()
private void
initializeDayArrays(int numberOfDays)
private boolean
isInitialized()
Has all data been set for a refresh.private int
nextDay(int selectedDay)
private int
previousDay(int selectedDay)
private java.util.List
refresh()
Refresh everything in the display.java.util.List
refresh(java.util.Date date)
Refresh the display for the specified Date.private void
refresh(java.util.Date date, int column, java.util.List invalidatedElements)
private void
resizeList(java.util.Date date, java.util.ArrayList list, int numberOfEventsInDay)
void
setDefaultStartHour(int defaultStartHour)
Method setDefaultStartHour.void
setEventContentProvider(EventContentProvider eventContentProvider)
Sets a strategy pattern object that can set the data for the actual events for a particular day.void
setEventCountProvider(EventCountProvider eventCountProvider)
Sets a strategy pattern object that can return the number of events to display on a particulr day.void
setEventLayout(int dayOffset, CalendarableItem[][] eventLayout)
Sets the eventLayout for a particular dayOffsetjava.util.List
setStartDate(java.util.Date startDate)
void
setTimeBreakdown(int numberOfDays, int numberOfDivisionsInHour)
-
-
-
Field Detail
-
DEFAULT_START_HOUR
private static final int DEFAULT_START_HOUR
- See Also:
- Constant Field Values
-
numberOfDays
private int numberOfDays
-
numberOfDivisionsInHour
private int numberOfDivisionsInHour
-
dayColumns
private java.util.ArrayList[] dayColumns
-
eventLayout
private CalendarableItem[][][] eventLayout
-
defaultStartHour
private int defaultStartHour
-
startDate
private java.util.Date startDate
-
eventCountProvider
private EventCountProvider eventCountProvider
-
eventContentProvider
private EventContentProvider eventContentProvider
-
-
Method Detail
-
getNumberOfColumnsWithinDay
public int getNumberOfColumnsWithinDay(int dayOffset)
- Parameters:
dayOffset
-- Returns:
- the number of columns within the day or -1 if this has not been computed yet.
-
setEventLayout
public void setEventLayout(int dayOffset, CalendarableItem[][] eventLayout)
Sets the eventLayout for a particular dayOffset- Parameters:
dayOffset
-eventLayout
-
-
getEventLayout
public CalendarableItem[][] getEventLayout(int dayOffset)
Gets the eventLayout for a particular dayOffset- Parameters:
dayOffset
-- Returns:
- the eventLayout array for the specified day or null if none has been computed.
-
setTimeBreakdown
public void setTimeBreakdown(int numberOfDays, int numberOfDivisionsInHour)
- Parameters:
numberOfDays
-numberOfDivisionsInHour
-
-
initializeDayArrays
private void initializeDayArrays(int numberOfDays)
-
getNumberOfDays
public int getNumberOfDays()
- Returns:
- The number of days to display
-
getNumberOfDivisionsInHour
public int getNumberOfDivisionsInHour()
- Returns:
- Returns the numberOfDivisionsInHour.
-
setStartDate
public java.util.List setStartDate(java.util.Date startDate)
- Parameters:
startDate
- The starting date to display- Returns:
- The obsolete Calendarable objects
-
getStartDate
public java.util.Date getStartDate()
- Returns:
- The starting date to display
-
setEventCountProvider
public void setEventCountProvider(EventCountProvider eventCountProvider)
Sets a strategy pattern object that can return the number of events to display on a particulr day.- Parameters:
eventCountProvider
-
-
setEventContentProvider
public void setEventContentProvider(EventContentProvider eventContentProvider)
Sets a strategy pattern object that can set the data for the actual events for a particular day.- Parameters:
eventContentProvider
-
-
refresh
private java.util.List refresh()
Refresh everything in the display.
-
calculateDate
public java.util.Date calculateDate(java.util.Date startDate, int numberOfDaysFromStartDate)
Returns the date that is the numberOfDaysFromStartDate.- Parameters:
startDate
- The start datenumberOfDaysFromStartDate
-- Returns:
- Date
-
isInitialized
private boolean isInitialized()
Has all data been set for a refresh.
-
refresh
private void refresh(java.util.Date date, int column, java.util.List invalidatedElements)
-
resizeList
private void resizeList(java.util.Date date, java.util.ArrayList list, int numberOfEventsInDay)
-
refresh
public java.util.List refresh(java.util.Date date)
Refresh the display for the specified Date. If Date isn't being displayed, this method ignores the request.- Parameters:
date
- the date to refresh.- Returns:
- List any Calendarables that were invalidated
-
getCalendarableItems
public java.util.List getCalendarableItems(int dayOffset)
Return the events for a particular day offset.- Parameters:
dayOffset
-- Returns:
- A List of events.
-
computeNumberOfAllDayEventRows
public int computeNumberOfAllDayEventRows()
Method computeNumberOfAllDayEventRows.- Returns:
- int representing the max number of events in all visible days.
-
computeStartHour
public int computeStartHour()
Method computeStartHour. Computes the start hour of the day for all days that are displayed. If no events are before the defaultStartHour, the defaultStartHour is returned. If any day in the model has an event beginning before defaultStartHour, the hour of the earliest event is used instead.- Returns:
- int The start hour.
-
setDefaultStartHour
public void setDefaultStartHour(int defaultStartHour)
Method setDefaultStartHour.- Parameters:
defaultStartHour
- The first hour to be displayed by default.
-
getDefaultStartHour
public int getDefaultStartHour()
Method getDefaultStartHour- Returns:
- int representing the first hour to be displayed by default.
-
getDay
public int getDay(CalendarableItem calendarable)
Method getDay. Returns the day on which the specified Calendarable appers.- Parameters:
calendarable
- The calendarable to find- Returns:
- The day offset (0-based)
- Throws:
java.lang.IllegalArgumentException
- if Calendarable isn't found
-
computeHourFromRow
public int computeHourFromRow(int row)
FIXME: Test me please- Parameters:
row
- The row starting from the beginning of the day- Returns:
- The hour portion of the time that this row represents
-
computeMinuteFromRow
public int computeMinuteFromRow(int row)
FIXME: Test me please- Parameters:
row
- The row starting from the beginning of the day- Returns:
- The minute portion of the time that this row represents
-
getAllDayCalendarables
public CalendarableItem[] getAllDayCalendarables(int day)
- Parameters:
day
- The day to return all day Calendarables for- Returns:
- All the all day Calendarables for the specified day, order maintained
-
findAllDayCalendarable
public CalendarableItem findAllDayCalendarable(int day, boolean forward, CalendarableItem selection)
- Parameters:
day
- The day to searchforward
- true if we're going forward; false if we're searching backwardselection
- The currently selected Calendarable or null if none- Returns:
- The next Calendarable in the specified direction where result != selection; null if none
-
findTimedCalendarable
public CalendarableItem findTimedCalendarable(int day, int currentRow, int stopPosition, boolean forward, CalendarableItem selection)
- Parameters:
day
- The day to searchcurrentRow
- The first row to searchstopPosition
- The row to stop searching on or -1 to search to the first/last elementforward
- true if we're going forward; false if we're searching backwardselection
- The Calendarable associated with currentRow or null if none- Returns:
- The next Calendarable in the specified direction where result != selection; null if none
-
findCalendarable
private int findCalendarable(CalendarableItem selection, int currentRow, CalendarableItem[][] eventLayoutForDay)
-
findNextCalendarable
public CalendarableItem findNextCalendarable(int selectedDay, int selectedRow, CalendarableItem selection, boolean isAllDayEventRow)
- Parameters:
selectedDay
-selectedRow
-selection
-isAllDayEventRow
-- Returns:
-
nextDay
private int nextDay(int selectedDay)
-
findPreviousCalendarable
public CalendarableItem findPreviousCalendarable(int selectedDay, int selectedRow, CalendarableItem selection, boolean isAllDayEventRow)
- Parameters:
selectedDay
-selectedRow
-selection
-isAllDayEventRow
-- Returns:
-
previousDay
private int previousDay(int selectedDay)
-
-