{"id":365,"date":"2012-10-18T11:54:56","date_gmt":"2012-10-18T09:54:56","guid":{"rendered":"https:\/\/mihosoft.eu\/?p=365"},"modified":"2013-02-07T22:57:02","modified_gmt":"2013-02-07T21:57:02","slug":"vfxwindows-2","status":"publish","type":"post","link":"https:\/\/mihosoft.eu\/?p=365","title":{"rendered":"VFXWindows"},"content":{"rendered":"<p>Finally, the project reached a point where it becomes useful. I&#8217;m still not a JavaFX expert and some things seem still strange to me. However, moving to JavaFX was definitely the right decision. I have a lot of fun exploring the API!<\/p>\n\n<h1>Progress<\/h1>\n\n<p>Windows and icons are real controls now (rjahn, thanks for the hint!). Even though not part of the public API I created default skins for <code>Window<\/code> and <code>WindowIcon<\/code> which extend <code>SkinBase<\/code>. I didn&#8217;t see another possibility.<\/p>\n\n<p>That&#8217;s how the windows look like:<\/p>\n\n<div id=\"attachment_369\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-1.png\"><img aria-describedby=\"caption-attachment-369\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-1-300x195.png\" alt=\"\" title=\"vfxwindows-18.10.2012-1\" width=\"300\" height=\"195\" class=\"size-medium wp-image-369\" srcset=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-1-300x195.png 300w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-1-700x456.png 700w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-1.png 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-369\" class=\"wp-caption-text\">Several Windows With Subwindows<\/p><\/div>\n\n<p>Each window can have a title, icons on the left and on the right side. For testing purposes I implemented icons for the following actions:<\/p>\n\n<ul>\n<li>close: closes the window<\/li>\n<li>minimize: minimizes the window<\/li>\n<li>rotate: rotates the window (currently totally useless, but I like the animation so much \ud83d\ude42 )<\/li>\n<\/ul>\n\n<div id=\"attachment_373\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-2.png\"><img aria-describedby=\"caption-attachment-373\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-2-300x96.png\" alt=\"\" title=\"vfxwindows-18.10.2012-2\" width=\"300\" height=\"96\" class=\"size-medium wp-image-373\" srcset=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-2-300x96.png 300w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-2.png 600w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-373\" class=\"wp-caption-text\">Window With Demo Icons<\/p><\/div>\n\n<p>The visual appearance can be styled via CSS which works really nice. Especially the SVG path feature is quite useful for importing paths from a vector drawing program such as Inkscape.<\/p>\n\n<h1>New Features<\/h1>\n\n<p>I&#8217;ve added a <code>ScalableContentPane<\/code> which gives its content pane as much space as it wants but scales the content to match the size of the parent. If you combine this with scrollbar based parents you can create a really nice toolkit for visualizing workflows etc. Actually, that&#8217;s what I designed it for.<\/p>\n\n<p>Unfortunately, CPU\/GPU power is a limited resource. Thus, scenegraph optimization is necessary if displaying large amounts of nodes. Therefore, I implemented an <code>OptimizableContentPane<\/code> that becomes invisible if it is too small. Custom optimization rules are also possible.<\/p>\n\n<p>I&#8217;ve also made some experiments with zooming into window hierarchies:<\/p>\n\n<div id=\"attachment_371\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-3.png\"><img aria-describedby=\"caption-attachment-371\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-3-300x149.png\" alt=\"\" title=\"vfxwindows-18.10.2012-3\" width=\"300\" height=\"149\" class=\"size-medium wp-image-371\" srcset=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-3-300x149.png 300w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-3-700x349.png 700w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-3.png 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-371\" class=\"wp-caption-text\">Window Hierarchies 1<\/p><\/div>\n\n<div id=\"attachment_372\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-4.png\"><img aria-describedby=\"caption-attachment-372\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-4-300x260.png\" alt=\"\" title=\"vfxwindows-18.10.2012-4\" width=\"300\" height=\"260\" class=\"size-medium wp-image-372\" srcset=\"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-4-300x260.png 300w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-4-700x608.png 700w, https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-4.png 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-372\" class=\"wp-caption-text\">Window Hierarchies 2<\/p><\/div>\n\n<h1>Video<\/h1>\n\n<p>See the video to get an impression on what&#8217;s currently possible.<\/p>\n\n<iframe loading=\"lazy\" width=\"420\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/feG0WZWNkiE\" frameborder=\"0\" allowfullscreen><\/iframe>\n","protected":false},"excerpt":{"rendered":"<p>Finally, the project reached a point where it becomes useful. I&#8217;m still not a JavaFX expert and some things seem still strange to me. However, moving to JavaFX was definitely the right decision. I have a lot of fun exploring the API! Progress Windows and icons are real controls now &#8230;<\/p>","protected":false},"author":1,"featured_media":369,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[13,21,5],"tags":[22,124,26,25,28,125,27,30],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/mihosoft.eu\/wp-content\/uploads\/2012\/10\/vfxwindows-18.10.2012-1.png","jetpack_shortlink":"https:\/\/wp.me\/p2P2yR-5T","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/posts\/365"}],"collection":[{"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=365"}],"version-history":[{"count":13,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/posts\/365\/revisions"}],"predecessor-version":[{"id":381,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/posts\/365\/revisions\/381"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=\/wp\/v2\/media\/369"}],"wp:attachment":[{"href":"https:\/\/mihosoft.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mihosoft.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}