> JavaFX supports composition via Mixin's and traditional inheritence.
Mixin's are great. That's very encouraging to see.
I hear a lot of discussion and promise from databinding. Particularly
that data binding with enable the same things event bubbling will. It
will NOT. Flex also has data binding, and it's a bit of curse and a
blessing. Databinding is helpful, but it can be a serious performance
problem if overused. I think the sound from the forum is that
databinding might be promising too much.
I would also disagree data binding can provide you the component model
you're after. I think I understand or at least can guess what a
component model might be. as Joe sees it. A component is a discrete
system that is composed of one or more objects. It has a single
interface or feels like a single object, but it's internals might be
much more than that: Components composed from other components. I
would go so far as to say that it participates in event dispatching in
that it dispatches it's own events, and can respond to events from
other components. A component is not that different than our basic UI
classes.
I think I did a better description of what a component might be in
another email so I'll refrain from re describing it here. Event
bubbling and binding are two separate things, and I don't think
binding will allow you to do the same thing as event bubbling can for
you. I hope my other email will make that clearer.
Databinding just allows you to skip explicit event registration
listening/handling. It's syntatic sugar for
addListener('property', function( event : Event ) : void {
myObject.property = event.property;
}
Bubbling is about default event routing. It's not the same thing, and
I think if you could cleverly route events using bubbling you'll find
it cumbersome eventually.
Charlie
On Sep 22, 8:33 am, Steven Herod <[email protected]> wrote:
> > Events in Actionscript are open. Any class can send and receive
> > events. Swing is a closed model in that only Swing components can
> > participate in the events. Dispatching events into the event stream
> > is as simple as calling dispatchEvent() in flash. In Flex/Flash plain
> > old Actionscript objects can participate in the event process. Any
> > component can dispatch and event into the flow by extending
> > EventDispatcher, or implementing IEventDispatch interface and hooking
> > yourself up using a special constructor of EventDispather for
> > composition. Event dispatch exists outside of the UI model so you can
> > easily create a model layer (i.e. no UI components) that dispatches
> > events, and a UI layer that dispatches events and use a controller
> > layer to listen to both and redirect between the layers.
>
> I suspect the data binding capabilities of JavaFX may provide similiar
> functionality here.
>
> > Event bubbling. Flex/Flash has the concept of event bubbling.
> > Bubbling helps alleviate the performance issues because events can be
> > defined to bubble or not at event creation time. Swing used to bubble
> > all events in 1.0, but that got neutered when they had performance
> > problems. That was a serious mistake. I think just introducing the
> > concept of events that bubble or don't could have kept the old model
> > around with the benefit of performance.
>
> Not sure about this, I know I'd like keyboard and mouse events to
> automatically bubble up through the scene graph, but not sure if it
> does it in 1.2
>
> > Event bubbling allows outside clients to listen for possibly low level
> > events from the outside without having to dig around inside a
> > component to find the target. Think of it like how OO encapsulates
> > data structures hiding those details from the outside world. Event
> > bubbling allows UI components to hide the details of how a UI is put
> > together so the outside clients don't care what the UI actually looks
> > like. Bubbling means that I can trap button clicked, or table row
> > selection events in my UI classes, then dispatch Application centered
> > events like Podcast.Added event, or Podcast.Deleted events and they
> > will bubble up to the Controller. Getting out of the low level UI
> > events means that my UI components are portable in my application.
> > Something that's very hard in Swing.
>
> Again, data binding probably handles this stuff in JavaFX, you might
> bind to the 'selectedIndex' property of the ListView component.
>
>
>
>
>
> > Events act the same. Registering listeners, and dispatching are the
> > same across any event, and receiver. How those events are routed is
> > the same every time. In Swing we constantly were hand rolling our own
> > events with different registration methods. Every component's events
> > were separate and different. Different way of dispatching, different
> > registering, different management. Flash events are uniform. This
> > enables event forwarding, bubbling, phases, and canceling to work as
> > you'd expect. It's the same no matter what component we are talking
> > about. This uniform approach gives us our event system.
> > MXML is the layout language. Actionscript is the logic language.
> > MXML is XML so it's easy to parse and easy to use as a layout
> > language. In Swing we so often would create components in methods,
> > and spend 100's of lines just laying out crap. You can do this in
> > Actionscript too, and it's just as verbose as Java. So often just
> > wanted a simple XML file that i could put Swing components in and use
> > IDs to reference those components. It would have cleaned up my UI so
> > much more, and seperated layout from logic. And with an XML file it's
> > easy to parse and create tools that could help me with that visually.
>
> JavaFX is a single language for layout and code/logic. Horses for
> courses, personally I found a big mismatch between MXML and
> ActionScript functionality (like the web services functionality). In
> theory you could do the same thing using both techs, but they weren't
> actually equivalent in the way they behaved.
>
> And of course, in JavaFX, you can back off to plain old Java when
> needed.
>
> > Simpler layout rules. Flex doesn't have LayoutManagers. Swing's
>
> Layout sucks in JavaFX right now. JFXtra's offers some assistance
> here with a Grid and MigLayout layout helpers, but its a priority I
> believe for the team.
>
> > Flex is skinnable without the need to code. Flex has a CSS skinning
> > facility that any component can utilize to externalize colors, fonts,
> > images, etc.
>
> Interesting to hear that they are moving away from CSS. JavaFX offers
> CSS skinning and an option to provide your own Skin{} class which can
> provide a custom rendering option for something like a button or a
> list view.
>
> I don't find it particularly well described in the docs, but it seems
> powerful.
>
> > Finally Flex data structures work with their UI toolkits out of the
> > box. Why don't we have a ListModel that implements the List interface
> > yet? Why do Swing models suck so hard that you are constantly
> > reinventing them for every project? Flex got it right where
> > ArrayCollection and ICollection just work. JavaFX must be better in
> > this area.
>
> There aren't enough complex controls in JavaFX to know how this is
> going to be handled. Josh? :)
>
> > I will be positive about JavaFX's future in that. Actionscript, while
> > a nice language, is alone. It's only in the Flash platform, and it's
> > not as well thought out as Java. You can't load native code, you
> > can't easily interact with existing pieces of code. You can't share
> > code between UI and server. Actionscript is only for Flash. You
> > can't redistribute the flash platform. So I have to implement
> > algorithms at least twice, and if I go mobile more than that.
>
> Absolutely, and that's when Flex I think, might be screwed in many
> regards, inside that walled garden you can do things, but ....
> well.... you know.
>
> Maybe the brave new world of RIA's and cloud means you don't need all
> this stuff, but at least my JavaFX app can load that excel
> spreadsheet, create a local database, create a PDF and then send an
> JMS message today because of the interoperability with Java
>
> (Okay, I might be totally nuts to do that, but you know... the options
> there :)
>
> > Java is a language first with lots of thought given to making it
> > portable to lots of environments. The JVM can run anywhere we want.
> > JavaFX means to me the ability to write slick UIs using Java's
> > ubiquity if it matures correctly. That's JavaFX clear win over the
> > Flash platform right now. ...
>
> Well, we all hope (I know I am).
>
> From what I've seen over the past 10 months of working with JavaFX is
> that
>
> 1. It was initially quite immature
> 2. It's rapidly improving
> 3. The guys at Sun seem to 'get' it, and are working their butts off
> to make it work.
> 4. Version 1.3 might be the tipping point for 'real' apps - both with
> controls and performance
> 5. Java 7 (JDK 1.7), Jigsaw (whatever you wanna call it) might be the
> thing that gets it to the Flash level startup times. <- That
> statement is a statement of pure faith and hope.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---