I like the motive of your design, and I want to push you further in fleshing out the implementation (especially the "filter" aspect). Let me see if I can summarize the rational behind the current implementation:
The primary difference between your suggestion and the current design is at what point simultaneous drivers are handled. Currently, the platform-specific implementation decides how to combine and dispatch events (the model being, it knows best), rather than a cross-platform system.
The Mac OS X driver receives all mouse and tablet events from JNI. It then subclasses ScreenTabletManager to handle the actual work of dispatching events.
The Windows driver only receives tablet data (no mouse data), so it has a slave driver for use in situations where there are no tablet events. The switching logic is Wintab-specific and wouldn't apply to the Mac OS X driver (but may be similar to the Linux driver).
The driver hierarchy is more of a tree:
Mac OS X Windows *nix Other
| | | |
CocoaDriver WinTabDriver XInputDriver |
| | | /
\______________\_____ _____/____________/
|
WacomWebPlugin (requires plugin, applet with custom html)
|
AWTMouseDriver (requires security access)
|
ComponentMouseDriver (if all else fails)
In this respect, we have a pseudo-2D hierarchy, where a platform-specific driver controls everything, otherwise we cycle through cross-platform fall-back drivers.
It doesn't really make sense to spend cycles on ComponentMouseDriver if we have an AWTMouseDriver, and it doesn't make sense to spend cycles on an AWTMouseDriver if we have a CocoaDriver...
That said, it does give less control to the developer/user if the decision is somehow made incorrectly.
And for multi-touch/multiple pointers, I would much rather come up with a really good solution that targets multi-touch/multiple pointers (jtablet 2.5? ;-)) in a sensible matter that fits with the Java model before adding it into the main project. Writing a GOOD api for multi-pointer/multi-touch applications is not a trivial task (especially when it's not supported by the operating system's GUI), but I think it'd be great to experiment with support (JTablet branch?) if we can come up with some solid use-cases first.
Marcello