[Mono-dev] idea summary: Swing in Mono?...

BGB cr88192 at hotmail.com
Sat Feb 7 22:10:04 EST 2009


----- Original Message ----- 
From: "Jerry Maine" <crashfourit at gmail.com>
To: "BGB" <cr88192 at hotmail.com>
Sent: Sunday, February 08, 2009 12:44 PM
Subject: Re: [Mono-dev] idea summary: Swing in Mono?...


> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> BGB wrote:

<snip>

> Well, SWT, uses the native widgets it finds on the machine... gdi32 on
> windows... carbon or whatever its replacement on mac and gtk on
> linux/unix.
>
> We can keep the api close simularity to swing... or swt... would make
> it easier for people to learn it. In addition using native widgets....
> on all machines.... will make .net applications look native for the
> machine... and be portable. That and use .net features like delgets
> and events.
>
> And on unsuported platforms we can have a back up drawing of the widgets.
>

well, this works partly, but then there is a problem:
the fact that Swing draws its own widgets is a major blessing as well as a 
curse...

on the major UP side, the code can be made self-contained, and it is 
possible to have a very high level of control over HOW the widgets are drawn 
(this issue being critical in my case, and a major reason for why I draw my 
widgets custom, rather than using GDI).

to have just the API does little here...
it gives the native "look and feel", but costs severely in terms of control 
(AKA: you can create windows and buttons, but you have no control over how 
they are drawn, ...).


for some apps, it is critical that control be retained, and retention of the 
native look and feel is of a low priority...

this depends on the app, where for example, with a plain UI-app, likely the 
retention of native look and feel is the priority, and for another app, such 
as a CAD package or a 3D game/engine, ... control is the critical factor, 
and if there is not control (for example, the framework only uses native 
drawn widgets), then the framework is, simply, not usable... (this being why 
I feel it important that control be retained, and keep stressing the need 
for the ability to render-to-texture and similar...).

back to the examples:
consider, for example, that the UI is coupled with the objects existing in a 
3D scene, for example, a dialog may be "physically" linked to a 3D object, 
and the user input is not comming directly from the OS, but is rather going 
through the 3D world (the user might move the camera over to the control, 
and interact with buttons or sliders inside of the 3D environment).

a very simple example of this UI style could be seen in Doom 3, but it may 
make sense to allow further expanding on this approach to UI's (for example, 
in terms of 3D modeling software, more utility-based 3D worlds, ...).


so, as I see it, the ability to use the API in a custom manner (AKA: 
user-supplied Canvas) should be preserved at all costs (and is an app 
choice, at runtime, NOT a framework choice or library compile-time choice), 
however, the ability to use native widgets would also be a good thing as 
well...

so, my recomendation would be to implement (or port) Swing, but not just as 
the API, rather keeping all the internals as well (including, as the central 
matter, that it draws its own widgets).

then maybe the app can use SWT, GTK#, ... if it needs native widgets and 
control is a less central issue...





More information about the Mono-devel-list mailing list