Moving on (forked from Re: JavaOne roundup?)

2013-09-30 Thread Daniel Zwolenski
 a case for it, but if anyone wants
to do this let me know and I can notify sonatype to give you access and
save you some hassles.

I think Niklas has the RoboVM Maven Plugin sorted now and can do
enhancements on that but I'm sure if anyone wanted to help him out he
wouldn't say no.

Cheers,
Dan



On Mon, Sep 30, 2013 at 5:04 PM, Tobias Bley t...@ultramixer.com wrote:

 I don’t understand why „all“ this people who needs JavaFX on iOS/Android
 does not tell it Oracles management. And I don’t understand why all this
 people use their time to develop all this demos and Rasp.PI stuff. Who
 needs it? Why don’t we develop base stuff like iOS skins, Android skins,
 iOS/Android widgets, RoboVM for Android, RoboVM using OpenJDK, … I really
 love useful stuff like the „JavaFX maven plugin“ or the „AquaFX“ project.
 That kind of development we need!

 Best,
 Tobi



 Am 30.09.2013 um 08:50 schrieb Felix Bembrick felix.bembr...@gmail.com:

  No, you are *not* the only one. We *all* need it.  In fact, without it
  happening soon, JavaFX is already dead.
 
  But let's not give up yet.  Perhaps it's closer than we know. I am a
 glass half full kinda guy :-)
 
  On 30 Sep 2013, at 16:40, Tobias Bley t...@ultramixer.com wrote:
 
  I suppose „legal reasons“….
 
  For me it’s very frustrating to see every year the same procedure:
 JavaFX-iOS/Android related tracks were canceled - „nerd“ stuff like
 Rasp.PI, DukePad  Co were announced. Maybe I’m really the only one who
 needs JavaFX on mobile to use JavaFX on desktop as well… :(
 
 
 
  Am 29.09.2013 um 18:13 schrieb Jeff Martin j...@reportmill.com:
 
  It seems the JFX on iOS/Android were cancelled at the last moment. I
 tried to keep expectations low this year, but I admit I harbored secret
 hopes based on those sessions (a few embarrassingly optimistic
 conversations with clients notwithstanding).
 
  Last week Tomas offered this:
 
  about cancelled sessions please contact Mr. JavaOne
 stephen.c...@oracle.com I believe he will give satisfactory answer.
 
  I'd like to take him up on that satisfactory offer. Also, can we run
 the name DukePad by marketing again?
 
  :-)
 
  jeff
 
 
  On Sep 29, 2013, at 12:12 AM, Daniel Zwolenski zon...@gmail.com
 wrote:
 
  The sessions aren't up yet from the looks of it. It would be great to
 get an overall roundup of any new announcements or directions in any case.
 Given this is the developer community network it would make sense in my
 mind to highlight stuff like that in here.
 
  For me, I'd love it if someone could quickly sum up any announcements
 or sessions made about JavaFX for iOS, Android or in the deployment space?
 
  What happened at the sessions Tobi highlighted before (
 http://blog.software4java.com/?p=97), did anyone go to these and able to
 give us some info?
 
 
 
  On 27/09/2013, at 7:07 AM, Richard Bair richard.b...@oracle.com
 wrote:
 
  The sessions, I think, are all being uploaded to Parley's (
 http://www.parleys.com), although I don't see any content there yet (not
 sure how long it will take them to post-process, but usually it is pretty
 fast).
 
  Richard
 
  On Sep 26, 2013, at 2:00 PM, Daniel Zwolenski zon...@gmail.com
 wrote:
 
  Has anyone done or seen any good roundups (text or video) of the
 JavaOne sessions relating to javafx?
 




Re: JavaOne roundup?

2013-09-28 Thread Daniel Zwolenski
The sessions aren't up yet from the looks of it. It would be great to get an 
overall roundup of any new announcements or directions in any case. Given this 
is the developer community network it would make sense in my mind to highlight 
stuff like that in here. 

For me, I'd love it if someone could quickly sum up any announcements or 
sessions made about JavaFX for iOS, Android or in the deployment space? 

What happened at the sessions Tobi highlighted before 
(http://blog.software4java.com/?p=97), did anyone go to these and able to give 
us some info?



On 27/09/2013, at 7:07 AM, Richard Bair richard.b...@oracle.com wrote:

 The sessions, I think, are all being uploaded to Parley's 
 (http://www.parleys.com), although I don't see any content there yet (not 
 sure how long it will take them to post-process, but usually it is pretty 
 fast).
 
 Richard
 
 On Sep 26, 2013, at 2:00 PM, Daniel Zwolenski zon...@gmail.com wrote:
 
 Has anyone done or seen any good roundups (text or video) of the JavaOne 
 sessions relating to javafx?
 


JavaOne roundup?

2013-09-26 Thread Daniel Zwolenski
Has anyone done or seen any good roundups (text or video) of the JavaOne 
sessions relating to javafx?




CNET: Google begins barring browser plug-ins from Chrome

2013-09-24 Thread Daniel Zwolenski
Google begins barring browser plug-ins from Chrome: 
http://news.cnet.com/8301-1023_3-57604242-93/google-begins-barring-browser-plug-ins-from-chrome/?tag=mobile_social





Fwd: FW: [javafx-maven-plugin] Problems with Java SE Development Kit 7u40 (#44)

2013-09-19 Thread Daniel Zwolenski
Has something changed?


-- Forwarded message --
From: Daniel Zwolenski da...@hotmail.com
Date: Fri, Sep 20, 2013 at 7:50 AM
Subject: FW: [javafx-maven-plugin] Problems with Java SE Development Kit
7u40 (#44)
To: Daniel Zwolenski zon...@googlemail.com




--
Subject: Fwd: [javafx-maven-plugin] Problems with Java SE Development Kit
7u40 (#44)
From: da...@hotmail.com
Date: Fri, 20 Sep 2013 07:04:19 +1000
To: openjfx-dev@openjdk.java.net





Begin forwarded message:

*From:* Martin Burkhard notificati...@github.com
*Date:* 19 September 2013 6:39:20 PM AEST
*To:* zonski/javafx-maven-plugin javafx-maven-plu...@noreply.github.com
*Subject:* *[javafx-maven-plugin] Problems with Java SE Development Kit
7u40 (#44)*
*Reply-To:* zonski/javafx-maven-plugin 
reply+i-19739500-cdc2ce3c0bd4f0ffac0b484c2bb56ae6edc3954c-2133...@reply.github.com


Due to changes in JDK 7u40, the javafx-maven-plugin seems to be unable to
execute *jfx:run*. I successfully tested the javafx-maven-plugin using JDK
7u21.
I received the following error message using jfx:run on Mac OS X:

[INFO] --- javafx-maven-plugin:2.0:run (default-cli) @ Test ---
[INFO] Running JavaFX Application
[WARNING]
java.lang.NoClassDefFoundError: javafx/application/Application
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
[ERROR] Failed to execute goal com.zenjava:javafx-maven-plugin:2.0:run
(default-cli) on project Test: Unable to execute mojo: An exception
occured while executing the Java class.
javafx/application/Application: javafx.application.Application -
[Help 1]

I received the following error message using *jfx:run* on Windows:

[INFO] Running JavaFX Application
[INFO] 
[INFO] BUILD FAILURE
[INFO] 
[INFO] Total time: 59.989s
[INFO] Finished at: Thu Sep 19 09:56:49 CEST 2013
[INFO] Final Memory: 15M/43M
[INFO] 
[ERROR] Failed to execute goal com.zenjava:javafx-maven-plugin:2.0:run
(default-cli) on project Test: Execution default-cli of goal
com.zenjava:javafx-maven-plugin:2.0:run failed: An API incompatibility
was encountered while executing
com.zenjava:javafx-maven-plugin:2.0:run: java.lang.NoSuchMethodError:
org.apache.maven.execution.MavenSession.getRepositorySession()Lorg/sonatype/aether/RepositorySystemSession;
[ERROR] -
[ERROR] realm =plugincom.zenjava:javafx-maven-plugin:2.0
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] =
file:/C:/Users/xyz/.m2/repository/com/zenjava/javafx-maven-plugin/2.0/javafx-maven-plugin-2.0.jar
[ERROR] urls[1] =
file:/C:/Users/xyz/.m2/repository/org/twdata/maven/mojo-executor/2.0/mojo-executor-2.0.jar
[ERROR] urls[2] =
file:/C:/Users/xyz/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
[ERROR] urls[3] =
file:/C:/Users/xyz/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[4] =
file:/C:/Users/xyz/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[5] =
file:/C:/Users/xyz/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[6] =
file:/C:/Users/xyz/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[7] =
file:/C:/Users/xyz/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar
[ERROR] urls[8] =
file:/C:/Users/xyz/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar

Re: [API Review] FXMLLoader's protected fields

2013-09-11 Thread Daniel Zwolenski
Umm, what happened to backwards compatibility?


On Wed, Sep 11, 2013 at 4:44 PM, Martin Sladecek martin.slade...@oracle.com
 wrote:

 Hello,

 FXMLLoader contains a number of protected (non-final) fields that were
 made 'protected' probably just by accident. I'm going to make these fields
 private. If there's somebody who is working on a FXMLLoader subclass, let
 me know if you need some of the fields, so we could turn them into getters
 or something.

 Here's the list of the fields:

 protected Object controller;
 protected Object root;
 protected ResourceBundle resources;
 protected URL location;


 Thanks,
 -Martin



Re: Static FXMLLoader load method deprecation

2013-08-30 Thread Daniel Zwolenski
+1



On 31/08/2013, at 8:54 AM, John Smith john_sm...@symantec.com wrote:

 The static methods on FXMLLoader are very confusing.
 
 It is very easy to create errors by writing code that mixes static and 
 instance FXMLLoader methods.
 
 Everything that can be done with static load methods, can be done with 
 instance FXMLLoader methods.
 Other than confusion, the static load methods seem to provide little value to 
 me.
 
 Is it possible to have the static FXMLLoader methods deprecated for Java 8?


JNLP Change?

2013-08-26 Thread Daniel Zwolenski
I received the below issue on the JFX Maven plugin. I don't have
time/motivation to investigate - on the surface it looks like a JFX
packager problem.

Has JNLP changed and has JFX packager been updated to handle this change?

-

A couple of issues:
JSE1.7 u25+_ requires new attributes on jar signing meaning that running an
JNLP will give errors Missing Permissions manifest attribute for
{jarfile}. See
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/no_redeploy.html

Secondly, field values in the JNLP are missing in the jfx config e.g. .
Also, I'm not seeing migrate from the main .pom to the JNLP.

Thanks for this great plug in!


Re: How to raise JavaFX iOS bugs?

2013-08-09 Thread Daniel Zwolenski
Wtf? Oracle guys, what JVM is this session going to use? 

https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=5517


On 09/08/2013, at 3:51 PM, Tobias Bley t...@ultramixer.com wrote:

 Daniel, the question is: Which surprise will Oracle show on JavaOne 2013 in 
 september? Maybe there is something official concerning JavaFX and iOS and 
 Android…? Please take a look a the planned tracks: 
 http://blog.software4java.com/?p=97
 One track talks about „JavaSE in AOT mode“…so maybe we do not need such a 
 backport in the future? Because Oracle does not say anything about the 
 future, we don’t know it at the moment ;)
 
 Best regards,
 Tobi
 
 
 Am 09.08.2013 um 00:08 schrieb Daniel Zwolenski zon...@gmail.com:
 
 No, I didn't get a chance. Probably easier for you to just raise it now?
 
 It's going to be a pretty big round loop to get ios fixes in. It first needs 
 to go into jfx then needs to be merged into the backport, then that needs to 
 be deployed to maven, then the maven plugin needs to be updated to refer to 
 the new version, then the maven plugin needs to be deployed to maven. 
 
 I could simplify the last step by allowing the version of jfx backport to be 
 configurable.
 
 As I've raised in previous emails, help would be good. I don't suppose any 
 oracle people could be allocated to merging changed into the backport on a 
 regular basis (eg weekly) - even on an unofficial, non-publicly-commited 
 arrangement? 
 
 
 On 09/08/2013, at 7:38 AM, steve.x.northo...@oracle.com wrote:
 
 Hi Daniel,
 
 Did you log a bug for the TextField problem?  If you have not done so, 
 please do.  If you use iOS: as a prefix for the title of the bug and use 
 iOS as a label, that should help people find iOS related bugs.  I have a 
 fix for the problem you are seeing.  The text skin thinks that because iOS 
 has touch, it needs to show resize handles in the text field.
 
 Steve
 
 On 01/08/2013 6:08 PM, Daniel Zwolenski wrote:
 So now the Maven stuff is working (
 http://www.zenjava.com/2013/08/01/javafx-on-ios-using-robovm-and-maven/),
 I'm gradually starting to muck around with the iOS stuff.
 
 There are problems - how do I raise them? Should I log JIRAs? Should I
 bring them up here, etc? Will you guys start running jfx on iOS now that
 it's possible and are bug fixes within your allowance to work on given iOS
 is not a supported platform?
 
 For example, in the hello world example, I've included a TextField. When I
 start typing in it on my iPad the field starts changing size to accommodate
 the auto-correction popup, which looks very weird. Should I log that as a
 bug against Controls?
 
 


Re: How to raise JavaFX iOS bugs?

2013-08-09 Thread Daniel Zwolenski
Is there going to be an answer on what JVM is going to be used for the JavaOne 
iOS demo?

I'd also like to know what JVM you are testing on for these fixes? 


On 10/08/2013, at 12:46 AM, steve.x.northo...@oracle.com wrote:

 
 On 08/08/2013 6:08 PM, Daniel Zwolenski wrote:
 No, I didn't get a chance. Probably easier for you to just raise it now?
 
 See https://javafx-jira.kenai.com/browse/RT-32237
 
 
 It's going to be a pretty big round loop to get ios fixes in. It first needs 
 to go into jfx then needs to be merged into the backport, then that needs to 
 be deployed to maven, then the maven plugin needs to be updated to refer to 
 the new version, then the maven plugin needs to be deployed to maven.
 
 I could simplify the last step by allowing the version of jfx backport to be 
 configurable.
 
 As I've raised in previous emails, help would be good. I don't suppose any 
 oracle people could be allocated to merging changed into the backport on a 
 regular basis (eg weekly) - even on an unofficial, non-publicly-commited 
 arrangement?
 
 
 On 09/08/2013, at 7:38 AM, steve.x.northo...@oracle.com wrote:
 
 Hi Daniel,
 
 Did you log a bug for the TextField problem?  If you have not done so, 
 please do.  If you use iOS: as a prefix for the title of the bug and use 
 iOS as a label, that should help people find iOS related bugs.  I have a 
 fix for the problem you are seeing.  The text skin thinks that because iOS 
 has touch, it needs to show resize handles in the text field.
 
 Steve
 
 On 01/08/2013 6:08 PM, Daniel Zwolenski wrote:
 So now the Maven stuff is working (
 http://www.zenjava.com/2013/08/01/javafx-on-ios-using-robovm-and-maven/),
 I'm gradually starting to muck around with the iOS stuff.
 
 There are problems - how do I raise them? Should I log JIRAs? Should I
 bring them up here, etc? Will you guys start running jfx on iOS now that
 it's possible and are bug fixes within your allowance to work on given iOS
 is not a supported platform?
 
 For example, in the hello world example, I've included a TextField. When I
 start typing in it on my iPad the field starts changing size to accommodate
 the auto-correction popup, which looks very weird. Should I log that as a
 bug against Controls?
 


Re: How to raise JavaFX iOS bugs?

2013-08-08 Thread Daniel Zwolenski
No, I didn't get a chance. Probably easier for you to just raise it now?

It's going to be a pretty big round loop to get ios fixes in. It first needs to 
go into jfx then needs to be merged into the backport, then that needs to be 
deployed to maven, then the maven plugin needs to be updated to refer to the 
new version, then the maven plugin needs to be deployed to maven. 

I could simplify the last step by allowing the version of jfx backport to be 
configurable.

As I've raised in previous emails, help would be good. I don't suppose any 
oracle people could be allocated to merging changed into the backport on a 
regular basis (eg weekly) - even on an unofficial, non-publicly-commited 
arrangement? 


On 09/08/2013, at 7:38 AM, steve.x.northo...@oracle.com wrote:

 Hi Daniel,
 
 Did you log a bug for the TextField problem?  If you have not done so, please 
 do.  If you use iOS: as a prefix for the title of the bug and use iOS as a 
 label, that should help people find iOS related bugs.  I have a fix for the 
 problem you are seeing.  The text skin thinks that because iOS has touch, it 
 needs to show resize handles in the text field.
 
 Steve
 
 On 01/08/2013 6:08 PM, Daniel Zwolenski wrote:
 So now the Maven stuff is working (
 http://www.zenjava.com/2013/08/01/javafx-on-ios-using-robovm-and-maven/),
 I'm gradually starting to muck around with the iOS stuff.
 
 There are problems - how do I raise them? Should I log JIRAs? Should I
 bring them up here, etc? Will you guys start running jfx on iOS now that
 it's possible and are bug fixes within your allowance to work on given iOS
 is not a supported platform?
 
 For example, in the hello world example, I've included a TextField. When I
 start typing in it on my iPad the field starts changing size to accommodate
 the auto-correction popup, which looks very weird. Should I log that as a
 bug against Controls?
 


Re: JavaFX Media issues

2013-08-08 Thread Daniel Zwolenski
I don't want to detract from the issues around media stuff (they are
significant), but if you are desperate (as I was), here's some code for
doing video capture and streaming based on LTI-CIVIL and writing to JFX
image to render the video:

   - https://code.google.com/p/jfxcamera/

It's a work around and not elegant at all, and media needs to have a lot
done to be useful. I only include it here in case there is something useful
you can take from it to hobble through.



On Fri, Aug 9, 2013 at 10:10 AM, Scott Palmer swpal...@gmail.com wrote:

 The Media APIs are mostly useless in their current state.  Other than
 demoing that you can play a video, they don't go far enough to be of
 practical value.  I tried to get someone to pay attention to them back in
 the JavaFX 1.0 days
 https://javafx-jira.kenai.com/browse/RT-2684

 at least someone listened to the request to get H.264 support in there, but
 that is just a workaround.  We need to be able to get our data into the
 media pipeline.  This would allow those of us that have attempted to do a
 video window to have a fighting chance.  Canvas can't keep up and will
 likely crash the app with out of memory errors.  Support for drawing into a
 native surface (OpenGL or D3D context) has been talked about, but doesn't
 appear to be on the horizon yet.  If we just had a hook to get the dang
 pixel data into the media pipeline so we could supply the next frame with
 whatever we want - either from any native codec via JNI, or dynamically
 generated from Java code, whatever... that would be just so dang useful...
 (to me at least)

 Regards,

 Scott



 On Thu, Aug 8, 2013 at 5:04 PM, Fabrizio Giudici 
 fabrizio.giud...@tidalwave.it wrote:

  On Thu, 08 Aug 2013 22:57:51 +0200, Joe McGlynn joe.mcgl...@oracle.com
  wrote:
 
   I don't know why FX Media isn't in the FX 8 API docs, but that's clearly
  an error.  Please file a bug on that.
 
  In the meantime, you should look at the FX 2 media docs, there isn't a
  lot of change from FX2 media in FX8.  Buffering and streaming (HTTP Live
  Streaming) are both supported, as is playback from a URL.
 
 
  What is the strategy for codecs? I mean, now we have ImageIO (there is
  also JAI but it seems basically dead). ImageIO provides many image codecs
  and there's a SPI that can be used to support more formats. Will it be
  replaced by FX2 media or co-exist with it?
 
 
  --
  Fabrizio Giudici - Java Architect @ Tidalwave s.a.s.
  We make Java work. Everywhere.
  http://tidalwave.it/fabrizio/**blog http://tidalwave.it/fabrizio/blog
 -
  fabrizio.giud...@tidalwave.it
 



Re: JavaFX and iOS - it will remain a dream

2013-08-07 Thread Daniel Zwolenski
How did you go with using Maven for your iOS stuff Tobi? Did it work out for 
you?

Has anyone else had a chance to get into it? I was hoping for more feedback on 
what works and what doesn't. Also hoping to see some open source demo iOS apps 
popup to start highlighting what works and what doesn't. 

http://www.zenjava.com/2013/08/01/javafx-on-ios-using-robovm-and-maven/

We all know 'Oracle' has a stupid stance on this, and reading between the lines 
the 'JFX' team are more on our side of the fence but are hamstrung. My personal 
feel is that the only hope is for the community to get the momentum going and 
to use that to then pressure Oracle into doing more. 

I've done what I can on the Maven front, trying to make it easy for developers 
to build apps. It's taken a lot of late nights and burnt up a lot of weekends 
(I even had to go buy a friggen Mac). I've reached my max for investing at this 
stage and need to take a little time to catch up on slipping day job work 
before the next round of fixes and enhancements. 

It would be great to see a real community effort here and see some people take 
up the baton and run the next leg of the relay. Both Niklas and Danno have done 
massive contributions so far too and I don't think they can be expected to 
carry the load alone. 

If you want to help give jfx iOS an actual fighting chance then consider:

- writing some demo apps using the maven stuff, blogging about it, feeding back 
problems and issues so we can start fixing them

- helping Niklas get robovm performant and feature rich (eg build a bundle for 
deployment to the app store)

- talk to Niklas about financially sponsoring his work - if a company or two 
were willing to pay for him to work on it an extra day or two a week I suspect 
we'd see rapid gains

- help maintain the backport run by Danno. Every time there are changes to the 
main jfx code we need to merge these into the backport. This is no small task. 

- help document the Maven plugin and generate usage information including a 
getting started guide and show how to do things like use FXML, change the app 
icon, change plists, run on older versions of ios, etc. 




On 07/08/2013, at 5:19 PM, Tobias Bley t...@ultramixer.com wrote:

 Yes Felix, it *has* to be this year…. We do not port our swing based 
 commercial apps if JavaFX does not run on tablets as well.
 
 
 
 
 Am 30.07.2013 um 21:06 schrieb Felix Bembrick felix.bembr...@gmail.com:
 
 Hi Tobi,
 
 I know how you feel.  As much as I am impressed with JavaFX, clearly its 
 long-term survival does depend on it being viable on mobiles and tablets.
 
 All I can say is don't give up yet.  I am certainly not giving up.  I really 
 hope we see something at JavaOne this year that will please us all.
 
 It *has* to be this year!
 
 Felix
 
 
 
 On 31 July 2013 02:40, Tobias Bley t...@ultramixer.com wrote:
 Hi,
 
 after many days trying to really build iOS apps with JavaFX and RoboVM or 
 Avian I’m very frustrated because of the following things:
 
 Based on RoboVM, JavaFX on iOS runs unacceptable slow - I don’t know the 
 reason - maybe it’s the rendering model of JavaFX - maybe it’s the currently 
 unoptimized RoboVM
 One big problem of RoboVM is it’s dependence of the Android library, it does 
 not support the OpenJDK. That’s a big reason for many many problems when 
 using JavaFX. So currently it’s not possible to use fxml files (FXMLoader) 
 because of the missing Stax xml parser and classes like XMLInputFactory in 
 the android library…
 Avian: we tried to use JavaFX in conjunction with Avian + OpenJDK and AOT 
 compiling… we hade no success…too complicated build process…no demos 
 available for iOS…
 
 So in my opinion „JavaFX on iOS“ will remain a dream…If there will be no big 
 company like Oracle or IBM who actively develops a VM for iOS and Android, 
 JavaFX will be useless, also on Desktop, then HTML5 or QT will be the big 
 winner for the most use cases on Desktop and mobile…
 
 Best,
 Tobi
 
 
 


Performant Controls (hijacking Re: Developing controls based on Canvas?)

2013-08-05 Thread Daniel Zwolenski
Sneaking in here, as you've given an opening with if implemented wisely,
there is very little that a scenegraph-based approach can't do. The
question I've been asking for a while is what does implemented wisely
look like in JFX.

This has come up in the performance conversations, the game conversations,
the CAD conversations, and many other places. No one seems to have an
answer, but you're building extremely complex stuff on a regular basis -
what's your tips?

When you say you only have 20 visible nodes out of 1000's in general are
the other nodes:
a) in the scenegraph and set to not visible
b) in memory but not in the scenegraph - added/removed when scrolled into
view and out of view
c) not in memory, created, added and then removed, destroyed when scrolled
into view and out of view
d) something else?

I know Table uses a rubber stamp approach, where it re-uses cell views
where possible, but let's say every row in my 100,000 row Table was
uniquely rendered using a different cell. What would happen under the
covers?

How do you work out the scroll range as well? Each cell can be a unique
height right? How do you know the extents of the vertical scrolling without
instantiating and rendering everything? Is this what you do? What if a cell
is changing size (has a collapsable pane in it, etc) - what happens to the
vertical scroll range?

Do any of the controls have zooming on them? Have you had to deal with this
and have you got a strategy for handling this with respect to scroll
bounds, working out which nodes are in view, scaling fonts, etc? Could you
hazard a guess at what you would do if you had to implement zooming on a
Table for example?

Maybe the Table is lucky with its restrictive grid like layout but imagine
you had to build a visualisation of the same data but in a diagram, maybe
something like
http://www.novell.com/communities/files/img/groupwise_8_protocol_flow_diagram_v1.3.jpgbut
with x100 nodes, with zooming and panning - could you outline a
general
strategy?





On Tue, Aug 6, 2013 at 10:10 AM, Jonathan Giles
jonathan.gi...@oracle.comwrote:

 I think it would pay to take a step back and understand why you think a
 'traditional' scenegraph-based (or retained mode) control is not sufficient
 for your needs?
 Unfortunately you've not detailed your use case, so it is hard to give any
 specific advice. Are you able to give any details about what it is you're
 trying to build and why you think the normal approach to building controls
 is not sufficient?

 We've built some fairly complex controls using this approach, and if
 implemented wisely, there is very little that a scenegraph-based approach
 can't do. Specifically, do you think your control will render all of the
 'thousands of nodes' at once, or will many of these nodes be off screen or
 otherwise not visible at any one time? For things like the TableView we
 only render the nodes that are visible. This means that regardless of
 whether there are 100 or 1,000,000 rows of data, we only have visual nodes
 for the 20 visible rows, for example. Keeping your scenegraph as minimal as
 possible is always a very wise idea, if performance is a concern.

 As you note, the other problem is that you will run into issues if you
 want to mix canvas rendering with the scenegraph-based controls like
 Button. The best you're likely to achieve (having not tried it personally)
 is to position the control on top of the canvas, rather than attempting to
 render the control inside the canvas (and having to then deal with event
 handling, etc). This will likely prove to be finicky, and more cumbersome
 than simply using an entirely canvas-based or entirely scenegraph-based
 approach.

 -- Jonathan


 On 5/08/2013 10:11 p.m., Felix Bembrick wrote:

 I am investigating the feasibility of developing a JavaFX 8 control based
 on Canvas.  I have chosen Canvas as the base class as this control is of a
 very dynamic nature and would not be easy to implement with a retained
 mode
 style ancestor (at least as far as I can tell).

 So is this feasible?  While I can readily see how to render the visual
 aspects of the control, I am not sure how to best embed other controls
 within it should that become necessary (and almost certainly will).

 For example, how would I go about embedding a Button within my control?
  It
 looks to me like I would need to create an actual Button node somewhere
 else in the scenegraph and then perhaps render it within my control using
 gc.drawImage() passing in a snapshot of the Button node.  That's OK but
 then I have to somehow handle events and I am not sure how best to do
 that.

 Another issue I see is that there seems to be no way to apply effects to
 individual graphic elements within the Canvas as the applyEffect() method
 applies to the entire Canvas.

 Finally, a significant obstacle is this issue:

 https://javafx-jira.kenai.com/**browse/RT-23822https://javafx-jira.kenai.com/browse/RT-23822

 This issue relates to the lack of support 

Re: Performant Controls (hijacking Re: Developing controls based on Canvas?)

2013-08-05 Thread Daniel Zwolenski
Thanks Jonathan, it's good to get your insight.

You did finish by muddying the waters again though - to do something
complex with zooming and scrolling you'd be tempted to fall back into
Java2D paint-style programming, and use Canvas for this, not the Scene
graph? It's more a couldbe/maybe comment though and is in contrast to your
earlier suggestion that there is very little that a scenegraph-based
approach can't do. What's the trigger to switch from one approach to the
other?

Previously there have been comments about the Canvas not really being
intended for highly dynamic stuff (that was my interpretation of comments
on here when Canvas was first released), and Nodes should be used for most
real things. Richard wanted to use Nodes in the TD game for sprites. To add
to the confusion, Canvas currently has some drastic z-order bugs, and some
clipping issues, so using it combined with Nodes is currently a no-go.

I'm not expecting Jonathan to have an answer here really, just highlighting
the fact that there is no clear answer on this. I'm still confused and I
imagine many others are too. I think we'll see this question again.


On Tue, Aug 6, 2013 at 11:00 AM, Jonathan Giles
jonathan.gi...@oracle.comwrote:

  I don't think there is any particular secret sauce going on in what I do
 compared with the general guidelines that have been spelled out numerous
 times. It's the same old, same old: don't create more nodes than you need,
 don't modify the scenegraph needlessly, don't update the scenegraph
 multiple times in a single pulse, change state as little as possible, use
 as few listeners as possible, etc. I wish I had something more
 groundbreaking for you, but that is about it :-)

 With respect to TableView (and ListView, TreeView, and TreeTableView),
 they are all based on the same virtualisation code (VirtualFlow for those
 of you playing at home). We don't rubber stamp, we create separate cell
 instances for the visible area of the control, and reuse these exact same
 cells as the user scrolls. Therefore, if the visible area requires 20
 cells, we may create ~22 cells, and as the user scrolls downwards we take
 the cells that disappear out the top of the view and place them at the
 bottom of the view, with their new content in place before it is shown on
 screen.

 Because all cells come from a single cell factory, and all cells can be
 used in any location, it is up to the cell to respond to the item placed
 into it and draw itself appropriately. Therefore, we don't have 1000's of
 types of cells in a single control, we only have one type of cell that
 needs to handle all the visual approaches required in the app.
 Realistically, there aren't 1000's of styles in a single control, normally
 there are only one, or two at most. All this takes place in the
 Cell.updateItem(T, boolean) method, and so people overriding this method
 need to be smart and not do heavy lifting in there. The biggest mistake I
 see people doing in updateItem(...) is throw away their entire cell
 scenegraph and recreate the nodes and update the scenegraph. This is unwise.

 If you have a ListView with 100 nodes, and they are all equally sized
 except for one (say the 50th), which is _significantly_ bigger, you will
 see the scrollbar jump in size and other weirdness happen when it is
 scrolled into view, precisely for the reason you state - we can't go off
 and measure every row as we'd be doing a lot of busy work. We only measure
 what is in the visual area, and we don't know where we are in the scroll
 range in terms of pixels but rather in terms of a 0.0 - 1.0 range (which is
 translated back to pixels when needed). Up to this point I've known about
 this issue but I've not spent the cycles to resolve it - it is a relatively
 rare use case (although it still happens). Priority #1 for these
 virtualised controls is always speed.

 If zooming were required on TableView, the implication (I presume) is that
 there would be that less cells that were visible at any one time, and so we
 would end up having less cells in the scenegraph. Other than that, things
 would work as above.

 In a past life I did a lot of work in Java 2D. This worked really well for
 use cases like you suggest at the end of your email, namely zooming and
 direct mouse manipulation of nodes on screen. If I were to write something
 like you show in the screenshot, I would be tempted to take a Canvas-based
 route nowadays, but of course that decision would also be driven by the
 requirements and use cases, and it is possible a scenegraph-based approach
 with absolute node positioning would work just as well.

 Hope that helps.

 -- Jonathan

 On 6/08/2013 12:38 p.m., Daniel Zwolenski wrote:

 Sneaking in here, as you've given an opening with if implemented wisely,
 there is very little that a scenegraph-based approach can't do. The
 question I've been asking for a while is what does implemented wisely
 look like in JFX.

  This has come up in the performance

Re: TD game (hijacking Re: Performant Controls (hijacking Re: Developing controls based on Canvas?))

2013-08-05 Thread Daniel Zwolenski
I'm out for that one for the foreseeable future. I've burnt up any and all
free time on getting the desktop and iOS workflows working with Maven.
I'm big time behind on client work.

Tell you what though, if you can get someone at Oracle to take over the
deployment tools and iOS stuff, I'd very happily switch over to building
games and gliffy-like demo apps :)




On Tue, Aug 6, 2013 at 3:02 PM, Richard Bair richard.b...@oracle.comwrote:

 It really wasn't ever supposed to be my TD game, I keep trying to get you
 (and others interested in the community) to develop it. I'm up to my
 eyeballs in work already, as I'm sure you can relate :-)

 Richard

 On Aug 5, 2013, at 9:24 PM, Daniel Zwolenski zon...@gmail.com wrote:

 You should be able to check out they work in your TD game and continue
 development on that then.


 On Tue, Aug 6, 2013 at 2:16 PM, Richard Bair richard.b...@oracle.comwrote:

  To add
  to the confusion, Canvas currently has some drastic z-order bugs, and
 some
  clipping issues, so using it combined with Nodes is currently a no-go.

 I believe those have all been fixed in the last couple of weeks.

 Richard






JavaFX On IOS Using RoboVM And Maven

2013-07-31 Thread Daniel Zwolenski
The RoboVM Maven plugin is now released with JFX support using Danno's
backport, which is all in Maven Central.

I talk about it in detail here:
http://www.zenjava.com/2013/08/01/javafx-on-ios-using-robovm-and-maven/

I'd greatly appreciate people here trying it out and letting me know fairly
quickly if there are any steps I left out or if anything is not working (in
terms of the hello world, not bigger issues at this stage).

Every time I release or publish something I get a lot of I don't know how
to code and couldn't get past step 2 type requests. These can be very time
consuming to work through, since some are real and some are just
stupid-user-exceptions. Anything I can head off at the pass is a boon.

As per the post, yes, it's slow, yes, it's buggy, yes, it all looks pretty
crap at the moment - but it's suppose to. The JFX code has barely been run
by the people who wrote it and the RoboVM code is being developed by one
guy part time and has not been optimised at all. The fact that it works at
all is down right amazing.

The point of releasing this code is so the above issues can start being
addressed, it's not meant to be perfect. If you want it better, I'm sure
Niklas, Danno and Richard are only too happy for you to help out in each of
the respective areas where there are known issues.

No one ever wants to help out with the build tools, that's a crap job that
no sane person would do in their spare time :)


Modularisation and repositories (forked from Re: Building JavaDoc and Sources JARs)

2013-07-29 Thread Daniel Zwolenski
On Fri, Jul 26, 2013 at 3:47 PM, Richard Bair richard.b...@oracle.comwrote:

I'm assuming here you're talking about publishing real builds (at least
 OpenJFX ones) and not on a local developers machine ('cause there'd be no
 advantage to that alone). But maybe you can help me understand another part
 of this problem, which is that suppose we have two developers, A and B. A
 is on some code two weeks old. B is completely up to date. B does some fix
 and pushes it. The build server builds the artifacts and puts them in the
 repo. The next time A does a build, it grabs the latest built artifacts for
 the code A isn't building (WebView, for instance) and there is a
 compile/link error because the new binaries from B are out of sync with the
 2 week old code that A is building with.

 Normally you version for things like this, but in this case we're talking
 about shared libraries that are unversioned -- they're SNAPSHOT. But one
 snapshot is not equal to another. How to handle this? Right now in the
 closed builds we have an explicit ant update step you have to run to get
 the latest binaries.


I've had similar situations to what you're facing, where I might have a
number of core/utility libraries in an organisation and then lots of
projects that use these. If one team changes the utilities but the other
team doesn't want those changes, it gets messy.

I'll give you the overview of solutions I've come up to this and you can
take from it what you like. I haven't used Gradle though so I'll have to
talk in terms of Maven. Since Maven is more restrictive than Gradle you can
hopefully extract what you need. Others might be able to chime in more or
different opinions (I'd love that personally).

In Maven, you would have each of your modules as a separate Maven module,
with it's own POM and it's own coordinates (where it is deployed to in the
repo). e.g. using groupId:artifactId:version you would have stuff like:

   - net.java.openjfx:openjfx-base:8.0.1
   - net.java.openjfx:openjfx-controls:8.0.1
   - etc

Each of the native modules would also be their own modules with their own
POM files and coordinates, so you would have:

   - net.java.openjfx:jsl-decora:8.0.1
   - net.java.openjfx:jsl-prism:8.0.1
   - net.java.openjfx:native-font:8.0.1
   - etc

Maven typically works best when you group these in a folder hierarchy, with
parent POMs as needed. Gradle is more flexible, but I suspect it would
still benefit from a the standard hierarchy here, this could look something
like (cut down, just indicative):

   - openjfx
   - base
  - controls
  - graphics
 - graphics-core
 - jsl-decora
 - jsl-prism


Each of those directories would have it's own POM and in the leaf cases a
src/main/java (or native equivalent such as src/main/c++). I've introduced
graphics-core, since currently graphics is one big blob of Java and native
artifacts, making it hard to work with and deploy, etc. It works better if
they are separate and in Maven a parent module (such as graphics) would not
typically have code in it as well.

This directory structure allows you to build each module, or group of
modules stand alone. You could go into the controls directory and run 'mvn
clean install' and it would build only that, or into the graphics directory
and build only the graphics child modules. The top level openjfx module
would have no source code but would just provide an uber parent where you
could just build all the sub-modules in one command mvn clean install
(maybe adding a -Pwin64 to trigger profiles to build the OS specific
versions).

Each of these modules would then be deployed to its own unique coordinates
in your Maven repo (your self-hosted artifactory or whatever). So
jsl-decora is in its own directory in the repo and is then referenced as a
dependency by graphics-core (or whatever needs to use it). Additionally the
JavaDoc and source code for each module would be deployed with each. Each
module is a totally stand-alone deliverable - even if it only exists to be
used inside a bigger module.

This is where it gets nice, since if jsl-decora is available in a repo I
have access to, I never need to build it, Maven will just pick up that one.
Similar for all the pure Java modules as well - if I just want to build
'controls' but not 'base', Maven will pick up base from the repo. This is
good modularisation - you have this on the code level now but not on your
build level as far as I can see.

Additionally you can open an individual POM file in IntelliJ or Eclipse as
its own project. So you could open just the 'controls' project and it
should be able to build and run the unit tests, etc, of just that module.
Or if you open the graphics parent module it would open all the child
projects as well. And opening the top level openjavafx POM, would open all
the child projects and descendants for everything. (As an aside, with Maven
I never check in my intellij project files, and tend to get my developers
to open the 

Re: Modularisation and repositories (forked from Re: Building JavaDoc and Sources JARs)

2013-07-29 Thread Daniel Zwolenski
And one other thing I forgot to mention on this topic, the practice of
having platform specific jars that contain both the non-platform specific
stuff (usually 90%+) and the platform specific stuff does not fit that well
into Maven repo deployment.

Maven would prefer to have something like

   - jfxrt.jar - contains all the non-platform specific code
   - jfxrt-win.jar - only contains the additional bits for windows
   - jfxrt-osx.jar - only contains the additional bits for OSx
   - etc

You would then deploy these all under net.java.openjfx:jfxrt:8.0.1 but the
main jar would have no classifier and the other jars would have a
classifier for their platform. The source (and javadoc) however would be
one zip for all them (deployed under the same coordinates but with the
classifier 'source' or 'javadoc').

Currently I'm stuck in the deployment of the 78 backport as Sonatype won't
let me close a release without a non-classified JAR but we have only
operating specific ones that I am deploying with a classifier. I'm waiting
to hear from Sonatype what they recommend in this case,





On Mon, Jul 29, 2013 at 11:34 PM, Daniel Zwolenski zon...@gmail.com wrote:

 On Fri, Jul 26, 2013 at 3:47 PM, Richard Bair richard.b...@oracle.comwrote:

 I'm assuming here you're talking about publishing real builds (at least
 OpenJFX ones) and not on a local developers machine ('cause there'd be no
 advantage to that alone). But maybe you can help me understand another part
 of this problem, which is that suppose we have two developers, A and B. A
 is on some code two weeks old. B is completely up to date. B does some fix
 and pushes it. The build server builds the artifacts and puts them in the
 repo. The next time A does a build, it grabs the latest built artifacts for
 the code A isn't building (WebView, for instance) and there is a
 compile/link error because the new binaries from B are out of sync with the
 2 week old code that A is building with.

 Normally you version for things like this, but in this case we're talking
 about shared libraries that are unversioned -- they're SNAPSHOT. But one
 snapshot is not equal to another. How to handle this? Right now in the
 closed builds we have an explicit ant update step you have to run to get
 the latest binaries.


 I've had similar situations to what you're facing, where I might have a
 number of core/utility libraries in an organisation and then lots of
 projects that use these. If one team changes the utilities but the other
 team doesn't want those changes, it gets messy.

 I'll give you the overview of solutions I've come up to this and you can
 take from it what you like. I haven't used Gradle though so I'll have to
 talk in terms of Maven. Since Maven is more restrictive than Gradle you can
 hopefully extract what you need. Others might be able to chime in more or
 different opinions (I'd love that personally).

 In Maven, you would have each of your modules as a separate Maven module,
 with it's own POM and it's own coordinates (where it is deployed to in the
 repo). e.g. using groupId:artifactId:version you would have stuff like:

- net.java.openjfx:openjfx-base:8.0.1
- net.java.openjfx:openjfx-controls:8.0.1
- etc

 Each of the native modules would also be their own modules with their own
 POM files and coordinates, so you would have:

- net.java.openjfx:jsl-decora:8.0.1
- net.java.openjfx:jsl-prism:8.0.1
- net.java.openjfx:native-font:8.0.1
- etc

 Maven typically works best when you group these in a folder hierarchy,
 with parent POMs as needed. Gradle is more flexible, but I suspect it would
 still benefit from a the standard hierarchy here, this could look something
 like (cut down, just indicative):

- openjfx
- base
   - controls
   - graphics
  - graphics-core
  - jsl-decora
  - jsl-prism


 Each of those directories would have it's own POM and in the leaf cases a
 src/main/java (or native equivalent such as src/main/c++). I've introduced
 graphics-core, since currently graphics is one big blob of Java and native
 artifacts, making it hard to work with and deploy, etc. It works better if
 they are separate and in Maven a parent module (such as graphics) would not
 typically have code in it as well.

 This directory structure allows you to build each module, or group of
 modules stand alone. You could go into the controls directory and run 'mvn
 clean install' and it would build only that, or into the graphics directory
 and build only the graphics child modules. The top level openjfx module
 would have no source code but would just provide an uber parent where you
 could just build all the sub-modules in one command mvn clean install
 (maybe adding a -Pwin64 to trigger profiles to build the OS specific
 versions).

 Each of these modules would then be deployed to its own unique coordinates
 in your Maven repo (your self-hosted artifactory or whatever). So
 jsl-decora is in its own directory

Putting the JavaFX 78 backport into Maven Central

2013-07-29 Thread Daniel Zwolenski
As I mentioned, I'm in the process of deploying the iOS version of Danno's
78 backport (https://bitbucket.org/narya/jfx78) to Maven Central. This is a
summary of a couple of decisions I'm taking.


*78 Backport Coordinates *

I previously proposed deploying with these coordinates:

   - groupId=net.java.openjfx
   - artifactId=openjfx-78-backport
   - version=1.8.0-ea-b96.1
   - classifier=ios

The native files would use the same coordinates, except with an artifactId
of openjfx-78-backport-native.

Given the backport is quite different to the official stuff, in order to
keep things clean down the road, I'm now thinking of using a specific group
for the backport, so:

   - groupId=net.java.openjfx.backport
   - artifactId=openjfx-78-backport
   - version=1.8.0-ea-b96.1
   - classifier=ios

If there are any objections or better ideas, shout out as soon as possible.


*Classifiers for OS and default JARs*

I hit a problem in that in order to pass the rules for submitting, I need
to have an unclassified (default) JAR file. There is no such JAR in jfx
since all JARs are platform dependent. Sonatype have recommended I pick one
of the OS dependent JARs and use that as the default (yuck). In the case of
the backport I am only building the ios one, so this is going to be the
easiest default JAR for me to deploy. If anyone has any objections to that,
or better ideas - shout out as soon as possible.

If we ever get to the stage of deploying the official openjfx modules then
we will be faced with the decision of which one is the 'default'. I'll
leave that alone at the moment, but Richard, if you are looking at using
repos, this might be something to keep in mind (ideal would be to do the
split I mentioned in a previous email).

*
Compatibility classes*

JavaFX 8 is using classes in the JDK that are not available in Java7. For
the backport to work there were two choices, either edit the JFX code to
not use these classes, or make these classes available to the backport.
Danno and Niklas decided to go for the second option, and there is now
another mini-project containing these classes so they can run on Java7.
https://github.com/robovm/robovm-jfx78-compat

I am also going to push these into Maven (I need to do some work on the POM
in this first). The coordinates are a little tough for this, but I'm
thinking of using:

   - groupId=net.java.openjfx.backport
   - artifactId=openjfx-78-backport-compat
   - version=1.8.0.1

The version is tricky. It's unlikely this compatibility stuff will change
much with each release of JFX, so I don't really want to tie it into the
version number of that (e.g. 1.8.0-ea-b96.1) and then have to redeploy an
identical JAR each time. At the same time, we will likely want to add
things over time that we missed, etc, so we do need a version number we can
increment. I'm using the .1 on the end for this.

This versioning is not overly intuitive, but it's the best I can come up
with. Objections, suggestions, shout out.

*POM file info*

To deploy to Sonatype and pass their checks, I have to fill in various
sections of the POM such as licencing information, URLs, list of
developers, etc.

I've attached the POMs which are fleshed out as best I can and should pass
the checks. If anyone wants anything different or sees any problems, shout.

The developer section I have stuck in Danno as Project Owner and myself as
Maven Deployer. The idea of this section is that it provides a reference
point to the people working on the project so someone could track them down
later. I don't really care who or what goes in here.


Re: Building JavaDoc and Sources JARs

2013-07-26 Thread Daniel Zwolenski
Thanks guys - the source target worked like a charm so that's that bit
sorted. I don't need platform specific separations of source or javadoc
just the simple stuff - although technically I should put the source for
the native libs alongside the native files when I deploy them too. I don't
suppose anyone has a task that zips/jars up all the native code?

For the JavaDoc: there were a few issues on my end. I had java8 set as my
home, switching to java7 made some of the weirder errors go away. Then
adding the JDK doc to my JDK home got rid of a bunch more (I think). I
didn't have to set any properties just extract the doc into the JDK home.

Then I had to remove the 'web' module from the javadoc task as this was
referencing com.sun.webkit stuff that isn't there. I'm using the *Java78
backport* here.

Now I just have a whole lot of errors from the Ensemble stuff, along these
lines:

/Users/zonski/Development/openjdk/jfx78/jfx78/jfx78/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/advancedstage/AdvancedStageApp.java:72:
error: cannot find symbol
public class AdvancedStageApp extends Application {
  ^
symbol: class Application


Not sure why but don't really care as easiest for me would be to just to
exclude all samples from the javadoc task. I assume I need to do something
with this line in the javadoc task:

exclude(com/**/*, javafx/scene/ParentDesignInfo*, Compile*,
javafx/builder/**/*);


I'm sure it's simple but I've run out of time at the moment (moving
house/states) so I'll have to work this out later but if anyone knows off
the top of their head, that would help me.

Richard, I'll definitely respond to your question on module separation and
versioning when I get a chance. Might take a few days though.







On Fri, Jul 26, 2013 at 6:05 PM, Robert Fisher rfis...@tesis.de wrote:

 For a source jar/zip I added the following top-level task to my
 build.gradle file:

 task jfxrtSources(type: Zip) {
 group = Basic;
 description = Packs all sources for jfxrt.jar into a zip file;
 archiveName = build/javafx-src.zip;
 includeEmptyDirs = false;
 from(modules/base/src/main/java,
  modules/builders/src/main/java,
  modules/controls/src/main/java,
  modules/designTime/src/main/java,
  modules/fxml/src/main/java,
  modules/fxpackager/src/main/java,
  modules/graphics/src/main/java,
  modules/web/src/main/java,
  modules/swing/src/main/java,
  modules/swt/src/main/java);

 include(**/*.java);
 }

 If you want to exclude sources that are irrelevant for your target
 platform (e.g. android-specific sources in a windows build), you can just
 declare the task at top-level and put the implementation underneath
 complileTargets { , exactly as it is done for the jfxrt task for
 instance.

 Cheers,
 Rob


 -Ursprüngliche Nachricht-
 Von: openjfx-dev-boun...@openjdk.java.net [mailto:
 openjfx-dev-boun...@openjdk.java.net] Im Auftrag von Richard Bair
 Gesendet: Freitag, 26. Juli 2013 06:39
 An: Daniel Zwolenski
 Cc: openjfx-dev@openjdk.java.net
 Betreff: Re: Building JavaDoc and Sources JARs

 You gotta set the BUILD_JAVADOC flag. Look in gradle.properties.template
 -- all the different flags are pretty well documented there.

 For sources, somebody else posted a message about wanting to do that, and
 I think that's great. Just need to get a patch to the gradle build to
 create a source zip (per platform, or just one big zip with everything in
 it?)

 Richard

 On Jul 25, 2013, at 8:24 PM, Daniel Zwolenski zon...@gmail.com wrote:

  For the Maven deploy I need a JAR of the JavaDoc and another
  containing the sources. That's the rules.
 
  How do I build these with the Gradle build? I tried:
 
  gradle javadoc
 
  and can't see any JavaDoc anywhere in the build directory?
 
  Admittedly I am running this on the 78 backport code, not the JFX
  code, but I believe this part of the build should be the same?
 
  Full log:
 
  Daniels-MacBook-Pro:jfx78 zonski$ /usr/local/gradle-1.6/bin/gradle
  javadoc The ConfigurationContainer.add() method has been deprecated
  and is scheduled to be removed in Gradle 2.0. Please use the create()
  method instead.
  :buildSrc:clean UP-TO-DATE
  :buildSrc:generateGrammarSource
  error(10):  internal error: Can't get property indirectDelegates using
  method get/isIndirectDelegates from org.antlr.tool.Grammar instance :
  java.lang.NullPointerException
  java.util.Objects.requireNonNull(Objects.java:203)
  java.util.ArrayList.removeAll(ArrayList.java:674)
  org.antlr.tool.CompositeGrammar.getIndirectDelegates(CompositeGrammar.
  java:222)
  org.antlr.tool.Grammar.getIndirectDelegates(Grammar.java:2620)
  sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
  ava

Re: Can JavaFX do CAD?

2013-07-26 Thread Daniel Zwolenski
 story...

 So this is why I think it's imperative that Oracle invests in developing a
 true showcase application for JavaFX.  Something that non-technical people
 (like managers who make decisions about where the money goes) can look at
 it
 and go wow!.

 I am just not getting my managers to go wow at what I can show them with
 JavaFX at the moment.

 Every comment or apparent criticism I post about JavaFX is from the
 perspective that I am trying to deal with real-world problems and people
 who
 require proof (such as demos, reference sites etc.) and not because I
 myself
 think JavaFX is not up to scratch.

 It's quite the opposite actually.

 I am a very, very strong believer and supporter of JavaFX and have many
 reasons both personal and professional as to why I want it to be a massive
 success.  As I have said before, there are plenty of people who praise
 JavaFX and tend to avoid the very real issues that are restricting its
 adoption.  I just think we have to face these issues head on if we are to
 compete in what is a very cut-throat industry.

 -jct

 -Original Message-
 From: Richard Bair [mailto:richard.b...@oracle.com]
 Sent: Saturday, 27 July 2013 01:40
 To: John C. Turnbull
 Cc: 'Daniel Zwolenski'; openjfx-dev@openjdk.java.net
 Subject: Re: Can JavaFX do CAD?

  For Flash, there are literally millions of examples of
  fancy/complex/impressive graphics and animations out there that can be
  really impressive at times.  I have not seen ONE such example in JavaFX!

 Point to one?

 Have you seen any of the JavaOne examples? The movie wall or movies on a
 stack of 3D cubes was pretty good. But I guess you're not interested in the
 3D aspect? What is it you are looking for exactly? Different people (on
 this
 list) have had different perceptions on both (a) what's important and (b)
 what kind of graphics they're interested in. Most people would deride the
 dancing cat as being totally irrelevant to the types of applications
 they're
 trying to build (the basis for much of flash animations is shape morphing,
 you can find some code here https://gist.github.com/gontard/5029764).

 On the other hand, JavaFX is not a replacement for OpenGL. Drawing 25
 million lines is just not something we can do right now, especially in a
 resource constrained environment. I've already commented on the memory
 overhead (which would continue to be an issue even if the drawing part of
 the problem were solved).

 I've pushed to graphics repo the StretchyGrid, which is about 300k line
 nodes (the actual amount is variable, see the javadoc comments). At 300k
 nodes the scene graph overhead is negligible on the FX side, dirty opts is
 taking a long time to run, and painting is really slow.

 PULSE: 347 [122ms:222ms]
 T12 (8 +0ms): CSS Pass
 T12 (8 +0ms): Layout Pass
 T12 (47 +53ms): Waiting for previous rendering
 T12 (100 +1ms): Copy state to render graph
 T10 (101 +16ms): Dirty Opts Computed
 T10 (117 +105ms): Painted
 Counters:
 Nodes rendered: 306565
 Nodes visited during render: 306565

 If I were doing this by hand in open GL, I think the drawing would be
 essentially free, if I used LINES with GL anti-aliasing, I could send 'em
 all down to the card in a single shot (and if I had a modern GL I could do
 LINES + FXAA or one of the other per-pixel AA algorithms available and it
 would turn out pretty nice). Because our shapes don't implement the non-AA
 path, and our AA involves software rasterization and uploading of pixels, I
 expect that to be the main source of the 105ms time being spent here.

 Also I noticed (by turning on prism.showdirty=true) that the entire grid is
 being painted every time, even though visually it looks like only a small
 subset actually needs to be changed. But that's really a minor thing, as I
 said, drawing this many lines should basically be free if I configure
 smooth to false in the app. Except that right now it is totally not
 implemented (in NGShape):

 public void setAntialiased(boolean aa) {
 // We don't support aliased shapes at this time
 }

 The point of stretchy grid is not to say wow look at this amazing demo.
 The point is to say what happens if I put in 300K nodes. Where does the
 system start to fall over?.

 Richard=




Pushing OpenJFX to Maven - licensing and other stuff (forked from Re: jfxrt.jar - is it platform specific?)

2013-07-25 Thread Daniel Zwolenski
, e(fx)clipse will add support for your
 maven-plugin and RoboVM deployment options (most likely also ontop of
 the above mentionned maven-distro) with the next release in autumn.

 Tom

 On 25.07.13 08:46, Daniel Zwolenski wrote:
  Ok, thanks.
 
  Is it architecture specific, i.e. within a target OS does each platform
  require it's own jfxrt.jar or do they all share the same? Most
  specifically, on iOS do the armv7 and i386 architectures use the same JAR
  and just different lib files or is there a specific jfxrt.jar for each?
 
  In general it would be great to see a list of all the distinct JARs that
  can be produced e.g. something like:
 
  jfxrt-ios.jar
  jfxrt-win.jar (or is jfx-win32.jar and jfx-win64.jar, etc)
  jfxrt-osx.jar
  jfxrt-linux.jar
  jfxrt-pi.jar
 
  I imagine that list is very wrong (pi, linux, especially) - what's the
 real
  list? This (
 https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX)
  kind of hints at it but for example if I want to build for win32 do I
 have
  to be on a win32 system or does building on a 64 bit platform produce the
  files needed for both, etc?
 
  Even better if we had some document that outlined all the supported
  platforms the JAR and the native libs built for that platform in a nice
 big
  table. Bonus points for clear cut steps and commands to build each one,
  which platforms you can run on and what gradle command to run.
 
 
 
 
  On Thu, Jul 25, 2013 at 3:32 PM, Kevin Rushforth 
 kevin.rushfo...@oracle.com
  wrote:
 
  Yes, jfxrt.jar is platform-specific. On the desktop there are
  platform-specific glass and Prism classes (not sure about the WebKit
  classes). On embedded platforms (Linux-arm, IOS, Android) there are many
  differences.
 
  -- Kevin
 
 
 
  Daniel Zwolenski wrote:
 
  Obviously there are native libs (dlls, etc) that JFX uses that are
 outside
  of the jfxrt.jar.
 
  But is the actual jfxrt.jar produced by the build generic and able to
 be
  used on any platform (so long as the natives are also present) or is it
  platform specific itself?
 
  We are getting close to the ios/backport stuff working (as well as it
 can
  at this stage) and are aiming to start putting stuff in Maven soon.
 Just
  want to make sure I get the separations as clean as possible because
 once
  it's in Central it doesn't ever leave.
 
  Cheers.
 
 
 




Re: Building JavaDoc and Sources JARs

2013-07-25 Thread Daniel Zwolenski
I've enabled that property and I now get a bunch of errors (100+), some
random samples:

/Users/zonski/Development/openjdk/jfx78/jfx78-zonski/jfx78/modules/web/src/main/java/javafx/scene/web/HTMLEditor.java:31:
error: package com.sun.javafx.scene.web.skin does not exist
import com.sun.javafx.scene.web.skin.HTMLEditorSkin;

/Users/zonski/Development/openjdk/jfx78/jfx78-zonski/jfx78/modules/swt/src/main/java/javafx/embed/swt/FXCanvas.java:186:
error: incorrect use of inline tag
 * @inheritDoc
   ^
/Users/zonski/Development/openjdk/jfx78/jfx78-zonski/jfx78/modules/graphics/src/main/java/javafx/scene/input/Clipboard.java:93:
error: end tag missing: /code
 * precode

/Users/zonski/Development/openjdk/jfx78/jfx78-zonski/jfx78/modules/controls/src/main/java/javafx/scene/control/TableColumn.java:381:
error: reference not found
 * is the {@link PropertyValueFactory} class. Refer to this class for
more


I see properties talking about linking to the JavaDoc for the whole JDK
(which I'm now downloading). I will set this up but I don't think it's
going to solve most of those errors?


Some general feedback: Seems like a lot of hoops to jump through and magic
in the build still. I'm just trying to get some JavaDoc here, nothing
fancy. Apart from the errors working, it's not overly intuitive that I have
to set a BUILD_JAVADOC=true to make 'gradle javadoc' work - can't the
gradle command just force the jdoc to build? The gradle stuff is definitely
better than before but it's still not a check it out and get busy coding
setup, which I'm hoping is the eventual goal.

The IntelliJ project that comes down with it doesn't just open either. It
seems to be dependent on all the other JDK projects being there. I don't
know how Gradle works, but the Maven approach to this would be that all
your bits and pieces are stand-alone artefacts/modules with their own POM.
Each one could be built on their own (and the jar is then put in a repo)
and then they all just reference each other as needed. If you guys deployed
to repositories (literally a filesystem that follows a naming convention -
not that hard!) for your builds and deployed each of the modules, then
community developers could just reference these instead of having to build
and reference bits and pieces that they have no interest in.





On Fri, Jul 26, 2013 at 2:38 PM, Richard Bair richard.b...@oracle.comwrote:

 You gotta set the BUILD_JAVADOC flag. Look in gradle.properties.template
 -- all the different flags are pretty well documented there.

 For sources, somebody else posted a message about wanting to do that, and
 I think that's great. Just need to get a patch to the gradle build to
 create a source zip (per platform, or just one big zip with everything in
 it?)

 Richard

 On Jul 25, 2013, at 8:24 PM, Daniel Zwolenski zon...@gmail.com wrote:

  For the Maven deploy I need a JAR of the JavaDoc and another containing
 the
  sources. That's the rules.
 
  How do I build these with the Gradle build? I tried:
 
  gradle javadoc
 
  and can't see any JavaDoc anywhere in the build directory?
 
  Admittedly I am running this on the 78 backport code, not the JFX code,
 but
  I believe this part of the build should be the same?
 
  Full log:
 
  Daniels-MacBook-Pro:jfx78 zonski$ /usr/local/gradle-1.6/bin/gradle
 javadoc
  The ConfigurationContainer.add() method has been deprecated and is
  scheduled to be removed in Gradle 2.0. Please use the create() method
  instead.
  :buildSrc:clean UP-TO-DATE
  :buildSrc:generateGrammarSource
  error(10):  internal error: Can't get property indirectDelegates using
  method get/isIndirectDelegates from org.antlr.tool.Grammar instance :
  java.lang.NullPointerException
  java.util.Objects.requireNonNull(Objects.java:203)
  java.util.ArrayList.removeAll(ArrayList.java:674)
 
 org.antlr.tool.CompositeGrammar.getIndirectDelegates(CompositeGrammar.java:222)
  org.antlr.tool.Grammar.getIndirectDelegates(Grammar.java:2620)
  sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  java.lang.reflect.Method.invoke(Method.java:491)
  org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:563)
 
 org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:514)
 
 org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:416)
 
 org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
 
 org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
 
 org.antlr.stringtemplate.language.ActionEvaluator.templateApplication(ActionEvaluator.java:216)
 
 org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:126)
 
 org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
  org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148

Re: Can JavaFX do CAD?

2013-07-24 Thread Daniel Zwolenski
I think the below comment makes it sound more straight forward than it is. In 
building a diagramming tool there is much more to it than just the rendering 
frame rate. 

This topic about CAD-like apps and 'performant' highly visual jfx apps in 
general has been raised here and in the forums before, without any clear 
resolution. Chris, the closest we've come to an answer is that it certainly 
isn't straight forward to do and there are many areas where the intuitive 
solution (especially for us ex-swing devs) gives results that are horribly 
unusable. 

There *might* be a way to get jfx to do this but there's no clear guidelines on 
how to achieve a 'performant' result. This is why I +1'd your question and 
added areas I feel need clarification from the jfx team. Unfortunately I'm not 
entirely sure they know the answers themselves and it generally comes back as a 
'you try it and let us know how it goes'. 

The last time we raised a similar topic it led to an attempt to build a Tower 
Defender game (led by Richard) in order to 'see how it goes', which revealed 
some pretty significant problems and the game quickly stalled as a result. 

Having built a prototype floor plan tool in JFX2 before I can say it did not go 
smoothly. The things I've listed as wanting best practices for are all areas 
where I struggled to make jfx achieve decent results in terms of 
responsiveness, animation speed/smoothness, rendering quality and simplicity 
and cleanliness of code. 

The one area where I'd say it did hold up well (as far as I could tell) was 
frame rate but that didn't help me at all and I doubt would be much consolation 
for you after you make the massive effort needed to convert your app. 



On 24/07/2013, at 4:29 PM, Joseph Andresen joseph.andre...@oracle.com wrote:

 I believe JavaFx could do cad, first step would be to provide a simple data 
 set and boil it down to the best render paths in JavaFX. 
 
 As far as I know it shouldn't be any worse than swing with the slowest render 
 paths.
 
 -Joe
 
 On Jul 23, 2013, at 8:47 AM, Chris Gay chris.gay5...@gmail.com wrote:
 
 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
 a Toolbar for Tools, and a few buttons, but 99% of the user activity 
 concerns selecting and manipulating vector graphical objects in a 
 traditional manner using one Tool at a time (think Inkscape or LibreOffice 
 Drawing apps). The application has multiple drawings open at the same time 
 (but only one is visible), and each Drawing contains it's own Drawing and 
 Processing threads (in addition to sharing the Main and Event Threads), 
 which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
 acting as a Display List of all graphical objects, and each graphical object 
 can be a tree structure. In many cases I use simple iteration instead of 
 Iterators, simply for speed, and to avoid garbage. The graphical objects are 
 lightweight, in that they do not carry references to events and handlers. 
 All they carry is their basic geometric data and properties, a bounding box 
 which they can lend as Read Only, and a boolean flag to indicate selection, 
 which means there can be millions of the objects, with a minimum memory 
 footprint. To support them, there are many hundreds of methods, which the 
 tools interact with. There can be multiple Drawing Windows active on a 
 single drawing, where each Window is backed up by an offscreen image, which 
 handles the zoom and sliding buffer behaviour for fast scrolling, to allow 
 rapid bit-blt's to the actual window. Lastly, the user manipulates the 
 Drawing (Display List), using one of many Tools, where the active Tool 
 receives events from the event queue, and then manipulates selected and/or 
 unselected graphical objects, by using XOR Mode graphics onto the offscreen 
 buffer, generally using callbacks.
 
 The system is fast and very responsive on large data sets, but what I do not 
 know is whether JavaFX will help me make a better implementation, or whether 
 it will fight me all the way. With JavaFX claiming hardware acceleration, I 
 do not understand whether it depends on transferring the very large data 
 sets into graphics hardware to render, and what happens if the hardware 
 cannot cope. So far, I have found little in the way of discussions that help 
 me get a mental picture of how JavaFX is intended to work. Should I stick 
 with Swing?
 
 Regards,
 
 Chris
 


jfxrt.jar - is it platform specific?

2013-07-24 Thread Daniel Zwolenski
Obviously there are native libs (dlls, etc) that JFX uses that are outside
of the jfxrt.jar.

But is the actual jfxrt.jar produced by the build generic and able to be
used on any platform (so long as the natives are also present) or is it
platform specific itself?

We are getting close to the ios/backport stuff working (as well as it can
at this stage) and are aiming to start putting stuff in Maven soon. Just
want to make sure I get the separations as clean as possible because once
it's in Central it doesn't ever leave.

Cheers.


Re: Can JavaFX do CAD?

2013-07-23 Thread Daniel Zwolenski
+1

More specifically I would like to know the official recommended best practices 
for implementing a CAD style app in JFX.

- How best to represent large numbers of complex shapes efficiently, and when 
to add shapes to the scene (add all and let jfx clip, or manually work out what 
should be showing, etc)
- How best to handle font scaling and image scaling when rendered in a zoomed 
in/out viewport
- How best to do panning and zooming with dynamic level of detail
- How best to do the top level display in terms of panes vs regions vs canvas, 
vs whatever, how to manage overlays and layers (sharing same coordinate space, 
etc)
- How best to do picking, mouse overs, dragging across the 'display'
- How best to do infinite or dynamic  bounds so you can add and move shapes and 
the scrolling adjusts accordingly. 

A JFX diagramming app would make a very powerful demo app in my mind. 





On 24/07/2013, at 1:47 AM, Chris Gay chris.gay5...@gmail.com wrote:

 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with a 
 Toolbar for Tools, and a few buttons, but 99% of the user activity concerns 
 selecting and manipulating vector graphical objects in a traditional manner 
 using one Tool at a time (think Inkscape or LibreOffice Drawing apps). The 
 application has multiple drawings open at the same time (but only one is 
 visible), and each Drawing contains it's own Drawing and Processing threads 
 (in addition to sharing the Main and Event Threads), which keeps the Event 
 Thread lively. Each Drawing contains an ArrayList, acting as a Display List 
 of all graphical objects, and each graphical object can be a tree structure. 
 In many cases I use simple iteration instead of Iterators, simply for speed, 
 and to avoid garbage. The graphical objects are lightweight, in that they do 
 not carry references to events and handlers. All they carry is their basic 
 geometric data and properties, a bounding box which they can lend as Read 
 Only, and a boolean flag to indicate selection, which means there can be 
 millions of the objects, with a minimum memory footprint. To support them, 
 there are many hundreds of methods, which the tools interact with. There can 
 be multiple Drawing Windows active on a single drawing, where each Window is 
 backed up by an offscreen image, which handles the zoom and sliding buffer 
 behaviour for fast scrolling, to allow rapid bit-blt's to the actual window. 
 Lastly, the user manipulates the Drawing (Display List), using one of many 
 Tools, where the active Tool receives events from the event queue, and then 
 manipulates selected and/or unselected graphical objects, by using XOR Mode 
 graphics onto the offscreen buffer, generally using callbacks.
 
 The system is fast and very responsive on large data sets, but what I do not 
 know is whether JavaFX will help me make a better implementation, or whether 
 it will fight me all the way. With JavaFX claiming hardware acceleration, I 
 do not understand whether it depends on transferring the very large data sets 
 into graphics hardware to render, and what happens if the hardware cannot 
 cope. So far, I have found little in the way of discussions that help me get 
 a mental picture of how JavaFX is intended to work. Should I stick with Swing?
 
 Regards,
 
 Chris
 


Re: JavaFX 8 Progress

2013-07-18 Thread Daniel Zwolenski
Sure, but no one other than the JFX team are (or will be) working on these
right? They are effectively desktop technologies and no other team has any
interest in them I'm guessing?

I'd assume if they're not on the JFX roadmap, they're not on the Java
roadmap?


On Thu, Jul 18, 2013 at 9:48 PM, Artem Ananiev artem.anan...@oracle.comwrote:


 On 7/18/2013 3:00 AM, David Ray wrote:

 Hi Richard,

 I don't see any mention of WebStart and JavaFX on the milestone list -
 are issues surrounding (and suffocating :)) WebStart going to addressed as
 part of the JDK release 8 instead?


 Java Plugin and Java Web Start are not parts of JavaFX (although JavaFX
 provides some APIs for them), they are shared between JDK and JavaFX and
 released as a part of Oracle JDK8 (not included to OpenJDK).

 Thanks,

 Artem


  David

 Sent from my iPhone

 On Jul 17, 2013, at 12:06 PM, Richard Bair richard.b...@oracle.com
 wrote:

  Hi Peter,

 Our dates match up with JDK 8: http://openjdk.java.net/**
 projects/jdk8/milestoneshttp://openjdk.java.net/projects/jdk8/milestones

 Feature complete was a month ago (but little API tweaks continue to
 happen). Things are supposed to be reasonably stable by October 24 (Zero
 Bug Bounce http://openjdk.java.net/**projects/jdk8/milestones#Zero_**
 Bug_Bouncehttp://openjdk.java.net/projects/jdk8/milestones#Zero_Bug_Bounce)
 and GA in March.

 Richard

 On Jul 17, 2013, at 9:52 AM, Peter Penzov peter.pen...@gmail.com
 wrote:

  Hi,
   I'm new to JavaFX I'm interested what is the current progress of
 development of JavaFX 8. I want to use it for base framework for my
 enterprise application but I have concerns is it stable to be used? Can
 you
 give me some information do you plan to add something else before the
 official release?

 Best wishes,
 Peter





Re: JavaFX 8 Progress

2013-07-18 Thread Daniel Zwolenski
By 'deployment team' you mean Mark Howe, etc? There's no other team working on 
anything to do with deployment right?



On 19/07/2013, at 12:22 AM, Joe McGlynn joe.mcgl...@oracle.com wrote:

 No, the deployment team works on these, not the FX team.  It's the same bits 
 for FX and Swing/AWT when running browser-deployed apps (which includes 
 applets and web start).  Deployment, FX and Swing are all part of the Java 
 client org.
 
 There are a number of bug fixed being worked in this area, as well as new 
 requirements around how to deploy a secure applet or web start app.  The 
 deploy code base is currently identical between 7u and JDK 8.  If you are 
 working with deploy technologies you should know this area is rapidly 
 changing and I'd strongly advise staying on the latest release (currently 
 7u40 EA) and following the updates to the docs, especially around best 
 practices for deployment.
 
 In short, these are:
 
 Buy a code signing certificate from a recognized CA and sign your app
 Use the new permissions and codebase JAR manifest attributes
 
 I'd recommend avoiding the use of mixed code if at all possible as that 
 results in additional warning prompts to the end user and additional runtime 
 risks.
 
 I'd also recommend testing your app with the security slider at the Very 
 High level with every update of the JRE.  Typically new restrictions are 
 introduced first at Very High, and then propagated down into High and 
 ultimately Medium over time.
 
 If there are problems using deployment with FX, of course report the issue 
 and the team will investigate.  I'm aware of one problem that causes some FX 
 web start apps not to work with the latest release.  It's being investigated 
 right now.
 
 
 
 On Jul 18, 2013, at 6:40 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
 Sure, but no one other than the JFX team are (or will be) working on these
 right? They are effectively desktop technologies and no other team has any
 interest in them I'm guessing?
 
 I'd assume if they're not on the JFX roadmap, they're not on the Java
 roadmap?
 
 
 On Thu, Jul 18, 2013 at 9:48 PM, Artem Ananiev 
 artem.anan...@oracle.comwrote:
 
 
 On 7/18/2013 3:00 AM, David Ray wrote:
 
 Hi Richard,
 
 I don't see any mention of WebStart and JavaFX on the milestone list -
 are issues surrounding (and suffocating :)) WebStart going to addressed as
 part of the JDK release 8 instead?
 
 
 Java Plugin and Java Web Start are not parts of JavaFX (although JavaFX
 provides some APIs for them), they are shared between JDK and JavaFX and
 released as a part of Oracle JDK8 (not included to OpenJDK).
 
 Thanks,
 
 Artem
 
 
 David
 
 Sent from my iPhone
 
 On Jul 17, 2013, at 12:06 PM, Richard Bair richard.b...@oracle.com
 wrote:
 
 Hi Peter,
 
 Our dates match up with JDK 8: http://openjdk.java.net/**
 projects/jdk8/milestoneshttp://openjdk.java.net/projects/jdk8/milestones
 
 Feature complete was a month ago (but little API tweaks continue to
 happen). Things are supposed to be reasonably stable by October 24 (Zero
 Bug Bounce http://openjdk.java.net/**projects/jdk8/milestones#Zero_**
 Bug_Bouncehttp://openjdk.java.net/projects/jdk8/milestones#Zero_Bug_Bounce)
 and GA in March.
 
 Richard
 
 On Jul 17, 2013, at 9:52 AM, Peter Penzov peter.pen...@gmail.com
 wrote:
 
 Hi,
  I'm new to JavaFX I'm interested what is the current progress of
 development of JavaFX 8. I want to use it for base framework for my
 enterprise application but I have concerns is it stable to be used? Can
 you
 give me some information do you plan to add something else before the
 official release?
 
 Best wishes,
 Peter
 
 
 
 


Re: Mixing 2D and 3D

2013-07-18 Thread Daniel Zwolenski
Does it need to be a separate class, can it not just be a setting on scene like 
setRenderMode(3d)? Just thinking you may want a base 3d view for example but 
then show 2d screens at times for settings, etc, so you could switch it on and 
off. 

I assume there's no way to do it pane by pane, so the docked components of a 
BorderPane are 2d optimized but the center is 3d? Or is that what SubScene3d is 
for (not real clear how this would be used)?



On 19/07/2013, at 6:58 AM, Richard Bair richard.b...@oracle.com wrote:

 While working on RT-5534, we found a large number of odd cases when mixing 2D 
 and 3D. Some of these we talked about previously, some either we hadn't or, 
 at least, they hadn't occurred to me. With 8 we are defining a lot of new API 
 for 3D, and we need to make sure that we've very clearly defined how 2D and 
 3D nodes interact with each other, or developers will run into problems 
 frequently and fire off angry emails about it :-)
 
 Fundamentally, 2D and 3D rendering are completely different. There are 
 differences in how opacity is understood and applied. 2D graphics frequently 
 use clips, whereas 3D does not (other than clipping the view frustum or other 
 such environmental clipping). 2D uses things like filter effects (drop 
 shadow, etc) that is based on pixel bashing, whereas 3D uses light sources, 
 shaders, or other such techniques to cast shadows, implement fog, dynamic 
 lighting, etc. In short, 2D is fundamentally about drawing pixels and 
 blending using the Painters Algorithm, whereas 3D is about geometry and 
 shaders and (usually) a depth buffer. Of course 2D is almost always defined 
 as 0,0 in the top left, positive x to the right and positive y down, whereas 
 3D is almost always 0,0 in the center, positive x to the right and positive y 
 up. But that's just a transform away, so I don't consider that a 
 *fundamental* difference.
 
 There are many ways in which these differences manifest themselves when 
 mixing content between the two graphics.
 
 http://fxexperience.com/?attachment_id=2853
 
 This picture shows 4 circles and a rectangle. They are setup such that all 5 
 shapes are in the same group [c1, c2, r, c3, c4]. However depthBuffer is 
 turned on (as well as perspective camera) so that I can use Z to position the 
 shapes instead of using the painter's algorithm. You will notice that the 
 first two circles (green and magenta) have a dirty edge, whereas the last 
 two circles (blue and orange) look beautiful. Note that even though there is 
 a depth buffer involved, we're still issuing these shapes to the card in a 
 specific order.
 
 For those not familiar with the depth buffer, the way it works is very 
 simple. When you draw something, in addition to recording the RGBA values for 
 each pixel, you also write to an array (one element per pixel) with a value 
 for every non-transparent pixel that was touched. In this way, if you draw 
 something on top, and then draw something beneath it, the graphics card can 
 check the depth buffer to determine whether it should skip a pixel. So in the 
 image, we draw green for the green circle, and then later draw the black for 
 the rectangle, and because some pixels were already drawn to by the green 
 circle, the card knows not to overwrite those with the black pixel in the 
 background rectangle.
 
 The depth buffer is just a technique used to ensure that content rendered 
 respects Z for the order in which things appear composited in the final 
 frame. (You can individually cause nodes to ignore this requirement by 
 setting depthTest to false for a specific node or branch of the scene graph, 
 in which case they won't check with the depth buffer prior to drawing their 
 pixels, they'll just overwrite anything that was drawn previously, even if it 
 has a Z value that would put it behind the thing it is drawing over!).
 
 For the sake of this discussion 3D World means depth buffer enabled and 
 assumes perspective camera is enabled, and 2D means 2.5D capable by which I 
 mean perspective camera but no depth buffer.
 
 So:
 
1) Draw the first green circle. This is done by rendering the circle into 
 an image with nice anti-aliasing, and then rotating that image
 and blend with anything already in the frame buffer
2) Draw the magenta circle. Same as with green -- draw into an image with 
 nice AA and rotate and blend
3) Draw the rectangle. Because the depth buffer is turned on, for each 
 pixel of the green  magenta circles, we *don't* render
 any black. Because the AA edge has been touched with some 
 transparency, it was written to the depth buffer, and we will not
 draw any black there. Hence the dirty fringe! No blending!
4) Draw the blue circle into an image with nice AA, rotate, and blend. AA 
 edges are blended nicely with black background!
5) Draw the orange circle into an image with nice AA, rotate, and blend. 
 AA edges are blended nicely with black 

Java Deployment (was Re: JavaFX 8 Progress)

2013-07-18 Thread Daniel Zwolenski
There are definitely credible alternatives. The problem is currently the 
alternatives are not implemented well enough so web still ends up a contender 
just by being the only one able to stand up. 

And for the record I build both public facing apps and back-office apps and web 
deploy does not work well for either. I stopped using jfx because of 
deployment. I now build only webapps because of deployment. 

Credible alternatives:

1. Native bundlers, but we need:
- auto updating so people can easily release patch updates
- smaller co-bundled jre's so that the initial download and install is smooth 
and quick
- better build tools to make this easier to integrate into a standard build 
process, with some solution for cross-platform build support or to at least 
minimize the pain

2. App stores:
- ready to go right now for Mac but we don't have the tools and I think we need 
everything fully open sourced for licensing reasons (hard to say)
- need to either pick one of the unofficial win app stores for pre-win8 support 
(there's a few), or build our own app store
- we just need tools for building and deploying to app stores (not that hard) 
and cut down jre sizes again (app stores are an extension of cobundling 
approach). 

3. Self-hosted 'app store' for corporate settings. install a small, native 
client on the machine that allows that user to download and install apps from 
your private server, with auto-updating, etc
- we need to build one, not that hard, maybe a month or two of work to get a 
first working version out. I would have built one by now but because jfx 
packaging tools are so bad I've burnt up all my spare time just putting 
wrappers around these to get the most basic of maven plugins to work. 

All of the above could have been implemented by now if there was just a little 
bit of love in this area. One resource ticking away would have been enough to 
get something going. As it stands there has been zero, nada, zip changes into 
anything other than web/security deployment efforts over the last year. J8 due 
next year (!) will not include any of the above, or even any simple 
improvements to deployment approaches other than web, to the best of my 
knowledge. 



On 19/07/2013, at 7:30 AM, Mark Fortner phidia...@gmail.com wrote:

 I've heard the webstart is broke, don't fix it, move on song before from a 
 number of people.  What I haven't heard is a credible solution to solving the 
 very real problem of keeping an app up-to-date in a corporate setting.  For 
 the most part, I agree that if you're in the business of selling commercial 
 software, selling and distributing through an app store probably makes sense 
 for you. Although I wouldn't relish having to build on all of those 
 platforms. 
 
 However, posting proprietary apps to external OS-specific app stores doesn't 
 really work for anyone in a corporate setting.  Neither does making a user 
 re-install an application every time you post a bug fix.  In addition, many 
 corporations limit the privileges they give users.
 
 Cheers,
 
 Mark
 
 


Re: JavaFX 8 Progress

2013-07-18 Thread Daniel Zwolenski
Awesome - on the surface it does look like what Oracle were/should-be
trying to build with their packaging tools - and it's free!

If you use it a bit, let me know how it goes. If it's any good I'll look at
wrappering this in a Maven plugin (looks straight forward). Maybe we can
cut Oracle out of this altogether and get some actual progress here.

If you can get your JWrappered reportmill app deployed somewhere, I'd be
keen to try it out and see what the end user experience is like. Just
trying their sample apps now.



On Fri, Jul 19, 2013 at 10:43 AM, Jeff Martin j...@reportmill.com wrote:

 Wow - JWrapper really is remarkable. It took me less than 30 minutes to
 figure out how to package our ReportMill app for Mac, Windows and Linux.
 Worked like magic. It doesn't include JavaFX yet, though, even though the
 Mac JRE is 1.7.0u25.

 Jeff

 On Jul 18, 2013, at 4:20 PM, David Ray cognitionmiss...@gmail.com wrote:

  JWrapper (no plug - I don't work for them or own stock) solves all of
 this - you have to bundle the jvm but it's small and the installation is
 hitch-less…
 
  Oracle should buy them out - seriously!
 
  David
 
 
  On Jul 18, 2013, at 4:09 PM, ozem...@ozemail.com.au wrote:
 
  +1
 
  The various applet and Web Start deployment options are severly
 damaging the entire Java brand. and should be discontinued ASAP.
 
  Even before the recent security issues raised their ugly heads there
 have been several issues with either launching Java applications from
 within a web page or running them as applets and the user experience has
 been dismal to say the least.
 
  The main reason why Java applets had such a short-lived period of
 popularity was because Flash came along.  Flash applets started
 significantly faster, didn't pop-up any security warnings and almost always
 just worked.  The exact opposite was true of applets and, sadly, this has
 only gone further downhill lately.
 
  For many years the browser vendors have gone out of their way to make
 running Java in the browser a very painful experience for the end user.
  Now we have the situation where most people assume every Java applet is a
 security threat and avoid them like the plague.
 
  Anyway, I do not believe Java, JavaFX or any plugin-based technology
 has any place in a web browser.  This includes Flash and Silverlight.  We
 have HTML5 for that kind of app.  Surely it won't be long until all browser
 vendors make it *impossible* for Java to run inside the browser or simply
 not support *any* plugins.
 
  What's the point of investing any further effort into the Java Plugin?
  Yes, I know there are legacy apps and applets out there that need to run
 but Oracle should be focused on getting JavaFX into the modern platforms
 and their associated app stores.  Why not issue an End Of LIfe bulletin
 that signals the end of the Java Plugin so anyone out there still relying
 on Java applets can have time to find an alternative.
 
  Let's face it, almost *all* the security vulnerabilities exposed in
 recent months only affect Java in the browser.  All the effort Oracle
 expends on patching these vulnerabilities and tightening up the security
 model should be spent on advancing JavaFX on mobiles and tablets.
 
  -jct
 
  - Original Message -
  From:
  Daniel Zwolenski zon...@gmail.com
 
  To:
  David Ray cognitionmiss...@gmail.com
  Cc:
  mike.ehrenb...@barchart.com Ehrenberg mike.ehrenb...@barchart.com,
 openjfx-dev@openjdk.java.net openjfx-dev@openjdk.java.net,
 JeremyJongsma jer...@barchart.com
  Sent:
  Fri, 19 Jul 2013 06:47:46 +1000
  Subject:
  Re: JavaFX 8 Progress
 
 
  Among general complaints and my own disasters with it, I had this guy
 write to me:
 
  http://web-conferencing-central.com
 
  The failure of webstart is making him lose customers (they literally
 are emailing him and telling him it's too hard to install). This is one of
 the very few commercial, public apps that use desktop-java and webstart
 (I'd be keen to know about any others - I know of none that use jfx?).
 
  From what I understand of the work being carried out, I highly doubt
 any of the fixes or improvements being worked on are going to help people
 like this.
 
  I love the idea of web deployment but it's failed and getting worse
 with the complexities now added in your attempts to keep it secure. In my
 opinion, web deploy should be deprecated or at least placed in minimal
 'bandaid' only fixes and all effort should be put into making native
 bundles actually useful and into adding app store support.
 
 
  On 19/07/2013, at 2:10 AM, David Ray cognitionmiss...@gmail.com
 wrote:
 
  I don't want to open up the webstart can of worms here, but we have
 multiple issues surrounding recognition and validity of signed jars when
 using certain VMARGS in combination with OSGi style deployment. We finally
 settled on JWrapper due to WebStarts apparent brittleness - but as you
 say, this is neither here nor there as far as JavaFX is concerned…
 
  Anyway

Re: JavaFX8 on iPhone! It works!

2013-07-05 Thread Daniel Zwolenski
Thanks Niklas - sounds like there's still a bit to do. 

I'm still a bit confused though, I thought the JFX team were/are giving us a 
version of jfx that is specifically designed to work on Android but it sounds 
like that's pretty far from the actuality? What will the gradle build for 
android actually give us?

I'd be keen to hear from someone on the jfx side on all of this. Is this how 
you planned for your smart device releases to work or has something gone wrong 
in the journey here?



On 05/07/2013, at 9:57 PM, Niklas Therning nik...@therning.org wrote:

 mime-attachment.txt


Re: JavaFX8 on iPhone! It works!

2013-07-05 Thread Daniel Zwolenski
You guys have obviously had jfx running on both ios and android internally 
before for demos (and I assume you're testing this code you're releasing?). 
What JVMs are you using for this?

Niklas I'm assuming that robovm used the android base because j8 features are 
either not possible or much more work to support. Is this the case or was there 
another reason for that choice? I'm assuming that at best moving to j8 is not a 
trivial or quick task?

Making the backport fully android focused would seem like the shortest path for 
both ios and and android here? It's not great that there's so much to change in 
jfx for this to work. Apart from the extra hassle/delay now, this is going to 
make maintaining this backport and keeping it inline with bug fixes and updates 
messy. 



On 06/07/2013, at 12:42 AM, Richard Bair richard.b...@oracle.com wrote:

 We have implementations for Android and iOS that are both functional on a 
 Java 8 VM. It looks like, because the iOS one is so closely related to the 
 Mac build, it was the easiest one to get a build for the open community. 
 We're working on the Android build scripts. The situation on Android is 
 exactly the same as iOS -- we're open sourcing the library code, but not a 
 Java 8 VM. I would expect that if the iOS build on RoboVM works, that the 
 Android build for RoboVM would also work, but I haven't tried it.
 
 Richard
 
 On Jul 5, 2013, at 5:07 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
 Thanks Niklas - sounds like there's still a bit to do. 
 
 I'm still a bit confused though, I thought the JFX team were/are giving us a 
 version of jfx that is specifically designed to work on Android but it 
 sounds like that's pretty far from the actuality? What will the gradle build 
 for android actually give us?
 
 I'd be keen to hear from someone on the jfx side on all of this. Is this how 
 you planned for your smart device releases to work or has something gone 
 wrong in the journey here?
 
 
 
 On 05/07/2013, at 9:57 PM, Niklas Therning nik...@therning.org wrote:
 
 mime-attachment.txt
 


Re: JavaFX8 on iPhone! It works!

2013-07-05 Thread Daniel Zwolenski
As the platform architect, what direction would you suggest the community take 
to make JFX work on iOS and on Android? 

If Oracle came to their senses and said: Richard, that whole smart device 
space might actually be more than a passing fad, let's put jfx on it, and do it 
whatever way you think best, what would your implementation strategy look 
like? 

Would you backport or use another VM or do your own VM impl, or what? How long 
would you expect whatever strategy you'd pick to take, how many resources would 
you have on it, and what bits would you see needing the most attention, what 
would your milestones look like, etc. I don't see why Oracle not doing this 
doesn't mean we can't get your guidance and wisdom on this if you're willing to 
provide it. 

And looking particularly here beyond hello worlds and brick breaker demos, at a 
sustainable robust, performant platform that can be used and relied upon for 
commercial use both now and as java 8, 9, 10 etc come out. 

I get the feeling were a long long way from that, if indeed it's achievable. 
What's your view on this?



On 06/07/2013, at 12:34 PM, Richard Bair richard.b...@oracle.com wrote:

 It's complicated. We've prototyped on all kinds of VMs including the CVM used 
 with ADF mobile and a hacked up Java SE embedded 7. It's a long way from 
 prototype to product and as I mentioned on my blog we have not announced any 
 plan around SE embedded VM on iOS / Android. But at least we know that our 
 port of fx was (mostly) functional and could be successful.
 
 On Jul 5, 2013, at 12:44 PM, Tobias Bley t...@ultramixer.com wrote:
 
 Richard, the question is: Has Oracle a hidden Java8 VM for Android and iOS? 
 Or how do you test your Android and iOS JavaFX implementation???
 
 
 Am 05.07.2013 um 16:42 schrieb Richard Bair richard.b...@oracle.com:
 
 We have implementations for Android and iOS that are both functional on a 
 Java 8 VM. It looks like, because the iOS one is so closely related to the 
 Mac build, it was the easiest one to get a build for the open community. 
 We're working on the Android build scripts. The situation on Android is 
 exactly the same as iOS -- we're open sourcing the library code, but not a 
 Java 8 VM. I would expect that if the iOS build on RoboVM works, that the 
 Android build for RoboVM would also work, but I haven't tried it.
 
 Richard
 
 On Jul 5, 2013, at 5:07 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
 Thanks Niklas - sounds like there's still a bit to do. 
 
 I'm still a bit confused though, I thought the JFX team were/are giving us 
 a version of jfx that is specifically designed to work on Android but it 
 sounds like that's pretty far from the actuality? What will the gradle 
 build for android actually give us?
 
 I'd be keen to hear from someone on the jfx side on all of this. Is this 
 how you planned for your smart device releases to work or has something 
 gone wrong in the journey here?
 
 
 
 On 05/07/2013, at 9:57 PM, Niklas Therning nik...@therning.org wrote:
 
 mime-attachment.txt
 



Re: iOS: current state of RoboVM 0.0.2 + latest gradle based OpenJFX on iOS

2013-07-03 Thread Daniel Zwolenski
+100


On Wed, Jul 3, 2013 at 10:26 PM, cogmission1 .
cognitionmiss...@gmail.comwrote:

 Hi,

 Is that being worked on or did we just hit a brick wall?

 David


 On Wed, Jul 3, 2013 at 4:31 AM, Tobias Bley t...@ultramixer.com wrote:

  Hi,
 
  I tried to use the latest gradle based OpenJFX on iOS using RoboVM.
  Current state: it fails: The reason why is the font rendering using
  CoreText which currently is not possible on iOS.
 
  Take a look here: coretext.c = #if TARGET_OS_MAC  !(TARGET_OS_IPHONE)
 
  The alternative would be to use the T2K renderer, which is not  available
  in OpenJFX.
 
  So currently we have to wait for an implementation of CoreText native
 code
  on iOS.
 
  Best regards,
  Tobi



Re: API REVIEW for TabPane tab content loading and fixed content size

2013-07-03 Thread Daniel Zwolenski
Hi Paru,

What do you mean by 'loaded'?

Currently we create the tabs and then manually add them doing something
like:

TabPane tabPane = new TabPane();
tabPane.getTabs().add(new Tab(Tab1));

Wouldn't all the 'loading' have already happened before TabPane gets a look
in? Or are you talking about when the tabs get added to the scene?

Cheers,
Dan




On Thu, Jul 4, 2013 at 7:03 AM, Paru Somashekar 
parvathi.somashe...@oracle.com wrote:


 JIRA : 
 https://javafx-jira.kenai.com/**browse/RT-24105https://javafx-jira.kenai.com/browse/RT-24105
 https://javafx-jira.kenai.com/**browse/RT-30648https://javafx-jira.kenai.com/browse/RT-30648

 The following is API to control how tab content gets loaded for a TabPane
 in order to improve startup time and runtime performance for a TabPane.

 Jonathan has already reviewed the following API and I have incorporated
 his feedback. Thanks Jonathan.

  TabContentSceneGraphPolicy is a static enum within TabPane
 --**--
 public static enum TabContentSceneGraphPolicy {
  //The content all the tabs get loaded up front with no
 optimization. If there are a lot of tabs and content is large - this could
 potentially cause slow start up time. This is the default behavior.
 ALL_TABS,
  //Only the content of the selected tab will be loaded on startup
 and other tabs get loaded on selection. When a new tab is selected, its
 content is loaded into the scenegraph and the content of the previously
 selected tab is unloaded from the scenegraph.
 SELECTED_TAB,
  //Only the content of the selected tab will be loaded at startup
 and content of other tabs get loaded lazily in the background. Hence there
 is no loading and unloading of tab content when different tabs are selected
 as in the case of SELECTED_TAB option.
 SELECTED_TAB_WITH_LAZY_LOADING
 }
 --**--**--
  API to specify fixed Width/Height/Size for tab content.

 private DoubleProperty fixedWidth
 public final void setFixedWidth(double value)
 public final double getFixedWidth()
 public final DoubleProperty fixedWidthProperty()

 private DoubleProperty fixedHeight
 public final void setFixedHeight(double value)
 public final double getFixedHeight()
 public final DoubleProperty fixedHeightProperty()

 public final void setFixedSize(double width, double height)
 --**--**
 Notes on performance considerations

 The TabPane offers some performance optimizations in the area of tab
 content loading. Basically the default policy is to load the contents of
 all specified tabs. If the TabPane consists of a large number of big
 content tabs, then this could lead to a potential slow start up time, as it
 will have to spend some time in loading all the content up front before
 starting up.

 In such situations, the TabPane allows specification of the
 TabContentSceneGraphPolicy which determines how the tab contents are loaded
 : all tabs, selected tab only, or selected tab and lazy loading of the rest
 of the tabs. The selected tab only option also ensures the content of the
 previously selected tab is removed from the scenegraph. This gives the
 added benefit of ensuring that no scenegraph related activities are
 performed on any of the tab contents that is not currently selected.
 However this could potentially cause the tab switch operation to be a bit
 slow. In order to achieve faster tab switch operation, the third option is
 provided where the content of the rest of the tabs are loaded lazily in the
 background. However the lazy loading option could result in a slower
 runtime performance.

 Another area of optimization is provided for specifying a fixed width /
 height / size of the tab content area. If a fixed value is specified,
 measurement of the tab content sizes for the purpose of setting the
 available space is eliminated, thus providing faster resize operations on
 windows that contain a TabPane in them.
 --**--**---

 There might be a situation where the TabContentSceneGraphPolicy is set to
 SELECTED_TAB in which case only the content of the selected tab is loaded
 and user does not set fixed size. In such a case, we can either do one of
 the following,
 1) hardcode a fixed size if it is not already set
 2) measure the selected tab only and grow in size only if the size of the
 next selected tab is bigger than the previous one.
 3) throw an exception if SELECTED_TAB is chosen and fixed size is not set.
 I prefer option either 1 or 2, that way we do not force the developer to
 set a fixed size for the tab content.
 Thoughts suggestions welcome, I shall go with option 1 if I don't hear any.



Re: API REVIEW for TabPane tab content loading and fixed content size

2013-07-03 Thread Daniel Zwolenski
I'd probably be a little cautious about the term 'loading' then. In
particular, I'd probably read 'LAZY_LOADING' to hint that the actual tabs
themselves would be loaded/created lazily (a common use case). Might be
just me though.

It looks like the 'lazy' option actually does them eagerly (i.e. all on
startup - not so lazy :) ), just asynchronously. I wonder if there is a
need for one that does them truly 'lazily' (i.e. on selection) much like
the SELECTED_TAB but once first loaded it then keeps it there instead of
adding and removing each selection.

Maybe not the best names below but some ideas:

enum TabContentSceneGraphPolicy {

 // The content all the tabs are *added* to the scenegraph up front
with no optimization. If there are a lot of tabs and content is large -
this could potentially cause slow start up time. This is the default
behavior.
ALL_TABS,

 //Only the content of the selected tab will be *added* to the
scenegraph at startup and content of other tabs get *added* *asynchronously* in
the background. Hence there is no *adding* and *removing* of tab content
when different tabs are selected as in the case of the SELECTED_TAB options.
ALL_TABS_ASYNCH,

 //Only the content of the selected tab will be *added to the **
scenegraph* on startup and other tabs get *added* on selection. When a new
tab is selected, its content is *added* into the scenegraph and the content
of the previously selected tab is *removed* from the scenegraph.
SELECTED_TAB_AND_REMOVE,

//Only the content of the selected tab will be *added to the **
scenegraph* on startup and other tabs get *added* on selection. Once added,
a Tab is kept in the scenegraph. When a new tab is selected for the first
time, its content is *added* into the scenegraph, after that the tab is
re-shown when selected again.
SELECTED_TAB_AND_KEEP
}



On Thu, Jul 4, 2013 at 8:06 AM, Paru Somashekar 
parvathi.somashe...@oracle.com wrote:

 **
 Hi Daniel,

 Yes, loading is referring to when the tab content gets added to the scene.
 The API to add tabs to TabPane remain the same - the new API is only
 proposing a policy that controls how they get added  removed from the
 scenegraph.

 thanks,
 Paru.


 On 7/3/13 2:35 PM, Daniel Zwolenski wrote:

 Hi Paru,

  What do you mean by 'loaded'?

  Currently we create the tabs and then manually add them doing something
 like:

  TabPane tabPane = new TabPane();
  tabPane.getTabs().add(new Tab(Tab1));

  Wouldn't all the 'loading' have already happened before TabPane gets a
 look in? Or are you talking about when the tabs get added to the scene?

  Cheers,
 Dan




 On Thu, Jul 4, 2013 at 7:03 AM, Paru Somashekar 
 parvathi.somashe...@oracle.com wrote:


 JIRA : https://javafx-jira.kenai.com/ 
 browse/RT-24105https://javafx-jira.kenai.com/browse/RT-24105
 https://javafx-jira.kenai.com/ 
 browse/RT-30648https://javafx-jira.kenai.com/browse/RT-30648

 The following is API to control how tab content gets loaded for a TabPane
 in order to improve startup time and runtime performance for a TabPane.

 Jonathan has already reviewed the following API and I have incorporated
 his feedback. Thanks Jonathan.

  TabContentSceneGraphPolicy is a static enum within TabPane
 -- --
 public static enum TabContentSceneGraphPolicy {
  //The content all the tabs get loaded up front with no
 optimization. If there are a lot of tabs and content is large - this could
 potentially cause slow start up time. This is the default behavior.
 ALL_TABS,
  //Only the content of the selected tab will be loaded on startup
 and other tabs get loaded on selection. When a new tab is selected, its
 content is loaded into the scenegraph and the content of the previously
 selected tab is unloaded from the scenegraph.
 SELECTED_TAB,
  //Only the content of the selected tab will be loaded at startup
 and content of other tabs get loaded lazily in the background. Hence there
 is no loading and unloading of tab content when different tabs are selected
 as in the case of SELECTED_TAB option.
 SELECTED_TAB_WITH_LAZY_LOADING
 }
 -- -- --
  API to specify fixed Width/Height/Size for tab content.

 private DoubleProperty fixedWidth
 public final void setFixedWidth(double value)
 public final double getFixedWidth()
 public final DoubleProperty fixedWidthProperty()

 private DoubleProperty fixedHeight
 public final void setFixedHeight(double value)
 public final double getFixedHeight()
 public final DoubleProperty fixedHeightProperty()

 public final void setFixedSize(double width, double height)
 -- -- 
 Notes on performance considerations

 The TabPane offers some performance optimizations in the area of tab
 content loading. Basically the default policy is to load

Re: JavaFX8 on iPhone! It works!

2013-07-03 Thread Daniel Zwolenski
Trying to catch up to Tobi on this one so I can have some fun with it too.

I assume in order to compile the graphics repo of JFX8 I need an OpenJ8 JDK
already installed? Are there pre-built bundles for this (for mac) or do I
need to checkout and build myself? Does anyone know which repo, and what
command line arg should I use to build J8 in this case?




On Thu, Jul 4, 2013 at 6:44 AM, Tobias Bley t...@ultramixer.com wrote:

 Hi Guys,

 I used RoboVM 0.0.2 and the current OpenJFX8 from mercurial graphics
 branch So no 78 backport. I will write a blog post on
 blog.software4java.com until tomorrow...

 Currently the performance is very limited - as Richard told too. I’m
 testing now all the basic JFX controls (like button, RadioButton, CheckBox,
 ListView, TableView, ...).

 Best regards,
 Tobi


 Am 03.07.2013 um 21:47 schrieb Daniel Zwolenski zon...@gmail.com:

  Tobi, this is awesome! But you've left us hanging :)
 
  Did you use the 78 backport for this or just straight out J8?
 
  What are the steps to reproduce your working build?
 
  Very darn exciting!
 
 
 
  On 04/07/2013, at 2:50 AM, Danno Ferrin danno.fer...@shemnon.com
 wrote:
 
  JavaFX 8?  Does RoboVM support invokedynamic?  That is a big deal if so.
 
  On Wed, Jul 3, 2013 at 10:07 AM, Niklas Therning nik...@therning.org
 wrote:
 
  Awesome! Can you please post the build instructions somewhere? I'm not
  getting a long with gradle at all. :-(
 
 
  On Wed, Jul 3, 2013 at 6:03 PM, Tobi t...@ultramixer.com wrote:
 
  It works! Latest JavaFX 8 (gradle based) with RoboVM on a real iPhone
  with
  native text rendering and JFX CSS rendering!
 
 
 
 
  Tobi
 
 




Re: JavaFX8 on iPhone! It works!

2013-07-03 Thread Daniel Zwolenski
Thanks Richard, in the building for Mac section there is a link to Install
the latest JDK 8 build that goes to a dead URL (http://jdk8.dev.java.net/).
Do you know the correct URL?



On Thu, Jul 4, 2013 at 9:11 AM, Richard Bair richard.b...@oracle.comwrote:

 Extensive documentation that is mostly correct:

 https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX
 https://wiki.openjdk.java.net/display/OpenJFX/Developing+OpenJFX

 It is still a work in progress but most things you need to know to build
 is found here.

 Richard

 On Jul 3, 2013, at 3:52 PM, Daniel Zwolenski zon...@gmail.com wrote:

  Trying to catch up to Tobi on this one so I can have some fun with it
 too.
 
  I assume in order to compile the graphics repo of JFX8 I need an OpenJ8
 JDK
  already installed? Are there pre-built bundles for this (for mac) or do I
  need to checkout and build myself? Does anyone know which repo, and what
  command line arg should I use to build J8 in this case?
 
 
 
 
  On Thu, Jul 4, 2013 at 6:44 AM, Tobias Bley t...@ultramixer.com wrote:
 
  Hi Guys,
 
  I used RoboVM 0.0.2 and the current OpenJFX8 from mercurial graphics
  branch So no 78 backport. I will write a blog post on
  blog.software4java.com until tomorrow...
 
  Currently the performance is very limited - as Richard told too. I’m
  testing now all the basic JFX controls (like button, RadioButton,
 CheckBox,
  ListView, TableView, ...).
 
  Best regards,
  Tobi
 
 
  Am 03.07.2013 um 21:47 schrieb Daniel Zwolenski zon...@gmail.com:
 
  Tobi, this is awesome! But you've left us hanging :)
 
  Did you use the 78 backport for this or just straight out J8?
 
  What are the steps to reproduce your working build?
 
  Very darn exciting!
 
 
 
  On 04/07/2013, at 2:50 AM, Danno Ferrin danno.fer...@shemnon.com
  wrote:
 
  JavaFX 8?  Does RoboVM support invokedynamic?  That is a big deal if
 so.
 
  On Wed, Jul 3, 2013 at 10:07 AM, Niklas Therning nik...@therning.org
  wrote:
 
  Awesome! Can you please post the build instructions somewhere? I'm
 not
  getting a long with gradle at all. :-(
 
 
  On Wed, Jul 3, 2013 at 6:03 PM, Tobi t...@ultramixer.com wrote:
 
  It works! Latest JavaFX 8 (gradle based) with RoboVM on a real
 iPhone
  with
  native text rendering and JFX CSS rendering!
 
 
 
 
  Tobi
 
 
 
 




Re: JavaFX8 on iPhone! It works!

2013-07-03 Thread Daniel Zwolenski
Can I just use this: https://jdk8.java.net/download.html ?


On Thu, Jul 4, 2013 at 9:15 AM, Daniel Zwolenski zon...@gmail.com wrote:

 Thanks Richard, in the building for Mac section there is a link to
 Install the latest JDK 8 build that goes to a dead URL (
 http://jdk8.dev.java.net/). Do you know the correct URL?



 On Thu, Jul 4, 2013 at 9:11 AM, Richard Bair richard.b...@oracle.comwrote:

 Extensive documentation that is mostly correct:

 https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX
 https://wiki.openjdk.java.net/display/OpenJFX/Developing+OpenJFX

 It is still a work in progress but most things you need to know to build
 is found here.

 Richard

 On Jul 3, 2013, at 3:52 PM, Daniel Zwolenski zon...@gmail.com wrote:

  Trying to catch up to Tobi on this one so I can have some fun with it
 too.
 
  I assume in order to compile the graphics repo of JFX8 I need an OpenJ8
 JDK
  already installed? Are there pre-built bundles for this (for mac) or do
 I
  need to checkout and build myself? Does anyone know which repo, and what
  command line arg should I use to build J8 in this case?
 
 
 
 
  On Thu, Jul 4, 2013 at 6:44 AM, Tobias Bley t...@ultramixer.com
 wrote:
 
  Hi Guys,
 
  I used RoboVM 0.0.2 and the current OpenJFX8 from mercurial graphics
  branch So no 78 backport. I will write a blog post on
  blog.software4java.com until tomorrow...
 
  Currently the performance is very limited - as Richard told too. I’m
  testing now all the basic JFX controls (like button, RadioButton,
 CheckBox,
  ListView, TableView, ...).
 
  Best regards,
  Tobi
 
 
  Am 03.07.2013 um 21:47 schrieb Daniel Zwolenski zon...@gmail.com:
 
  Tobi, this is awesome! But you've left us hanging :)
 
  Did you use the 78 backport for this or just straight out J8?
 
  What are the steps to reproduce your working build?
 
  Very darn exciting!
 
 
 
  On 04/07/2013, at 2:50 AM, Danno Ferrin danno.fer...@shemnon.com
  wrote:
 
  JavaFX 8?  Does RoboVM support invokedynamic?  That is a big deal if
 so.
 
  On Wed, Jul 3, 2013 at 10:07 AM, Niklas Therning 
 nik...@therning.org
  wrote:
 
  Awesome! Can you please post the build instructions somewhere? I'm
 not
  getting a long with gradle at all. :-(
 
 
  On Wed, Jul 3, 2013 at 6:03 PM, Tobi t...@ultramixer.com wrote:
 
  It works! Latest JavaFX 8 (gradle based) with RoboVM on a real
 iPhone
  with
  native text rendering and JFX CSS rendering!
 
 
 
 
  Tobi
 
 
 
 





Re: javafx-font opensourced

2013-06-21 Thread Daniel Zwolenski
Why not use Sonatype for your repo?

For third party jars that aren't in central, you can upload these assuming
the licence allows it:
https://docs.sonatype.org/display/Repository/Uploading+3rd-party+Artifacts+to+The+Central+Repository

For your own stuff that you aren't going to publish for real but still want
to be available (e.g. latest releases of JFX), publish it as a SNAPSHOT.
For real stuff, publish it proper into the Maven repo and make it available
for use by the community.

It certainly would make my life massively more enjoyable if a build of the
JRE was available for download for each of the platforms. And things like
win-launcher.exe and other secondary assets would also make it much easier
to work on the packaging tools, etc.



On Fri, Jun 21, 2013 at 2:34 PM, Richard Bair richard.b...@oracle.comwrote:

 Yes, working on the web view building. The main issue is there are a
 handful of libs (libxml, libxslt, etc) that we have to figure out where to
 put. I believe these are unaltered by us, but built with different flags to
 strip out stuff we don't need. I've asked Peter whether we can post the
 build instructions to produce these libs, and then figured once anyone can
 build them, it wouldn't be to hard to find a place to put them.

 Ultimately we're trying to get a public artifactory repository setup for
 OpenJDK which would be the natural place for us to put all our dependencies
 like this, but in the meantime we just need a place to put some binaries. I
 know some of these binaries could be found elsewhere but not all of them
 (win64 builds I think are missing for example).

 On Jun 20, 2013, at 8:56 PM, Danno Ferrin danno.fer...@shemnon.com
 wrote:

  On Thu, Jun 20, 2013 at 5:21 PM, Daniel Zwolenski zon...@gmail.com
 wrote:
 
  This time sending to the list (gets me every time!):
 
  Great news!
 
  Danno - where does this put us with the JFX78 backport? Can we get a
 build
  of this for iOS now or what's needed to close this loop?
 
 
  The good news is that my JFX78 project now compiles via gradle without
  needing a stub jar.  I took out the date picker and the builders for
 media
  and web view.  So you can download it locally and build a jfxrt.jar and
  likely use the ios libs that build currently.  I haven't poked around too
  much with the native bits.  (see https://bitbucket.org/narya/jfx78)
 
  I also have been working on some maven distribution for this, not ready
  for consumption yet but an accessory build file creates the poms and
  handles the upload tasks (
 
 https://bitbucket.org/narya/jfx78/src/3fe6c37ebdfbed33d1bdc9ad9d6a2037972de680/narya.gradle?at=default
  ).
 
  The date picker will return when the threetenbp jars are updated, and
 media
  when those files are released.  WebView I either need to submit a patch
 to
  get it building in gradle or be patient.  But honestly all three of these
  rank in priority for me below writing a jfpackager bundler that wraps
  robovm.
 
 
  The RoboVM Maven plugin is working. I'd be keen to make it work with JFX
  auto included so basically you can create a normal project and run mvn
  robovm:ipad-simulator (robovm:ios-device is under construction) and next
  thing you have a running JFX app on iOS, no mess, no fuss.
 
  I have a pitch for a suite of fairly major app development next week. So
  many unknowns with JFX and app development at this stage! I'm still
 pretty
  disappointed that JFX on iOS/Android is not officially supported by
 Oracle
  (such a massive wtf? for me) - makes it such a risky prospect for us on
 the
  front line.
 
 
  On Fri, Jun 21, 2013 at 3:47 AM, Felipe Heidrich 
  felipe.heidr...@oracle.com
  wrote:
 
  Hello,
 
 
  We have just open-sourced javafx-font and javafx-font-native!
 
  Note that a lot of the code we open-sourced today is a new
 implementation
  based on native text technologies (CoreText for the Mac and DirectWrite
  for
  Windows).
 
  We still have a lot of work to do:
  - finishing the new linux implementation is a big one
  - testing
  - improve on sub pixel position text
  - etc
 
  Help is most welcome,
 
  Thank you
  Felipe
 
 
 




Re: javafx-font opensourced

2013-06-21 Thread Daniel Zwolenski
While I agree with Tom that setting up a Nexus (or Artifactory) repo is
easy, I don't see any point for OSS stuff. That's what Sonatype is for,
take advantage of it.

Setting up your own Nexus (or Artifactory) is needed if you
have proprietary stuff that you want to keep private or have licensing
restrictions on, but the whole point of OpenJDK is to not be that - OSS
Sonatype exists to make life easier for exactly these sorts of projects.

You may want to setup an internal Nexus inside for your Oracle stuff but
then you definitely wouldn't be giving us access to that.



On Fri, Jun 21, 2013 at 5:01 PM, Tom Eugelink t...@tbee.org wrote:


 What I wanted to say with that (friends always accuse me of not being to
 the point) is that by running a Nexus repo yourself,
 - Oracle is self hosting
 - But also immediately compatible with Maven, Gradle, Ivy, etc
 - Allow other repo's to easily proxy, which improves availability

 I'm more than happy to setup a Nexus.

 Tom


 On 2013-06-21 08:56, Tom Eugelink wrote:


 Installing Nexus is extremely simple (kudo's to sonatype for that). I've
 got a copy running myself, proxying all kinds of other repo's, just to be
 not dependent on other hosting.

 Tom


 On 2013-06-21 08:51, Richard Bair wrote:

 Oracle has this thing about wanting to self host everything. However
 that doesn't stop the community from putting OpenJDK / OpenJFX stuff
 somewhere reasonable until Oracle finally gets all the infrastructure in
 place and the OpenJDK project can then take advantage of it.

 Richard

 On Jun 20, 2013, at 11:34 PM, Daniel Zwolenski zon...@gmail.com wrote:

  Why not use Sonatype for your repo?

 For third party jars that aren't in central, you can upload these
 assuming the licence allows it:
 https://docs.sonatype.org/**display/Repository/Uploading+**
 3rd-party+Artifacts+to+The+**Central+Repositoryhttps://docs.sonatype.org/display/Repository/Uploading+3rd-party+Artifacts+to+The+Central+Repository

 For your own stuff that you aren't going to publish for real but still
 want to be available (e.g. latest releases of JFX), publish it as a
 SNAPSHOT. For real stuff, publish it proper into the Maven repo and make it
 available for use by the community.

 It certainly would make my life massively more enjoyable if a build of
 the JRE was available for download for each of the platforms. And things
 like win-launcher.exe and other secondary assets would also make it much
 easier to work on the packaging tools, etc.



 On Fri, Jun 21, 2013 at 2:34 PM, Richard Bair richard.b...@oracle.com
 wrote:
 Yes, working on the web view building. The main issue is there are a
 handful of libs (libxml, libxslt, etc) that we have to figure out where to
 put. I believe these are unaltered by us, but built with different flags to
 strip out stuff we don't need. I've asked Peter whether we can post the
 build instructions to produce these libs, and then figured once anyone can
 build them, it wouldn't be to hard to find a place to put them.

 Ultimately we're trying to get a public artifactory repository setup
 for OpenJDK which would be the natural place for us to put all our
 dependencies like this, but in the meantime we just need a place to put
 some binaries. I know some of these binaries could be found elsewhere but
 not all of them (win64 builds I think are missing for example).

 On Jun 20, 2013, at 8:56 PM, Danno Ferrin danno.fer...@shemnon.com
 wrote:

  On Thu, Jun 20, 2013 at 5:21 PM, Daniel Zwolenski zon...@gmail.com
 wrote:

  This time sending to the list (gets me every time!):

 Great news!

 Danno - where does this put us with the JFX78 backport? Can we get a
 build
 of this for iOS now or what's needed to close this loop?


  The good news is that my JFX78 project now compiles via gradle
 without
 needing a stub jar.  I took out the date picker and the builders for
 media
 and web view.  So you can download it locally and build a jfxrt.jar and
 likely use the ios libs that build currently.  I haven't poked around
 too
 much with the native bits.  (see 
 https://bitbucket.org/narya/**jfx78https://bitbucket.org/narya/jfx78
 )

 I also have been working on some maven distribution for this, not ready
 for consumption yet but an accessory build file creates the poms and
 handles the upload tasks (
 https://bitbucket.org/narya/**jfx78/src/**
 3fe6c37ebdfbed33d1bdc9ad9d6a20**37972de680/narya.gradle?at=**defaulthttps://bitbucket.org/narya/jfx78/src/3fe6c37ebdfbed33d1bdc9ad9d6a2037972de680/narya.gradle?at=default
 ).

 The date picker will return when the threetenbp jars are updated, and
 media
 when those files are released.  WebView I either need to submit a
 patch to
 get it building in gradle or be patient.  But honestly all three of
 these
 rank in priority for me below writing a jfpackager bundler that wraps
 robovm.


 The RoboVM Maven plugin is working. I'd be keen to make it work with
 JFX

 auto included so basically you can create a normal project and run mvn
 robovm:ipad

Re: javafx-font opensourced

2013-06-21 Thread Daniel Zwolenski
Ok, that's how I read it, and so as per my email Sonatype still makes sense
to me as the spot to put these libs (see the link I linked to).

And, as I said, once you start using it for your third party repos it's a
small step to then start deploying the actual built artifacts into it,
which is something I've been asking for since I first joined in when 2.0
was in beta. We couldn't do it before now because of legal reasons with
Oracle. Now we can legally do it but it's technically very, very easy for
you guys to do and very hard for us to do.

I have already the Sonatype groupId setup and waiting for you to use so
most of red tape part is already done.

I don't really see any reason not to do this but you seem reluctant? What's
the reason for the reluctance?




On Fri, Jun 21, 2013 at 5:14 PM, Richard Bair richard.b...@oracle.comwrote:

  Are we talking Oracle or OpenJDK here. I got the impression those libs
 were Open?

 Right, it is confusing. Much of the code we (meaning the build system) are
 building all the time (for example, all of webkit or gstreamer). However
 some of it (libxslt, libxml, some others) we have only built and then
 loaded up onto an internal web server as a zip. The existing closed ant
 build system downloads that zip and unpacks it, and then the existing ant
 build uses those libraries for building webkit and producing the final
 artifacts.

 So in order to get the build working we either need to include the sources
 for these libs and build them every time, or build them once and put them
 someplace that Gradle can download them from. The ideal thing would be for
 OpenJDK to have a public binary repository in which we can put all our
 OpenJDK stuff (including snapshots of every build, and all the native
 libraries, etc) and then our gradle build can just pull everything from
 there. However in the meantime, I'd be happy if those native libs lived
 anywhere and we wired it up in the gradle build to make it automatic.

 The point I was making about Oracle vs OpenJDK is just that the Official
 Java / JavaFX / Oracle JDK builds will always probably be downloaded via
 that web page and the continuous builds of that might not be exposed in a
 binary repository. But the OpenJDK / OpenJFX builds certainly could be
 AFAIK and certainly could be hosted by anybody on any server since it is
 all just GPL.

 So what I was referring to wasn't putting builds of OpenJFX into Maven so
 much as putting the libxml, libxslt, and other web dependencies someplace
 like maven that we could then pull from in order to be able to build web
 view.

 Richard


NullPointer in BaseGraphics.drawTextureVO

2013-06-11 Thread Daniel Zwolenski
Can anyone tell me what might cause the exception below in Prism?

It's from an app that captures video via a native library (LTI-CIVIL) and
then converts that image to JFX display via:

BufferedImage buffImage = AWTImageConverter.toBufferedImage(image);
jfxImage = javafx.scene.image.Image.impl_fromExternalImage(buffImage);
previewView.setImage(jfxImage);


java.lang.NullPointerException
at com.sun.prism.impl.BaseGraphics.drawTextureVO(BaseGraphics.java:365)
at com.sun.prism.impl.BaseGraphics.drawTexture(BaseGraphics.java:334)
at
com.sun.prism.impl.ps.BaseShaderGraphics.drawTexture(BaseShaderGraphics.java:103)
at com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:315)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
at com.sun.javafx.tk.quantum.PaintRunnable.doPaint(PaintRunnable.java:214)
at com.sun.javafx.tk.quantum.PaintRunnable.paintImpl(PaintRunnable.java:145)
at com.sun.javafx.tk.quantum.PaintRunnable.run(PaintRunnable.java:349)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
at com.sun.prism.render.RenderJob.run(RenderJob.java:29)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at
com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:101)
at java.lang.Thread.run(Thread.java:722)


Re: NullPointer in BaseGraphics.drawTextureVO

2013-06-11 Thread Daniel Zwolenski
This is an older version, probably JFX from around jdk1.7.0_02.

I'm running it now on jdk1.7.0_21 to see what happens (takes about an hour
to get to the point of failure, which is why I didn't pick it up when I
wrote the code originally).

Unfortunately chunks of the system are broken when it runs on this newer
code. Lots of backwards compatibility breaks, especially visual ones with
CSS that just make it screwy. This is an old project and I don't really
want to be touching this code but they have this video capture bug which is
killing everything.

I take it there's no way to avoid the resources issue in the old JFX, it's
just a plain and simple bug?



On Tue, Jun 11, 2013 at 11:10 PM, Kevin Rushforth 
kevin.rushfo...@oracle.com wrote:

 Is this from FX 2.2.x or FX 8? The stack trace suggests an earlier version
 of FX. The only thing I can think of off hand is that the HW texture
 couldn't be created, probably because you ran out of resources. There are a
 few issues relating to this, which we believe are fixed in FX 8 with the
 implementation of RT-25323.

 -- Kevin



 Daniel Zwolenski wrote:

 Can anyone tell me what might cause the exception below in Prism?

 It's from an app that captures video via a native library (LTI-CIVIL) and
 then converts that image to JFX display via:

 BufferedImage buffImage = AWTImageConverter.**toBufferedImage(image);
 jfxImage = javafx.scene.image.Image.impl_**
 fromExternalImage(buffImage);
 previewView.setImage(jfxImage)**;


 java.lang.NullPointerException
 at com.sun.prism.impl.**BaseGraphics.drawTextureVO(**
 BaseGraphics.java:365)
 at com.sun.prism.impl.**BaseGraphics.drawTexture(**BaseGraphics.java:334)
 at
 com.sun.prism.impl.ps.**BaseShaderGraphics.**drawTexture(**
 BaseShaderGraphics.java:103)
 at com.sun.javafx.sg.prism.**NGImageView.renderContent(**
 NGImageView.java:315)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**185)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**39)
 at com.sun.javafx.sg.BaseNode.**render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.**NGGroup.renderContent(NGGroup.**java:205)
 at com.sun.javafx.sg.prism.**NGRegion.renderContent(**NGRegion.java:420)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**185)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**39)
 at com.sun.javafx.sg.BaseNode.**render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.**NGGroup.renderContent(NGGroup.**java:205)
 at com.sun.javafx.sg.prism.**NGRegion.renderContent(**NGRegion.java:420)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**185)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**39)
 at com.sun.javafx.sg.BaseNode.**render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.**NGGroup.renderContent(NGGroup.**java:205)
 at com.sun.javafx.sg.prism.**NGRegion.renderContent(**NGRegion.java:420)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**185)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**39)
 at com.sun.javafx.sg.BaseNode.**render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.**NGGroup.renderContent(NGGroup.**java:205)
 at com.sun.javafx.sg.prism.**NGRegion.renderContent(**NGRegion.java:420)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**185)
 at com.sun.javafx.sg.prism.**NGNode.doRender(NGNode.java:**39)
 at com.sun.javafx.sg.BaseNode.**render(BaseNode.java:1139)
 at com.sun.javafx.tk.quantum.**PaintRunnable.doPaint(**
 PaintRunnable.java:214)
 at com.sun.javafx.tk.quantum.**PaintRunnable.paintImpl(**
 PaintRunnable.java:145)
 at com.sun.javafx.tk.quantum.**PaintRunnable.run(**
 PaintRunnable.java:349)
 at java.util.concurrent.**Executors$RunnableAdapter.**
 call(Executors.java:471)
 at
 java.util.concurrent.**FutureTask$Sync.**innerRunAndReset(FutureTask.**
 java:351)
 at java.util.concurrent.**FutureTask.runAndReset(**FutureTask.java:178)
 at com.sun.prism.render.**RenderJob.run(RenderJob.java:**29)
 at
 java.util.concurrent.**ThreadPoolExecutor.runWorker(**
 ThreadPoolExecutor.java:1110)
 at
 java.util.concurrent.**ThreadPoolExecutor$Worker.run(**
 ThreadPoolExecutor.java:603)
 at
 com.sun.javafx.tk.quantum.**QuantumRenderer$**PipelineRunnable.run(**
 QuantumRenderer.java:101)
 at java.lang.Thread.run(Thread.**java:722)





Re: NullPointer in BaseGraphics.drawTextureVO

2013-06-11 Thread Daniel Zwolenski
)
at
com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:98)
at java.lang.Thread.run(Thread.java:722)


On Wed, Jun 12, 2013 at 12:55 AM, Kevin Rushforth 
kevin.rushfo...@oracle.com wrote:

 **

 I take it there's no way to avoid the resources issue in the old JFX, it's
 just a plain and simple bug?


 I don't know of a way to completely avoid it. As far as we know there
 aren't any actual leaks in the more recent FX 2.2.x texture code, but the
 resource disposal is not deterministic and if you hit the limit of texture
 memory it does not recover gracefully (or at all).

 Jim might have more insight, since he implemented the new texture
 management system for FX 8.;


 -- Kevin



 Daniel Zwolenski wrote:

 This is an older version, probably JFX from around jdk1.7.0_02.

  I'm running it now on jdk1.7.0_21 to see what happens (takes about an
 hour to get to the point of failure, which is why I didn't pick it up when
 I wrote the code originally).

  Unfortunately chunks of the system are broken when it runs on this newer
 code. Lots of backwards compatibility breaks, especially visual ones with
 CSS that just make it screwy. This is an old project and I don't really
 want to be touching this code but they have this video capture bug which is
 killing everything.

  I take it there's no way to avoid the resources issue in the old JFX,
 it's just a plain and simple bug?



 On Tue, Jun 11, 2013 at 11:10 PM, Kevin Rushforth 
 kevin.rushfo...@oracle.com wrote:

 Is this from FX 2.2.x or FX 8? The stack trace suggests an earlier
 version of FX. The only thing I can think of off hand is that the HW
 texture couldn't be created, probably because you ran out of resources.
 There are a few issues relating to this, which we believe are fixed in FX 8
 with the implementation of RT-25323.

 -- Kevin



 Daniel Zwolenski wrote:

 Can anyone tell me what might cause the exception below in Prism?

 It's from an app that captures video via a native library (LTI-CIVIL) and
 then converts that image to JFX display via:

 BufferedImage buffImage = AWTImageConverter.toBufferedImage(image);
 jfxImage =
 javafx.scene.image.Image.impl_fromExternalImage(buffImage);
 previewView.setImage(jfxImage);


 java.lang.NullPointerException
 at com.sun.prism.impl.BaseGraphics.drawTextureVO(BaseGraphics.java:365)
 at com.sun.prism.impl.BaseGraphics.drawTexture(BaseGraphics.java:334)
 at
 com.sun.prism.impl.ps
 .BaseShaderGraphics.drawTexture(BaseShaderGraphics.java:103)
 at
 com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:315)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
 at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
 at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
 at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
 at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
 at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
 at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
 at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
 at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
 at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
 at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
 at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
 at
 com.sun.javafx.tk.quantum.PaintRunnable.doPaint(PaintRunnable.java:214)
 at
 com.sun.javafx.tk.quantum.PaintRunnable.paintImpl(PaintRunnable.java:145)
 at com.sun.javafx.tk.quantum.PaintRunnable.run(PaintRunnable.java:349)
 at
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
 at

 java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
 at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
 at com.sun.prism.render.RenderJob.run(RenderJob.java:29)
 at

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
 at

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
 at

 com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:101)
 at java.lang.Thread.run(Thread.java:722)






Re: Tracking down an NPE

2013-06-10 Thread Daniel Zwolenski
Cool, thanks - so the native packager requires that every one of the JARs
used in the app (even the third party ones not built as part of the app)
have a manifest in them? That's going to be very nasty.

Regarding getting the javafx-ant jars into a repo, I started down this road
a while back and have now access to the OSS repo for groupID
'net.java.openjdk.openjfx'.

I gave up actually deploying it when I realised there was a different
javafx-ant.jar for each native platform. I wasn't able to build them all
(and the Windows build was patchy at best anyway).

Happy to work with you on getting them into that repo if you want. Just let
me know where you're up to with it and what you need.




On Tue, Jun 11, 2013 at 8:27 AM, Danno Ferrin danno.fer...@shemnon.comwrote:

 At least one of your jars does not have a manifest:

 https://javafx-jira.kenai.com/browse/RT-24143

 I'm tempted to get the JFX78 builds auto-deploying at least the javafx-ant
 jar to some repo so the build plugins can use JavaFX 8 deployment code on
 Java 7.


 On Mon, Jun 10, 2013 at 4:13 PM, Daniel Zwolenski zon...@gmail.comwrote:

 Any chance someone from Oracle could tell me what the line of code is in
 com.sun.javafx.tools.packager.bundlers.BundleParams at line 390?

 Someone is getting a NullPointer on this line when using the maven plugin
 and I can't work out why. The line number is different in the Sun code vs
 the open sourced one.

 Cheers,
 Dan





JFX Packager (was Re: Preloaders)

2013-06-06 Thread Daniel Zwolenski
On Thu, Jun 6, 2013 at 5:52 PM, Danno Ferrin danno.fer...@shemnon.comwrote:



 On Wed, Jun 5, 2013 at 9:47 PM, Daniel Zwolenski zon...@gmail.com wrote:

 To sum up my previous major suggestions for a better world:

 - web deploy code should be separate module from native, and jar separate
 again. Each native module (win, Linux, Mac) should be separate and I should
 be able to invoke any and all of them how and when I want, not just one
 generateDeployment method as the only entry point.


 I think JNLP and web generation should be a bundler on the same level as
 win/mac/lin.  No special treatment, it is just hte same as the rest


Agreed, they are all the same level, but modularised at a code level so we
can call generateJnlpBundle or generateWinExeBundle, generateWinMsiBundle.
Currently there's this uber bundle going on that you can
sort-of-if-you're-lucky turn some bits off. It's this uber bundling I'd
like to see change in the future. Give me finer hook in points for the
Maven plugin anyway.


 - java code of packager should be one library for all platforms so we have
 one jar for all, not a separate one for each OS. Native bits are referenced
 from this one jar as needed.


 I actually disagree with this.   Perhaps the default bundlers come in one
 jar for hte JDK, but I would like the ability to add bundlers external to
 the tool that evolve at different speeds than the core JDK.  Tha was the
 point of my service loader patch.  Making the bundlers separate for the JDK
 is a good exercise in proving severability.


Agree to being to add your own customisations by the core tools having
plugin points. Also would love to see the packager tools not tied into the
JDK and be on their own release cycle - this would be a massive win (wasn't
a popular suggestion when I made it a while back).

My point about one jar was more to do with the fact that currently the
ant-javafx.jar at the moment is different in the Mac distro of the JDK to
the Window version of the JDK, which is different again to a 32bit version
of the ant-javafx.jar on a 32 bit windows JDK.

95% of the code is the same in all of these however there are slight
differences to the Java code (or so I was told - by Ivan I think) and the
native bits (winlauncher.exe for example) are included in the JAR (from
memory). So effectively the ant-javafx.jar is platform specific.

Messy to get all those platform specific JARs and put them in Maven (or
whatever). You need to reference the right JAR for the platform you are on,
even for doing, say a web build, which doesn't actually care.

Also the native inter-twining makes it hard to build for testing and
contributing, since I need to do the native builds, whereas if these were
separate assets I could just mess with the Java code and use the native
bits out of the repo.

So when I say one jar maybe translate that to not platform specific JARs
of stuff that doesn't need to be.



 - native should not have dumb stuff from web as a requirement if not used.
 Signing, special jfx meta-inf in jars, checking registry for jdk, etc, etc.
 Native is actually very simple and really should be able to work with a
 stock standard jar and not need a special jfx built one. Web should be
 quarrantined so that native isn't sullied by it.


 Sullied is a bit of a harsh word.


I'm afraid I've come to hate the web deployment stuff (partly
disappointment because it held so much potential). The code in the packager
is really messy and makes me angry when I try and work with it. Most of it
is over engineering as far as I can tell. It also doesn't work reliably.
And web deploy is the reason security problems are possible. And... I'll
stop there.

Unfortunately, native bundles were an after thought and just tacked on. The
Native bundler code in the packager is tightly intertwined with this web
code currently. I'd like to see that change.  e.g. Why do we need version
checks on JRE's etc, when we have a co-bundled JRE in our native app?


 Deployment modes are different   For example, a Mac App, iOS app, and
 Android APK all still need to be signed, their deployment models for
 signing are different.


Yep, agreed.

My preference is that each one should be a separate module in the packager,
so they can each do whatever is special for them. APK should not have
complexities resulting from native, and native not from web, and web not
from APK, etc. Each module should deal with the job of building a distro
for that platform in the simplest and cleanest way.

There would definitely be some re-used code (like signing) that is in a
common spot but at the moment the native launcher depends on a JFX built
JAR which includes stuff only needed for web, etc.

And I agree, I should be able to build my own custom bundle builder that
just slots into the framework alongside the others. I should be able to
leverage the common code (like signing) from my custom module.




 - no magic config in the core libraries (higher wrappers can try and add

Re: Preloaders

2013-06-05 Thread Daniel Zwolenski
Thanks Mark. If the user sets a preloader in the plugin I'm going to pass that 
same class to the jar and to the native bundle. I guess people will complain to 
me if that doesn't work and I'll point them your way. 

Are they ever going to let you do some packager stuff? I gave up waiting for 
the revolution and rebuilt the maven plugin to be less crap than it was but its 
the underlying packaging tools that need the rewrite if JFX is ever going to 
have a decent deployment option.  

On 05/06/2013, at 3:58 AM, Mark Howe mark.h...@oracle.com wrote:

 It should be the one within the bundle otherwise deploying an app bundle 
 won't work. If you find otherwise please create an issue. 
 
 
 Cheers
 Mark
 
 On May 29, 2013, at 6:51 AM, Scott Palmer swpal...@gmail.com wrote:
 
 I think native bundles should use the preloader contained within.  I use
 the Preloader to implement a splash screen since my app takes a long time
 to start up, even though all the jars are already downloaded.
 
 
 On Wed, May 29, 2013 at 8:40 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
 The jfx packaging tools allow pre-loaders to be set. I don't use them but
 people using the maven plugin want them.
 
 It looks like you can set a preloader for both jars and for bundles (web,
 native). When building the bundles however they include the jar in them. So
 we end up with both the bundle, and the jar within the bundle, getting the
 preloader set.
 
 Does anyone know what will or should happen in this case? Does one
 preloader take precedence and the other is ignored, or are both used at
 different times and I should allow the user to set a different jar
 preloader to the bundle one, or is this setup invalid and I should actually
 not pass the preloader setting to one or the other in this case?
 
 Not using Preloaders myself and with the packaging tool code being a
 complete mess, it would be good to know the expectations here so I can
 properly support the users wanting this.
 
 Cheers
 Dan
 


Re: Preloaders

2013-06-05 Thread Daniel Zwolenski
Great news - happy to provide more input and feedback into the new
tools/APIs when you get to that. I'd guess that Danno's probably got some
good input for that side of it too - would be great to keep the
conversations open and on this mailing list.

For my money, I'd vote for only show stopper bugs getting fixed on the
existing packager code base, and you focus on getting it all cleaned up and
working nice and a better pattern for contributions in place. That could
allow us to contribute more and stop you churning endlessly on a backlog of
bugs.

Cheers,
Dan


On Thu, Jun 6, 2013 at 1:21 AM, Mark Howe mark.h...@oracle.com wrote:

 I actually spent at least half my time on the packager the last two weeks
 - woo hoo :). Still have other priorities but am finding time for the
 packager. Working on a few critical packager bugs right now. Then later
 this week going to finally get Danno's patches in. There are a lot of
 packager bugs in the backlog. Once some of that backlog is cleared up I am
 going to do some refactoring, really want to make the code  simpler,
 cleaner and more obvious - and subsequently easier to contribute to.

 Cheers


 On Jun 5, 2013, at 5:14 AM, Daniel Zwolenski zon...@gmail.com wrote:

  Thanks Mark. If the user sets a preloader in the plugin I'm going to
 pass that same class to the jar and to the native bundle. I guess people
 will complain to me if that doesn't work and I'll point them your way.
 
  Are they ever going to let you do some packager stuff? I gave up waiting
 for the revolution and rebuilt the maven plugin to be less crap than it was
 but its the underlying packaging tools that need the rewrite if JFX is ever
 going to have a decent deployment option.
 
  On 05/06/2013, at 3:58 AM, Mark Howe mark.h...@oracle.com wrote:
 
  It should be the one within the bundle otherwise deploying an app
 bundle won't work. If you find otherwise please create an issue.
 
 
  Cheers
  Mark
 
  On May 29, 2013, at 6:51 AM, Scott Palmer swpal...@gmail.com wrote:
 
  I think native bundles should use the preloader contained within.  I
 use
  the Preloader to implement a splash screen since my app takes a long
 time
  to start up, even though all the jars are already downloaded.
 
 
  On Wed, May 29, 2013 at 8:40 AM, Daniel Zwolenski zon...@gmail.com
 wrote:
 
  The jfx packaging tools allow pre-loaders to be set. I don't use them
 but
  people using the maven plugin want them.
 
  It looks like you can set a preloader for both jars and for bundles
 (web,
  native). When building the bundles however they include the jar in
 them. So
  we end up with both the bundle, and the jar within the bundle,
 getting the
  preloader set.
 
  Does anyone know what will or should happen in this case? Does one
  preloader take precedence and the other is ignored, or are both used
 at
  different times and I should allow the user to set a different jar
  preloader to the bundle one, or is this setup invalid and I should
 actually
  not pass the preloader setting to one or the other in this case?
 
  Not using Preloaders myself and with the packaging tool code being a
  complete mess, it would be good to know the expectations here so I can
  properly support the users wanting this.
 
  Cheers
  Dan
 




Re: Preloaders

2013-06-05 Thread Daniel Zwolenski
To sum up my previous major suggestions for a better world:

- everything should be easily configurable via runtime params passed to 
packager code: input paths, output paths, paths to native tools, resources, 
includes, file names, etc. Everything!

- web deploy code should be separate module from native, and jar separate 
again. Each native module (win, Linux, Mac) should be separate and I should be 
able to invoke any and all of them how and when I want, not just one 
generateDeployment method as the only entry point. 

- java code of packager should be one library for all platforms so we have one 
jar for all, not a separate one for each OS. Native bits are referenced from 
this one jar as needed. 

- native should not have dumb stuff from web as a requirement if not used. 
Signing, special jfx meta-inf in jars, checking registry for jdk, etc, etc. 
Native is actually very simple and really should be able to work with a stock 
standard jar and not need a special jfx built one. Web should be quarrantined 
so that native isn't sullied by it. 

- no magic config in the core libraries (higher wrappers can try and add it on 
top). Eg It shouldn't look for wix and use it just because it's installed. I 
should be able to specify I want wix or inno and tools should fail if they are 
not there.

That's just looking at improvements to what's already there. As far as my picks 
for new features, these would be my top:

- app store support (desktop at this stage)  

- auto updating support for native bundles

- cross platform builds on the one machine (ie build for Mac from a windows 
machine, etc). Also build a 32bit distro on a 64bit jdk, etc. 

- compact jre's for smaller distro sizes. 

Just a little wish list :)

Cheers,
Dan



On 06/06/2013, at 1:15 PM, Danno Ferrin danno.fer...@shemnon.com wrote:

 For me the biggest add would be for some form of runtime configuration of the 
 packager, as well as the bundler params.  this would allow outside 
 contributors to cerate an APK bundler or an iOS bundler of many forms without 
 having to adjust the core code, and allowing them to be brought in at 
 runtime (the runtime of the build).  This also extends to the bundle params 
 having an open-ended property set of some sort, so things that matter to 
 random packaging formats don't leak into other bundle params.  My dream would 
 be to be able to create an APK or other such bundle just by flipping a param 
 in the packager call form an otherwise desktop app.
 
 On Wed, Jun 5, 2013 at 8:33 PM, Daniel Zwolenski zon...@gmail.com wrote:
 Great news - happy to provide more input and feedback into the new
 tools/APIs when you get to that. I'd guess that Danno's probably got some
 good input for that side of it too - would be great to keep the
 conversations open and on this mailing list.
 
 For my money, I'd vote for only show stopper bugs getting fixed on the
 existing packager code base, and you focus on getting it all cleaned up and
 working nice and a better pattern for contributions in place. That could
 allow us to contribute more and stop you churning endlessly on a backlog of
 bugs.
 
 Cheers,
 Dan
 
 
 On Thu, Jun 6, 2013 at 1:21 AM, Mark Howe mark.h...@oracle.com wrote:
 
  I actually spent at least half my time on the packager the last two weeks
  - woo hoo :). Still have other priorities but am finding time for the
  packager. Working on a few critical packager bugs right now. Then later
  this week going to finally get Danno's patches in. There are a lot of
  packager bugs in the backlog. Once some of that backlog is cleared up I am
  going to do some refactoring, really want to make the code  simpler,
  cleaner and more obvious - and subsequently easier to contribute to.
 
  Cheers
 
 
  On Jun 5, 2013, at 5:14 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
   Thanks Mark. If the user sets a preloader in the plugin I'm going to
  pass that same class to the jar and to the native bundle. I guess people
  will complain to me if that doesn't work and I'll point them your way.
  
   Are they ever going to let you do some packager stuff? I gave up waiting
  for the revolution and rebuilt the maven plugin to be less crap than it was
  but its the underlying packaging tools that need the rewrite if JFX is ever
  going to have a decent deployment option.
  
   On 05/06/2013, at 3:58 AM, Mark Howe mark.h...@oracle.com wrote:
  
   It should be the one within the bundle otherwise deploying an app
  bundle won't work. If you find otherwise please create an issue.
  
  
   Cheers
   Mark
  
   On May 29, 2013, at 6:51 AM, Scott Palmer swpal...@gmail.com wrote:
  
   I think native bundles should use the preloader contained within.  I
  use
   the Preloader to implement a splash screen since my app takes a long
  time
   to start up, even though all the jars are already downloaded.
  
  
   On Wed, May 29, 2013 at 8:40 AM, Daniel Zwolenski zon...@gmail.com
  wrote:
  
   The jfx packaging tools allow pre-loaders

Re: Canvas clip problems

2013-06-04 Thread Daniel Zwolenski
Finally got round to testing this and setting -Dprism.order=j2d as Scott
makes the smear go away.


On Sun, Jun 2, 2013 at 11:16 AM, Scott Palmer swpal...@gmail.com wrote:

 Try
 -Dprism.order=sw
 with JavaFS 8

 or
 -Dprism.order=j2d
 with JavaFX 2.2

 to see if the clipping issue goes away.

 Also try -Dprism.dirtyopts=false to see if that fixes the smearing.


 On Sat, Jun 1, 2013 at 9:14 PM, Scott Palmer swpal...@gmail.com wrote:

 This looks like it may be related to the clipping issue that I'm having
 (the one that forces me o use the software pipeline in JavaFX 8 or the j2d
 pipeline in JavaX 2.2)

 https://javafx-jira.kenai.com/browse/RT-30591

 I'll try to do the same screencast thingy, as the still in my report
 don't do justice to the problem.

 Scott


 On Sat, Jun 1, 2013 at 8:55 PM, Richard Bair richard.b...@oracle.comwrote:

 Cheese (the smear) should never be possible. It means that the clip
 used on the device is wrong for some reason, and therefore some area of the
 screen was not being repainted that needed to be. In Swing (or Android or
 any other immediate mode API) it is possible that your app could have a bug
 that causes this, but with the scene graph the responsibility is with JFX
 not to mess up the dirty regions.

 My guess is this is related to the other issue you already filed about
 the z order rendering issue (which is also related to the clip being
 wrong). It might be worth putting the link to the screencast on that bug
 report.

 Richard

 On Jun 1, 2013, at 3:21 PM, Daniel Zwolenski zon...@gmail.com wrote:

  Here is one I can't reproduce in smaller code.
 
  http://www.screencast.com/t/AJZjx1TjFT
 
  You can see that when the enemies start off the canvas they end up
 leaving
  a smear behind. When they leave the canvas at the other end they also
  smear.
 
  I suspect it's something to do with the clipping code used in the game
 but
  I haven't been able to narrow it down (and this area I was a bit flaky
 on
  and I think Richard did the starting setup for).
 
  It's probably a case of clipping properly, but should this sort of
  behaviour be even possible to occur?
 
  p.s. thanks for the Camtasia tips - nice product.






Re: When will JFX be fully open sourced?

2013-06-04 Thread Daniel Zwolenski
Danno, what do you need to wrap it up?

Basically I'm intending to have the Maven plugin automatically use a build
of Danno's backport for iOS (that I'm hoping Danno will provide for me).
Once this exists I can do the Maven side of it.



On Wed, Jun 5, 2013 at 10:33 AM, Richard Bair richard.b...@oracle.comwrote:

 The accessibility stuff is going out this week, and the font pieces in mid
 June. Media we're in process of but I don't have a date. Is there anything
 else missing? I had heard from Danno that fonts  accessibility were the
 big blockers.

 Richard

 On Jun 4, 2013, at 5:09 PM, Daniel Zwolenski zon...@gmail.com wrote:

  Niklas and I have been working on getting the RoboVM Maven plugin
 working -
  it is in the final stages of testing.
 
  This is *without* JavaFX however. We are waiting on the final parts of
  JavaFX to be open sourced before doing this. When is this due to happen?




Re: ScrollPane.prefViewportWidth == computed size?

2013-06-03 Thread Daniel Zwolenski
A similar, or at least related, issue I created a while back: 
https://javafx-jira.kenai.com/browse/RT-17988


On 04/06/2013, at 5:28 AM, Werner Lehmann lehm...@media-interactive.de wrote:

 Hi Richard,
 
 thanks for the quick reply. FYI, I am currently using a hardcoded value with 
 some extra space, hopefully sufficient for all platforms.
 
 On 03.06.2013 20:57, Richard Bair wrote:
 I think calling it a bug would be fair, and this approach should work.
 
 I'll create a ticket later.
 
 Hmmm. I guess fitToWidth doesn't work for you because you want the
 content to dictate the size of the scroll pane, and not the other way
 around? Maybe a combination of this and a subclass to work around the
 issue you are seeing?
 
 Exactly. fitToWidth removes the horizontal scrollbar but abbreviates the 
 label text (...). The suggested subclass approach does not work because 
 prefWidth() is final in Control. Is there any event I could listen for to 
 update the prefWidth? I tried onSceneChange but that seems to be too early 
 as prefWidth(-1) returns 0.0 then.
 
 Or maybe the ScrollPane, when fitToWidth is true, automatically
 adjusts its pref width to match that of its content? That would seem
 to be the right thing to do in this case, but I don't know that it
 does (or that it makes sense in all cases?).
 
 ScrollPane.fitToWidth resizes its content (if resizable) to its viewport 
 width. Does nothing if content is not resizable, and does not seem to change 
 ScrollPane.prefWidth. I'd say fit-to-width could mean both: fit content to 
 viewport width and fit viewport width to content. The former is already 
 implemented, of course. No horizontal scrollbar in either case.
 
 So it seems to me that there are at least 2 different ways we could
 go about supporting this specific use case, one seems like a
 straightforward thing (let -1 have meaning for prefViewportWidth) and
 one is the result of a perhaps questionable interpretation
 (fitToWidth=true changes the way we compute the prefWidth of the
 ScrollPane). Both seem reasonable ways to have tried to use the
 control and both yield unexpected results it sounds like.
 
 The binding was not really obvious to me but eventually I arrived here and it 
 would be nice to have this working. Additional API would make this easier to 
 find but it might be hard to come up with something which makes sense in the 
 API and does not change or conflict with existing API.
 
 Werner



Re: Performance Tips n' Tricks wiki page

2013-06-03 Thread Daniel Zwolenski
This is very good. Looking forward to it growing. There's going to be a lot
of work in building and maintaining that - would be great if it gets the
love it needs.

I do wonder if there should be a separate guide for embedded and mobile as
they really are a set of unique problems that you probably only care about
if doing that sort of stuff. Might help keep the desktop one more
digestible.

A couple of questions to add (sure I will have more over time):

1) turning cache to true and cache hint to SPEED  I haven't seen explained
what the drawbacks are to doing this. I assume there is some trade-off for
turning this on otherwise it would be on by default?

2) AnimationTimer - how is this related to transitions (like
TransitionTimer). They seem to be two very different things - not just at
the usage level but the actual underlying performance and implementation -
but it's not clear to me exactly the difference. I wanted to work with both
AnimationTimer stuff and Transitions in a consistent way (e.g. pause one
thing to pause my whole app). When trying to use the API my instinct was
that the transitions used an underlying AnimationTimer, so I was looking
for a way to setAnimationTimer on the transitions, so they all shared the
same instance. I'm obviously seeing it wrong, but it's not clear to me why
these things are so different.

3) If I have an app with multiple views (say 20 or 30) and I want to
animate between them (slide in, out, etc). Should I have all the views
already added to the scene and then just move them off-center (and/or make
them invisible), or should I add and remove them at the start and end of
each animation. I'd assumed that adding and removing was the way to go for
performance, is this correct? The question really is: If a node is in the
scene graph but not visible does it add much overhead to rendering,
picking, etc? Doing something like Mac's Mission Control would be much
easier if I didn't have to add/remove and could just zoom, but is this a
bad idea from performance perspective?

4) Is there much of a hit in building a view full of nodes and then
throwing them away and rebuilding on each showing of that view? In my apps
(browser style) I would build all the views on startup and then reuse these
by loading different data into them (e.g. the same instance was used for
showing Person1 details as Person2, just loading different values into it).
I thought this would be the best from performance, but there was a comment
from Richard a while back that suggested it was perfectly ok/performant to
throw away and build the page again on each showing? This would be much
easier from an animation point of view as animating the transition 'back'
or 'forward' between two pages of the same view is problematic when you are
reusing the same view for both!

5) Is there much overhead to a view that it is in memory but not actually
added to the scene. i.e. if I do end up building a new instance of the view
for every page load (as per question 4), then it would be extra handy to
just keep those views in memory so when the back button is hit I don't have
to rebuild them. I assume the memory would build up pretty quickly if there
were large tables, images, videos, etc? How does a web browser manage to
cache all these pages in history and would the same approach be performant
for JFX?






On Tue, Jun 4, 2013 at 7:11 AM, Richard Bair richard.b...@oracle.comwrote:

 Hi,

 We had a brief meeting this afternoon and kicked off a performance tips n'
 tricks wiki page, which is presently a dumping ground of ideas that will
 get massaged into something useful. The content on this wiki will then be
 used by the docs team to produce some official documentation that goes on
 the oracle website.

 https://wiki.openjdk.java.net/display/OpenJFX/Performance+Tips+and+Tricks

 I pre-loaded it with a chunk of John Smith's email listing a bunch of
 different performance related ideas, and also stuff we had on an internal
 document we'd brainstormed up a while ago, plus some ideas we brainstormed
 up a few minutes ago. Its rough, but if you are interested in taking a look
 and giving more ideas that occur, I'd appreciate it.

 Thanks
 Richard


Wrap text backwards compatibility issue

2013-06-02 Thread Daniel Zwolenski
Since I had to run that old app for those performance screenshots, I found
this: https://javafx-jira.kenai.com/browse/RT-30868

I'm just highlighting it here because it is another pretty major backwards
compatibility issue between minor release versions. I think backwards
compatibility of styling is going to be pretty darn hard for you guys to
preserve (read impossible).

Here's where I throw out my usual call to have Applets and Webstart
deprecated, so we don't need auto-updating, and so this kind of backwards
compatibility issue isn't so debilitating. Yea, yea, no go, whatever.

Hopefully I'm the only one who built an app with single letter buttons,
that also has the wrap-text flag set to true for the base button style, but
if you were unlucky enough to do this and your app is using web deployment,
you probably want to tweak your code around this.


Re: Animation swipe stutter

2013-06-02 Thread Daniel Zwolenski
Thanks for the info. No VMWare going on with this one. 

Regrettably the app is not mine to share, it's a clients. Taking screen shots 
is a liberty. 

It is visible on multiple different windows machines though. 


On 02/06/2013, at 6:15 PM, Tom Eugelink t...@tbee.org wrote:

 
 I had a similar problem where my calendar popup would flicker when moving the 
 mouse. This was also only reproducible on my system alone. Turns out the fact 
 that I'm using VMWare to separate all the different projects I work on was 
 the cause; somewhere half consciously I've clicked on a VMWare setting called 
 accelerate 3D graphics and that didn't quite work as expected.
 
 One of the things you can do is let other people run your app and see when 
 the stutter occurs; maybe there is a common denominator. I'm willing to test, 
 and creating a UI only version should not be that hard.
 
 Tom
 
 
 On 2013-06-02 07:36, Daniel Zwolenski wrote:
 Here is another one I can't reproduce in a constrained example.
 http://www.screencast.com/t/ufJsZhiLhNJH
 
 This is a real world app that runs on a tablet (Windows). I tried to give
 this app a bit of an iPad style, with animations to transition between
 screens, etc (this was built a year or two ago). Many of the animations '
 perform poorly' and are either slow or jumpy, etc, but it's hard to capture
 on video and hard to replicate in simple examples.
 
 In this video you can see a 'stutter' as the animation goes from left to
 right and back again. The stutter is right at the end just before the
 transition finishes. Sometimes it's pretty much perfect but 70% of the time
 it either overshoots and re-adjusts or just suddenly jumps to the end point
 before it's finished the smooth animation. At least that's the visual
 effect as far as I can tell.
 
 This (and many of the problems) could very well be an issue with the actual
 code on my end and not true JFX issues. I've tried to narrow down further
 but it is very time consuming to do this and it would help to know if there
 were any rough guesses at what might be causing this problem.
 
 Is it the fact that everything is so highly styled, or just the number of
 components, is it something like I shouldn't do any actual real work in an
 'on finished' method, etc? If there are any possible leads then I can try
 and put together a small sample but at the moment I'm firing randomly.
 
 As far as the code goes, it's a fairly standard parallel transition
 containing two translate transitions. A very simple example of the sort of
 logic used can be seen here:
 https://code.google.com/p/zenjava-playtime/source/browse/trunk/javafx-performance/animate1/src/main/java/com/zenjava/jfx/performance/animate1/SwipeApp.java
 
 But this one animates consistently smooth.
 
 


Animation swipe stutter

2013-06-01 Thread Daniel Zwolenski
Here is another one I can't reproduce in a constrained example.
http://www.screencast.com/t/ufJsZhiLhNJH

This is a real world app that runs on a tablet (Windows). I tried to give
this app a bit of an iPad style, with animations to transition between
screens, etc (this was built a year or two ago). Many of the animations '
perform poorly' and are either slow or jumpy, etc, but it's hard to capture
on video and hard to replicate in simple examples.

In this video you can see a 'stutter' as the animation goes from left to
right and back again. The stutter is right at the end just before the
transition finishes. Sometimes it's pretty much perfect but 70% of the time
it either overshoots and re-adjusts or just suddenly jumps to the end point
before it's finished the smooth animation. At least that's the visual
effect as far as I can tell.

This (and many of the problems) could very well be an issue with the actual
code on my end and not true JFX issues. I've tried to narrow down further
but it is very time consuming to do this and it would help to know if there
were any rough guesses at what might be causing this problem.

Is it the fact that everything is so highly styled, or just the number of
components, is it something like I shouldn't do any actual real work in an
'on finished' method, etc? If there are any possible leads then I can try
and put together a small sample but at the moment I'm firing randomly.

As far as the code goes, it's a fairly standard parallel transition
containing two translate transitions. A very simple example of the sort of
logic used can be seen here:
https://code.google.com/p/zenjava-playtime/source/browse/trunk/javafx-performance/animate1/src/main/java/com/zenjava/jfx/performance/animate1/SwipeApp.java

But this one animates consistently smooth.


Re: JavaFX graphics performance and suitability for advanced animations

2013-06-01 Thread Daniel Zwolenski
I tried your pixel snapping one and it is on par with the JScript version,
so it could be that either my system or my eye prefers that option. Good to
know we can switch between them at least to cater for different devices.
That project I captured in the last email had a fixed brand/model of tablet
that it was on so in that case it's good to be able to maximise performance
for that particular device.

I tried to taking screen captures of the different scenarios but it's too
fine detail and the animation just looks crap on all of them in the
captures.

I'm hearing you that this is a messy problem with no ideal, and some
options might be better in case A but worse in case B. Happy to say that
one is done and dusted and not worth going into deeper. I think the trick
will be to use coloured backgrounds - windows metro style.




On Sat, Jun 1, 2013 at 1:59 PM, Richard Bair richard.b...@oracle.comwrote:

  This looks bad for me though in FX, I'm wondering what it looks like for
 you.

 I ran with the pulse logger and definitely there is no frame taking more
 than a couple milliseconds. Things look awful because this example is
 truncating (by casting to int) instead of rounding, and so on each frame
 the rectangle is pixel snapped to a position that may be closer, or farther
 away from the expected location and our brain sees it. To test this theory,
 one thing I did was modify the sample so that instead of taking 3 seconds
 to travel 400 pixels, I use 4 seconds and I removed the EASE_BOTH
 interpolators. In this case the expected location on each frame is exactly
 a pixel boundary, and of course it looks smooth. Note though that the
 border still looks fuzzy (to me) but this is because the refresh rate on
 the monitor or possibly the eye is exhibiting a motion blur.

 public void start(Stage stage) throws Exception {
 final StackPane rootPane = new StackPane();
 VBox box = new VBox();
 box.setMaxSize(200, 200);
 box.setStyle(-fx-border-color: black; -fx-background-color:
 white; -fx-effect: dropshadow(two-pass-box , darkgray, 10, 0.0 , 4, 5););
 rootPane.getChildren().add(box);
 createTranslation(box, 4, -200, -200, 200, 200).play();

 Scene scene = new Scene(rootPane, 1200, 800);
 stage.setScene(scene);
 stage.show();
 }

 protected Animation createTranslation(Node node, int seconds, int
 fromX, int fromY, int toX, int toY) {
 IntegerProperty xProperty = new SimpleIntegerProperty(fromX);
 IntegerProperty yProperty = new SimpleIntegerProperty(fromY);
 node.translateXProperty().bind(xProperty);
 node.translateYProperty().bind(yProperty);

 Timeline t = new Timeline(
 new KeyFrame(Duration.seconds(seconds),
 new KeyValue(xProperty, toX),
 new KeyValue(yProperty, toY)));
 t.setCycleCount(Timeline.INDEFINITE);
 t.setAutoReverse(true);
 return t;
 }




 And here is another version which instead keeps the interpolator and the 3
 second movement (so we're back to unexpected irregular positions) and we
 pixel snap by rounding instead of by truncating.

 public void start(Stage stage) throws Exception {
 final StackPane rootPane = new StackPane();
 VBox box = new VBox();
 box.setMaxSize(200, 200);
 box.setStyle(-fx-border-color: black; -fx-background-color:
 white; -fx-effect: dropshadow(two-pass-box , darkgray, 10, 0.0 , 4, 5););
 rootPane.getChildren().add(box);
 createTranslation(box, 3, -200, -200, 200, 200).play();

 Scene scene = new Scene(rootPane, 1200, 800);
 stage.setScene(scene);
 stage.show();
 }

 class RoundingValue extends SimpleDoubleProperty {
 public RoundingValue(int initialValue) {
 super(initialValue);
 }

 @Override public void set(double newValue) {
 super.set(Math.round(newValue));
 }
 }

 protected Animation createTranslation(Node node, int seconds, int
 fromX, int fromY, int toX, int toY) {
 RoundingValue xProperty = new RoundingValue(fromX);
 RoundingValue yProperty = new RoundingValue(fromY);
 node.translateXProperty().bind(xProperty);
 node.translateYProperty().bind(yProperty);

 Timeline t = new Timeline(
 new KeyFrame(Duration.seconds(seconds),
 new KeyValue(xProperty, toX,
 Interpolator.EASE_BOTH),
 new KeyValue(yProperty, toY,
 Interpolator.EASE_BOTH)));
 t.setCycleCount(Timeline.INDEFINITE);
 t.setAutoReverse(true);
 return t;
 }


 This looks pretty good perhaps this is what you are seeing in the browser?

 Richard


Re: Backwards compatibility issue?

2013-05-31 Thread Daniel Zwolenski
On 01/06/2013, at 1:23 AM, David Grieve david.gri...@oracle.com wrote:

 I won't take you up on that bet. I hate to lose.
 
 If the jar file has the .css file in it, you can disabled the loading of 
 binary css by setting the property binary.css to false. I don't know if 
 there is a way to set logging on the command line. 

This is not so much a question of what can I do to fix this, as highlighting 
the fact that an app built on b13 and then run on b23 is utterly broken. With 
auto updating jre's this means someone who has an app in the wild will suddenly 
have it break for all their customers. Massive backwards compatibility problem 
between minor build releases is not good for any of us. 

As an aside, from memory I don't think the original CSS is included in the jar 
by the packaging tools but I haven't checked. 


 What's so horrid about css to bss compiling? 

A) It's broken
B) What's the point?

Not trying to be unduly critical but is it for some performance gain or 
something? Surely the load time is minimal. Given that I have a dozen XML 
config files, a handful of property files and a thousand FXML files that are 
being loaded by my app it seems like a whole lot of extra complexity and space 
for bugs to crawl in for no gain. Maybe I'm missing some benefit of this?


 
 On May 31, 2013, at 11:11 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
 Can I set this using a system property or similar? This is a built jar and 
 the fact that it was built with an older version of the jdk is part of the 
 scenario. 
 
 The packaging tools were used to assemble this jar and by default they do 
 that horrid CSS to BSS compiling. If I was betting man, my money would be on 
 that. As a side comment, I defaulted this to false in the maven plugin as 
 people reported problems with the BSS files.
 
 Note that the jar is linked to in the post if you want to do your own 
 testing on it.  
 
 On 01/06/2013, at 12:57 AM, David Grieve david.gri...@oracle.com wrote:
 
 512 is the localized message of the exception that is being thrown, which 
 in itself is odd. 
 
 You might get more info if you set the CSS logger to INFO. Assuming this is 
 JavaFX 2.2.x, you can set the CSS logging level via:
 
 com.sun.javafx.Logging.getCSSLogger().setLevel(com.sun.javafx.logging.PlatformLogger.INFO)
 
 
 On May 31, 2013, at 12:27 AM, Daniel Zwolenski zon...@gmail.com wrote:
 
 No stack trace, just this:
 
 C:\tempc:\apps\java\jdk1.7.0_21-32bit\bin\java.exe -jar defender-jfx.jar
 Cannot add stylesheet. 512
 
 If there's an easy way to turn on more debugging info let me know.
 
 
 
 On Fri, May 31, 2013 at 2:07 PM, Richard Bair 
 richard.b...@oracle.comwrote:
 
 Possibly, what is the stack trace?
 
 On May 30, 2013, at 8:24 PM, Daniel Zwolenski zon...@gmail.com wrote:
 
 While trying to narrow down the rendering/performance/whatever issues
 with
 the game, I just opened up the JAR that I'd previously built for it:
 https://bytebucket.org/rbair/fx-games/wiki/release/defender-jfx.jar
 
 If I run this with java version 1.7.0_13 it works fine.
 
 If I run this with java version 1.7.0_21 none of the styles get loaded.
 
 Massive backwards compatibility fail between minor build versions?
 
 
 
 


Re: JavaFX graphics performance and suitability for advanced animations

2013-05-31 Thread Daniel Zwolenski
Just on the topic of what should we expect performance/animation/graphic wise, 
are there technical limitations why jfx can't achieve this exact level of 
quality in animations: 
http://m.youtube.com/#/watch?v=-fNg-qZcIdYfeature=youtube_gdata_playerdesktop_uri=%2Fwatch%3Fv%3D-fNg-qZcIdY%26feature%3Dyoutube_gdata_player

This is more or less the style of animation that I'd want to use jfx for. 

So if I wrote the code for this and then ran it side by side with the video how 
far off should the two be?

I get that this is a pre-rendered video so it has some advantages but the video 
does not use rapid redraws or complicated particle effects, shadows, 
reflections, etc, like in a FPS game. How close should we expect jfx to get to 
this and which bits are not achievable and why?



On 01/06/2013, at 1:32 AM, Scott Palmer swpal...@gmail.com wrote:

 Richard, I suspect you made a typo.  I think you mean *40*ms is a really
 odd number... (it was 25 FPS, not 25ms)
 
 I quickly hacked it to use AnimationTimer and the animation is very smooth
 now.  Though I didn't make the required changes to adjust the speeds based
 on the refresh rate.  The quick conversion to AnimationTimer is trivial..
 but going through and adjusting all the translations and increments to be
 relative to the time between consecutive frames is something I don't have
 time for.
 
 Cheers,
 
 Scott
 
 
 Scott
 
 
 On Fri, May 31, 2013 at 11:21 AM, Kevin Rushforth 
 kevin.rushfo...@oracle.com wrote:
 
 **
 Btw, there is a JIRA issue filed against BrickBreaker specifically:
 https://javafx-jira.kenai.com/browse/RT-29801
 
 
 Richard Bair wrote:
 
 Have you tried to determine what the FPS is? My guess is that FPS is not 
 anywhere near the limit and it is the occasional stutter that is the 
 problem, but I'm not certain. Knowing that helps to point in which direction 
 to go. The fact that it runs pretty well on a PI is indication that it isn't 
 the framerate.
 
 Richard
 
 On May 31, 2013, at 4:26 AM, Scott Palmer swpal...@gmail.com 
 swpal...@gmail.com wrote:
 
 
 
 Speaking of poor animation in Ensemble...
 
 Is anyone able to run Brick Breaker without choppy animation or poor 
 framerate performance on the ball?
 
 Now, I suspect the issue there is in the balls animation implementation in 
 the application rather than the JavaFX framework, as the bat moves smoothly 
 when I move the mouse, but the overall perception of JavaFX performance for 
 this demo app is not good. I would go so far as to say that Brick Breaker 
 has had the opposite effect it was intended too - simply because the 
 animation of the ball is not smooth.  That's something that would run 
 smoothly on a Commodore 64,yet the last time I tried it (5 minutes ago) with 
 JavaFX 8.0-b91 on a quad-core 3GHz Windows 7 box with a decent NVIDIA card, 
 it didn't run as smoothly as I would expect.  Just a single ball with a 
 shadow bouncing around the screen seemed to have a low framerate and the 
 occasional skipped frame.  It just didn't look that great.
 
 The fact that Brick Breaker ships as a sample app from Oracle and it's 
 animation looks bad is harming JavaFX's reputation in my opinion.  I think  
 it could run much better on the existing JavaFX runtime.  The simple 
 animations in the Ensemble app run much smoother for example.
 
 
 
 Scott
 
 
 On Thu, May 30, 2013 at 11:11 AM, Richard Bair richard.b...@oracle.com 
 richard.b...@oracle.com wrote:
 
 
 
 Then you mention Halo 5.  I have to say the subtext here troubles me
 greatly.  If I read you correctly then you are saying that JavaFX is not
 really suitable for games (at least anything beyond the demands of something
 like Solitaire).  As someone else pointed out, what is point of developing
 3D support in JavaFX if it is not really suitable for games?  To say it is
 not suitable for games implies that it is not really suitable for *any*
 application that requires performant animations and visualisations.  What
 use then is the 3D API?
 
 
 That's not fair at all. There are a *lot* of enterprise use cases for 3D, 
 and we get these requests all the time. Whether we're taking about 3D 
 visualizations for medical or engineering applications or consumer 
 applications (product display, etc), there is a requirement for 3D that are 
 broader than real time first person shooters.
 
 Game engines often have very specialized scene graphs (sometimes several of 
 them) as well as very specialized tricks for getting the most out of their 
 graphics cards. When we expose API that allows people to hammer the card 
 directly, then it would be possible for somebody to build some of the UI in 
 FX and let their game engine be hand written (in Unity or JOGL or whatever).
 
 
 
 
 However, I am not sure that having me preparing reproducible test cases
 will actually help.  In my experience, the Ensemble app already serves this
 purpose.  The choppiness I describe is *always* prevalent when I run the
 animations and transitions in 

Re: JavaFX graphics performance and suitability for advanced animations

2013-05-30 Thread Daniel Zwolenski
A little bit more esoteric, but some not very nice looking rendering when
animating a very lightly styled Node:
https://javafx-jira.kenai.com/browse/RT-30830


On Fri, May 31, 2013 at 12:07 PM, Daniel Zwolenski zon...@gmail.com wrote:

 Jittery text when scaling in an animation:
 https://javafx-jira.kenai.com/browse/RT-30827


 On Fri, May 31, 2013 at 12:01 PM, Richard Bair richard.b...@oracle.comwrote:

 Wow. Thanks!

 On May 30, 2013, at 6:48 PM, Daniel Zwolenski zon...@gmail.com wrote:

 I have replicated the z-order problem with the Tower Defender game and
 the Canvas: https://javafx-jira.kenai.com/browse/RT-30826


 On Fri, May 31, 2013 at 1:26 AM, Richard Bair richard.b...@oracle.comwrote:

 Note this is only for Mac.

 On May 30, 2013, at 7:54 AM, Richard Bair richard.b...@oracle.com
 wrote:

  Anybody interested in jitter ought to look at
 https://javafx-jira.kenai.com/browse/RT-26702
 
  Richard







Re: Backwards compatibility issue?

2013-05-30 Thread Daniel Zwolenski
No stack trace, just this:

C:\tempc:\apps\java\jdk1.7.0_21-32bit\bin\java.exe -jar defender-jfx.jar
Cannot add stylesheet. 512

If there's an easy way to turn on more debugging info let me know.



On Fri, May 31, 2013 at 2:07 PM, Richard Bair richard.b...@oracle.comwrote:

 Possibly, what is the stack trace?

 On May 30, 2013, at 8:24 PM, Daniel Zwolenski zon...@gmail.com wrote:

  While trying to narrow down the rendering/performance/whatever issues
 with
  the game, I just opened up the JAR that I'd previously built for it:
  https://bytebucket.org/rbair/fx-games/wiki/release/defender-jfx.jar
 
  If I run this with java version 1.7.0_13 it works fine.
 
  If I run this with java version 1.7.0_21 none of the styles get loaded.
 
  Massive backwards compatibility fail between minor build versions?




Preloaders

2013-05-29 Thread Daniel Zwolenski
The jfx packaging tools allow pre-loaders to be set. I don't use them but 
people using the maven plugin want them. 

It looks like you can set a preloader for both jars and for bundles (web, 
native). When building the bundles however they include the jar in them. So we 
end up with both the bundle, and the jar within the bundle, getting the 
preloader set. 

Does anyone know what will or should happen in this case? Does one preloader 
take precedence and the other is ignored, or are both used at different times 
and I should allow the user to set a different jar preloader to the bundle one, 
or is this setup invalid and I should actually not pass the preloader setting 
to one or the other in this case?

Not using Preloaders myself and with the packaging tool code being a complete 
mess, it would be good to know the expectations here so I can properly support 
the users wanting this. 

Cheers
Dan