What is "design flexibility" in UI frameworks? - swing

In the Pro Android 2 book, the authors refer to 4 generations of UI frameworks (in order):
C-based MS Windows API
C++-based MFC
Java-based Swing
Android UI, JavaFX, Microsoft Silverlight, Mozilla XUL
In that section, the authors say that Swing introduced "design flexibility far beyond that offered by MFC."
What does "design flexibility" mean in this context?

One of the things that Swing introduced was the idea of a pluggable look and feel. This meant that a component such as a label could be placed on the screen, in the place you wanted it to exist. Then you could customise how that component looked by using any number of UI platforms.
Furthermore, Swing gave you access to the paint methods, so you could simply draw the component yourself if you could not find the UI that you wanted to use.
I have found swing to be extremely flexible in building user interfaces from the layout managers, ui component customisation through look and feel, and the ability to override the paint methods, or implement your own UI delegate class. All of these things I think make up design flexibility and pushed the boundaries of what was available before.

You are able to create a UI based on artistic creativity instead of say a grid pattern

Related

structuring code when targeting both mobile and Kinect devices

Building several games using Starling and the AIRKinect framework targeting Windows Kinect sensors.
I'd like to package and refactor my classes in such a way that I can easily repurpose the bulk of the code and target mobile(primarily IOS) devices.
ie touch and multitouch support would replace any AIRKinect specific skeletal tracking code.
Although I 'm coding in Actionscript 3, I think the same general code structure should remain code agnostic.
What would be a good way to structure my classes?
Which design patterns come to mind?
Basically, you could create an interface, like IController and several platform-dependent classes that implement that interface, for example KinectController and TouchController. Then you could check system capabilities at runtime and create either KinectController or TouchController. The usage won`t depent on concrete class as both would implement IController.
That's a very basic answer but I just cannot answer more specifically as I don`t know anything more about your project.

Flex to HTML5 - what for presentation layer (canvas, div, ???)

My question is about migration from Flex3 to HTML5. I want do migrate myself not application actually. The question is, what direction is the best and most similar to flex knowledge. Maybe I will reimplement some custom components I already have in my flex library. I think that some of useful flex components I will have to implement myself in HTML5 - e.g. AdvancedDataGrid or Tree.
Now I can see 2 possibilities:
assume page (or big DIV) as application master class, and implement
other components based on extending DIV functionality - and placing
DIV in DIV in DIV - like AS3 uses UIComponent. It gives me supported
by browser environment event handling or DIV movement and redrawing
etc.
assume one CANVAS component as application master class. Build own
classes tree with owner drawing control etc. I think i will need to
implement event handling & dispatching for my internal visual
components. Also all UI actions (like moving, redrawing) I need to
implement myself.
I assume, that I will start to build my own class/component library for long-term future use. Question is what is better for knowledge and work investing?
It will be good to know wide opinion on this problem.
Can you give yours here?
From experience, we can say that writing a DataGrid component is a VERY large undertaking. We've been working on our DataGrid components for 3 years now, and we're STILL adding features. Instead of writing your own ADG like component, you should consider JS frameworks. Below are some:
DOJO (Excellent framework for RIA Enterprise App Development, and
Free!)
Sencha (Pretty good, but commercial)
JQuery (Very popular, but highly fragmented).
Each of these come with their own grid component. Senchas grid is pretty good, but so are some jquery grids. See this for example: Best dynamic JavaScript/JQuery Grid
Bottom line, dont reinvent the wheel. There are many excellent paid and free versions out there, pick one that works for you and run with it.
Disclaimer: I am author of Web Atoms JS
Web Atoms JS was built to bring all concepts of Flex, Silverlight and XUL. And each of these technologies used more of XML markup for very high level UI controls. Screens become complex and visualizing them becomes painful when it keeps on changing.
With Web Atoms you will write for less code then any of other frameworks. Web Atoms comes with all basic flex Components & more are coming.
This is a Sample of what all things are possible in Web Atoms JS.
Here is link to documentation.
http://webatomsjs.neurospeech.com/docs

HTML5/CSS3-like equivalent for software UI design?

I like the flexibility that HTML5/CSS3 offers me when I build user interfaces for the web. These technologies let me create rich website prototypes fairly quickly and, unlike on the desktop, I can skin UI elements such as buttons with ease.
So far I have not been able to replicate this experience on the desktop. Over the course of a couple of years I've worked with Visual C#, Qt (with Qt Creator) and Java Swing, but all require more work for the same design tasks.
Is there a GUI toolkit, possibly combined with an IDE that has UI designing abilities, that can replicate the ease and flexibility of the HTML5/CSS3 experience? Is there perhaps a way to apply CSS-like rules to C#, Qt, Java Swing or other GUIs?
For HTML5 / CSS3 UI Designing i have been using kendoui and twitter bootstrap
WPF (windows presentation foundation) is a possibility. This is new in .net 3.5. It doesn't use HTML5/CSS. But it's the closest thing that comes to mind to what you are describing. I will mention what I know, which honestly is not much.
I know it does NOT use HTML5/CSS, but the technique for structuring an application is similar in that you create your UI using an XML like structure (XAML as they call it). And this separates your UI from backend code similar to how you would structure a website.
Using WPF, you have the ability to utilize the power of directx to give your applications media, a skinnable user interface, 3D animations, and screen transitions, etc. In short, I know it allows you to customize the UI far greater than a typical windows forms application that would be developed using the .net framework.
Here is an example screenshot of a WPF application...
If this is something you haven't researched, I think it would be worth checking out. Hope this is helpful.

Is developing a webbased app more efficient with Ext JS/Dojo & et al than with HTML/JQuery

The server side is pretty much set up, it's basically
struts 2 / spring security / jpa.
Now I have to decide what to do with the client side (the browser). The client side codebase should be maintainable and should lend itself to automatic regression testing.
So as an example lets say I need a table component having properties such as
sortable/pageable columns
reordering of rows and columns (via drag & drop)
inline editing of table cells
remembers state when customer re-visits page
integrates easily with struts 2
As far as I understand things there're 4 alternatives
DIY using oldschool HTML + JQuery + Ajax
Finding a JQuery plugin that does all this or
plumb together different plug-ins (like Flexigrid + additional plug-in for drag & drop)
Using a JS toolkit
Should I stick with JQuery? Or should I go for fullblown JS toolkits? I have little experience with JQuery and JS toolkits (I'm not a web developer).
Thank you for helping a serverside programmer cross the messy world of web-ui-programmming ;)
My experience is that Dojo's support for programming-in-the-large is great if you have a large-scale app that will benefit from the build system, class system, widgeting system and integrated widgeting library. It also of course brings all the standard stuff with it, like cross-browser support and event system.
If you just need some widgets and animations then any library will work. I'd stick with the one you/your team knows best. jQuery definitely has the greatest number of people with that skillset.
Our team wasted 6 months trying to give the client what they wanted with JQuery/UI, and we switched to ExtJS 4, and the client is happy after 2 months. This is an app with 50+ models.
JQuery/UI is NOT designed for web applications. It is designed for web SITES. Sure, it has some good plugins, but you'll spend countless hours learning their apis and switching your thought process between them all. JQuery/UI lacks the following:
a graphical designer (see Sencha Designer 2), ie graphical layout GUI program
complicated layouts (in ext you can switch a layout of a container to accordion, tabs, wizard, anchors with one setting)
a grid (ext grid supports paging, sorting, filtering, grouping, summaries, editing out of the box)
real comboboxes
a model view controller system
templating
good html editor control
a whole ton of other stuff
do yourself a favour and spend the money on ext, and save yourself countless hours.
regarding the grid you mentioned, ext's is far superior to anyone else's. you can do what you listed in about 20 nicely-formatted lines. i am not kidding.
regarding client-side unit testing, use jasmine with ext.
The short answer is yes. Frameworks like Ext.js take care of a whole lot code that you would end up writing yourself if you were to write everything from scratch. These frameworks take care of models, events, views, communication with servers/APIs, etc.
This isn't really an answerable question. It all depends.
ExtJS is great for very specific things. If you want those very specific things, it's likely the most efficient option for you.
If jQuery UI meets your needs, then that's your answer.
If you have jQuery dev's, maybe stick with jQuery.
If you have ExtJS folks, consider ExtJS
etc, etc.

Tools to convert html layouts to Silverlight 3.0

I have a couple of applications for clients that were dragged into the web kicking and screaming. I'd like to take a crack at moving some to Silverlight 3.0 if even just as a proof of concept exercise. I'd like to see if I could make them full apps, layout and all. I think the layout of the web app along w/ the graphics is good and don't want to lose that aspect.
Which leads to my question, are there tools to convert existing HTML/graphics to Xaml? I'd rather use SL 3.0 navigation and not embed Silverlight xaps on every page as I would have to do w/ an ASP.NET MVC / Silverlight type solution.
Thanks.
I asked a related in spirit question after doing some research I can pretty confidently say no. There are some tools for Silverlight 1.0 and 2.0 you can find with a simple google search ( terms: html to xaml converter) but nothing specifically for Silverlight 3.0
The xaml exporter for Infragistics may be helpful if you've used Fireworks to design your sites, if not you may be out of luck.
Having just gone through this (existing ASP.NET to Silverlight 3), I’d recommend against any attempt to automatically convert the layouts. With Silverlight having a very discrete set of controls and layout mechanisms compared to ASP.NET I’d be very surprised is any tool did a neat translation. Tools for auto-generating code (be it XAML or HTML) tend to create pretty sub-optimal syntax (Expression Design -> XAML comes to mind). If you were successful, you’d still need to consider the entire data access pattern which will also drive the structure of your XAML.