views:

129

answers:

2

I want to create a web based interface/GUI builder that used a specific set of components to design the layout and workflow across screens. In addition to the layout, I want to do some data bindings with XML data sources. A lot of the IDE's already do that so all I am looking for is resources, articles, or books that could guide me forward. I am proficient with HTML and Javascript which is not an issue.

It would be somewhat similar to the Cappuccino Atlas tool if you're familiar with that.

+2  A: 

atlas is filling a wysiwyg cloud ide niche that was mostly empty, so I think you might have to be starting from scratch in a lot of ways, rather than having any other tools whose source you can peruse.

Oren Mazor
I'd have to start from scratch which is not a problem. The concepts needed in building such IDE's are still the same, just that the underlying language has changed to Javascript. So I'm really looking for what concepts should I look at to move forward.
Anurag
+2  A: 

I recommend using something like ExtJs to build the GUI system in. I believe it's extensible enough that you should be able to implement whatever widgets are required to create your GUI builder.

As I see it, the main challenges are:

  1. Designing an effective interface that the designer can use. The best way to learn how to do that is to look at all of the GUI designers out there, and find ones that speak to you. I'm not a Windows guy, but VS has a shockingly good GUI designer in it.
  2. Data binding, XML, and proper data design. There are several metric tons of books on XML - personally I'd stay away from the most complex bits, just make sure you have a reasonable schema and a simple set of elements and attributes. Something like oXygen greatly eases the pain of working in XML, and most of what you need to know about schemas and such can be found on the excellent w3schools.com
  3. Make sure to have the best books on your target environment Not sure what the target language/ system for your design will be (what kinds of guis will people be building?)

You should probably look at source code for any open source GUI builder that you particularly like (Netbeans seems to have a rather good one). Might give you some inspiration.

You might also want to look into things like constraint satisfaction solvers, and learn a little bit of computational geometry. For the second, I cannot reccomend Geometric Tools for Computer Graphics highly enough. It's a very practical introduction and reference for the type of computational geometry you're likely to encounter.

Also, if you wanna save yourself some typing, you might have a look at CoffeeScript, which is more or less a "sweetened" version of JavaScript. Takes the edge off for me at least.

Justin W
The target environment is Android. Personally haven't used VS but will checkout its GUI designer. Also a well defined XML schema is going to be important and I could probably build one that closely follows Android's UI schema. Did not know about constraint satisfaction solvers, but will check it out. Geometric Tools looks like a good book, but it's too lengthy for my taste. Will use it for referencing when I get into that. And CoffeeScript is sweet and all, but doesn't cut it for me either. Javascript is an extremely powerful language, so I wouldn't drop it for some sugar-coating.
Anurag
Anything in particular you can't write in CoffeeScript that you want to? I thought it was fairly homomorphic to JavaScript.Geometric Tools has a few chapters in the beginning that are extremely instructive, but the rest are ref material. CSP solvers are great for some kinds of auto-building GUIs, as a lot of GUI design is just CSP solving, or constrained nonlinear optimization.I once implemented horizontal flowchart layout using genetic algorithms, but I don't recommend that, at least not at runtime.If you make a demo ping me, I droid sometimes myself!
Justin W