JavaFX: use only one scene or multiple scenes to build UI with static and dynamic content? - javafx-2

cheers,
i am fairly new to JavaFX2. I already did some research about the basic principles: Stages that contain Scenes. Scenes in turn can be switched. But only switching parts of scene does not seem to be common usage.
My Problem:
I am trying to create an application with a titlepane (containing a lable and some buttons) and a Pane containing further dynamic content. The titlepane will stay there throughout the whole lifecycle.
Now i am confused about what is the best way to achieve such a layout. I found some ideas like here to make my root layout a Borderpane and switch its center. In that case i would end up with only one scene. But i am not shure if that´s how it should be done.
Any help and ideas on this topic is very appreciated.
cheers tobi
P.S.: i am using FXML files to create my layout and Controller to handle each view.

Well there is this question: Loading new fxml in the same scene, which is (perhaps) a duplicate of yours. I wouldn't call the solution there a "best practice", but it is likely decent enough for a smallish app. The answer provides a small framework for swapping fxml controlled content panes in and out of a portion of the main scene.
Similar is Angela's Managing Multiple Scenes.
More comprehensive solutions are things like Gluon Desktop (which I haven't used) or afterburner.fx.
For an actual non-trivial application, look at the SceneBuilder application, which is probably the best "best practice" reference you could find for a decent sized JavaFX application. But, as it is non-trivial, understanding its architecture is likely non-trivial too.

Related

For which other situations is ViewModel class useful for , (apart from screen rotation) when dealing with data?

I am beginner in Android studio and I started learning the different Architecture components within the Android Jetpack. When dealing with data, I realized that in almost every tutorial or documentation the ViewModel class is used. It is always stated that one of the advantages of the class is that the data can survive configuration changes, and the example is always screen rotation. My question is for which other cases it is useful and also if there are other examples of configuration changes apart from screen rotation.
Thanks
if there are other examples of configuration changes apart from screen rotation
Yes, keyboard availability, and multi-window mode see
My question is for which other cases it is useful
That's its only purpose see.
Before ViewModel, handling configuration changes in Android has to be done manually and add some performance issues. So the ViewModel class comes in handy.

Can I use Sketchapp to design entire website

I am a freelancer who wants to start using Sketchapp to make more trendy websites (slanted and curved line backgrounds, UI assets that have shadows, assets that go over 2 divs (see examples). Can and do freelancers (do both their own design and code) use Sketchapp to create the entire site for everything (including text) as their normal best practice and to speed up workflow and then just export everything to text editor and then tweak? Below are 2 examples that I aspire to be able to create.
Example 1 from Pinterest
Example 2 from Pinterest
The answer is Yes and No. The first example is highly using textures and graphics which is hard to do in Sketch. But for that you need to use Photoshop. For the second example is more flat and not using much graphical effect. its minimal and flat. Sketch is really fasten up your working flow to create something like that.
Hope this helps.
You definitely could create both designs in sketch but it won't be the only program you have to use to finish this job. At least if you produce each used graphic yourself.
In the first design for example you have quite a lot gradients an brush technics between the sections. Here you would need to use brushes in Photoshop to achive this look. After this you could export the layers as PNGs with transparent background and import those into sketch...
Sketch is perfect to use with SVG. I would say wen you work with SVGs you can almost only use sketch.
Hope this answer helps!
to speed up workflow and then just export everything to text editor and then tweak
First you create the website design in Sketch and then you start writing the HTML/CSS code by hand. This is how the web development process goes.
You could also use helper tools like Desech Studio to import the Sketch file and then adjust the html/css faster.
Unfortunately it's not possible to create a website in the design stack like Sketch, and also work in the web stack. These 2 stacks are different in how they work.
Alternatively you could start designing the website directly in HTML/CSS and skip the design stack completely, but you will be slower and it will be harder to make changes, compared to the design stack.

How to read Location of a view whilst it is being animated

I am animating a small space ship (derived from UIView) and periodically (whilst in animation) send it a PointF to check if this is near the space ship's current position.
However, when reading out the Frame position of the View it keeps returning the starting position before the animation started.
I think this is by design but it is causing me big problems since the space ship(s) should move independently along Paths and it is very tricky for me to do this by hand.
Is there another way - and/or has anyone some sample code?
Not sure of a workaround for your issue, but I have some suggestions on game development for iOS.
Your problem is one of the reasons why using GUI frameworks like UIKit/CoreGraphics for games isn't a good idea. For both performance reasons, as well as the fact as they aren't designed for it.
If you are looking for a simple framework for making games on iOS, have you looked at MonoGame? If you are doing lots of animations, we also use XNA Tweener along with MonoGame to get some lifelike animations.
PS - check out our game here.

GWT-GXT Containers and Layouts Overview

Anybody know of a good description of containers/layouts/panels/etc for GXT? All the tutorials I've seen usually pick one or two and just use them. Nobody seems to explain the who/what/when/where/how of using various combinations.
Thanx,
~r
PS
Actually I have a slightly complex app (~150 java classes; 8 separate tabs with lots of grids, and lists and tons of RPC calls). Seems my grids are not displaying a horizontal scroll-bar and I suspect it's because I'm using some container/layout combination that prevents it (not FitLayout ;-)
Best source to know about the container, layouts is GXT samples. They are available if you download GXT. You can also checkout the examples in the GXT site. Here is the link

Is there a visual two-dimensional code editor?

Let me explain what I mean by "two-dimensional code editor": imagine of using Inkscape or Gimp in a big canvas (say infinite). The "T - add text" tool is used to write the code. Additionally, all function definitions will be framed and links will connect the called functions.
In other words: you have a very large sheet of (virtual) paper where you can write.
It would be really useful. I don't want to write code as a long list of lines, especially now that big monitors are cheaper.
Is such a code editor out there?
What's your opinion? Would you use a 2d code editor?
I've written 3 or 4 visual editors and my second one worked like this, that was for java and c++ (never published, though I did use it for some published research work)
I still don't like much to write my code 'as a long list of lines'. My point is, after trying a system like this, I tried a windowed system (class outlines in windows, right click to open code editors), then a tree based system...
in the long run (I wrote several apps using all of those), the tree based system with non overlapping windows felt at once most scalable (to different monitor sizes) and foremost, most productive, because dragging the text boxes and links and/or windows in the first version was necessary, without adding much to the programming experience, so it felt wasteful.
If you want to try some of this stuff out, you can google antegram for java (java only) antegram for web (javascript/php/actionscript) and ee-ide (on oogtech.org). I'm not sure if I could dig up the original c++/java textbox + links editor (which could collapse graphs as well, and had an infinite canvas, so pretty close to what you describe).
I'm not working on this as much as I used to as few programmers ever seemed to like it except me, but if you like working the tree way, or feel like adding stuff for your own purposes, ee-ide would be the way to go, as it's nicely modular and easy to extend compared to the rest.
On the commercial side, you can configure visual studio to work with UML-like diagrams. I have a feel it might be a little too heavy (although it's definitely more coding than UML oriented), but I'm not sure, I haven't really tried yet.
This probably doesn't answer your question exactly, but anyway.
Have a look at the NodeBox beta . It is a visual programming environment mostly for creating generative graphics. You can program and edit the nodes with python code, connect and reuse them in multiple ways. (Windows and Mac OS)
Also worth mentioning (in terms of concept) is Field . It is for programming performances and arranges bits of code on a stage/timeline. Very interesting but also very confusing. (Mac OS only)
Third one is vvvv. It is used a lot by graphical artists to create realtime 3d visuals. Node based. (Windows only)
NodeBox and Field are open-source, so if you are looking to create something yourself you can see how it's done there.
Check this out. I came across it today and remembered this question.
Code Bubbles
Developers spend significant time
reading and navigating code fragments
spread across multiple locations. The
file-based nature of contemporary IDEs
makes it prohibitively difficult to
create and maintain a simultaneous
view of such fragments. We propose a
novel user interface metaphor for code
understanding and maintanence based on
collections of lightweight, editable
fragments called bubbles, which form
concurrently visible working sets.
The essential goal of this project is
to make it easier for developers to
see many fragments of code (or other
information) at once without having to
navigate back and forth. Each of these
fragments is shown in a bubble.
A bubble is a fully editable and
interactive view of a fragment such as
a method or collection of member
variables. Bubbles, in contrast to
windows, have minimal border
decoration, avoid clipping their
contents by using automatic code
reflow and elision, and do not overlap
but instead push each other out of the
way. Bubbles exist in a large,
pannable 2-D virtual space where a
cluster of bubbles comprises a
concurrently visible working set.
Bubbles support a lightweight grouping
mechanism, and further support
connections between them.
A quantiative user study indicates
that Code Bubbles increased
performance significantly for two
controlled code understanding tasks. A
qualitative user study with 23
professional developers indicates
substantial interest and enthusiasm
for the approach, despite the radical
departure from what developers are
used to.
http://www.cs.brown.edu/people/acb/codebubbles_site.htm
At one point, LabView had a programming mode like this. You connected program blocks together in a graphical way.
It's been so long since I've used LabView that I don't know if it is still the same.
For me, the MVVM pattern means that there's no code behind the UI controls anyway. The logic is all in a class with properties.
The properties use WPF databinding to update the UI controls. For example, on the form or window, page, whatever, MySearchButton.IsEnabled is bound to ViewModel.MySearchButtonIsEnabled property. So the app logic runs in the ViewModel class and just sets its own properties and the UI updates automatically.
Although this is specific to MS WPF the pattern actually stems from SmallTalk and is found across the development field as MVP. Without WPF one would need to write the databinding or 'presenter' logic, which is common.
This means the UI can be torn off and a new one pasted-in really quickly and with little code knowledge from the UI guy - who, in an ideal world, is a crack creative guy that drives a 70s Citroen.
So my point is that, although it sounds like a neat innovation, a 2D editor like this would be assisting a coding style that is no longer considered optimal.

Resources