[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| RE: [platform-swt-dev] ordering problem adding buttons to a GridLayout | 
Steve,
 
I 
think you have finally nailed the issue, which is a philosophical one.  
You mention that there is a trade-off between "those buidling GUI builders" 
vs. "those creating SWT user-interfaces".  I personally believe that 
looking at the big picture, those two camps aren't really divided, but 
the same.  "Those buidling GUI builders" and "those creating SWT 
user-interfaces"  are both API consumers that build SWT 
user-interfaces.  Perhaps they go about it in different ways, but not 
necessarily so.  And with respect to the degree to which an API will be 
pervasive as the basis for a market-leading end-user technology, ignoring 
builder concerns creates obstacles to this end.  And for the record, these 
being "builder" issues is actually somewhat of a misnomer -- these 
aren't builder concerns, they are dynamic usage concerns which even non-builder 
apps could use.
 
So 
anyway, the philosophical issue seems to be this: is SWT meant to be a 
middleware GUI toolkit, a facade on the native OS that provides its feature and 
hiding some of the unfortunate nuances of the OS (addressing the concerns of all 
users in the process) -- or is SWT meant to be a bridge that exposes the 
native OS to Java.  The answer may be a blend of both, but I think SWT 
leans heavily to the latter.  And that's fine.  With this in mind, 
I'll aim to solve these problems in my app.
 
BradO
  
Agree.  The trade off here is "those building GUI 
  builders" vs "those creating SWT user-interfaces".  Currently, there are 
  more people not writing GUI builders so we are optimized for that case. 
  Hopefully, the "maintenance and implementation nightmare" should be easier for 
  those higher up the chain.  For example, you must have a data structure 
  somewhere that captures the properties of each control.  You need this in 
  order to generate code and to know which properties are the default and which 
  have been set by the user. Even if SWT controls were full JavaBeans, you'd 
  still need one of these.  Therefore you know what an uninstantiated 
  Control looks like and how to create one.  Furthermore, you shouldn't 
  have the ordering and query issues that SWT controls have.  For example, 
  a hypothetical SWT text control that had no parent and therefore no operating 
  system peer needs to provide a complete implementation of the API (that 
  exactly matches the behavior of the operating system) so that code that 
  manipulates it before the operating system resources are acquired behaves 
  exactly the same as code that manipulates it after the resources are acquired. 
  Furthermore, thie private state for this implementation needs to be copied 
  back and forth or kept up to date as the operating system control is created 
  and destroyed. Presumably, a GUI builder doesn't have this problem because the 
  controls are not programmed in arbitrary ways at design time? 
  
The fact that a discussion happens again 
  and again indicates that there is a legitimate problem but sometimes there is 
  no good solution, only trade offs. 
  
    
    
      |  | "Brad O'Hearne" 
        <brado@xxxxxxxxxxxxx> Sent by: platform-swt-dev-admin@xxxxxxxxxxx
 10/23/2003 10:05 AM Please respond to platform-swt-dev
 | To:     
           <platform-swt-dev@xxxxxxxxxxx>
 cc:
 Subject:        RE: [platform-swt-dev] 
        ordering problem adding buttons to a 
  GridLayout
 | 
Steve, 
  
It isn't a matter of seeming evil (but for the record, no, 
  you don't seem evil).  While I understand there's no merit in an endless 
  rehash, on the other hand, there's probably good reason that "these 
  discussions have all happened before, a million times".  Its probably a 
  good indicator of a legitimate problem that needs to be solved.  As for 
  the issue of "working around them is a disaster" -- the problem isn't 
  eliminated by ignoring it in the API -- it is simply propagated to a higher 
  level of the application (to the API consumer).  So the "maintenance and 
  implementation nightmare" now belongs to the API consumer to solve. 
   Going back to the original point, it isn't a matter of seeming evil, 
  it's more a matter of being open to address legitimate issues and alternative 
  approaches.   
  
BradO 
  
 -----Original 
  Message-----
From: platform-swt-dev-admin@xxxxxxxxxxx 
  [mailto:platform-swt-dev-admin@xxxxxxxxxxx]On Behalf Of Steve 
  Northover
Sent: Wednesday, October 22, 2003 7:02 PM
To: 
  platform-swt-dev@xxxxxxxxxxx
Subject: RE: [platform-swt-dev] 
  ordering problem adding buttons to a GridLayout
Hey Brad, 
Sorry if I seem evil but these discussions have all 
  happened before, a million times.  The summary is that GUI builders want 
  JavaBeans but JavaBeans don't map well to the operating system. There are 
  plenty of native GUI builders and tools out there so it can't be impossible to 
  build them using the technology of the platform. The problem is that bogus 
  restrictions are the downside of being native, and SWT sometimes inherts them. 
  Generally speaking, attempting to work around them is a disaster. In this 
  case, we determined that it would be a maintenance and implementation 
  nightmare. 
Steve 
  
    
    
      |  | "Brad O'Hearne" 
        <brado@xxxxxxxxxxxxx> Sent by: 
        platform-swt-dev-admin@xxxxxxxxxxx
 10/22/2003 03:24 PM 
        Please respond to 
        platform-swt-dev
 | To: 
              
         <platform-swt-dev@xxxxxxxxxxx>
 cc:
 Subject:   
             RE: [platform-swt-dev] ordering problem adding 
        buttons to a GridLayout
 | 
Mike,
Thanks for the 
  response, and I really do appreciate your addressing the
technical aspects 
  of the problem.  Comments:
> Here's the problem: The platform 
  APIs that SWT is built on,
> require a parent when widgets are created 
  (er....period).
> There were two choices, either mirror this in the API, 
  or
> duplicate every bit of state the widget maintains so that
> 
  the widget could exist in an un-parented state (state stored
> locally) 
  or a parented state (state stored in the OS).
I understand well the 
  problem (as does everyone else confronting this
issue), because by not 
  solving it in the black-box of the SWT API wrapper
around the platform 
  APIs, it is a problem that is propagated to the API
consumers to solve. 
   And that's exactly what I am doing -- wrapping the SWT
API in a 
  manner that removes this requirement. It makes sense that the
decision was 
  to have SWT is merely mirror the design of the underlying
platform 
  components...though it would have been nice to improve on the
platform 
  design. ;-)
> Even assuming that this could have been implemented 
  without
> consistancy problems (and I have never seen evidence that 
  *any*
> system that attempted to do this was 100% successful) it 
  would
> have meant significant overhead in *every* widget API as the 
  code
> checked which state it was in and handled the situations 
  differently.
This is terrific reason why the SWT API is a great the 
  place to solve this
problem, rather than in a secondary wrapper that each 
  consumer has to design
for themselves.  Chances are that this is going 
  to be a challenge
redundantly addressed by multiple consumers of the API, 
  and if it is that
difficult to get right, then solving the problem once for 
  all consumers
within the SWT API could have saved a lot of work, and by 
  your assertion, a
lot of failed projects.
> In addition, zero 
  argument constructors are not a requirement
> for building automation. 
  There has been extensive discussion
> of this in the SWT mailing list in 
  the past. Both GUI builders,
> and "robots" can be/are being built on 
  top of SWT in its current
> form. If you would like to turn the 
  discussion to how this might
> be achieved, you're much more likely to 
  get a constructive
> discussion going here.
Understood, but it 
  creates hoops to jump through.  My statement wasn't that
building 
  automation was impossible, it was that not providing zero 
  argument
constructors is a detriment the SWT API's ease of use, 
  specifically
eliminating the ability to use dynamic class instantiation 
  with a
ClassLoader.  That's a powerful facility that the Java platform 
  provides, it
would have been a good move not to eliminate it as a factory 
  option for API
consumers.  Thanks for the tip on the previous 
  discussion, although I'm
actually fairly aquainted with this problem 
  already...there are two options:
1) widget wrappers or 2) carnal knowledge 
  of the widgets you are creating,
which is a whole lot less powerful than 
  being able to generically create
widget instances -- think persistence 
  issues, etc.
Anyway, I do appreciate the response.  It appears 
  that the issue of adding
zero-argument constructors is not up for 
  discussion, so I don't suppose I
need to trouble the list with any more 
  discussion on this 
  topic.
BradO
_______________________________________________
platform-swt-dev 
  mailing 
  list
platform-swt-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/platform-swt-dev