JavaFX Links (3)

It is quite a busy month for JavaFX programmers. So, after the first and the second link collection some more links about that topic.

Today I collected important links from sven’s diary and elsewhere.

JavaFX Links (2)

JavaFX Links (1)

Some links I collected in my bookmarks, which could be interesting for other JavaFX developers:

2 Scripts to Make JavaFX + NetBeans Available on Linux

All the code comes from here and here. It worked for me, although I had to ignore 2 exceptions after this.

Update: JavaFX 1.0 only! See the first comment!

So first run:

mkdir javafxnbms
cd javafxnbms
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-api-debugger-javafx.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-debugger-javafx-ant.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-debugger-javafx-projects.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-debugger-javafx-ui.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-debugger-javafx.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-bestpractices.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-editor.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-fxd.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-lexer.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-lib.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-navigation.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-palette.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-platform.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-profiler.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-project.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-sdk-mac.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-sdksamples.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-source.nbm
wget http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/modules/javafx/org-netbeans-modules-javafx-userlib.nbm

Then install the nbms via NetBeans: Tools -> Plugins -> Downloaded -> Add Plugins … and shutdown NetBeans (ignore the exception).

As last step run the following within the javafxnbnms folder:

mkdir unzipsdk
cd unzipsdk
unzip ../org-netbeans-modules-javafx-sdk-mac.nbm
cp -r netbeans/* ~/Programme/netbeans-6.5/javafx2/
chmod 755 ~/Programme/netbeans-6.5/javafx2/javafx-sdk1.0/bin/*

Restart NetBeans (ignore exception, disable the module -> it even works then!) and you should be able to create a JavaFX sample, run it, view it and change it.

Now you are able to help on timefinder 😉

No Warranty for that procedure!!

Good Java(FX) Programmer Known?

I am looking for Java and JavaFX developers for my open source timefinder project – a program for automatically optimizing the timetable for students e.g. at the high school.

The intend for this post is an idea of a component where I can see the timetable of several persons or even rooms. This component should be nice – so I tried out the NetBeans graph library and I tried JavaFX (choose what you like for that task). Here is a stub created with Matisse:

resource-view-detailed

In Java there are some calendar implementations:

 <dependency>
            <groupId>net.sf.nachocalendar</groupId>
            <artifactId>nachocalendar</artifactId>
            <version>0.23</version>
  </dependency>
  <dependency>
            <groupId>com.toedter</groupId>
            <artifactId>jcalendar</artifactId>
            <version>1.3.2</version>
  </dependency>

For JavaFX I found this here. And for drag and drop support one can use sth. like this here.

The developer who like to help will get no salary, but a lot of new knowledge and support from myself. The resource component should display the current timetable and the calculated one. So that the human timetabler could choose the right. See e.g. Outlook/Lightning for a client side timetable ‘managers’.

Now a list of some ideas for the resource component follows:

  • fish eye view, that means: items near the mouse are bigger! (or introduce another magnifier like this here)
  • Implement a ‘grid’ for the timeslots (day horizontal, time vertical or horizontal) The resources will be on y axis and the days will be on x axis. The hours of a day can be either on x axis OR on y axis. The switch shouldbe easy. (Button or sth. else)
  • The planner should be a separate library, so that it can be used from any other program as a library. The only dependency should be on the de.timefinder.core.data.* classes.
  • It should be easy to go to the next/previous day, week or year. (Button or sth. else)
  • Different modes should be possible:
    • view
    • edit
    • print (shrink size to a minimum, only important stuff!)
    • export to pdf
    • export to html.
  • Events with small duration should be handled (they will be very small!).
  • Drag and drop to change starttime and duration in edit mode.
  • Selection of one event will color all events in the group grey
  • Handle overlapping events. So it is possible to circulate with Page Up/Down over the overlapping to see all events under the selected one, i.e. put the next available event on the top. Introduce a z axis for every event?
  • The resource list on the x axis should be filterable (or sortable) against the resource type: person, room etc.Searchable planner against event names and properties
  • see ganttproject, openproj, lightning, outlook, zimbra, …

JavaFX – Some Clarifications

JavaFX Script, puh! What a hype you might think, as I thought some weeks ago. I have some tears in my eyes while reading that Sun is not really improving good old Swing. Instead they push a lot of energy and money into JavaFX.

Are this bad news?

I will put here some facts, my notes, my thoughts and some links to give you a basis for your next JavaFX program.

Some Facts

  • JavaFX 1.0 is still not released. It should be released on 2nd December (integrated in NetBeans 6.5). (I am a bit confused about the versioning terms but the current version should be 1.0 pre1)
  • You will be happy with the current version of JavaFX only if you use NetBeans 6.1 (!), Java 1.6 and Windows or Max OS for development. But this means: your clients will need a jvm like they do for Swing!
  • The current version of JavaFX is under GPL
  • JavaFX is not Java but you can mix it with Java. See the language introduction. JavaFX is a declarative programming language. E.g. the initialization is in the style of json (->yaml).
  • Be sure you read the migration guide before googling for examples! And use the shipped examples in the current version as starting point. (They switched from interpreter version to OpenJFX compiler)
  • Project Nile tries to exports a layered graphic from Adobe Illustrator (into JavaFX code). The projects offers libraries to import the exported files as well. It also provides a SVG converter.

The first intention of JavaFX is to improve Swing (not only in my opinion, see from page 22). But Swing could be improved only in two ways

  1. improve the library and merge awt, swing, java2d and more (1,2) into one consistent library WITHOUT breaking backward compatibility
  2. and enhance the language to provide such nice features like property binding (via bind)

Nice features in the programming language JavaFX or the API

  • ruby style durations: Duration t = 2m + 20s;
  • C# style operations: insert, delete … and this is nice:
    for (element in group where element.length() < 4) {
    println({element});
    }
  • // localization
    var localizer = StringLocalizer{ key: “Hello, World!” };
    // This prints localized text for “Hello, World!” for the default locale
    System.out.println(localizer.localizedString);
  • javafx can still be used as interpreted language: FXEvaluator().eval(String)
  • … a lot more!

Some drawbacks of JavaFX (only the current version?):

  • GPL
  • no tables or tableNodes!? use this. Where is the Table and TableColumn gone?
  • println(String); does not work although documented in the api. You will need to use System.out.println(String) + import java.lang.System.
  • The Photoshop exporter is not properly working for me. The .fx file does compile and even after I changed some lines the created UI looks damaged.

Conclusion

JavaFX is a great language which offers some nice features. But the current version is far from perfect and you should wait until the final release in December. But then: try it out! Hopefully they will made a linux version for me 😉

Ressources