Bug 474361 - remove and rename calendar-decorated panes;r=philipp
authorBerend Cornelius [:berend] <berend.cornelius@sun.com>
Mon, 26 Jan 2009 11:10:01 +0100
changeset 1752 f491e73f7923c704bb1338fb143eb58e01f4e3f5
parent 1751 f2ec73c00ef5a5c4f40642aaacd0e5cc4d6babfd
child 1753 848ca565d94e5834a37e77ee8717f742137513ab
push idunknown
push userunknown
push dateunknown
reviewersphilipp
bugs474361
Bug 474361 - remove and rename calendar-decorated panes;r=philipp
calendar/base/content/calendar-bindings.css
calendar/base/content/calendar-decorated-base.xml
calendar/base/content/calendar-decorated-day-view.xml
calendar/base/content/calendar-decorated-month-view.xml
calendar/base/content/calendar-decorated-multiday-base-view.xml
calendar/base/content/calendar-decorated-multiweek-view.xml
calendar/base/content/calendar-decorated-week-view.xml
calendar/base/content/calendar-month-view.xml
calendar/base/content/calendar-multiday-view.xml
calendar/base/content/calendar-view-bindings.css
calendar/base/content/calendar-views.xul
calendar/base/jar.mn
calendar/base/public/calICalendarView.idl
calendar/base/themes/pinstripe/calendar-views.css
calendar/base/themes/winstripe/calendar-views.css
--- a/calendar/base/content/calendar-bindings.css
+++ b/calendar/base/content/calendar-bindings.css
@@ -32,38 +32,31 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
 
-calendar-decorated-multiday-base-view {
-  -moz-binding: url(chrome://calendar/content/calendar-decorated-multiday-base-view.xml#calendar-decorated-multiday-base-view);
-}
 
-calendar-decorated-month-view-parent {
-  -moz-binding: url(chrome://calendar/content/calendar-decorated-month-view.xml#calendar-decorated-month-view-parent);
+calendar-day-view { 
+  -moz-binding: url(chrome://calendar/content/calendar-views.xml#calendar-day-view);
 }
 
-calendar-decorated-month-view {
-  -moz-binding: url(chrome://calendar/content/calendar-decorated-month-view.xml#calendar-decorated-month-view);
+calendar-week-view { 
+  -moz-binding: url(chrome://calendar/content/calendar-views.xml#calendar-week-view);
 }
 
-calendar-decorated-day-view { 
-  -moz-binding: url(chrome://calendar/content/calendar-decorated-day-view.xml#calendar-decorated-day-view);
+calendar-multiweek-view { 
+  -moz-binding: url(chrome://calendar/content/calendar-views.xml#calendar-multiweek-view);
 }
 
-calendar-decorated-week-view { 
-  -moz-binding: url(chrome://calendar/content/calendar-decorated-week-view.xml#calendar-decorated-week-view);
-}
-
-calendar-decorated-multiweek-view { 
-  -moz-binding: url(chrome://calendar/content/calendar-decorated-multiweek-view.xml#calendar-decorated-multiweek-view);
+calendar-month-view {
+  -moz-binding: url(chrome://calendar/content/calendar-views.xml#calendar-month-view);
 }
 
 calendar-task-tree { 
   -moz-binding: url(chrome://calendar/content/calendar-task-tree.xml#calendar-task-tree);
 }
 
 menupopup[type="task-progress"] > arrowscrollbox {
   -moz-binding: url(chrome://calendar/content/calendar-menus.xml#task-progress-menupopup);
deleted file mode 100644
--- a/calendar/base/content/calendar-decorated-base.xml
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   - ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is Calendar view code.
-   -
-   - The Initial Developer of the Original Code is
-   -   Joey Minta <jminta@gmail.com>
-   - Portions created by the Initial Developer are Copyright (C) 2005
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Markus Adrario <MarkusAdrario@web.de>
-   -   Philipp Kewisch <mozilla@kewis.ch>
-   -   Berend Cornelius <berend.cornelius@sun.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the GPL or the LGPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK *****
--->
-<!DOCTYPE bindings SYSTEM "chrome://calendar/locale/calendar.dtd">
-
-<bindings id="calendar-specific-view-bindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:html="http://www.w3.org/1999/xhtml"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-    xmlns:xbl="http://www.mozilla.org/xbl">
-
-    <binding id="calendar-decorated-base-view">
-        <implementation implements="calIDecoratedView">
-          <field name="mRelayoutHandler">null</field>;
-          <field name="mRangeStartDate">null</field>;
-          <field name="mRangeEndDate">null</field>;
-          <constructor><![CDATA[
-            const kWorkdaysCommand = "calendar_toggle_workdays_only_command";
-            const kTasksInViewCommand = "calendar_toggle_tasks_in_view_command";
-            const kShowCompleted = "calendar_toggle_show_completed_in_view_command";
-            const kOrientation = "calendar_toggle_orientation_command";
-
-            this.workdaysOnly = (document.getElementById(kWorkdaysCommand)
-                                    .getAttribute("checked") == "true");
-            this.tasksInView = (document.getElementById(kTasksInViewCommand)
-                                    .getAttribute("checked") == "true");
-            this.rotated = (document.getElementById(kOrientation)
-                                    .getAttribute("checked") == "true");
-            this.showCompleted = (document.getElementById(kShowCompleted)
-                                    .getAttribute("checked") == "true");
-            this.viewElem.setAttribute("type", this.type);
-          ]]></constructor>
-            <field name="mTasksInView">false</field>
-            <field name="mShowCompleted">false</field>
-            <field name="mWorkdaysOnly">false</field>
-
-            <property name="workdaysOnly">
-                <getter><![CDATA[
-                    return this.mWorkdaysOnly;
-                ]]></getter>
-                <setter><![CDATA[
-                    this.mWorkdaysOnly = val;
-                    return val;
-                ]]></setter>
-            </property>
-            <property name="type" readonly="true">
-                <getter><![CDATA[
-                    let typelist = this.id.split("-");
-                    return typelist[0];
-                ]]></getter>
-            </property>
-
-            <property name="initialized">
-                <getter><![CDATA[
-                    var retval;
-
-                    // Some views throw when accessing an uninitialized startDay
-                    try {
-                        retval = this.displayCalendar && this.startDay
-                                 && this.endDay;
-                    } catch(ex) {
-                        return false;
-                    }
-                    return retval;
-                ]]></getter>
-            </property>
-
-            <property name="viewElem">
-                <getter><![CDATA[
-                    return document.getAnonymousElementByAttribute(
-                           this, "anonid", "view-element");
-                ]]></getter>
-            </property>
-
-            <method name="getSelectedItems">
-                <parameter name="aCount"/>
-                <body><![CDATA[
-                    var selectedItems = this.viewElem.getSelectedItems({});
-                    aCount.value = selectedItems.length;
-                    return selectedItems;
-                ]]></body>
-            </method>
-            <method name="setSelectedItems">
-                <parameter name="aCount"/>
-                <parameter name="aItems"/>
-                <parameter name="aSuppressEvent"/>
-                <body><![CDATA[
-                    this.viewElem.setSelectedItems(aCount, aItems, aSuppressEvent);
-                ]]></body>
-            </method>
-
-            <method name="centerSelectedItems">
-                <body><![CDATA[
-                    this.viewElem.centerSelectedItems();
-                ]]></body>
-            </method>
-            <method name="removeDropShadows">
-                <body><![CDATA[
-                    this.viewElem.removeDropShadows();
-                ]]></body>
-            </method>
-
-            <property name="selectedDay">
-                <getter><![CDATA[
-                    return this.viewElem.selectedDay;
-                ]]></getter>
-            </property>
-
-            <property name="rotated">
-                <getter><![CDATA[
-                    return (this.viewElem.orient == 'horizontal');
-                ]]></getter>
-                <setter><![CDATA[
-                    this.viewElem.orient = (val ? 'horizontal' : 'vertical');
-                    return val;
-                ]]></setter>
-            </property>
-
-            <property name="tasksInView">
-                <getter><![CDATA[
-                    return this.mTasksInView;
-                ]]></getter>
-                <setter><![CDATA[
-                    this.mTasksInView = val;
-                    return val;
-                ]]></setter>
-            </property>
-
-            <property name="showCompleted">
-              <getter><![CDATA[
-                return this.mShowCompleted;
-              ]]></getter>
-              <setter><![CDATA[
-                this.mShowCompleted = val;
-                return val;
-              ]]></setter>
-            </property>
-
-          <property name="controller">
-                <getter><![CDATA[
-                    return this.viewElem.controller;
-                ]]></getter>
-                <setter><![CDATA[
-                    this.viewElem.controller = val;
-                    return val;
-                ]]></setter>
-            </property>
-
-            <property name="displayCalendar">
-                <getter><![CDATA[
-                    return this.viewElem.displayCalendar;
-                ]]></getter>
-                <setter><![CDATA[
-                    this.viewElem.displayCalendar = val;
-                    return val;
-                ]]></setter>
-            </property>
-
-            <property name="timezone">
-                <getter><![CDATA[
-                    return this.viewElem.timezone;
-                ]]></getter>
-                <setter><![CDATA[
-                    this.viewElem.timezone = val;
-                    return val;
-                ]]></setter>
-            </property>
-
-            <property name="selectionObserver">
-                <getter><![CDATA[
-                    return this.viewElem.mSelectionObserver;
-                ]]></getter>
-            </property>
-
-            <property name="startDay">
-                <getter><![CDATA[
-                    return this.viewElem.startDate;
-                ]]></getter>
-            </property>
-
-            <property name="endDay">
-                <getter><![CDATA[
-                    return this.viewElem.endDate;
-                ]]></getter>
-            </property>
-            <property name="rangeStartDate">
-                <getter><![CDATA[
-                    return this.mRangeStartDate;
-                ]]></getter>
-              <setter><![CDATA[
-                return (this.mRangeStartDate = val);
-              ]]></setter>
-            </property>
-            <property name="rangeEndDate">
-                <getter><![CDATA[
-                    return this.mRangeEndDate;
-                ]]></getter>
-              <setter><![CDATA[
-                this.mRangeEndDate = val;
-                return val;
-              ]]></setter>
-            </property>
-
-            <property name="observerID">
-                <getter><![CDATA[
-                    return "base-view-observer";
-                ]]></getter>
-            </property>
-
-            <!--Public methods-->
-            <method name="goToDay">
-                <parameter name="aDate"/>
-                <body><![CDATA[
-                    this.viewElem.showDate(aDate);
-                ]]></body>
-            </method>
-            <method name="moveView">
-                <parameter name="aNumber"/>
-                <body><![CDATA[
-                    throw NS_ERROR_NOT_IMPLEMENTED;
-                ]]></body>
-            </method>
-            <method name="setDateRange">
-                <parameter name="aStartDate"/>
-                <parameter name="aEndDate"/>
-                <parameter name="aToolTipTexts"/>
-                <body><![CDATA[
-                    this.rangeStartDate = aStartDate;
-                    this.rangeEndDate = aEndDate;
-                    var viewElement = this.viewElem;
-                    viewElement.tasksInView = this.mTasksInView;
-                    viewElement.showCompleted = this.mShowCompleted;
-                    cal.navigationBar.setDateRange(this.rangeStartDate, this.rangeEndDate, aToolTipTexts);
-                ]]></body>
-            </method>
-            <method name="getRangeDescription">
-                <body><![CDATA[
-                    return getDateFormatter().formatInterval(this.rangeStartDate, this.rangeEndDate);
-                ]]></body>
-            </method>
-        </implementation>
-        <handlers>
-          <handler event="move">
-            <![CDATA[
-              this.moveView(event.detail);
-            ]]>
-          </handler>
-          <handler event="keypress"><![CDATA[
-            const kKE = Components.interfaces.nsIDOMKeyEvent;
-            switch (event.keyCode) {
-                case kKE.DOM_VK_PAGE_UP:
-                    this.moveView(-1);
-                    break;
-                case kKE.DOM_VK_PAGE_DOWN:
-                    this.moveView(1);
-                    break;
-            }
-          ]]></handler>
-          <handler event="DOMMouseScroll"><![CDATA[
-            if (event.shiftKey) {
-                this.moveView(event.detail < 0 ? -1 : 1);
-            }
-
-            // Prevent default scroll handling
-            event.preventDefault();
-          ]]></handler>
-        </handlers>
-    </binding>
-</bindings>
deleted file mode 100644
--- a/calendar/base/content/calendar-decorated-day-view.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   - ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is Calendar view code.
-   -
-   - The Initial Developer of the Original Code is
-   -   Joey Minta <jminta@gmail.com>
-   - Portions created by the Initial Developer are Copyright (C) 2005
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Dan Mosedale <dan.mosedale@oracle.com>
-   -   Berend Cornelius <berend.cornelius@sun.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the GPL or the LGPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK *****
--->
-
-<!-- Note that this file depends on helper functions in calUtils.js-->
-
-<bindings id="calendar-specific-view-bindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:html="http://www.w3.org/1999/xhtml"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-    xmlns:xbl="http://www.mozilla.org/xbl">
-
-    <binding id="calendar-decorated-day-view"
-             extends="chrome://calendar/content/calendar-decorated-multiday-base-view.xml#calendar-decorated-multiday-base-view">
-        <implementation implements="calICalendarView">
-            <property name="observerID">
-                <getter><![CDATA[
-                    return "day-view-observer";
-                ]]></getter>
-            </property>
-
-            <!--Public methods-->
-            <method name="goToDay">
-                <parameter name="aDate"/>
-                <body><![CDATA[
-                    aDate = aDate.getInTimezone(this.timezone);
-                    this.setDateRange(aDate, aDate);
-                    var toolTips = calGetStringArray("calendar",
-                                                      ["oneDayBack", "gotoToday", "oneDayForward"]);
-                    cal.navigationBar.setDateRange(aDate, aDate, toolTips);
-                    this.selectedDay = aDate;
-                ]]></body>
-            </method>
-            <method name="moveView">
-                <parameter name="aNumber"/>
-                <body><![CDATA[
-                    if (!aNumber) {
-                        this.goToDay(now());
-                    } else {
-                        var currentDay = this.startDay.clone();
-                        currentDay.day += aNumber;
-                        this.goToDay(currentDay);
-                    }
-                ]]></body>
-            </method>
-        </implementation>
-    </binding>
-</bindings>
deleted file mode 100644
--- a/calendar/base/content/calendar-decorated-month-view.xml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   - ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is Calendar view code.
-   -
-   - The Initial Developer of the Original Code is
-   -   Joey Minta <jminta@gmail.com>
-   - Portions created by the Initial Developer are Copyright (C) 2005
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Philipp Kewisch <mozilla@kewis.ch>
-   -   Berend Cornelius <berend.cornelius@sun.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the GPL or the LGPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK *****
--->
-
-<!-- Note that this file depends on helper functions in calUtils.js-->
-
-<bindings id="calendar-specific-view-bindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-    xmlns:xbl="http://www.mozilla.org/xbl">
-
-    <binding id="calendar-decorated-month-view" extends="chrome://calendar/content/calendar-decorated-month-view.xml#calendar-decorated-month-view-parent">
-        <implementation implements="calICalendarView">
-
-            <property name="observerID">
-                <getter><![CDATA[
-                    return "month-view-observer";
-                ]]></getter>
-            </property>
-
-            <!--Public methods-->
-            <method name="goToDay">
-                <parameter name="aDate"/>
-                <body><![CDATA[
-                    this.displayDaysOff = !this.mWorkdaysOnly;
-
-                    aDate = aDate.getInTimezone(this.timezone);
-                    this.setDateRange(aDate.startOfMonth, aDate.endOfMonth);
-                    let toolTips = calGetStringArray("calendar",
-                                                      ["oneMonthBack", "gotoToday", "oneMonthForward"]);
-                    cal.navigationBar.setDateRange(aDate.startOfMonth, aDate.endOfMonth, toolTips);
-                    this.showDate(aDate);
-                    this.selectedDay = aDate;
-                ]]></body>
-            </method>
-            <method name="getRangeDescription">
-                <body><![CDATA[
-                    let monthName = calGetString("dateFormat", "month." + (this.rangeStartDate.month + 1) + ".name");
-                    return calGetString("calendar", "monthInYear", [monthName, this.rangeStartDate.year]);
-                 ]]></body>
-             </method>
-            <method name="moveView">
-                <parameter name="aNumber"/>
-                <body><![CDATA[
-                    let dates = this.getDateList({});
-                    this.displayDaysOff = !this.mWorkdaysOnly;
-
-                    if (!aNumber) {
-                        let date = now();
-                        this.goToDay(date);
-                        this.selectedDay = date;
-                    } else {
-                        // The first few dates in this list are likely in the month
-                        // prior to the one actually being shown (since the month
-                        // probably doesn't start on a Sunday).  The 7th item must
-                        // be in correct month though.
-                        let date = dates[6].clone();
-
-                        date.month += aNumber;
-                        // Need to store this before we move
-                        let oldSelectedDay = this.selectedDay;
-
-                        this.goToDay(date);
-
-                        // Most of the time we want to select the date with the
-                        // same day number in the next month
-                        let newSelectedDay = oldSelectedDay.clone();
-                        newSelectedDay.month += aNumber;
-                        // correct for accidental rollover into the next month
-                        if ((newSelectedDay.month - aNumber + 12) % 12 != oldSelectedDay.month) {
-                            newSelectedDay.month -= 1;
-                            newSelectedDay.day = newSelectedDay.endOfMonth.day;
-                        }
-
-                        this.selectedDay = newSelectedDay;
-                    }
-                ]]></body>
-            </method>
-        </implementation>
-    </binding>
-
-    <binding id="calendar-decorated-month-view-parent" extends="chrome://calendar/content/calendar-month-view.xml#calendar-month-view">
-        <implementation>
-            <constructor><![CDATA[
-                // Set the preference for the default start of the week
-                this.weekStartOffset = getPrefSafe("calendar.week.start", 0);
-            ]]></constructor>
-
-            <method name="handlePreference">
-                <parameter name="aSubject"/>
-                <parameter name="aTopic"/>
-                <parameter name="aPreference"/>
-                <body><![CDATA[
-                   aSubject.QueryInterface(Components.interfaces.nsIPrefBranch2);
-
-                   switch (aPreference) {
-                       case "calendar.previousweeks.inview":
-                           this.updateDaysOffPrefs();
-                           this.refreshView();
-                           break;
-
-                       case "calendar.week.start":
-                           this.weekStartOffset = aSubject.getIntPref(aPreference);
-                           // Refresh the view so the settings take effect
-                           this.refreshView();
-                           break;
-
-                       case "calendar.weeks.inview":
-                           this.weeksInView = aSubject.getIntPref(aPreference);
-                           break;
-
-                       case "calendar.previousweeks.inview":
-                           this.refreshView();
-                           break;
-
-                       default:
-                           this.handleCommonPreference(aSubject, aTopic, aPreference);
-                           break;
-                   }
-                   return;
-                ]]></body>
-            </method>
-
-            <!-- this property may be overridden by the
-                descendent classes if neeeded  -->
-            <property name="weeksInView">
-                <getter><![CDATA[
-                    return 0;
-                ]]></getter>
-                <setter><![CDATA[
-                    return val;
-                ]]></setter>
-            </property>
-
-        </implementation>
-
-        <handlers>
-            <handler event="DOMMouseScroll"><![CDATA[
-              if (!event.ctrlKey &&
-                  !event.shiftKey &&
-                  !event.altKey &&
-                  !event.metaKey) {
-                  // In the month view, the only thing that can be scrolled
-                  // is the month the user is in. decorated-base takes care
-                  // of the shift key, so only move the view when no modifier
-                  // is pressed.
-                  this.moveView(event.detail < 0 ? -1 : 1);
-              }
-            ]]></handler>
-        </handlers>
-    </binding>
-</bindings>
deleted file mode 100644
--- a/calendar/base/content/calendar-decorated-multiday-base-view.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is Calendar view code.
-   -
-   - The Initial Developer of the Original Code is
-   -   Joey Minta <jminta@gmail.com>
-   - Portions created by the Initial Developer are Copyright (C) 2007
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Dan Mosedale <dan.mosedale@oracle.com>
-   -   Philipp Kewisch <mozilla@kewis.ch>
-   -   Berend Cornelius <berend.cornelius@sun.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the GPL or the LGPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK ***** -->
-
-<bindings id="calendar-specific-view-bindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:html="http://www.w3.org/1999/xhtml"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-    xmlns:xbl="http://www.mozilla.org/xbl">
-
-    <binding id="calendar-decorated-multiday-base-view"
-             extends="chrome://calendar/content/calendar-multiday-view.xml#calendar-multiday-view">
-        <implementation implements="calICalendarView">
-            <constructor><![CDATA[
-                // get day start/end hour from prefs and set on the view
-                this.setDayStartEndMinutes(getPrefSafe("calendar.view.daystarthour", 8) * 60,
-                                           getPrefSafe("calendar.view.dayendhour", 17) * 60);
-
-                // initially scroll to the day start hour in the view
-                this.scrollToMinute(this.mDayStartMin);
-
-                // get visible hours from prefs and set on the view
-                let visibleMinutes = getPrefSafe("calendar.view.visiblehours", 9) * 60;
-                this.setVisibleMinutes(visibleMinutes);
-
-            ]]></constructor>
-
-            <!-- A base implementation for the handling of common preferences.
-                 Can be called in handlePreference from derived bindings. -->
-            <method name="handlePreference">
-                <parameter name="aSubject"/>
-                <parameter name="aTopic"/>
-                <parameter name="aPreference"/>
-                <body><![CDATA[
-                    aSubject.QueryInterface(Components.interfaces.nsIPrefBranch2);
-                    switch (aPreference) {
-
-                        case "calendar.view.daystarthour":
-                            this.setDayStartEndMinutes(aSubject.getIntPref(aPreference) * 60,
-                                                       this.mDayEndMin);
-
-                            this.refreshView();
-                            break;
-
-                        case "calendar.view.dayendhour":
-                            this.setDayStartEndMinutes(this.mDayStartMin,
-                                                       aSubject.getIntPref(aPreference) * 60);
-                            this.refreshView();
-                            break;
-
-                        case "calendar.view.visiblehours":
-                            this.setVisibleMinutes(aSubject.getIntPref(aPreference) * 60);
-                            this.refreshView();
-                            break;
-
-                        default:
-                            this.handleCommonPreference(aSubject, aTopic, aPreference);
-                            break;
-                    }
-                    return;
-                ]]></body>
-            </method>
-        </implementation>
-    </binding>
-</bindings>
deleted file mode 100644
--- a/calendar/base/content/calendar-decorated-multiweek-view.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   - ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is Calendar view code.
-   -
-   - The Initial Developer of the Original Code is
-   -   Joey Minta <jminta@gmail.com>
-   - Portions created by the Initial Developer are Copyright (C) 2005
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Philipp Kewisch <mozilla@kewis.ch>
-   -   Berend Cornelius <berend.cornelius@sun.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the GPL or the LGPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK *****
--->
-
-<!-- Note that this file depends on helper functions in calUtils.js-->
-
-<bindings id="calendar-specific-view-bindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:html="http://www.w3.org/1999/xhtml"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-    xmlns:xbl="http://www.mozilla.org/xbl">
-
-    <binding id="calendar-decorated-multiweek-view" extends="chrome://calendar/content/calendar-decorated-month-view.xml#calendar-decorated-month-view-parent">
-        <implementation implements="calICalendarView">
-	        <constructor><![CDATA[
-                this.mWeeksInView = getPrefSafe("calendar.weeks.inview", 4);
-            ]]></constructor>
-
-            <field name="mWeeksInView">4</field>
-
-            <property name="weeksInView">
-                <getter><![CDATA[
-                    return this.mWeeksInView;
-                ]]></getter>
-                <setter><![CDATA[
-                    this.mWeeksInView = val;
-                    setPref("calendar.weeks.inview", val);
-                    this.refreshView();
-                    return val;
-                ]]></setter>
-            </property>
-
-            <property name="observerID">
-                <getter><![CDATA[
-                    return "multiweek-view-observer";
-                ]]></getter>
-            </property>
-
-            <!--Public methods-->
-            <method name="goToDay">
-                <parameter name="aDate"/>
-                <body><![CDATA[
-                    this.showFullMonth = false;
-                    this.displayDaysOff = !this.mWorkdaysOnly;
-
-                    aDate = aDate.getInTimezone(this.timezone);
-
-                    // Get the first date that should be shown.  This is the
-                    // start of the week of the day that we're centering around
-                    // adjusted for the day the week starts on and the number
-                    // of previous weeks we're supposed to display.
-                    let d1 = getWeekInfoService().getStartOfWeek(aDate);
-                    d1.day -= (7 * getPrefSafe("calendar.previousweeks.inview", 0));
-                    // The last day we're supposed to show
-                    let d2 = d1.clone();
-                    d2.day += ((7 * this.mWeeksInView) - 1);
-                    this.setDateRange(d1,d2);
-                    let toolTips = calGetStringArray("calendar",
-                                                     ["oneWeekBack", "gotoToday", "oneWeekForward"]);
-                    cal.navigationBar.setDateRange(d1,d2, toolTips);
-                    this.selectedDay = aDate;
-                ]]></body>
-            </method>
-            <method name="moveView">
-                <parameter name="aNumber"/>
-                <body><![CDATA[
-                    if (!aNumber) {
-                        let date = now();
-                        this.goToDay(date);
-                        this.selectedDay = date;
-                    } else {
-                        let d1 = this.startDay.clone();
-                        let savedSelectedDay = this.selectedDay.clone();
-                        // aNumber only corresponds to the number of weeks to move
-                        // make sure to compensate for previous weeks in view too
-                        d1.day += 7 * (aNumber + getPrefSafe("calendar.previousweeks.inview", 4));
-                        this.goToDay(d1);
-                        savedSelectedDay.day += 7 * aNumber;
-                        this.selectedDay = savedSelectedDay;
-                    }
-                ]]></body>
-            </method>
-        </implementation>
-    </binding>
-</bindings>
deleted file mode 100644
--- a/calendar/base/content/calendar-decorated-week-view.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   - ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is Calendar view code.
-   -
-   - The Initial Developer of the Original Code is
-   -   Joey Minta <jminta@gmail.com>
-   - Portions created by the Initial Developer are Copyright (C) 2005
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Dan Mosedale <dan.mosedale@oracle.com>
-   -   Berend Cornelius <berend.cornelius@sun.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the GPL or the LGPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK *****
--->
-
-<!-- Note that we depend on some helper functions in calUtils.js here-->
-
-<bindings id="calendar-specific-view-bindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:html="http://www.w3.org/1999/xhtml"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-    xmlns:xbl="http://www.mozilla.org/xbl">
-
-    <binding id="calendar-decorated-week-view"
-             extends="chrome://calendar/content/calendar-decorated-multiday-base-view.xml#calendar-decorated-multiday-base-view">
-        <implementation implements="calICalendarView">
-            <property name="observerID">
-                <getter><![CDATA[
-                    return "week-view-observer";
-                ]]></getter>
-            </property>
-
-            <!--Public methods-->
-            <method name="goToDay">
-                <parameter name="aDate"/>
-                <body><![CDATA[
-                    this.displayDaysOff = !this.mWorkdaysOnly;
-
-                    aDate = aDate.getInTimezone(this.timezone);
-                    var d1 = getWeekInfoService().getStartOfWeek(aDate);
-                    var d2 = d1.clone();
-                    d2.day += 6;
-                    this.setDateRange(d1, d2);
-                    var toolTips = calGetStringArray("calendar",
-                                                     ["oneWeekBack", "gotoToday", "oneWeekForward"]);
-                    cal.navigationBar.setDateRange(d1, d2, toolTips);
-                    this.selectedDay = aDate;
-                ]]></body>
-            </method>
-            <method name="moveView">
-                <parameter name="aNumber"/>
-                <body><![CDATA[
-                    if (!aNumber) {
-                        this.goToDay(now());
-                    } else {
-                        var d1 = this.selectedDay.clone();
-                        d1.day += 7 * aNumber;
-                        this.goToDay(d1);
-                    }
-                ]]></body>
-            </method>
-        </implementation>
-    </binding>
-</bindings>
--- a/calendar/base/content/calendar-month-view.xml
+++ b/calendar/base/content/calendar-month-view.xml
@@ -421,17 +421,17 @@
             if (this.dayitems.scrollHeight > this.dayitems.clientHeight) {
                 event.stopPropagation();
             }
         }
       ]]></handler>
     </handlers>
   </binding>
 
-  <binding id="calendar-month-view" extends="chrome://calendar/content/calendar-base-view.xml#calendar-base-view">
+  <binding id="calendar-month-base-view" extends="chrome://calendar/content/calendar-base-view.xml#calendar-base-view">
     <content style="overflow: auto;" flex="1" xbl:inherits="context,item-context">
       <xul:vbox anonid="mainbox" flex="1">
         <xul:hbox class="labeldaybox-container" anonid="labeldaybox" equalsize="always"/>
 
         <xul:grid anonid="monthgrid" flex="1">
           <xul:columns anonid="monthgridcolumns" equalsize="always">
             <xul:column flex="1" class="calendar-month-view-grid-column"/>
             <xul:column flex="1" class="calendar-month-view-grid-column"/>
@@ -501,16 +501,19 @@
         </xul:grid>
       </xul:vbox>
     </content>
 
     <implementation implements="calICalendarView">
 
       <!-- constructor -->
       <constructor><![CDATA[
+          // Set the preference for the default start of the week
+          this.weekStartOffset = getPrefSafe("calendar.week.start", 0);
+
           for (var i = 0; i < 7; i++) {
               let hdr = createXULElement("calendar-day-label");
               this.labeldaybox.appendChild(hdr);
               hdr.weekDay = (i + this.mWeekStartOffset) % 7;
               hdr.shortWeekNames = false;
           }
       ]]></constructor>
 
@@ -558,23 +561,70 @@
           return this.mShowFullMonth;
         ]]></getter>
         <setter><![CDATA[
           this.mShowFullMonth = val;
           return val;
         ]]></setter>
       </property>
 
+      <!-- this property may be overridden by the
+          descendent classes if neeeded  -->
+      <property name="weeksInView">
+        <getter><![CDATA[
+            return 0;
+        ]]></getter>
+        <setter><![CDATA[
+            return val;
+        ]]></setter>
+      </property>
+
+      <method name="handlePreference">
+        <parameter name="aSubject"/>
+        <parameter name="aTopic"/>
+        <parameter name="aPreference"/>
+        <body><![CDATA[
+           aSubject.QueryInterface(Components.interfaces.nsIPrefBranch2);
+
+           switch (aPreference) {
+               case "calendar.previousweeks.inview":
+                   this.updateDaysOffPrefs();
+                   this.refreshView();
+                   break;
+
+               case "calendar.week.start":
+                   this.weekStartOffset = aSubject.getIntPref(aPreference);
+                   // Refresh the view so the settings take effect
+                   this.refreshView();
+                   break;
+
+               case "calendar.weeks.inview":
+                   this.weeksInView = aSubject.getIntPref(aPreference);
+                   break;
+
+               case "calendar.previousweeks.inview":
+                   this.refreshView();
+                   break;
+
+               default:
+                   this.handleCommonPreference(aSubject, aTopic, aPreference);
+                   break;
+           }
+           return;
+        ]]></body>
+      </method>
+
       <method name="getSelectedItems">
         <parameter name="aCount"/>
         <body><![CDATA[
           aCount.value = this.mSelectedItems.length;
           return this.mSelectedItems;
         ]]></body>
       </method>
+
       <method name="setSelectedItems">
         <parameter name="aCount"/>
         <parameter name="aItems"/>
         <parameter name="aSuppressEvent"/>
         <body><![CDATA[
           if (this.mSelectedItems.length) {
               for each (var item in this.mSelectedItems) {
                   let oldboxes = this.findDayBoxesForItem(item);
@@ -999,10 +1049,26 @@
             setTimeout(function() { this_.flashAlarm(aAlarmItem, true) }, totaltime);
           } else {
             // We are done flashing, prevent newly created event boxes from flashing.
             delete this.mFlashingEvents[aAlarmItem.hashId];
           }
         ]]></body>
       </method>
     </implementation>
+
+    <handlers>
+      <handler event="DOMMouseScroll"><![CDATA[
+        if (!event.ctrlKey &&
+            !event.shiftKey &&
+            !event.altKey &&
+            !event.metaKey) {
+            // In the month view, the only thing that can be scrolled
+            // is the month the user is in. calendar-base-view takes care
+            // of the shift key, so only move the view when no modifier
+            // is pressed.
+            this.moveView(event.detail < 0 ? -1 : 1);
+        }
+      ]]></handler>
+    </handlers>
+
   </binding>
 </bindings>
--- a/calendar/base/content/calendar-multiday-view.xml
+++ b/calendar/base/content/calendar-multiday-view.xml
@@ -2140,33 +2140,77 @@
           <xul:box anonid="daybox" class="calendar-day-box" flex="1"
                    equalsize="always"/>
         </xul:scrollbox>
       </xul:box>
     </content>
 
     <implementation implements="calICalendarView">
       <constructor><![CDATA[
+        // get day start/end hour from prefs and set on the view
+        this.setDayStartEndMinutes(getPrefSafe("calendar.view.daystarthour", 8) * 60,
+                                   getPrefSafe("calendar.view.dayendhour", 17) * 60);
+
+        // initially scroll to the day start hour in the view
+        this.scrollToMinute(this.mDayStartMin);
+
+        // get visible hours from prefs and set on the view
+        let visibleMinutes = getPrefSafe("calendar.view.visiblehours", 9) * 60;
+        this.setVisibleMinutes(visibleMinutes);
+
         var self = this;
         // set the flex attribute at the scrollbox-innerbox
         // (this can be removed, after Bug 343555 is fixed)
         let scrollbox = document.getAnonymousElementByAttribute(
                        this, "anonid", "scrollbox");
         document.getAnonymousElementByAttribute(
             scrollbox, "class", "box-inherit scrollbox-innerbox").flex = "1";
-
         this.reorient();
       ]]></constructor>
 
       <property name="daysInView" readonly="true">
         <getter><![CDATA[
           return this.labeldaybox.childNodes && this.labeldaybox.childNodes.length;
         ]]></getter>
       </property>
 
+      <method name="handlePreference">
+        <parameter name="aSubject"/>
+        <parameter name="aTopic"/>
+        <parameter name="aPreference"/>
+        <body><![CDATA[
+            aSubject.QueryInterface(Components.interfaces.nsIPrefBranch2);
+            switch (aPreference) {
+
+                case "calendar.view.daystarthour":
+                    this.setDayStartEndMinutes(aSubject.getIntPref(aPreference) * 60,
+                                               this.mDayEndMin);
+
+                    this.refreshView();
+                    break;
+
+                case "calendar.view.dayendhour":
+                    this.setDayStartEndMinutes(this.mDayStartMin,
+                                               aSubject.getIntPref(aPreference) * 60);
+                    this.refreshView();
+                    break;
+
+                case "calendar.view.visiblehours":
+                    this.setVisibleMinutes(aSubject.getIntPref(aPreference) * 60);
+                    this.refreshView();
+                    break;
+
+                default:
+                    this.handleCommonPreference(aSubject, aTopic, aPreference);
+                    break;
+            }
+            return;
+        ]]></body>
+      </method>
+
       <method name="onResize">
         <parameter name="aRealSelf"/>
         <body><![CDATA[
           var self = this;
           if (aRealSelf) {
             self = aRealSelf;
           }
           let scrollbox = document.getAnonymousElementByAttribute(self, "anonid", "scrollbox");
--- a/calendar/base/content/calendar-view-bindings.css
+++ b/calendar/base/content/calendar-view-bindings.css
@@ -72,18 +72,18 @@ calendar-base-view {
   -moz-binding: url(chrome://calendar/content/calendar-base-view.xml#calendar-base-view);
 }
 
 calendar-header-container { 
   -moz-binding: url(chrome://calendar/content/calendar-multiday-view.xml#calendar-header-container);
 }
 
 /* Month View */
-calendar-month-view { 
-  -moz-binding: url(chrome://calendar/content/calendar-month-view.xml#calendar-month-view);
+calendar-month-base-view {
+  -moz-binding: url(chrome://calendar/content/calendar-month-view.xml#calendar-month-base-view);
 }
 
 calendar-base-view {
   -moz-binding: url(chrome://calendar/content/calendar-base-view.xml#calendar-base-view);
   -moz-user-focus: normal;
 }
 
 calendar-month-day-box { 
--- a/calendar/base/content/calendar-views.xul
+++ b/calendar/base/content/calendar-views.xul
@@ -106,26 +106,26 @@
          </vbox>
        </hbox>
        <deck flex="1"
             id="view-deck"
             persist="selectedIndex"
             ondraggesture="nsDragAndDrop.startDrag(event, calendarViewDNDObserver);"
             ondragover="nsDragAndDrop.dragOver(event, calendarViewDNDObserver);"
             ondragdrop="nsDragAndDrop.drop(event, calendarViewDNDObserver);">
-        <!-- Note: the "id" attributes of the decorated panes **must** follow the
+        <!-- Note: the "id" attributes of the calendar panes **must** follow the
              notation 'type + "-" + "view"', where "type" should refer to the
              displayed time period as described in base/public/calICalendarView.idl -->
-        <calendar-decorated-day-view id="day-view" flex="1"
-                                     context="calendar-view-context-menu"
-                                     item-context="calendar-item-context-menu"/>
-        <calendar-decorated-week-view id="week-view" flex="1"
-                                      context="calendar-view-context-menu"
-                                      item-context="calendar-item-context-menu"/>
-        <calendar-decorated-multiweek-view id="multiweek-view" flex="1"
-                                           context="calendar-view-context-menu"
-                                           item-context="calendar-item-context-menu"/>
-        <calendar-decorated-month-view id="month-view" flex="1"
-                                       context="calendar-view-context-menu"
-                                       item-context="calendar-item-context-menu"/>
+        <calendar-day-view id="day-view" flex="1"
+                               context="calendar-view-context-menu"
+                               item-context="calendar-item-context-menu"/>
+        <calendar-week-view id="week-view" flex="1"
+                                context="calendar-view-context-menu"
+                                item-context="calendar-item-context-menu"/>
+        <calendar-multiweek-view id="multiweek-view" flex="1"
+                                 context="calendar-view-context-menu"
+                                 item-context="calendar-item-context-menu"/>
+        <calendar-month-view id="month-view" flex="1"
+                             context="calendar-view-context-menu"
+                             item-context="calendar-item-context-menu"/>
       </deck>
     </vbox>
 </overlay>
--- a/calendar/base/jar.mn
+++ b/calendar/base/jar.mn
@@ -13,21 +13,17 @@ calendar.jar:
     content/calendar/calendar-bindings.css                 (content/calendar-bindings.css)
     content/calendar/calendar-calendars-list.xul           (content/calendar-calendars-list.xul)
     content/calendar/calendar-chrome-startup.js            (content/calendar-chrome-startup.js)
     content/calendar/calendar-clipboard.js                 (content/calendar-clipboard.js)
 *   content/calendar/calendar-common-sets.xul              (content/calendar-common-sets.xul)
     content/calendar/calendar-common-sets.js               (content/calendar-common-sets.js)
     content/calendar/calendar-creation.js                  (content/calendar-creation.js)
     content/calendar/calendar-daypicker.xml                (content/calendar-daypicker.xml)
-    content/calendar/calendar-decorated-multiday-base-view.xml  (content/calendar-decorated-multiday-base-view.xml)
-    content/calendar/calendar-decorated-day-view.xml       (content/calendar-decorated-day-view.xml)
-    content/calendar/calendar-decorated-week-view.xml      (content/calendar-decorated-week-view.xml)
-    content/calendar/calendar-decorated-multiweek-view.xml (content/calendar-decorated-multiweek-view.xml)
-    content/calendar/calendar-decorated-month-view.xml     (content/calendar-decorated-month-view.xml)
+    content/calendar/calendar-views.xml                    (content/calendar-views.xml)
     content/calendar/calendar-dialog-utils.js              (content/calendar-dialog-utils.js)
 *   content/calendar/calendar-dnd-listener.js              (content/calendar-dnd-listener.js)
     content/calendar/calendar-invitations-manager.js       (content/calendar-invitations-manager.js)
     content/calendar/calendar-item-editing.js              (content/calendar-item-editing.js)
     content/calendar/calendar-item-bindings.xml            (content/calendar-item-bindings.xml)
     content/calendar/calendar-management.js                (content/calendar-management.js)
     content/calendar/calendar-menus.xml                    (content/calendar-menus.xml)
     content/calendar/calendar-views.xul                    (content/calendar-views.xul)
--- a/calendar/base/public/calICalendarView.idl
+++ b/calendar/base/public/calICalendarView.idl
@@ -46,17 +46,16 @@ interface calIDateTime;
 interface calICalendarViewController;
 interface calIItemBase;
 
 /**
  * An interface for view widgets containing calendaring data.
  *
  * @note Code that implements this interface is intended to be pure
  * widgetry and thus not have any preference dependencies.
- * Preferences and pref observers should live in the decorated views.
  */
 [scriptable, uuid(3e567ccb-2ecf-4f59-b7ca-bf42b0fbf24a)]
 interface calICalendarView : nsISupports
 {
 
   /**
    * Oftentimes other elements in the DOM in which a calIDecoratedView is
    * used want to be aware of whether or not the view is selected.  An element
--- a/calendar/base/themes/pinstripe/calendar-views.css
+++ b/calendar/base/themes/pinstripe/calendar-views.css
@@ -313,17 +313,18 @@ calendar-day-label[orient="vertical"] {
     text-align: center;
 }
 
 .calendar-day-label-name[selected="true"] {
     font-weight: bold;
 }
 
 /* Month View */
-calendar-month-view {
+calendar-month-view,
+calendar-multiweek-view {
     background-color: #FFFFFF;
     padding: 0px 2px 2px 2px;
 }
 
 .calendar-month-view-grid-column {
     min-width: 1px;
     width: 1px;
 }
--- a/calendar/base/themes/winstripe/calendar-views.css
+++ b/calendar/base/themes/winstripe/calendar-views.css
@@ -313,17 +313,18 @@ calendar-day-label[orient="vertical"] {
     text-align: center;
 }
 
 .calendar-day-label-name[selected="true"] {
     font-weight: bold;
 }
 
 /* Month View */
-calendar-month-view {
+calendar-month-view,
+calendar-multiweek-view {
     background-color: #FFFFFF;
     padding: 0px 2px 2px 2px;
 }
 
 .calendar-month-view-grid-column {
     min-width: 1px;
     width: 1px;
 }