<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Information Centre &#187; Uncategorized</title>
	<atom:link href="http://my.center-of.info/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://my.center-of.info</link>
	<description>“Wenn etwas schon da war, wie kann man es dann patentieren?” D.E.Knuth, 2002</description>
	<lastBuildDate>Mon, 28 Sep 2009 23:04:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JSF: Method not called</title>
		<link>http://my.center-of.info/2009/03/10/jsf-method-not-called/</link>
		<comments>http://my.center-of.info/2009/03/10/jsf-method-not-called/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 15:32:45 +0000</pubDate>
		<dc:creator>Haf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://my.center-of.info/?p=116</guid>
		<description><![CDATA[Java Server Faces (JSF) ist eine schöne Technologie für den Web-JEE-Bereich.
Es bietet eine gute Möglichkeit die Entkopplung der einzelnen Schichten einzuhalten und mit der Kombination von Facelets, kann sogar ein Grafiker einfacher damit arbeiten.
Bei JSF sind bestimmte &#8220;Aktionen&#8221; einer Methode zugeordnet. (Methode aus dem ManagedBean, normale Klasse welche in faces-config.xml festgeleg wird, bzw. bei Spring-Einsatz [...]]]></description>
			<content:encoded><![CDATA[<p>Java Server Faces (JSF) ist eine schöne Technologie für den Web-JEE-Bereich.</p>
<p>Es bietet eine gute Möglichkeit die Entkopplung der einzelnen Schichten einzuhalten und mit der Kombination von Facelets, kann sogar ein Grafiker einfacher damit arbeiten.</p>
<p>Bei JSF sind bestimmte &#8220;Aktionen&#8221; einer Methode zugeordnet. (Methode aus dem ManagedBean, normale Klasse welche in faces-config.xml festgeleg wird, bzw. bei Spring-Einsatz kann man das auch weglassen). D.h. eine Aktion &#8220;Kunde anlegen&#8221;, welches als Button dargestellt wird, wird mit der Methode CustomerController.add() gebunden.</p>
<p>Oft funktioniert das auch ohne Probleme. Man füllt das Formular aus und drückt den Button. JSF konstruiert den ComponentTree, stellt die Daten wieder in die Objekte und sollte irgendwann auch unsere Methode CustomerController.add() aufrufen. Jaein.</p>
<p>&lt;h:form enctype=&#8221;multipart/form-data&#8221;&gt;</p>
<p>Man beachte &lt;code&gt;enctype=&#8221;multipart/form-data&#8221; &lt;/code&gt;. Das ist das Problem. Ein einfaches</p>
<p>&lt;h:form&gt;</p>
<p>funktioniert. Dann wird die Methode wieder auch aufgerufen!</p>
]]></content:encoded>
			<wfw:commentRss>http://my.center-of.info/2009/03/10/jsf-method-not-called/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX 1.0 Example</title>
		<link>http://my.center-of.info/2008/12/07/javafx-10-example/</link>
		<comments>http://my.center-of.info/2008/12/07/javafx-10-example/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 13:10:59 +0000</pubDate>
		<dc:creator>Haf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://my.center-of.info/?p=89</guid>
		<description><![CDATA[Im letzten Beitrag habe ich kurz JavaFX vorgestellt. Zu den theoretischen Daten folgt nun ein kleines praktisches Beispiel.
Das Beispiel basiert auf das Tutorial von SUN [1] und wurde um die Eigenschaft erweitert, dass das Applet auch auf dem Desktop verwendet werden kann.

Das Beispiel erstellt eine analoge Uhr, welche man sich auf den Desktop ziehen kann. [...]]]></description>
			<content:encoded><![CDATA[<p>Im <a title="Information Centre: JavaFX 1.0" href="http://my.center-of.info/2008/12/07/javafx-10/">letzten Beitrag</a> habe ich kurz <a title="SUN JavaFX" href="http://www.javafx.com" target="_blank">JavaFX</a> vorgestellt. Zu den theoretischen Daten folgt nun ein kleines praktisches Beispiel.</p>
<p>Das Beispiel basiert auf das Tutorial von SUN [1] und wurde um die Eigenschaft erweitert, dass das Applet auch auf dem Desktop verwendet werden kann.</p>
<p><span id="more-89"></span></p>
<p>Das Beispiel erstellt eine analoge Uhr, welche man sich auf den Desktop ziehen kann. Der Fokus liegt auf die Implementierung und nicht auf jegliche graphische Feinheiten.</p>
<p>Ein JavaFX Script wie im unteren Listing zu sehen beinhaltet immer eine <a title="JavaFX API: Stage" href="http://java.sun.com/javafx/1/docs/api/javafx.stage/javafx.stage.Stage.html" target="_blank">Stage</a> Klasse. Dies ist der globale Container, der alle weiteren Elemente beinhaltet.</p>
<pre class="brush: java">
import javafx.scene.Scene;
import javafx.stage.Stage;

var stage = Stage {
      title: &amp;amp;amp;amp;amp;quot;JavaFX Test Clock&amp;amp;amp;amp;amp;quot;
      width: 300
      height: 300
      scene: Scene {
          content: []
     }
}
</pre>
<p>Da JavaFX eine deklarative Sprache ist, beschreibt man, was man haben will. Dafür gibt es verschiedene Propterties (wie in dem Fall: width, height, scene, content), die man belegen kann.</p>
<p>Ein Stage Container besitzt ein <a title="SUN JavaFX API: Scene" href="http://java.sun.com/javafx/1/docs/api/javafx.scene/javafx.scene.Scene.html" target="_blank">Scene</a>, in dem verschiedene Nodes enthalten sind. <a title="SUN JavaFX API: Node" href="http://java.sun.com/javafx/1/docs/api/javafx.scene/javafx.scene.Node.html" target="_blank">Node</a> kann hier als ein graphisches Element (<a title="SUN JavaFX API: Rectangle" href="http://java.sun.com/javafx/1/docs/api/javafx.scene.shape/javafx.scene.shape.Rectangle.html" target="_blank">Rectangle</a>, <a title="SUN JavaFX API: Text" href="http://java.sun.com/javafx/1/docs/api/javafx.scene.text/javafx.scene.text.Text.html" target="_blank">Text</a>, <a title="SUN JavaFX API: ImageView" href="http://java.sun.com/javafx/1/docs/api/javafx.scene.image/javafx.scene.image.ImageView.html" target="_blank">ImageView</a>) angesehen werden. In dem oberen Listing gibt es noch keine Nodes &#8211; content ist ein leeres Array.</p>
<p>Eine Uhr besteht aus verschiedenen Kreisen und Linien für die Zeiger. Nun könnte man in dem stage.scene.content diese graphischen Elemente schreiben, da man jedoch etwas strukturierter arbeiten will, kapseln wir die Funktionalität in eine eigene Klasse. Im folgenden Listing ist ein Teil von Clock.fx zu sehen:</p>
<pre class="brush: java">
public class Clock extends CustomNode {

public var radius: Number = 77;
public var centerX: Number = 144;
public var centerY: Number = 144;

public var hours: Number;
public var minutes: Number;
public var seconds: Number;

public override function create(): Node {
  return Group {
    content: [
     Group {
      transforms: Translate {
        x: centerX
        y: centerY
      }
      content: [
        // displays the number of every third hour
        for (i in [3, 6, 9, 12])
          Text {
             transforms: Translate {
                x: -5,
                y: 5
             }
             fill: Color.GREEN
             font: Font {
               size: 16
             }
             x: radius * (( i + 0 ) mod 2 * ( 2 - i / 3))
             y: radius * (( i + 1 ) mod 2 * ( 3 - i / 3))
             content: &amp;amp;amp;amp;amp;quot;{i}&amp;amp;amp;amp;amp;quot;
          },  //Text

          // display a yellow point for the rest of the
          // hours on the clock
          for (i in [1..12] )
            if (i mod 3 != 0 ) then Circle {
               transforms: Rotate {
                  angle: 30 * i
               }
               centerX: radius
               radius: 3
               fill: Color.YELLOW
            } // if
            else [ ],

            // clock&#039;s first center circle
            Circle {
              radius: 5
              fill: Color.DARKRED
            }, //Circle
            // the smaller center circle
            Circle {
              radius: 3
              fill: Color.RED
            }, //Circle
            // the seconds hand
            Line {
              transforms: Rotate {
                angle: bind seconds * 6
              }
              endY: -radius - 3
              strokeWidth: 2
              stroke: Color.VIOLET
            },  //Line
            // the hour hand
            Path {
              transforms: Rotate {
                 angle: bind (hours + minutes / 60) * 30 - 90
              }
              fill: Color.YELLOW
              elements: [
                 MoveTo {
                    x: 4,
                    y: 4
                 },
                 ArcTo {
                    x: 4
                    y: -4
                    radiusX: 1
                    radiusY: 1
                 },
                 LineTo {
                    x: radius - 15
                    y: 0
                 },
              ] //elements
            },  // Path
            // the minutes hand
            Path {
              transforms: Rotate {
                 angle: bind minutes * 6 - 90
              }
              fill: Color.GREEN
              elements: [
                 MoveTo {
                    x: 4,
                    y: 4
                 },
                 ArcTo {
                    x: 4
                    y: -4
                    radiusX: 1
                    radiusY: 1
                 },
                 LineTo {
                    x: radius
                    y: 0
                 },
              ] // elements
            } // Path
       ] // 2. Group content
     } // Group
   ] // Group content
  };  // Group
 } // create()

} // class
</pre>
<p>Um nun das Drag-and-Drop des Applets zu ermöglichen, erweitert man den Stage um einen sogenannten <a href="http://java.sun.com/javafx/1/docs/api/javafx.stage/javafx.stage.AppletStageExtension.html" target="_blank" title="SUN JavaFX API: AppletStageExtension">AppletStageExtension</a>. </p>
<pre class="brush: java">
stage = Stage {
    title: &amp;amp;amp;amp;amp;quot;JavaFX Test Clock&amp;amp;amp;amp;amp;quot;
    width: 300
    height: 300
    style: StageStyle.TRANSPARENT
    onClose: function() {
        //System.exit(0);
    }
    visible: true
    scene: Scene {
        fill: bind if (inBrowser) Color.WHITE else Color.TRANSPARENT
        content: [
            Clock {},
            // drag controls
            dragArea,
            dragClosers,
            statusText
        ]
    }
    extensions: [
        AppletStageExtension {
            shouldDragStart: function(e): Boolean {
                return inBrowser and e.primaryButtonDown and dragArea.hover;
            }
            onDragStarted: function(): Void {
                inBrowser = false;
            }
            onAppletRestored: function(): Void {
                inBrowser = true;
            }
            useDefaultClose: false
        }
    ]
}
</pre>
<p>Die Funktion shoudDragStart() gibt an, ob die Drag-Drop-Funktionalität angeboten werden soll, oder nicht.<br />
Anzumerken ist, dass das Property AppletStageExtension.useDefaultClose = false ist, da ein eigenes Close-Symbol erstellt wurde. Beim Betätigen dieses Buttons schließt sich das Applet und kehrt zum Browser zurück &#8211; falls dieser noch vorhanden ist.</p>
<p>In dem oberen Listing beinhaltet stage.scene.content noch den Node &#8220;dragArea&#8221;:</p>
<pre class="brush: java">
var dragArea:Rectangle = Rectangle {
    x: 155
    y: 30
    width: 420
    height: 25
    fill: Color.RED
    onMouseDragged:function(e:MouseEvent):Void {
        stage.x += e.dragX;
        stage.y += e.dragY;
    }
};
</pre>
<p>Das ist der Bereich, in dem der Nutzer das Applet herum ziehen kann. In der onMouseDragged() Funktion wird immer die aktuelle Position der Stage gesetzt.</p>
<p>Was passiert, wenn ein Applet auf den Desktop verschoben wird und das Browser-Fenster geschlossen wird? Dann bietet Java die Möglichkeit eine Verknüpfung zu erstellen.<br />
Dabei speichert es ein paar XML-Daten im User-Verzeichnis und setzt eine Verlinkung, um die Daten per Java Webstart zu starten.</p>
<p>Der Inhalt der JNLP-XML-Datei sieht z.B. so aus:</p>
<pre class="brush: xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;jnlp spec=&quot;1.0+&quot; codebase=&quot;http://example.net/JavaFXClock&quot; href=&quot;JavaFXClock_browser.jnlp&quot;&gt;
    &lt;information&gt;
        &lt;title&gt;JavaFXClock&lt;/title&gt;
        &lt;vendor&gt;Hafid Haddouti&lt;/vendor&gt;
        &lt;homepage href=&quot;http://example.net/JavaFXClock&quot;/&gt;
        &lt;description&gt;JavaFXClock&lt;/description&gt;
        &lt;offline-allowed/&gt;
        &lt;shortcut&gt;
            &lt;desktop/&gt;
        &lt;/shortcut&gt;
    &lt;/information&gt;
    &lt;resources&gt;
        &lt;j2se version=&quot;1.5+&quot;/&gt;
        &lt;extension name=&quot;JavaFX Runtime&quot; href=&quot;http://dl.javafx.com/javafx-rt.jnlp&quot;/&gt;
        &lt;jar href=&quot;JavaFXClockt.jar&quot; main=&quot;true&quot;/&gt;
    &lt;/resources&gt;
    &lt;applet-desc name=&quot;JavaFXClock&quot; main-class=&quot;com.sun.javafx.runtime.adapter.Applet&quot; width=&quot;350&quot; height=&quot;350&quot;&gt;
        &lt;param name=&quot;MainJavaFXScript&quot; value=&quot;javafxtest.Main&quot;&gt;
    &lt;/applet-desc&gt;
&lt;/jnlp&gt;
</pre>
<p>Ein Beispiel ist <a href="http://my.center-of.info/javafx-clock-example/">hier</a> zu finde.</p>
<p>Links:<br />
[1] JavaFX Tutorial: <a title="Building a JavaFX Application Using NetBeans IDE" href="http://java.sun.com/javafx/1/tutorials/build-javafx-nb-app/" target="_blank">http://java.sun.com/javafx/1/tutorials/build-javafx-nb-app/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://my.center-of.info/2008/12/07/javafx-10-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comeback</title>
		<link>http://my.center-of.info/2008/10/23/comeback/</link>
		<comments>http://my.center-of.info/2008/10/23/comeback/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 20:42:20 +0000</pubDate>
		<dc:creator>Haf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.had493.schokokeks.org/?p=3</guid>
		<description><![CDATA[so, nach ein paar Monaten gibt es wieder einen neuen Blog.
Themen sind u.a.:

Architektur und Entwicklung
IT Sicherheit
Webentwicklung
JEE, PHP etc
Brainstorming

Auf ein Neues!
]]></description>
			<content:encoded><![CDATA[<p>so, nach ein paar Monaten gibt es wieder einen neuen Blog.</p>
<p>Themen sind u.a.:</p>
<ul>
<li>Architektur und Entwicklung</li>
<li>IT Sicherheit</li>
<li>Webentwicklung</li>
<li>JEE, PHP etc</li>
<li>Brainstorming</li>
</ul>
<p>Auf ein Neues!</p>
]]></content:encoded>
			<wfw:commentRss>http://my.center-of.info/2008/10/23/comeback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
