Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: SWT History and Design Decisions (WAS: [platform-swt-dev] AWT Toolkit using SWT (was: From Swing to SWT))

Title: Message
Hey, I live to annoy ;)
 
That depends on the UI builder. Most javabean-based builders use live components to display what the UI will look like (as does mine). Some even have two modes: design and "live". "Live" mode basically lets you assemble and test a UI all at once. I'm not a big fan of live mode as I believe you're apt to get yourself into some unusual states if you edit on the fly.
 
Manipulating the objects live can be done with either representation. In my builder, I keep a "live" version of the UI offscreen to take snapshots. I suppose I could expose that, but I'm not sure. If I do, it'll be a low development priority for me. I found development in VAJ to be quite quick, and the compile-test cycle didn't feel like it got in the way. I've actually done live work with customers using it (and they loved the experience ;)
 
VAJ supported (and my builder supports) subclasses, but mine allows easy framework creation (you can create a GUI and when using it, add components into that GUI if you provide a containerDelegate specification in the BeanInfo.)
 
Bringing up the HCI/HF end of things is a great point, and where I feel that my pluggability can really be an advantage. A different set of plugins could be used to present a different user experience, as well as generate code (or resource files). Kinda like the way custom tags make it easier for non programmers to do JSPs (when programmers write the tag handlers), different manipulations could make a UI easier for non-programmers.
 
-- Scott
-----Original Message-----
From: platform-swt-dev-admin@xxxxxxxxxxx [mailto:platform-swt-dev-admin@xxxxxxxxxxx]On Behalf Of Christian Gruber
Sent: Monday, January 20, 2003 1:05 PM
To: platform-swt-dev@xxxxxxxxxxx
Subject: RE: SWT History and Design Decisions (WAS: [platform-swt-dev] AWT Toolkit using SWT (was: From Swing to SWT))

Mainly because with code-generation, you can’t actually be using the same objects in the builder as the user will see in the real-world, so you end up with a symbolic representation of the UI, and you have to compile-test-code-compile-test, etc.

 

With a standard, and highly configurable GUI and some state-saving mechanism (plain-text, xml, your-binary-format-du-jour, I don’t care), then you can have your builder actually manipulating the same objects live.  This drastically reduces the development cycle in my experience, having had to code the same app on Solaris/Motif, Windows, and NeXTSTEP back in the day.   The NeXTSTEP GUI was done and hooked into live working controllers while still in the Interface Builder app.  So could actually whiteboard with the stakeholders directly.  I cut weeks off of development, and what was produced had such a reduced maintenance cost compared to coded GUIs.

 

With that said, if you are transparently generating the GUI, and mandate no-tweaking (ie, use GUI Dev tool only) then you do get around the last point about code maintenance, as you should never have someone touch the code.  But using live instances during UI creation in my experience has an extreme shortening effect on the product development lifecycle.

 

You could still be flexible, if you needed a widget to be significantly different from the standard – but there, you subclassed the widget, did a proper development cycle on it, got it clean, THEN you gave it to the GUI builders.  It also allowed the GUI builders not to be coders, which meant you could have artists and people with Human Factors backgrounds but little programming actually doing what they’re supposed to.

 

It’s all preference at some level, people.  Let’s let this go.  Both are valid approaches with advantages and failings.  I just got annoyed by the “There are no advantages to non-generated GUIs” that Scott kept putting out there. ;)

 

Regards,

Christian.

 

 

-----Original Message-----
From: platform-swt-dev-admin@xxxxxxxxxxx [mailto:platform-swt-dev-admin@xxxxxxxxxxx] On Behalf Of Scott Stanchfield
Sent:
Monday, January 20, 2003 8:34 AM
To: platform-swt-dev@xxxxxxxxxxx
Subject: RE: SWT History and Design Decisions (WAS: [platform-swt-dev] AWT Toolkit using SWT (was: From Swing to SWT))

 

RE "Especially if the tool is one that generates code, I think you have to count on the fact that there will be a need to tweak it

Why a "need"? You're implying that if it generates resource files that noone will ever need to tweak them, countering your own first sentence...

 

What makes a resource file approach so darn powerful? Noone has yet to answer this...

 

AFAICS, a resource file based tool (or any that provides generated-resource/code round tripping) is much more prone to lock-in. Look at JBuilder -- they support code round tripping, but:

1.      If you modify the code, you must do it consistently with the way JBuilder expects to read the code.

2.      Because of #1, optimization and change of code-generation style is pretty much a dead issue

(Resource files severely restrict what the user can modify, and the code that builds the UI could change to be optimized. This is no different, IMHO, than placing rules on if/how generated code can be tweaked.)

 

I'm a compiler guy, and I liken this to modifying the ASM code generated by a compiler. Imagine what would happen if people tweaked the ASM code and the compiler had to re-read that code and figure out how to display it as "C" code. That's exactly the same thing as round-tripping souce for a GUI builder. If we wanted that support in a C compiler, people would be forced to tweak such that the compiler could figure out what C statements their code represented. Forget optimization, as most optimizations really mangle the ASM code, so much that there's really no way to reverse it back to C (or at least back to anything that even resembled the original C source).

 

That's why my design is pluggable (easy to do, thanks to Eclipse)... This allows different toolkits, persisted forms, visualizations, and styles of code generation (including round tripping source code if someone else really wants to write it.) If someone doesn't like the generated code, they can tweak the code generator, not the generated code.

 

RE: alternate patterns

I'm basing my tool around the style of visual programming used in VAJ (including connections). The way you use the connections depends on the pattern you want to use. In my book, Effective VisualAge for Java, I describe several patterns that can be used in the VCE, and there are many more (and many yet to come).

 

If connections won't support the pattern you want to use, then AFAICS, no available visual tool (that I'm aware of) will support that pattern, and it's time to rethink UI tools. Not a crazy thought at all; that will happen... I just don't see it happenning for a while. By being very pluggable, I hope to

 

From what I've heard of other tools in development, they're much more restrictive on how you can use them...

 

- Scott


Back to the top