Index: Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/a11y/Attic/Makefile.am,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 Makefile.am
--- Makefile.am	26 Jun 2003 09:02:25 -0000	1.1.2.1
+++ Makefile.am	16 Jul 2003 06:23:03 -0000
@@ -1,4 +1,6 @@
 
+SUBDIRS = calendar
+
 INCLUDES =						\
 	-DPREFIX=\"$(prefix)\"				\
 	-DSYSCONFDIR=\"$(sysconfdir)\"			\
@@ -8,6 +10,7 @@
 	-I$(top_srcdir) 				\
 	-DG_DISABLE_DEPRECATED				\
 	-DLIBGNOME_DISABLE_DEPRECATED			\
+	$(EVOLUTION_CALENDAR_CFLAGS)			\
 	$(A11Y_CFLAGS)
 
 privlib_LTLIBRARIES = libevolution-a11y.la 
@@ -16,4 +19,6 @@
 	init.c
 
 libevolution_a11y_la_LIBADD =				\
-	$(A11Y_LIBS)
+	$(A11Y_LIBS)					\
+	$(top_builddir)/a11y/calendar/libevolution-calendar-a11y.la \
+	$(top_builddir)/calendar/gui/libevolution-calendar.la
Index: ea-factory.h
===================================================================
RCS file: ea-factory.h
diff -N ea-factory.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ea-factory.h	16 Jul 2003 06:23:03 -0000
@@ -0,0 +1,94 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-factory.h
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+/* Evolution Accessibility
+*/
+
+#ifndef _EA_FACTORY_H__
+#define _EA_FACTORY_H__
+
+#include <glib-object.h>
+#include <atk/atkobject.h>
+
+#define EA_FACTORY(type, type_as_function, opt_create_accessible)	\
+										\
+static GType									\
+type_as_function ## _factory_get_accessible_type (void)				\
+{										\
+  return type;									\
+}										\
+										\
+static AtkObject*								\
+type_as_function ## _factory_create_accessible (GObject *obj)			\
+{										\
+  GtkWidget *widget;								\
+  AtkObject *accessible;							\
+										\
+  g_return_val_if_fail (GTK_IS_WIDGET (obj), NULL);				\
+										\
+  widget = GTK_WIDGET (obj);							\
+										\
+  accessible = opt_create_accessible (widget);					\
+										\
+  return accessible;								\
+}										\
+										\
+static void									\
+type_as_function ## _factory_class_init (AtkObjectFactoryClass *klass)		\
+{										\
+  klass->create_accessible   = type_as_function ## _factory_create_accessible;	\
+  klass->get_accessible_type = type_as_function ## _factory_get_accessible_type;\
+}										\
+										\
+static GType									\
+type_as_function ## _factory_get_type (void)					\
+{										\
+  static GType t = 0;								\
+										\
+  if (!t)									\
+  {										\
+    char *name;									\
+    static const GTypeInfo tinfo =						\
+    {										\
+      sizeof (AtkObjectFactoryClass),					\
+      NULL, NULL, (GClassInitFunc) type_as_function ## _factory_class_init,			\
+      NULL, NULL, sizeof (AtkObjectFactory), 0, NULL, NULL			\
+    };										\
+										\
+    name = g_strconcat (g_type_name (type), "Factory", NULL);			\
+    t = g_type_register_static (						\
+	    ATK_TYPE_OBJECT_FACTORY, name, &tinfo, 0);				\
+    g_free (name);								\
+  }										\
+										\
+  return t;									\
+}
+
+#define EA_SET_FACTORY(widget_type, type_as_function)			\
+	atk_registry_set_factory_type (atk_get_default_registry (),		\
+				       widget_type,				\
+				       type_as_function ## _factory_get_type ())
+
+#endif /* _EA_FACTORY_H__ */
Index: init.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/Attic/init.c,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 init.c
--- init.c	26 Jun 2003 09:02:25 -0000	1.1.2.1
+++ init.c	16 Jul 2003 06:23:03 -0000
@@ -18,6 +18,7 @@
  * Boston, MA 02111-1307, USA.
  *
  * Author: Gilbert Fang <gilbert.fang@sun.com> Sun Microsystem Inc., 2003
+ *         Bolian Yin <bolian.yin@sun.com>
  *
  */
 
@@ -27,6 +28,8 @@
 
 #include <stdio.h>
 
+#include "calendar/ea-calendar.h"
+
 /* Static functions */
 
 static gboolean initialized = FALSE;
@@ -34,6 +37,7 @@
 extern void gnome_accessibility_module_init     (void);
 extern void gnome_accessibility_module_shutdown (void);
 
+extern 
 void
 e_a11y_init (void)
 {
@@ -45,6 +49,7 @@
 	initialized = TRUE;
 
 	fprintf (stderr, "Evolution Accessibility Support Extension Module initialized\n");
+	ea_calendar_init();
 }
 
 void
Index: calendar/Makefile.am
===================================================================
RCS file: calendar/Makefile.am
diff -N calendar/Makefile.am
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/Makefile.am	16 Jul 2003 06:23:03 -0000
@@ -0,0 +1,29 @@
+
+noinst_LTLIBRARIES = libevolution-calendar-a11y.la
+
+INCLUDES =						\
+	-DG_LOG_DOMAIN=\"evolution-a11y\"		\
+	-I$(top_srcdir)/shell				\
+	-I$(top_srcdir)/calendar			\
+	-I$(top_srcdir)/calendar/cal-client		\
+	-I$(top_srcdir)/libical/src/libical		\
+	-I$(top_srcdir)/calendar/gui			\
+	-I$(top_srcdir)/widgets				\
+	-I$(top_srcdir)/a11y				\
+	-DEVOLUTION_DATADIR=\""$(datadir)"\"		\
+	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
+	-DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\"	\
+	-DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\"	\
+	-DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\"	\
+	-DEVOLUTION_UIDIR=\""$(evolutionuidir)"\"	\
+	-DG_DISABLE_DEPRECATED				\
+	-DPREFIX=\""$(prefix)"\"			\
+	$(A11Y_CFLAGS)					\
+	$(EVOLUTION_CALENDAR_CFLAGS)
+
+libevolution_calendar_a11y_la_SOURCES =		\
+	ea-calendar.c				\
+	ea-day-view.c				\
+	ea-day-view-event.c				\
+	ea-day-view-event-factory.c				\
+	ea-gnome-calendar.c
Index: calendar/ea-calendar.c
===================================================================
RCS file: calendar/ea-calendar.c
diff -N calendar/ea-calendar.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-calendar.c	16 Jul 2003 06:23:03 -0000
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-calendar.c
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#include "ea-factory.h"
+#include "ea-calendar.h"
+
+#include "calendar/ea-day-view.h"
+#include "calendar/ea-day-view-event.h"
+#include "calendar/ea-gnome-calendar.h"
+
+EA_FACTORY (EA_TYPE_DAY_VIEW, ea_day_view, ea_day_view_new);
+EA_FACTORY (EA_TYPE_GNOME_CALENDAR, ea_gnome_calendar, ea_gnome_calendar_new);
+
+/* ea_calendar_init will register all the atk factories for calendar,
+ * other init's will register specific factories for their widgets
+ */
+void
+ea_calendar_init (void)
+{
+    EA_SET_FACTORY (gnome_calendar_get_type(), ea_gnome_calendar);
+    EA_SET_FACTORY (e_day_view_get_type(), ea_day_view);
+}
+
+void
+gnome_calendar_a11y_init (void)
+{
+    EA_SET_FACTORY (gnome_calendar_get_type(), ea_gnome_calendar);
+
+}
+
+void
+e_day_view_a11y_init (void)
+{
+    EA_SET_FACTORY (e_day_view_get_type(), ea_day_view);
+}
Index: calendar/ea-calendar.h
===================================================================
RCS file: calendar/ea-calendar.h
diff -N calendar/ea-calendar.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-calendar.h	16 Jul 2003 06:23:03 -0000
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-calendar.h
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+/* Evolution Accessibility
+*/
+
+#ifndef _EA_CALENDAR_H__
+#define _EA_CALENDAR_H__
+
+void ea_calendar_init (void);
+void gnome_calendar_a11y_init (void);
+void e_day_view_a11y_init (void);
+
+#endif /* _EA_CALENDAR_H__ */
Index: calendar/ea-day-view-event-factory.c
===================================================================
RCS file: calendar/ea-day-view-event-factory.c
diff -N calendar/ea-day-view-event-factory.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-day-view-event-factory.c	16 Jul 2003 06:23:03 -0000
@@ -0,0 +1,83 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-day-view-event-factory.c
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#include <gtk/gtk.h>
+#include "ea-day-view-event-factory.h"
+#include "ea-day-view-event.h"
+
+static void ea_day_view_event_factory_class_init (EaDayViewEventFactoryClass *klass);
+
+static AtkObject* ea_day_view_event_factory_create_accessible (GObject *obj);
+
+static GType ea_day_view_event_factory_get_accessible_type (void);
+
+GType
+ea_day_view_event_factory_get_type (void)
+{
+  static GType type = 0;
+
+  if (!type) 
+  {
+    static const GTypeInfo tinfo =
+    {
+      sizeof (EaDayViewEventFactoryClass),
+      (GBaseInitFunc) NULL, /* base init */
+      (GBaseFinalizeFunc) NULL, /* base finalize */
+      (GClassInitFunc) ea_day_view_event_factory_class_init, /* class init */
+      (GClassFinalizeFunc) NULL, /* class finalize */
+      NULL, /* class data */
+      sizeof (EaDayViewEventFactory), /* instance size */
+      0, /* nb preallocs */
+      (GInstanceInitFunc) NULL, /* instance init */
+      NULL /* value table */
+    };
+    type = g_type_register_static (
+                           ATK_TYPE_OBJECT_FACTORY, 
+                           "EaDayViewEventFactory" , &tinfo, 0);
+  }
+
+  return type;
+}
+
+static void 
+ea_day_view_event_factory_class_init (EaDayViewEventFactoryClass *klass)
+{
+  AtkObjectFactoryClass *class = ATK_OBJECT_FACTORY_CLASS (klass);
+
+  class->create_accessible = ea_day_view_event_factory_create_accessible;
+  class->get_accessible_type = ea_day_view_event_factory_get_accessible_type;
+}
+
+static AtkObject* 
+ea_day_view_event_factory_create_accessible (GObject   *obj)
+{
+  return ea_day_view_event_new (obj);
+}
+
+static GType
+ea_day_view_event_factory_get_accessible_type (void)
+{
+  return EA_TYPE_DAY_VIEW_EVENT;
+}
Index: calendar/ea-day-view-event-factory.h
===================================================================
RCS file: calendar/ea-day-view-event-factory.h
diff -N calendar/ea-day-view-event-factory.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-day-view-event-factory.h	16 Jul 2003 06:23:04 -0000
@@ -0,0 +1,64 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-day-view-event-factory.h
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#ifndef __EA_DAY_VIEW_EVENT_FACTORY_H__
+#define __EA_DAY_VIEW_EVENT_FACTORY_H__
+
+#include <atk/atkobjectfactory.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define EA_TYPE_DAY_VIEW_EVENT_FACTORY                 (ea_day_view_event_factory_get_type ())
+#define EA_DAY_VIEW_EVENT_FACTORY(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_DAY_VIEW_EVENT_FACTORY, EaDayViewEventFactory))
+#define EA_DAY_VIEW_EVENT_FACTORY_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_DAY_VIEW_EVENT_FACTORY, EaDayViewEventFactoryClass))
+#define EA_IS_DAY_VIEW_EVENT_FACTORY(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_DAY_VIEW_EVENT_FACTORY))
+#define EA_IS_DAY_VIEW_EVENT_FACTORY_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_DAY_VIEW_EVENT_FACTORY))
+#define EA_DAY_VIEW_EVENT_FACTORY_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_DAY_VIEW_EVENT_FACTORY, EaDayViewEventFactoryClass))
+
+
+typedef struct _EaDayViewEventFactory              EaDayViewEventFactory;
+typedef struct _EaDayViewEventFactoryClass         EaDayViewEventFactoryClass;
+
+struct _EaDayViewEventFactory
+{
+  AtkObjectFactory parent;
+};
+
+struct _EaDayViewEventFactoryClass
+{
+  AtkObjectFactoryClass parent_class;
+};
+
+GType ea_day_view_event_factory_get_type(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __EA_DAY_VIEW_EVENT_FACTORY_H__ */
+
Index: calendar/ea-day-view-event.c
===================================================================
RCS file: calendar/ea-day-view-event.c
diff -N calendar/ea-day-view-event.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-day-view-event.c	16 Jul 2003 06:23:04 -0000
@@ -0,0 +1,285 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-day-view.c
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#include "ea-day-view-event.h"
+#include <gal/e-text/e-text.h>
+
+static void ea_day_view_event_class_init (EaDayViewEventClass *klass);
+
+static G_CONST_RETURN gchar* ea_day_view_event_get_name (AtkObject *accessible);
+static G_CONST_RETURN gchar* ea_day_view_event_get_description (AtkObject *accessible);
+static AtkObject* ea_day_view_event_get_parent (AtkObject *accessible);
+static AtkStateSet* ea_day_view_event_ref_state_set (AtkObject *accessible);
+static gint ea_day_view_event_get_index_in_parent (AtkObject *accessible);
+
+static void atk_component_interface_init (AtkComponentIface *iface);
+
+static void     ea_day_view_event_get_extents    (AtkComponent    *component,
+                                                  gint            *x,
+                                                  gint            *y,
+                                                  gint            *width,
+                                                  gint            *height,
+                                                  AtkCoordType    coord_type);
+
+static void ea_day_view_event_real_initialize    (AtkObject     *obj,
+                                                  gpointer      data);
+
+static gpointer impl_inherit_class = NULL;
+
+GType
+ea_day_view_event_get_type (void)
+{
+    static GType type = 0;
+
+    if (!type) {
+        static const GTypeInfo tinfo = {
+            sizeof (EaDayViewEventClass),
+            (GBaseInitFunc) NULL, /* base init */
+            (GBaseFinalizeFunc) NULL, /* base finalize */
+            (GClassInitFunc) ea_day_view_event_class_init, /* class init */
+            (GClassFinalizeFunc) NULL, /* class finalize */
+            NULL, /* class data */
+            sizeof (EaDayViewEvent), /* instance size */
+            0, /* nb preallocs */
+            (GInstanceInitFunc) NULL, /* instance init */
+            NULL /* value table */
+        };
+
+        static const GInterfaceInfo atk_component_info = {
+            (GInterfaceInitFunc) atk_component_interface_init,
+            (GInterfaceFinalizeFunc) NULL,
+            NULL
+        };
+
+        type = g_type_register_static (ATK_TYPE_GOBJECT_ACCESSIBLE,
+                                       "EaDayViewEvent", &tinfo, 0);
+        g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
+                                     &atk_component_info);
+    }
+
+    return type;
+}
+
+static void
+ea_day_view_event_class_init (EaDayViewEventClass *klass)
+{
+    AtkObjectFactory *factory;
+    AtkRegistry *default_registry;
+    GType impl_inherit_type;
+    AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
+
+    default_registry = atk_get_default_registry ();
+    factory = atk_registry_get_factory (default_registry,
+                                        E_TYPE_TEXT);
+    impl_inherit_type = atk_object_factory_get_accessible_type (factory);
+    impl_inherit_class = g_type_class_ref (impl_inherit_type);
+
+    /*
+      klass->notify_gtk = ea_day_view_event_real_notify_gtk;
+      klass->focus_gtk = ea_day_view_event_real_focus_gtk;
+
+      accessible_class->connect_widget_destroyed = ea_day_view_event_connect_widget_destroyed;
+    */
+
+    class->get_name = ea_day_view_event_get_name;
+    class->get_description = ea_day_view_event_get_description;
+    class->get_parent = ea_day_view_event_get_parent;
+    /*
+      class->ref_state_set = ea_day_view_event_ref_state_set;
+    */
+    class->get_index_in_parent = ea_day_view_event_get_index_in_parent;
+    class->initialize = ea_day_view_event_real_initialize;
+}
+
+static void
+ea_day_view_event_real_initialize (AtkObject *obj,
+                                   gpointer  data)
+{
+    EaDayViewEvent *ea_event;
+
+    ea_event = EA_DAY_VIEW_EVENT (obj);
+    ea_event->event = (EDayViewEvent *) (data);
+
+    /* initialize the accessible object of e_text with
+     * the e_text of current event
+     */
+    ATK_OBJECT_CLASS (impl_inherit_class)->initialize (obj,
+                                                       ea_event->event->canvas_item);
+
+    obj->role = ATK_ROLE_TEXT;
+}
+
+AtkObject* 
+ea_day_view_event_new (GObject *obj)
+{
+    EDayViewEvent *event;
+    AtkObject *object;
+
+    event = (EDayViewEvent *)obj;
+    object = ATK_OBJECT(g_object_new (EA_TYPE_DAY_VIEW_EVENT, NULL));
+    atk_object_initialize (object, event);
+
+    printf ("a day view event created\n");
+
+    return object;
+}
+
+static G_CONST_RETURN gchar*
+ea_day_view_event_get_name (AtkObject *accessible)
+{
+    if (!accessible->name)
+        atk_object_set_name(accessible, "day view event");
+    return accessible->name;
+}
+
+static G_CONST_RETURN gchar*
+ea_day_view_event_get_description (AtkObject *accessible)
+{
+    if (!accessible->description)
+        atk_object_set_description(accessible,
+                                   "day view event");
+    return accessible->description;
+}
+
+static AtkObject* 
+ea_day_view_event_get_parent (AtkObject *accessible)
+{
+    AtkGObjectAccessible *atk_gobj;
+    GObject *g_obj;
+    GnomeCanvasItem *canvas_item;
+    GnomeCanvas *canvas;
+    GtkWidget *day_view;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW_EVENT (accessible), NULL);
+    atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible);
+
+    g_obj = atk_gobject_accessible_get_object (atk_gobj);
+    if (g_obj == NULL)
+        /* Object is defunct */
+        return NULL;
+
+    /* canvas_item is the e_text for the event */
+    /* canvas_item->canvas is the ECanvas for day view */
+    /* parent of canvas_item->canvas is the EDayView, our target widget */
+    canvas_item = GNOME_CANVAS_ITEM (g_obj);
+    canvas = canvas_item->canvas;
+    day_view = gtk_widget_get_parent (GTK_WIDGET(canvas));
+    if (!E_IS_DAY_VIEW (day_view))
+        return NULL;
+
+    return gtk_widget_get_accessible (day_view);
+}
+
+static AtkStateSet*
+ea_day_view_event_ref_state_set (AtkObject *accessible)
+{
+    return ATK_OBJECT_CLASS (impl_inherit_class)->ref_state_set (accessible);
+}
+
+static gint
+ea_day_view_event_get_index_in_parent (AtkObject *accessible)
+{
+    GtkAccessible *ea_parent;
+    EaDayViewEvent *ea_event;
+    EDayView *day_view;
+
+	EDayViewEvent *event;
+	gint day, event_num;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW_EVENT (accessible), -1);
+    ea_event = EA_DAY_VIEW_EVENT (accessible);
+    if (!ea_event->event)
+        return -1;
+
+    ea_parent = GTK_ACCESSIBLE (atk_object_get_parent (accessible));
+    if (!ea_parent)
+        return -1;
+
+    day_view = E_DAY_VIEW (ea_parent->widget);
+
+    /* the long event comes first in the order */
+	for (event_num = day_view->long_events->len - 1; event_num >= 0;
+	     event_num--) {
+		event = &g_array_index (day_view->long_events,
+                                EDayViewEvent, event_num);
+        if (ea_event->event == event)
+            return event_num;
+
+	}
+
+	for (day = 0; day < day_view->days_shown; day++) {
+		for (event_num = day_view->events[day]->len - 1; event_num >= 0;
+		     event_num--) {
+			event = &g_array_index (day_view->events[day],
+                                    EDayViewEvent, event_num);
+            if (ea_event->event == event)
+                return day_view->long_events->len + event_num;
+        }
+    }
+
+    return -1;
+}
+
+static void 
+atk_component_interface_init (AtkComponentIface *iface)
+{
+    g_return_if_fail (iface != NULL);
+
+    /*
+     * Use default implementation for contains and get_position
+     */
+
+    /*
+      iface->add_focus_handler = ea_day_view_event_add_focus_handler;
+    */
+    iface->get_extents = ea_day_view_event_get_extents;
+
+    /*
+      iface->get_size = ea_day_view_event_get_size;
+      iface->get_layer = ea_day_view_event_get_layer;
+      iface->grab_focus = ea_day_view_event_grab_focus;
+      iface->remove_focus_handler = ea_day_view_event_remove_focus_handler;
+      iface->set_extents = ea_day_view_event_set_extents;
+      iface->set_position = ea_day_view_event_set_position;
+      iface->set_size = ea_day_view_event_set_size;
+    */
+}
+
+static void 
+ea_day_view_event_get_extents (AtkComponent   *component,
+                               gint           *x,
+                               gint           *y,
+                               gint           *width,
+                               gint           *height,
+                               AtkCoordType   coord_type)
+{
+    AtkComponentIface *atk_component_iface =
+        g_type_interface_peek (impl_inherit_class, ATK_TYPE_COMPONENT);
+
+    if (atk_component_iface)
+        atk_component_iface->get_extents(component, x, y, width, height,
+                                         coord_type);
+
+}
Index: calendar/ea-day-view-event.h
===================================================================
RCS file: calendar/ea-day-view-event.h
diff -N calendar/ea-day-view-event.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-day-view-event.h	16 Jul 2003 06:23:04 -0000
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-day-view-event.h
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#ifndef __EA_DAY_VIEW_EVENT_H__
+#define __EA_DAY_VIEW_EVENT_H__
+
+#include <gtk/gtkaccessible.h>
+#include "ea-day-view.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define EA_TYPE_DAY_VIEW_EVENT                   (ea_day_view_event_get_type ())
+#define EA_DAY_VIEW_EVENT(obj)                   (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_DAY_VIEW_EVENT, EaDayViewEvent))
+#define EA_DAY_VIEW_EVENT_CLASS(klass)           (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_DAY_VIEW_EVENT, EaDayViewEventClass))
+#define EA_IS_DAY_VIEW_EVENT(obj)                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_DAY_VIEW_EVENT))
+#define EA_IS_DAY_VIEW_EVENT_CLASS(klass)        (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_DAY_VIEW_EVENT))
+#define EA_DAY_VIEW_EVENT_GET_CLASS(obj)         (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_DAY_VIEW_EVENT, EaDayViewEventClass))
+
+typedef struct _EaDayViewEvent                   EaDayViewEvent;
+typedef struct _EaDayViewEventClass              EaDayViewEventClass;
+
+struct _EaDayViewEvent
+{
+    AtkGObjectAccessible parent;
+    EDayViewEvent *event;
+};
+
+GType ea_day_view_event_get_type (void);
+
+struct _EaDayViewEventClass
+{
+    AtkGObjectAccessibleClass parent_class;
+};
+
+AtkObject* ea_day_view_event_new (GObject *gobject);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __EA_DAY_VIEW_EVENT_H__ */
Index: calendar/ea-day-view.c
===================================================================
RCS file: calendar/ea-day-view.c
diff -N calendar/ea-day-view.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-day-view.c	16 Jul 2003 06:23:05 -0000
@@ -0,0 +1,380 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-day-view.c
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#include "ea-day-view.h"
+
+static void ea_day_view_class_init (EaDayViewClass *klass);
+
+static G_CONST_RETURN gchar* ea_day_view_get_name (AtkObject *accessible);
+static G_CONST_RETURN gchar* ea_day_view_get_description (AtkObject *accessible);
+static AtkObject* ea_day_view_get_parent (AtkObject *accessible);
+static gint         ea_day_view_get_n_children      (AtkObject          *obj);
+static AtkObject*   ea_day_view_ref_child           (AtkObject          *obj,
+                                                     gint               i);
+static AtkStateSet* ea_day_view_ref_state_set (AtkObject *accessible);
+static gint ea_day_view_get_index_in_parent (AtkObject *accessible);
+
+static void atk_component_interface_init (AtkComponentIface *iface);
+
+static void     ea_day_view_get_extents    (AtkComponent    *component,
+                                            gint            *x,
+                                            gint            *y,
+                                            gint            *width,
+                                            gint            *height,
+                                            AtkCoordType    coord_type);
+
+static void ea_day_view_real_initialize    (AtkObject     *obj,
+                                            gpointer      data);
+
+static gpointer parent_class = NULL;
+
+GType
+ea_day_view_get_type (void)
+{
+    static GType type = 0;
+    AtkObjectFactory *factory;
+    GTypeQuery query;
+    GType derived_atk_type;
+
+    if (!type) {
+        static const GTypeInfo tinfo = {
+            sizeof (EaDayViewClass),
+            (GBaseInitFunc) NULL, /* base init */
+            (GBaseFinalizeFunc) NULL, /* base finalize */
+            (GClassInitFunc) ea_day_view_class_init, /* class init */
+            (GClassFinalizeFunc) NULL, /* class finalize */
+            NULL, /* class data */
+            sizeof (EaDayView), /* instance size */
+            0, /* nb preallocs */
+            (GInstanceInitFunc) NULL, /* instance init */
+            NULL /* value table */
+        };
+
+        static const GInterfaceInfo atk_component_info = {
+            (GInterfaceInitFunc) atk_component_interface_init,
+            (GInterfaceFinalizeFunc) NULL,
+            NULL
+        };
+
+        /*
+         * Figure out the size of the class and instance
+         * we are run-time deriving from (GailWidget, in this case)
+         */
+
+        factory = atk_registry_get_factory (atk_get_default_registry (),
+                                            GTK_TYPE_WIDGET);
+        derived_atk_type = atk_object_factory_get_accessible_type (factory);
+        g_type_query (derived_atk_type, &query);
+
+        tinfo.class_size = query.class_size;
+        tinfo.instance_size = query.instance_size;
+
+        type = g_type_register_static (derived_atk_type,
+                                       "EaDayView", &tinfo, 0);
+
+
+        g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
+                                     &atk_component_info);
+    }
+
+    return type;
+}
+
+static void
+ea_day_view_class_init (EaDayViewClass *klass)
+{
+    AtkObjectFactory *factory;
+    AtkRegistry *default_registry;
+    AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
+
+    parent_class = g_type_class_peek_parent (klass);
+
+    /*
+      klass->notify_gtk = ea_day_view_real_notify_gtk;
+      klass->focus_gtk = ea_day_view_real_focus_gtk;
+
+      accessible_class->connect_widget_destroyed = ea_day_view_connect_widget_destroyed;
+    */
+
+    class->get_name = ea_day_view_get_name;
+    class->get_description = ea_day_view_get_description;
+    class->ref_state_set = ea_day_view_ref_state_set;
+
+    class->get_parent = ea_day_view_get_parent;
+    class->get_index_in_parent = ea_day_view_get_index_in_parent;
+    class->get_n_children = ea_day_view_get_n_children;
+    class->ref_child = ea_day_view_ref_child;
+
+    class->initialize = ea_day_view_real_initialize;
+}
+
+/**
+ * This function  specifies the GtkWidget for which the EaDayView was created 
+ * and specifies a handler to be called when the GtkWidget is destroyed.
+ **/
+static void 
+ea_day_view_real_initialize (AtkObject *obj,
+                             gpointer  data)
+{
+    GtkAccessible *accessible;
+    GtkWidget *widget;
+
+    g_return_if_fail (GTK_IS_WIDGET (data));
+
+    widget = GTK_WIDGET (data);
+
+    accessible = GTK_ACCESSIBLE (obj);
+    accessible->widget = widget;
+    gtk_accessible_connect_widget_destroyed (accessible);
+    /*
+      g_signal_connect_after (widget,
+      "focus-in-event",
+      G_CALLBACK (ea_day_view_focus_gtk),
+      NULL);
+      g_signal_connect_after (widget,
+      "focus-out-event",
+      G_CALLBACK (ea_day_view_focus_gtk),
+      NULL);
+      g_signal_connect (widget,
+      "notify",
+      G_CALLBACK (ea_day_view_notify_gtk),
+      widget);
+      atk_component_add_focus_handler (ATK_COMPONENT (accessible),
+      ea_day_view_focus_event);
+    */
+    /*
+     * Add signal handlers for GTK signals required to support property changes
+     */
+    /*
+      g_signal_connect (widget,
+      "map",
+      G_CALLBACK (ea_day_view_map_gtk),
+      NULL);
+      g_signal_connect (widget,
+      "unmap",
+      G_CALLBACK (ea_day_view_map_gtk),
+      NULL);
+      g_object_set_data (G_OBJECT (obj), "atk-component-layer",
+      GINT_TO_POINTER (ATK_LAYER_WIDGET));
+    */
+    obj->role = ATK_ROLE_CANVAS;
+}
+
+AtkObject* 
+ea_day_view_new (GtkWidget *widget)
+{
+    GObject *object;
+    AtkObject *accessible;
+
+    g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+    object = g_object_new (EA_TYPE_DAY_VIEW, NULL);
+
+    accessible = ATK_OBJECT (object);
+    atk_object_initialize (accessible, widget);
+
+    printf ("EA-day-view created\n");
+
+    return accessible;
+}
+
+static G_CONST_RETURN gchar*
+ea_day_view_get_name (AtkObject *accessible)
+{
+    EDayView *day_view;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL);
+
+    day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget);
+
+    if (!accessible->name) {
+        GnomeCalendarViewType view_type;
+
+        view_type = gnome_calendar_get_view (day_view->calendar);
+
+        if (view_type == GNOME_CAL_WORK_WEEK_VIEW)
+            atk_object_set_name(accessible, "work week view");
+        else
+            atk_object_set_name(accessible, "day view view");
+    }
+    return accessible->name;
+}
+
+static G_CONST_RETURN gchar*
+ea_day_view_get_description (AtkObject *accessible)
+{
+    EDayView *day_view;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL);
+
+    day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget);
+
+    if (!accessible->description) {
+        GnomeCalendarViewType view_type;
+
+        view_type = gnome_calendar_get_view (day_view->calendar);
+
+        if (view_type == GNOME_CAL_WORK_WEEK_VIEW)
+            atk_object_set_description(accessible,
+                                       "calendar view for a work week");
+        else
+            atk_object_set_description(accessible,
+                                       "calendar view for one or more days");
+    }
+    return accessible->description;
+}
+
+static AtkObject* 
+ea_day_view_get_parent (AtkObject *accessible)
+{
+    EDayView *day_view;
+    GnomeCalendar *gnomeCalendar;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL);
+
+    day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget);
+
+    gnomeCalendar = day_view->calendar;
+
+    return gtk_widget_get_accessible (GTK_WIDGET(gnomeCalendar));
+}
+
+static gint
+ea_day_view_get_n_children (AtkObject *accessible)
+{
+    EDayView *day_view;
+	gint day;
+    gint child_num = 0;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), -1);
+
+    day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget);
+
+    child_num += day_view->long_events->len;
+
+	for (day = 0; day < day_view->days_shown; day++) {
+		child_num += day_view->events[day]->len;
+    }
+
+    return child_num;
+}
+
+static AtkObject *
+ea_day_view_ref_child (AtkObject *accessible, gint i)
+{
+    EDayView *day_view;
+    gint child_num;
+	gint day;
+    AtkObject *atk_object = NULL;
+	EDayViewEvent *event = NULL;
+
+    g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL);
+
+    child_num = atk_object_get_n_accessible_children (accessible);
+    if (child_num <= 0 || i < 0 || i >= child_num)
+        return NULL;
+
+    day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget);
+
+    /* a long event */
+    if (i < day_view->long_events->len) {
+        event = &g_array_index (day_view->long_events,
+                                EDayViewEvent, i);
+	}
+    else {
+        i -= day_view->long_events->len;
+        day = 0;
+        while (i >= day_view->events[day]->len) {
+            i -= day_view->events[day]->len;
+            ++day;
+        }
+
+        event = &g_array_index (day_view->events[day],
+                                EDayViewEvent, i);
+    }
+    printf ("child event for index=%d is %p\n", i, event);
+    if (event) {
+        /* event is not created as gobject???!!!
+           atk_object = atk_gobject_accessible_for_object (G_OBJECT (event));
+        */
+        atk_object = ea_day_view_event_new (event);
+        g_object_ref (atk_object);
+    }
+    return atk_object;
+}
+
+static AtkStateSet*
+ea_day_view_ref_state_set (AtkObject *accessible)
+{
+    return ATK_OBJECT_CLASS (parent_class)->ref_state_set (accessible);
+}
+
+static gint
+ea_day_view_get_index_in_parent (AtkObject *accessible)
+{
+    return 0;
+}
+
+static void 
+atk_component_interface_init (AtkComponentIface *iface)
+{
+    g_return_if_fail (iface != NULL);
+
+    /*
+     * Use default implementation for contains and get_position
+     */
+
+    /*
+      iface->add_focus_handler = ea_day_view_add_focus_handler;
+    */
+    iface->get_extents = ea_day_view_get_extents;
+
+    /*
+      iface->get_size = ea_day_view_get_size;
+      iface->get_layer = ea_day_view_get_layer;
+      iface->grab_focus = ea_day_view_grab_focus;
+      iface->remove_focus_handler = ea_day_view_remove_focus_handler;
+      iface->set_extents = ea_day_view_set_extents;
+      iface->set_position = ea_day_view_set_position;
+      iface->set_size = ea_day_view_set_size;
+    */
+}
+
+static void 
+ea_day_view_get_extents (AtkComponent   *component,
+                         gint           *x,
+                         gint           *y,
+                         gint           *width,
+                         gint           *height,
+                         AtkCoordType   coord_type)
+{
+    AtkComponentIface *atk_component_iface =
+        g_type_interface_peek (parent_class, ATK_TYPE_COMPONENT);
+
+    if (atk_component_iface)
+        atk_component_iface->get_extents(component, x, y, width, height,
+                                         coord_type);
+
+}
Index: calendar/ea-day-view.h
===================================================================
RCS file: calendar/ea-day-view.h
diff -N calendar/ea-day-view.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-day-view.h	16 Jul 2003 06:23:05 -0000
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-day-view.h
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#ifndef __EA_DAY_VIEW_H__
+#define __EA_DAY_VIEW_H__
+
+#include <gtk/gtkaccessible.h>
+#include "e-day-view.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define EA_TYPE_DAY_VIEW                     (ea_day_view_get_type ())
+#define EA_DAY_VIEW(obj)                     (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_DAY_VIEW, EaDayView))
+#define EA_DAY_VIEW_CLASS(klass)             (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_DAY_VIEW, EaDayViewClass))
+#define EA_IS_DAY_VIEW(obj)                  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_DAY_VIEW))
+#define EA_IS_DAY_VIEW_CLASS(klass)          (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_DAY_VIEW))
+#define EA_DAY_VIEW_GET_CLASS(obj)           (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_DAY_VIEW, EaDayViewClass))
+
+typedef struct _EaDayView                   EaDayView;
+typedef struct _EaDayViewClass              EaDayViewClass;
+
+struct _EaDayView
+{
+    GtkAccessible parent;
+};
+
+GType ea_day_view_get_type (void);
+
+struct _EaDayViewClass
+{
+    GtkAccessibleClass parent_class;
+
+    /*
+     * Signal handler for notify signal on GTK widget
+     */
+    void (*notify_gtk)                (GObject             *object,
+                                       GParamSpec          *pspec);
+    /*
+     * Signal handler for focus_in_event and focus_out_event signal
+     * on GTK widget 
+     */
+    gboolean (*focus_gtk)              (GtkWidget           *widget,
+                                        GdkEventFocus       *event);
+
+};
+
+AtkObject*     ea_day_view_new         (GtkWidget       *widget);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __EA_DAY_VIEW_H__ */
Index: calendar/ea-gnome-calendar.c
===================================================================
RCS file: calendar/ea-gnome-calendar.c
diff -N calendar/ea-gnome-calendar.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-gnome-calendar.c	16 Jul 2003 06:23:05 -0000
@@ -0,0 +1,324 @@
+ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-gnome-calendar.c
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#include "ea-gnome-calendar.h"
+
+static void ea_gnome_calendar_class_init (EaGnomeCalendarClass *klass);
+
+static G_CONST_RETURN gchar* ea_gnome_calendar_get_name (AtkObject *accessible);
+static G_CONST_RETURN gchar* ea_gnome_calendar_get_description (AtkObject *accessible);
+static AtkObject* ea_gnome_calendar_get_parent (AtkObject *accessible);
+static gint ea_gnome_get_n_children (AtkObject* obj);
+static AtkObject * ea_gnome_ref_child (AtkObject *obj, gint i);
+
+static AtkStateSet* ea_gnome_calendar_ref_state_set (AtkObject *accessible);
+static gint ea_gnome_calendar_get_index_in_parent (AtkObject *accessible);
+
+static void atk_component_interface_init (AtkComponentIface *iface);
+
+static void ea_gnome_calendar_get_extents (AtkComponent    *component,
+                                           gint            *x,
+                                           gint            *y,
+                                           gint            *width,
+                                           gint            *height,
+                                           AtkCoordType    coord_type);
+
+static void ea_gnome_calendar_real_initialize (AtkObject     *obj,
+                                               gpointer      data);
+
+static gpointer parent_class = NULL;
+
+GType
+ea_gnome_calendar_get_type (void)
+{
+    static GType type = 0;
+    AtkObjectFactory *factory;
+    GTypeQuery query;
+    GType derived_atk_type;
+
+    if (!type) {
+        static const GTypeInfo tinfo = {
+            sizeof (EaGnomeCalendarClass),
+            (GBaseInitFunc) NULL, /* base init */
+            (GBaseFinalizeFunc) NULL, /* base finalize */
+            (GClassInitFunc) ea_gnome_calendar_class_init, /* class init */
+            (GClassFinalizeFunc) NULL, /* class finalize */
+            NULL, /* class data */
+            sizeof (EaGnomeCalendar), /* instance size */
+            0, /* nb preallocs */
+            (GInstanceInitFunc) NULL, /* instance init */
+            NULL /* value table */
+        };
+
+        static const GInterfaceInfo atk_component_info = {
+            (GInterfaceInitFunc) atk_component_interface_init,
+            (GInterfaceFinalizeFunc) NULL,
+            NULL
+        };
+
+        /*
+         * Figure out the size of the class and instance
+         * we are run-time deriving from (GailWidget, in this case)
+         */
+
+        factory = atk_registry_get_factory (atk_get_default_registry (),
+                                            GTK_TYPE_WIDGET);
+        derived_atk_type = atk_object_factory_get_accessible_type (factory);
+        g_type_query (derived_atk_type, &query);
+        tinfo.class_size = query.class_size;
+        tinfo.instance_size = query.instance_size;
+
+        type = g_type_register_static (derived_atk_type,
+                                       "EaGnomeCalendar", &tinfo, 0);
+
+
+        g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
+                                     &atk_component_info);
+    }
+
+    return type;
+}
+
+static void
+ea_gnome_calendar_class_init (EaGnomeCalendarClass *klass)
+{
+    AtkObjectFactory *factory;
+    AtkRegistry *default_registry;
+    AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
+
+    parent_class = g_type_class_peek_parent (klass);
+
+    /*
+      klass->notify_gtk = ea_gnome_calendar_real_notify_gtk;
+      klass->focus_gtk = ea_gnome_calendar_real_focus_gtk;
+
+      accessible_class->connect_widget_destroyed =
+      ea_gnome_calendar_connect_widget_destroyed;
+    */
+
+    class->get_name = ea_gnome_calendar_get_name;
+    class->get_description = ea_gnome_calendar_get_description;
+
+    class->get_parent = ea_gnome_calendar_get_parent;
+    class->get_index_in_parent = ea_gnome_calendar_get_index_in_parent;
+    class->get_n_children = ea_gnome_get_n_children;
+    class->ref_child = ea_gnome_ref_child;
+
+    class->ref_state_set = ea_gnome_calendar_ref_state_set;
+    class->initialize = ea_gnome_calendar_real_initialize;
+}
+
+/**
+ * This function  specifies the GtkWidget for which the EaGnomeCalendar
+ * was created and specifies a handler to be called when the GtkWidget is
+ * destroyed.
+ **/
+static void 
+ea_gnome_calendar_real_initialize (AtkObject *obj,
+                                   gpointer  data)
+{
+    GtkAccessible *accessible;
+    GtkWidget *widget;
+
+    g_return_if_fail (GTK_IS_WIDGET (data));
+
+    widget = GTK_WIDGET (data);
+
+    accessible = GTK_ACCESSIBLE (obj);
+    accessible->widget = widget;
+    gtk_accessible_connect_widget_destroyed (accessible);
+    /*
+      g_signal_connect_after (widget,
+      "focus-in-event",
+      G_CALLBACK (ea_gnome_calendar_focus_gtk),
+      NULL);
+      g_signal_connect_after (widget,
+      "focus-out-event",
+      G_CALLBACK (ea_gnome_calendar_focus_gtk),
+      NULL);
+      g_signal_connect (widget,
+      "notify",
+      G_CALLBACK (ea_gnome_calendar_notify_gtk),
+      widget);
+      atk_component_add_focus_handler (ATK_COMPONENT (accessible),
+      ea_gnome_calendar_focus_event);
+    */
+    /*
+     * Add signal handlers for GTK signals required to support property changes
+     */
+    /*
+      g_signal_connect (widget,
+      "map",
+      G_CALLBACK (ea_gnome_calendar_map_gtk),
+      NULL);
+      g_signal_connect (widget,
+      "unmap",
+      G_CALLBACK (ea_gnome_calendar_map_gtk),
+      NULL);
+      g_object_set_data (G_OBJECT (obj), "atk-component-layer",
+      GINT_TO_POINTER (ATK_LAYER_WIDGET));
+    */
+    obj->role = ATK_ROLE_FILLER;
+}
+
+AtkObject* 
+ea_gnome_calendar_new (GtkWidget *widget)
+{
+    GObject *object;
+    AtkObject *accessible;
+
+    g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+    object = g_object_new (EA_TYPE_GNOME_CALENDAR, NULL);
+
+    accessible = ATK_OBJECT (object);
+    atk_object_initialize (accessible, widget);
+
+    printf ("EA-gnome-calendar created\n");
+
+    return accessible;
+}
+
+static G_CONST_RETURN gchar*
+ea_gnome_calendar_get_name (AtkObject *accessible)
+{
+    if (!accessible->name)
+        atk_object_set_name(accessible, "Gnome Calendar");
+    return accessible->name;
+}
+
+static G_CONST_RETURN gchar*
+ea_gnome_calendar_get_description (AtkObject *accessible)
+{
+    if (!accessible->description)
+        atk_object_set_description(accessible,
+                                   "Gnome Calendar");
+    return accessible->description;
+}
+
+static AtkObject* 
+ea_gnome_calendar_get_parent (AtkObject *accessible)
+{
+    return ATK_OBJECT_CLASS (parent_class)->get_parent (accessible);
+}
+
+static gint
+ea_gnome_calendar_get_index_in_parent (AtkObject *accessible)
+{
+    return ATK_OBJECT_CLASS (parent_class)->get_index_in_parent (accessible);
+}
+
+static gint
+ea_gnome_get_n_children (AtkObject* obj)
+{
+    g_return_val_if_fail (EA_IS_GNOME_CALENDAR (obj), 0);
+
+    return 3;
+}
+
+static AtkObject *
+ea_gnome_ref_child (AtkObject *obj, gint i)
+{
+    AtkObject * child = NULL;
+    GnomeCalendar * calendarWidget;
+    GtkWidget *childWidget;
+
+    g_return_val_if_fail (EA_IS_GNOME_CALENDAR (obj), NULL);
+    if (i < 0 || i >2 )
+        return NULL;
+
+    calendarWidget = GTK_ACCESSIBLE (obj)->widget;
+
+    switch (i) {
+    case 0:
+        /* for the day/week view */
+        childWidget = gnome_calendar_get_current_view_widget (calendarWidget);
+        child = gtk_widget_get_accessible (childWidget);
+        atk_object_set_parent (child, obj);
+        break;
+    case 1:
+        /* for calendar */
+        childWidget = gnome_calendar_get_e_calendar_widget (calendarWidget);
+        child = gtk_widget_get_accessible (childWidget);
+        break;
+    case 2:
+        /* for todo list */
+        childWidget = gnome_calendar_get_task_pad (calendarWidget);
+        child = gtk_widget_get_accessible (childWidget);
+        break;
+    default:
+        break;
+    }
+    if (child)
+        g_object_ref(child);
+    return child;
+}
+
+static AtkStateSet*
+ea_gnome_calendar_ref_state_set (AtkObject *accessible)
+{
+    return ATK_OBJECT_CLASS (parent_class)->ref_state_set (accessible);
+}
+
+static void 
+atk_component_interface_init (AtkComponentIface *iface)
+{
+    g_return_if_fail (iface != NULL);
+
+    /*
+     * Use default implementation for contains and get_position
+     */
+
+    /*
+      iface->add_focus_handler = ea_gnome_calendar_add_focus_handler;
+    */
+    iface->get_extents = ea_gnome_calendar_get_extents;
+
+    /*
+      iface->get_size = ea_gnome_calendar_get_size;
+      iface->get_layer = ea_gnome_calendar_get_layer;
+      iface->grab_focus = ea_gnome_calendar_grab_focus;
+      iface->remove_focus_handler = ea_gnome_calendar_remove_focus_handler;
+      iface->set_extents = ea_gnome_calendar_set_extents;
+      iface->set_position = ea_gnome_calendar_set_position;
+      iface->set_size = ea_gnome_calendar_set_size;
+    */
+}
+
+static void 
+ea_gnome_calendar_get_extents (AtkComponent   *component,
+                               gint           *x,
+                               gint           *y,
+                               gint           *width,
+                               gint           *height,
+                               AtkCoordType   coord_type)
+{
+    AtkComponentIface *atk_component_iface =
+        g_type_interface_peek (parent_class, ATK_TYPE_COMPONENT);
+
+    if (atk_component_iface)
+        atk_component_iface->get_extents(component, x, y, width, height, coord_type);
+
+}
Index: calendar/ea-gnome-calendar.h
===================================================================
RCS file: calendar/ea-gnome-calendar.h
diff -N calendar/ea-gnome-calendar.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ calendar/ea-gnome-calendar.h	16 Jul 2003 06:23:05 -0000
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* Evolution Accessibility: ea-gnome-calendar.h
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003
+ *
+ */
+
+#ifndef __EA_GNOME_CALENDAR_H__
+#define __EA_GNOME_CALENDAR_H__
+
+#include <gtk/gtkaccessible.h>
+#include "gnome-cal.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define EA_TYPE_GNOME_CALENDAR            (ea_gnome_calendar_get_type ())
+#define EA_GNOME_CALENDAR(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_GNOME_CALENDAR, EaGnomeCalendar))
+#define EA_GNOME_CALENDAR_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_GNOME_CALENDAR, EaGnomeCalendarClass))
+#define EA_IS_GNOME_CALENDAR(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_GNOME_CALENDAR))
+#define EA_IS_GNOME_CALENDAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_GNOME_CALENDAR))
+#define EA_GNOME_CALENDAR_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_GNOME_CALENDAR, EaGnomeCalendarClass))
+
+typedef struct _EaGnomeCalendar                   EaGnomeCalendar;
+typedef struct _EaGnomeCalendarClass              EaGnomeCalendarClass;
+
+struct _EaGnomeCalendar
+{
+    GtkAccessible parent;
+};
+
+GType ea_gnome_calendar_get_type (void);
+
+struct _EaGnomeCalendarClass
+{
+    GtkAccessibleClass parent_class;
+
+    /*
+     * Signal handler for notify signal on GTK widget
+     */
+    void (*notify_gtk)                (GObject             *object,
+                                       GParamSpec          *pspec);
+    /*
+     * Signal handler for focus_in_event and focus_out_event signal on
+     * GTK widget
+     */
+    gboolean (*focus_gtk)             (GtkWidget           *widget,
+                                       GdkEventFocus       *event);
+
+};
+
+AtkObject*     ea_gnome_calendar_new         (GtkWidget       *widget);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __EA_GNOME_CALENDAR_H__ */
Index: configure.in
===================================================================
RCS file: /cvs/gnome/evolution/configure.in,v
retrieving revision 1.589.2.1
diff -u -r1.589.2.1 configure.in
--- configure.in	26 Jun 2003 09:02:26 -0000	1.589.2.1
+++ configure.in	16 Jul 2003 06:37:21 -0000
@@ -1293,6 +1293,7 @@
 AC_OUTPUT([ po/Makefile.in
 Makefile
 a11y/Makefile
+a11y/calendar/Makefile
 addressbook/Makefile
 addressbook/gui/Makefile
 addressbook/gui/component/Makefile
