Re: XP dialogs


Subject: Re: XP dialogs
From: Tom Briggs (tom@sane.com)
Date: Sun Feb 11 2001 - 00:38:04 CST


> I've mentioned before that I think that currently there's hardly any, if any
> at all, hope that we will ever support a new platform since it would be a
> too daunting task to create all dialogs *once again* for a new platform

   And rewriting our entire dialog system is somehow an easier, less daunting
task?

> (i.e. we're wasting time doing this over and over, and over again). We also
> have a maintenance nightmare that if any dialog gets changed for one
> platform we have to (currently) change it three times more for the other
> ones.

   I agree that this is a maintaince nightmare. I also know that it's the
only way to get the dialogs on each platform to look like they belong on
that platform.

> Which bring me to the issue, what your opinions are re. creating dialog
> controls. Please try to think what you would _like_ to have, not what you
> think is possible on your current platform or in your current
> library/framework (unless of course there is some issue that's you _know_ is
> impossible with that framework/library/window-manager/...).
>
> Should controls be manually created like
>
> m_button.Create(x,y, ...)
>
> note that this doesn't rule out some kind of automatic control mover/resizer
> (think resizable dialogs), like
>
> m_b1_resizer(align_left, align_top, align_right, align_size,
> Rect(10,10,-30,20));
> m_button1.create(m_bi_resizer, ...)
>
> to create a button going from (10,10)-(dlg_right_edge - 30, 30). I've used
> this myself with quite satisfactory results.
>
> Should there perhaps be some kind of tabular layouter, something like:
>
> m_dlg.add(m_vert_lay1);
> m_dlg.add(m_vert_lay2);
> m_vert_lay1.create(2 /* rows */);
> m_vert_lay2.create(3 /* rows */);
> m_vert_lay1.add(m_horz1);
> m_horz_lay1.add(text, "hello:");
> m_vert_lay2.add(m_list_box);
>
> or would you like to see something I haven't mentioned here?

   Basically what you've just described are two of the possible ways to
construct dialogs in Java. If you think laying out dialogs once for each
platform is a lot of work, try laying out dialogs that don't look like shit
using either of these systems.

   One of the most subtle reasons that AbiWord has a chance to succeed
cross-platform is that for each platform, it looks like an app designed for
that platform. Any attempt to abstract the dialog layout system will
result in sacrificing the "designed for this platform" look. And the minute
we do that we alienate the church secretaries of the world, at which point
we may as well just pack up and go home.

   Please, please, please do not attempt this. I know that having to code a
dialog once on each platform feels wrong. I understand that feeling
completely. But don't fool yourself into thinking that a more abstract,
more "optimal", better-feeling system will do anything but ruin everything that
we've all worked for for the last few years.
   Having an abstract dialog layout system will help us developers but hurt the
users. Don't forget which is more important.

   -Tom



This archive was generated by hypermail 2b25 : Sun Feb 11 2001 - 00:39:16 CST