Andy,
Having worked with SWT... from experience I can say the following things...
SWT is not extensible, you cannot subclass any class in SWT. That's because all classes have to be final since they wrap the existing toolkit widgets. In SWT the native widget gets instantiated by the java instance and the native widget handles all of the events and drawing. Therefore, no subclassing is even possible. How can you override something when the internals are being handled by something external to the object which was instantiated (as is the case with SWT)?
SWT is also *strictly* (I could say vehemently) single threaded... AppKit/gnustep-gui is not. Adopting an SWT-like architecture for gnustep-gui
would:
1) Reduce flexibility and
2) Reduce functionality
Neither of which is acceptable at all.
The best we can do is the same that either one of GNOME or KDE do and that is to provide themes that match the other very closely. Using native widgets is out of the question in most cases.
The only way I see using native widgets working is if the target environment provides a way to draw the widgets outside of instantiating the widget it self. That is to say... If we could use a function to draw a GNOME button, but then GNUstep would handle the events coming from that button.... that would be ideal.
Thanks, GC
Gregory Casamento -- Principal Consultant - OLC, Inc
# GNUstep Chief Maintainer