About MiG Calendar

Add calendaring functionality to your Java applications.

With MiG Calendar you can, with very little effort, add any kind of time based visualizations to your application. You can create anything from full blown calendar applications, like Outlook or Apple's iCal, to TV-schedule or Flight Information applications. You can do all this with the same component configured in different ways.

What's new?

  • Full Visual JavaBean support. It is now possible to add the component to your IDE's component palette and by Drag&Drop add it to your project. Properties can be configured visually in any RAD enabled IDE such as netBeans, JFormDesigner, JBuilder X or JBuilder 2006
  • A number of simplifications when it comes to customizing different parts of the component
  • Full dynamic Tooltip support for Activities and the Date Area
  • Official Gantt-chart support where activities can be tied to one or many resources, which can be hierarchical
  • Increased performance in general and reduced memory footprint for activities. It is now possible to handle over 100.000 activities in memory while showing 10% of these simultaneously without any performance issues on a modern computer
  • Many bug fixes and minor enhancements


Flexible component structure. One component class handles all types of calendars. Everything that is visible is added through the use if layered Decorators. This makes it easy to migrate from one type to another, since it is just a matter of configuration. Even day/week/month/year views are just the same component configured differently.

Complete recurrence handling that supports all aspects of the iCalendar (RFC 2445) specification. This includes custom recurrences with including and excluding sub recurrences.

Date utility package included for handling advanced date and date range arithmetic such as iterating over time periods and rounding dates to boundaries.

Complete all around header support with mouse interaction effects and events. This includes automatic scrolling and corner fill components as well as the option to insert your custom components anywhere, even between the headers and the date area. The headers also has layered Decorator support so that you can write custom code to decorate them if the build in ones doesn't cover you use case.

Extensive event support. Almost any changes and interactions can be caught by listening for events. The AShape API can even create and fire custom events for any type of interaction.

Both an interface and implementing classes are included for handling the activities in the calendar. This makes it a simple thing to integrate your existing classes, or create new ones, with MiG Calendar.

The Theme Editor included makes it a snap to create your own calendar look and feels (i.e. skins) using a GUI. Though it is almost as easy to do the customizations by hand in code, either by changing the Theme properties or writing you own decorators, a GUI editor let you see the changes in real time.

The AShape API for defining and painting the shapes that makes out the activities shown in the calendar, are very flexible and totally decoupled from the calendar layout itself. This governs for an until now unseen flexibility creating your own type of calendars. The AShape API has support for animations (several included) and have a very flexible user interaction subsystem based on the Command pattern. AShapes can even be used outside the actual date area, for instance to make headers that animates text or graphics on mouse over.

The subsystem for importing, exporting and synchronizing the activities handled by the calendar is completely exchangeable and/or extendable. It would for instance be a simple thing to hook it up with a third party iCalendar parser to view and edit .ical files. A reference demo implementation of an .ical parser is included. There are also good Open Source parsers available.

The class hierarchy of MiG Calendar is simple yet very powerful. It is following the design patterns of Sun Microsystem's Swing API. The implementation packs a lot of customization without the need to subclass, but sub classing is still allowed and considered for in the design.

Any activity can be annotated with a Category. Categories are held in a multi-parent tree structure which ensures maximum flexibility. Column/Rows in a calendar can be filtered on an arbitrary number of categories which also can be combined with boolean operators. The columns/rows themselves even have built in tree structure support. This means that with a custom Decorator you can even create full blown interactive Gantt charts.

Features in short:

  • Many types of combinable AShapes including: FillAShape, DrawAShape, TextAShape, FilterAShape (E.g. Gaussian blur for shadows), ContaierAShape, JcomponentAShape, ImageAShape and SlicedImageAShape. Many AShapes can be combined into one tree structure
  • Layout type of classes for AShape, Grids, GridRows and Activities. Many layouts included and it is easy to make your own
  • Very flexible reference system that makes it possible to denote relationships like less than 50 pixels but never more than half of the available withThe reference system are used extensively throughout the component's different parts
  • Groupable date spinners that can represent different parts of a single date and/or time
  • XML delegates for all custom types included in the component makes saving information to XML using Java's built in encoder/decoder a one-liner
  • The component is runnable in a Java sandbox environment and can therefore be part of a very secure applet or application. It can be deployed on high security intranets as well as the public Internet, for instance using Java WebStart(tm)
  • A vast number of utility classes and helper objects are included

The component does not include any business logic such as activity editing or configuration tuning dialogs. The MiG Calendar component with added business and configuration logic will make an application.


DBConnect is a database connection plugin for the MiG Calendar Component. It loads and saves the calendar information to any standard SQL compliant database in a very efficient and flexible way. You won't have to change how you use MiG Calendar, the plugin just plugs in and does its job; you can even have your own properties on activities and they are handled as well.

DBConnect has many advanced features that reduce network traffic. This includes only loading new or changed data at any time, a built in connection pool and automatic redundant data coalescing.