I'm just about to release HTML::PopupTreeSelect. It's an HTML::Template-driven widget that makes it easy to select a node from a tree with an interface that looks like Windows Explorer. It'll work in Mozilla 1+ everywhere and IE 5+ on Windows and Mac. It's a lot like the xTree component created by WebFX except it's designed to popup into its own layer (err, I mean CSS absolutely-positioned div, I guess) and it does all the HTML generation on the server-side so it's generally faster but needs more bandwidth. It's also more configurable in the ways I need it to be and less configurable in the ways I don't.
Oh, and it's under the Perl license instead of being purely GPL'd. I'm in the strange position of caring about that since the way I'm using xTree right now is probably creating a derivative work in the GPL sense.
The biggest problem I've encountered in this project is that HTML has really poor support for building widgets. Sure, I knew that already, but this project has really driven it home. Building something reusable and configurable in HTML is such a nightmare. I'm again amazed that this poorly-designed technology gained such sweeping dominance. Who thought it was a good idea to design a GUI toolkit without an extension framework? I suppose they didn't realize they were designing the GUI toolkit which would eventually be used to implement half the software on the planet. Sigh.
-sam
The biggest problem I've encountered in this project is that HTML has really poor support for building widgets. Sure, I knew that already, but this project has really driven it home. Building something reusable and configurable in HTML is such a nightmare. I'm again amazed that this poorly-designed technology gained such sweeping dominance. Who thought it was a good idea to design a GUI toolkit without an extension framework? I suppose they didn't realize they were designing the GUI toolkit which would eventually be used to implement half the software on the planet. Sigh.
Not to beat a dead horse, but is the Document Object Model supposed to be the extension framework for HTML?
On the subject of HTML's lack of design, I think you are right: TBL just wanted to have a way to share directory information at CERN, and wasn't thinking about taking over the world. I think the fact that HTML was so unencumbered with components and object models is exactly why it took the world by storm. Kind of like Perl, HTML has thrived in ecosystems that it was never really designed for. I think there is a lesson lurking somewhere in here.
Re:HTML GUI
samtregar on 2003-06-03T14:46:12
Not to beat a dead horse, but is the Document Object Model [w3.org] supposed to be the extension framework for HTML?I don't think so. Ask youself this - if you wanted to create a combo box (combinating text input and dropdown found on Windows) in HTML, could you do it with the DOM? Nope! In fact, you basically can't without going WAY outside the bounds of HTML. That's what I mean by no widget building.
-sam
Re:HTML GUI
inkdroid on 2003-06-03T15:02:26
I tend to like doing things on the server side as well. But others have used the DOM to do this sort of things fairly effectively.Re:HTML GUI
samtregar on 2003-06-03T16:59:50
I must have missed the link in there that points to a combo-box (or any new HTML widget) created with just DOM and Javascript. All I see are normal dropdown boxes behaving strangely.Maybe you don't know what I mean by combo-box? Look at the top of your browser window - if you're using Mozilla you'll see a text entry with an arrow at the right. Click the arrow and you get a list of choices descending directly below the text entry. I'd love to be able to do that in HTML, but the amount of work would be enormous. It shouldn't be that hard just to combine two existing controls into one.
-sam
Re:HTML GUI
inkdroid on 2003-06-03T17:07:08
Maybe you don't know what I mean by combo-box?
I'll take your word for it, I don't see how this is different from a select box which automatically displays when you click on some sort of header. It could then submit when selected. All these things are achievable with Javascript and DOM. Not that I advocate either.
HTML isn't meant to be fully general, it's meant to be markup language for displaying documents on the Web. An extension framework adds all sorts of complications to HTML rendering code that is largely unnecessary.
Because of the regular nature of HTML
Perhaps the simple implementation of HTML is what has allowed it to have sweeping dominance. It's shown to be good enough, with many competing, robust rendering applications.
Re:Simplicity
samtregar on 2003-06-03T20:55:02
Because of the regular nature of HTML,especially since XHTML, it's relatively easy to develop meta-languages that can include Extensibility which can be easily translated directly into HTML. Well, I guess if it's so easy I must be pretty dumb. I'm finding it to be a lot of trouble. Can you point me to one of these easily implimented meta-languages so I can use that instead?
-sam
Re:Simplicity
jordan on 2003-06-03T21:48:43
Well, maybe not that easy. I hadn't done it myself, after all... I was just speculating. Here's an article that describes doing something like this with XSL. I found this from a Google search with "HTML Widget Generation". Here's another interesting article on a related subject, in which the author says the following:
I don't really mean to be sarcastic, though there is considerable irony here. The web's move away from established GUI paradigms was necessary at the time. Had HTML required GUI-programming skills, the Web never would have taken off as it did.
This seems to dovetail with my observation that HTML is so pervasive because it's so simple.
I didn't mean to get into a flame war here and I wasn't calling you stupid. But, complaining about your toolset because it's not extensible enough seems like more of an opportunity rather than a problem to a Perl programmer of your caliber.
And it appears to be an opportunity you've taken to develop something really useful. I work with an application where I could use some flexible trees and seeing as I really want to stay away from Javascript for reasons I won't go into here, I was looking for an easier way to generate menus than handcoding the CSS. Thanks! I look forward to trying it out.