<?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>Weave &#187; AIR</title>
	<atom:link href="http://www.weave.de/tag/air/feed" rel="self" type="application/rss+xml" />
	<link>http://www.weave.de</link>
	<description>Webdesign, Konzeption &#38; Development</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:38:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>WEAVE 02.2011 – Quellcode für AIR-2-Android-Tutorial</title>
		<link>http://www.weave.de/code/burrito0211</link>
		<comments>http://www.weave.de/code/burrito0211#comments</comments>
		<pubDate>Tue, 15 Mar 2011 06:49:34 +0000</pubDate>
		<dc:creator>ilona</dc:creator>
				<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Weblog]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flash Builder Burrito]]></category>
		<category><![CDATA[Flex Hero]]></category>
		<category><![CDATA[Simon Widjaja]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.weave.de/?p=4378</guid>
		<description><![CDATA[Flash Builder Burrito und Flex Hero sollen Entwicklern das Leben erleichtern, denn mit den Public Betas kann man Desktop-, Browser- und mobile Anwendungen mit einem einzigen Werkzeug realisieren. Simon Widjaja zeigt in der WEAVE 02.2011 – die am 21. März erscheint – Schritt für Schritt, wie Sie eine einfache Android-App mit Bookmarks und Videos erstellen. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-4379" title="AIR2Android_Tutorial_0211" src="http://www.weave.de/wp-content/uploads/2011/03/AIR2Android_Tutorial_0211.jpg" alt="" width="570" height="334" /></p>
<p>Flash Builder Burrito und Flex Hero sollen Entwicklern das Leben erleichtern, denn mit den Public Betas kann man Desktop-, Browser- und mobile Anwendungen mit einem einzigen Werkzeug realisieren. Simon Widjaja zeigt in der WEAVE 02.2011 – die am 21. März erscheint – Schritt für Schritt, wie Sie eine einfache Android-App mit Bookmarks und Videos erstellen. Den dazu gehörenden Quellcode gibt es hier zum <a href="http://www.weave.de/wp-content/uploads/2011/03/WEAVEtutorial_AIR2Android.zip">Herunterladen</a>.</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weave.de/code/burrito0211/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WEAVE 01.11 &#8211; Tutorial: Flash Builder &#8220;Burrito&#8221;</title>
		<link>http://www.weave.de/linklisten/burrito0111</link>
		<comments>http://www.weave.de/linklisten/burrito0111#comments</comments>
		<pubDate>Wed, 12 Jan 2011 06:48:26 +0000</pubDate>
		<dc:creator>Christian Zdrilic</dc:creator>
				<category><![CDATA[Linklisten]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AIR 2.5]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Burrito]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Michel Wacker]]></category>
		<category><![CDATA[Spiele]]></category>

		<guid isPermaLink="false">http://www.weave.de/?p=4165</guid>
		<description><![CDATA[Mit der neuen Version von AIR 2.5 für Android erweiteren sich die Möglichkeiten für Entwickler und User. Autor Michel Wacker führt sie durch die Programmierung eines simplen Desktop-Spiels. Die Feinheiten stecken hier in den Details, denn die Steuerung übernehmen sie über ein Smartphone. Den Quellcode und die kompletten Grafiken zu dem Spiel finden Sie hier.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.weave.de/wp-content/uploads/2011/01/Michel-Wacker_n.jpg" alt="Michel Wacker" width="570" height="353" /></p>
<p>Mit der neuen Version von AIR 2.5 für Android erweiteren sich die Möglichkeiten für Entwickler und User. Autor Michel Wacker führt sie durch die Programmierung eines simplen Desktop-Spiels. Die Feinheiten stecken hier in den Details, denn die Steuerung übernehmen sie über ein Smartphone. Den Quellcode und die kompletten Grafiken zu dem Spiel finden Sie <a href="http://www.weave.de/wp-content/uploads/2011/01/MotorRacerMobile.zip">hier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.weave.de/linklisten/burrito0111/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Max &#8211; über InMarket</title>
		<link>http://www.weave.de/weblog/adobemax-inmarket</link>
		<comments>http://www.weave.de/weblog/adobemax-inmarket#comments</comments>
		<pubDate>Wed, 27 Oct 2010 19:45:23 +0000</pubDate>
		<dc:creator>ilona</dc:creator>
				<category><![CDATA[Weblog]]></category>
		<category><![CDATA[Adobe Max 2010]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[InMarket]]></category>
		<category><![CDATA[Store]]></category>

		<guid isPermaLink="false">http://www.weave.de/?p=3741</guid>
		<description><![CDATA[Bevor ich in den Flieger steige noch ein paar Infos zum neuen App-Store-Service InMarket von Adobe – ein Service, mit dem App-Developer über eine Zentrale viele, viele App-Stores beliefern können sollen. Und das geht so: 1// Die AIR-App mit dem InMarket SDK ausstatten 2// In InMarket hoch laden 3// In den gewünschten App-Stores veröffentlichen 4// [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-3742" title="adobemax-web-06" src="http://www.weave.de/wp-content/uploads/2010/10/adobemax-web-06.jpg" alt="" width="570" height="294" /></p>
<p>Bevor ich in den Flieger steige noch ein paar Infos zum neuen App-Store-Service InMarket von Adobe – ein Service, mit dem App-Developer über eine Zentrale viele, viele App-Stores beliefern können sollen. Und das geht so: <strong>1//</strong> Die AIR-App mit dem InMarket SDK ausstatten <strong>2//</strong> In InMarket hoch laden <strong>3//</strong> In den gewünschten App-Stores veröffentlichen<strong> 4//</strong> Analyse-Daten für Usability-Optimierung und Pricing bekommen. Noch ist InMarket ganz am Anfang – aber Adobe hat schon einiges geplant&#8230; <span id="more-3741"></span></p>
<p>So plant Adobe beispielsweise auch zusätzlich, dann auch kostenpflichtige Vermarktungsmöglichkeiten (bspw. prüft das Unternehmen anscheinend, ob Werbung auf den Download-Seiten von PDF Reader oder Flash PLayer lohnen). Außerdem soll es ein Affiliate-Programm geben, sodass Blogger und andere InMarket-Apps ebenfalls vertreiben können (ähnlich wie das bei Amazon schon möglich ist).</p>
<p>Auch in Sachen Preisoptimierung will Adobe einiges anbieten. Jetzt schon kann man pro gewähltem Store einen separaten Preis angeben. Künftig soll man auch verschiedene Preismodelle testen können. Schon jetzt unterstützt das Adobe InMarket SDK verschiedenste Preismodelle, wie etwa &#8220;Feature-Based-Prices&#8221; oder &#8220;Try-before-Pay&#8221;. Nur die jeweiligen Stores der unterschiedlichen Anbieter unterstützen noch nicht alle die Funktionen. Adobe arbeitet aber natürlich darauf hin, dass sie dies im Laufe des nächsten Jahres tun.</p>
<p>Außerdem will man in Sachen In-Content-Advertising einiges ermöglichen – für viele ja eine attraktive Alternative zur Finanzierung über einen App-Verkauf.</p>
<p>Apropos App-Verkauf: Kosten soll InMarket (bis jetzt) den Entwickler nichts. Adobe habe statt dessen mit den jeweiligen Partnern ausgehandelt, dass es einen Teil von deren üblichen Umsatz-Prozenten bekommt. Testen kann man InMarket natürlich auch schon kostenlos &#8211; und zwar unter <a href="http://www.adobe.com/devnet/inmarket.html" target="_blank">www.adobe.com/devnet/inmarket.html</a></p>
<p>Das Ganze sieht für Entwickler und App-Vermarkter ziemlich spannend aus. Natürlich ist Apple nicht mit dabei&#8230; Aber wenn der Service hält, was er verspricht, dürfte sich Apple auf diese Weise ja vielleicht auch ein bisschen unter Zugzwang gesetzt sehen&#8230;</p>
<p><img class="alignleft size-full wp-image-3744" title="adobemax-web-07" src="http://www.weave.de/wp-content/uploads/2010/10/adobemax-web-07.jpg" alt="" width="570" height="285" /><em> Simon Widjaja und ich im Presseraum der Adobe Max</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weave.de/weblog/adobemax-inmarket/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Max: alle meine Screens</title>
		<link>http://www.weave.de/weblog/adobemax2010</link>
		<comments>http://www.weave.de/weblog/adobemax2010#comments</comments>
		<pubDate>Tue, 26 Oct 2010 21:34:08 +0000</pubDate>
		<dc:creator>ilona</dc:creator>
				<category><![CDATA[Weblog]]></category>
		<category><![CDATA[Adobe Max]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Ben Forta]]></category>
		<category><![CDATA[Blackberry PlayBook]]></category>
		<category><![CDATA[Catalyst]]></category>
		<category><![CDATA[Digital Publishing Suite]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[GoogleTV]]></category>
		<category><![CDATA[Kevin Lynch]]></category>

		<guid isPermaLink="false">http://www.weave.de/?p=3710</guid>
		<description><![CDATA[Ein bisschen übermüdet sind wir heute in den zweiten Tag der Adobe Max (max.adobe.com) im kalifornischen Los Angeles gestartet. Gestern schon zeigte uns Kevin Lynch die Zukunft, wie sie Adobe sie sich vorstellt: Flash und AIR everywhere – bis auf Apples Produkte natürlich. Aber, so Lynch, es gibt auch ein Leben neben iPhone und iPad. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-3717" title="adobe-max-02-web" src="http://www.weave.de/wp-content/uploads/2010/10/adobe-max-02-web.jpg" alt="" width="570" height="272" /></p>
<p><strong>Ein bisschen übermüdet </strong>sind wir heute in den zweiten Tag der Adobe Max (<a href="http://max.adobe.com" target="_blank">max.adobe.com</a>) im kalifornischen Los Angeles gestartet. Gestern schon zeigte uns Kevin Lynch die Zukunft, wie sie Adobe sie sich vorstellt: Flash und AIR everywhere – bis auf Apples Produkte natürlich. Aber, so Lynch, es gibt auch ein Leben neben iPhone und iPad. Eine kleine Zusammenfassung der Ereignisse&#8230; <span id="more-3710"></span></p>
<p>Keine Frage, die Anzahl an Screens (und damit Plattformen) steigt inflationär. Da drückt den einen oder anderen schon die Frage, wie man all die Devices und Betriebssysteme heute und vor allem auch künftig beliefern soll. Wer kann es sich – als Publisher beispielsweise – schon leisten, für jeden Hersteller, jedes Gerät, jede Plattform eine eigene Lösung zu stricken. Nun, Adobe hat dafür zwei Lösungsmöglichkeiten parat – die sich aufeinander zu bewegen, difundieren.</p>
<p>Da ist natürlich die Web-basierte Lösung, sprich optimierte Websites respektive Web-Apps. Hier will Adobe mit <strong>Dreamweaver</strong> das Tool der Wahl anbieten: mit HTML-5- und nun auch jQuery-Support. Überhaupt gab Adobe sich redlich Mühe HTML5 und Flash als kooperierende Partner zu inszenieren – und nicht als Widersacher (siehe Foto unten). Flash habe schon immer gekonnt, was HTML (noch) nicht könne, meinte Kevin Lynch dazu in der Pressekonferenz nach der Keynote. So soll das auch in Zukunft bleiben – beispielsweise beim Thema 3D.</p>
<p><img class="alignleft size-full wp-image-3718" title="adobe_max-web-01" src="http://www.weave.de/wp-content/uploads/2010/10/adobe_max-web-01.jpg" alt="" width="570" height="370" /> <em>(Live auf der Keynote der Adobe Max: Senior Technical Evangelist Ben Forta mit Puppet Flash &amp; HMTL)</em></p>
<p>Interessant auch die Vorschau auf ein vielleicht neues Tool namens Edge – quasi ein Animationstool für JQuery mit Flash-ähnlicher Zeitleiste und Code-View (laut PR-Abteilung gibt es dazu allerdings noch keine Infos online und es steht wohl auch noch nicht fest, ob es Bestandteil von Dreamweaver werden soll oder ein eigenes Produkt).</p>
<p>Daneben soll es künftig – wie gesagt – AIR Apps überall geben: auf Smartphones, Tablets und auf Smart-TVs. Adobe AIR 2.5 und Adobe AIR 2.5 SDK ist ab sofort verfügbar (<a href="http://www.adobe.com/go/air_sdk" target="_blank">www.adobe.com/go/air_sdk</a>). Das  AIR SDK für&#8217;s Blackberry Playbook bei Research in Motion (RIM, <a href="http://www.rim.com" target="_blank">www.rim.com</a>) sowie das für die Smasung Smart TV Platform soll es Anfang nächsten Jahres bei den Herstellern selbst geben.</p>
<p>Und schließlich gibt es zwei Suites bzw. Tools für die 1-App-4-all-Devices-Veröffentlichung: Für Verlage die so genannte <strong>Digital Publishing Suite</strong>. Dabei soll es sich um eine Rundum-Sorglos-Lösung handeln: von der Layout-Entwicklung in InDesign über die Anreicherung mit digitalem Content via einem Hosting Dienst namens &#8220;Production Service&#8221;, die Verbreitung über den &#8220;Distribution Service&#8221;, den Bezahl- und Vermarktungs-Dienstleistung &#8220;E-Commerce-Service&#8221; bis hin zum Monitoring der diversen Apps – also welche User nutzen welche Inhalte in welcher Form? Professionelle Publisher können sich für ein Prerelease-Programm unter <a href="httl://www.adobe.com/beta" target="_blank">www.adobe.com/beta</a> anmelden – weitere Infos gibt es unter <a href="http://www.adobe.com/digitalpublishing" target="_blank">www.adobe.com/digitalpublishing</a>.</p>
<p>Für Entwickler wird es <strong>InMarket</strong> geben: Ein Tool, mit dem man AIR-Apps auf diverse mobilen Devices veröffentlichen und tracken können soll. Noch kann man sich für diesen Service kostenlos anmelden unter <a href="http://www.adobe.com/devnet/inmarket.html" target="_blank">www.adobe.com/devnet/inmarket.html</a>.</p>
<p><img class="alignleft size-full wp-image-3719" title="adobe-max-03-web" src="http://www.weave.de/wp-content/uploads/2010/10/adobe-max-03-web.jpg" alt="" width="570" height="428" /> <em>Ex-Hobnox-Entwickler Joa Ebert (<a href="http://blog.joa-ebert.com/" target="_blank">links</a>) und generativer Künstler Erik Natzke (<a href="http://play.natzke.com/" target="_blank">rechts</a>) vor der Keynote beim Live-Coden und malen&#8230;</em></p>
<p>Klar, dass <strong>Flash Builder und Catalyst</strong> da auch ein bisschen gepimpt werden müssen: So wird man mit Flash Builder &#8220;Burrito&#8221; wird man dann Flex Kompenenten nutzen können, die spezielle Multitouch-Funktionalitäten liefern sowie verschiedene Design-Views für horizontale und vertikale Ansichten. Will man seine App dann auf dem mobilen Endgerät testen, so soll man dafür Debugger von Flash Builder nutzen können. Außerdem kann man nun die gleiche Datenbasis nutzen, um im Flash Builder &#8220;Burrito&#8221; darauf eine mobile App und eine PC-App zu erstellen.</p>
<p>Außerdem soll sich die Zusammenarbeit von Flash Builder und Catalyst verbessern: Entwickler können verschiedene Komponenten schon mal definieren, diese an Catalyst übergeben – und dort kann der Designer dann die Skins dafür anlegen. Eine Vorab-Version von Burrito gibt es unter<a href="http://labs.adobe.com/technologies/flashbuilder_burrito/" target="_blank"> labs.adobe.com/technologies/flashbuilder_burrito/</a>.</p>
<p>Alles – so CTO Kevon Lynch bei der Pressekonferenz – drehe sich alles um die Frage, wie man die besten Experience auf möglichst vielen Plattformen realisieren kann? Und das möglichst effizient, möchten womöglich viele Unternehmen ergänzen. Denn schon steht ja die nächste Screen-Spezies vor der Tür: der web-fähige Fernseher. Da wird es nach Lynchs Meinung zunächst einmal darum gehen, wie man bestehende Angebote best möglich portieren kann. Erst dann wird man speziell für dieses &#8220;Lean-back&#8221;-Unterhaltungsmedium dedizierte Lösungen entwickeln.</p>
<p>Adobe setzt bei der Suche nach dem möglichst effizienten Workflow für alle Endgeräte jedenfalls ganz auf die rund 40 Partner, die sich im Open Screen Project (<a href="http://www.openscreenproject.org" target="_blank">www.openscreenproject.org</a>) zusammen geschlossen haben. Das Ansinnen von Adobe wird die Branche sicherlich goutieren. Inwieweit sich der Gang ohne Apple machen lässt, wird die Zukunft zeigen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.weave.de/weblog/adobemax2010/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WEAVE 05.09 – AIR-Anwendung lokaler Datenbank</title>
		<link>http://www.weave.de/code/airworkshop0509</link>
		<comments>http://www.weave.de/code/airworkshop0509#comments</comments>
		<pubDate>Tue, 25 Aug 2009 05:00:08 +0000</pubDate>
		<dc:creator>fwolf</dc:creator>
				<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Bookmarking Verwaltung]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Simon Widjaja]]></category>
		<category><![CDATA[SQLight]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.weave.de/?p=1500</guid>
		<description><![CDATA[Bookmark-Anwendung mit AIR Die Adobe Integrated Runtime (AIR) ermöglicht die Entwicklung plattformübergreifender Webanwendungen für den Desktop, wie sie zum Beispiel von eBay oder AOL eingesetzt werden. Mit dem folgenden Quellcode von Simon Widjaja können Sie in rund drei Stunden eine kleine Anwendung zur Verwaltung von Bookmarks entwickeln. 1// Value Object definieren {{Listing com.simonwidjaja.workshop.BookmarkVO}} package com.simonwidjaja.workshop [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="color: #808000;">Bookmark-Anwendung mit AIR</span></h2>
<p>Die Adobe Integrated Runtime (AIR) ermöglicht die Entwicklung plattformübergreifender Webanwendungen für den Desktop, wie sie zum Beispiel von eBay oder AOL eingesetzt werden. Mit dem folgenden Quellcode von Simon Widjaja können Sie in rund drei Stunden eine kleine Anwendung zur Verwaltung von Bookmarks entwickeln.</p>
<h3>1// Value Object definieren</h3>
<p>{{Listing com.simonwidjaja.workshop.BookmarkVO}}</p>
<pre lang="actionscript">
package com.simonwidjaja.workshop
{
  [Bindable]
  public class BookmarkVO
  {
    public var id:int;
    public var url:String;
    public var title:String;
    public var description:String;

    public function BookmarkVO( object:Object=null ):void {
      if ( object ) {
        id = object.id;
        url = object.url;
        title = object.title;
        description = object.description;
      }
    }
  }
}</pre>
<h3>2// Datenbankverbindung herstellen</h3>
<p>{{Listing: DatabaseConnector (1)}}</p>
<pre lang="actionscript">package com.simonwidjaja.workshop
{
  import flash.data.SQLConnection;
  import flash.data.SQLResult;
  import flash.data.SQLStatement;
  import flash.filesystem.File;

  public class DatabaseConnector
  {
    [Bindable] public var bookmarks:Array = new Array();

    private var conn:SQLConnection;
    private var firstTimeFlag:Boolean;

    private static var _instance:DatabaseConnector;
    public static function getInstance():DatabaseConnector {
      if ( !_instance )
        _instance = new DatabaseConnector( new SingletonEnforcer() );
      return _instance;
    }

    public function DatabaseConnector( singleton:SingletonEnforcer ) {
    }

    public function connect():void {
      var file:File = File.applicationStorageDirectory.resolvePath( „Datenbank“ );
      trace( „file.nativePath: „+file.nativePath );
      firstTimeFlag = ( file.exists ) ? false : true;
      conn = new SQLConnection();
      conn.open( file );
      if ( firstTimeFlag ) createTable();
      //else                fetchAllBookmarks();
    }

    private function createTable():void {
      var statement:SQLStatement = new SQLStatement();
      statement.sqlConnection = conn;
      statement.text = „CREATE TABLE bookmarks ( id INTEGER PRIMARY KEY AUTOINCREMENT, „ +
          „url CHAR(200), title CHAR(200), description CHAR(1000) );“;
      statement.execute();
    }
    // Hier folgen spŠter die CRUD-Methoden
  }
}
class SingletonEnforcer {}</pre>
<p>Um sicherzustellen, dass unsere Datenbank wie gewünscht angelegt wird, können wir testweise die <code>connect()</code>-Methode direkt in unserem MXML-Dokument wie folgt ausführen:</p>
<pre lang="xml">
    <![CDATA[
      import com.simonwidjaja.workshop.DatabaseConnector;
      DatabaseConnector.getInstance().connect();
    ]]&gt;
  </mx:Script></pre>
<p>Plugin, um das Ergebnis zu prüfen beziehungsweise direkt auf der Datenbank arbeiten zu können: <a href="https://addons.mozilla.org/de/firefox/addon/5817" mce_href="https://addons.mozilla.org/de/firefox/addon/5817">SQLite Manager</a></p>
<h3>3// Datensätze lesen und schreiben</h3>
<pre lang="actionscript">
 public function fetchAllBookmarks():void {
      var statement:SQLStatement = new SQLStatement();
      statement.sqlConnection = conn;
      statement.text = „SELECT * FROM bookmarks;“;
      statement.execute();
      var result:SQLResult = statement.getResult();
      var bookmarks:Array = new Array();
      for each ( var entry:Object in result.data ) {
        bookmarks.push( new BookmarkVO( entry ) );
      }
      this.bookmarks = bookmarks;
    }

    public function saveBookmark( bookmark:BookmarkVO, action:String ):void {
      var statement:SQLStatement = new SQLStatement();
      statement.sqlConnection = conn;
      if ( action==“update“ ) {
        statement.text = „UPDATE bookmarks SET url=:url, title=:title, description=:description WHERE id=:id“;
        statement.parameters[„:id“] = bookmark.id;
      }
      else {
        statement.text = „INSERT INTO bookmarks (url, title, description) VALUES (:url, :title, :description);“;
      }
      statement.parameters[„:url“] = bookmark.url;
      statement.parameters[„:title“] = bookmark.title;
      statement.parameters[„:description“] = bookmark.description;
      statement.execute();
      fetchAllBookmarks();
    }

    public function deleteBookmark( bookmark:BookmarkVO ):void {
      var statement:SQLStatement = new SQLStatement();
      statement.sqlConnection = conn;
      statement.text = „DELETE FROM bookmarks WHERE id=:id;“;
      statement.parameters[„:id“] = bookmark.id;
      statement.execute();
      fetchAllBookmarks();
    }</pre>
<h3>4// View zum Hinzufügen und Ändern</h3>
<p>{{Listing com.simonwidjaja.workshop.EditView}}</p>
<pre lang="xml">

<mx:Panel xmlns:mx=“http://www.adobe.com/2006/mxml“
    xmlns:validator=“com.simonwidjaja.workshop.validator.*“
    layout=“vertical“ width=“500“ height=“300“
    paddingLeft=“25“ paddingTop=“25“ paddingRight=“25“
    borderAlpha=“0.8“ title=“HinzufŸgen/Bearbeiten“>

  <mx:Script>
    <![CDATA[
      import mx.utils.ObjectUtil;
      import mx.managers.PopUpManager;
      import com.simonwidjaja.workshop.BookmarkVO;
      import com.simonwidjaja.workshop.DatabaseConnector;

      [Bindable] public var bookmark:BookmarkVO;

      private function save():void {
        bookmark.url = urlInput.text;
        bookmark.title = titleInput.text;
        bookmark.description = descriptionInput.text;
        var action:String;
        if ( bookmark.id )  action = „update“;
        else                action = „insert“;
        var databaseConnector:DatabaseConnector = DatabaseConnector.getInstance();
        databaseConnector.saveBookmark( bookmark, action );
        close();
      }
      private function close():void {
        PopUpManager.removePopUp( this );
      }
    ]]&gt;
  </mx:Script>

  <mx:RegExpValidator source=“{ urlInput }“ property=“text“
      expression=“^(https?://)[A-Za-z0-9]+[.][A-Za-z0-9]+“
      noMatchError=“Keine gŸltige URL“ />

  <mx:Text text=“Bitte geben Sie die Eigenschaften des Bookmarks ein:“ />

  <mx:Form width=“100%“>
    <mx:FormItem label=“URL“ width=“100%“>
      <mx:TextInput id=“urlInput“ width=“100%“ text=“{ bookmark.url }“ />
    </mx:FormItem>
    <mx:FormItem label=“Titel“ width=“100%“>
      <mx:TextInput id=“titleInput“ width=“100%“ text=“{ bookmark.title }“ />
    </mx:FormItem>
    <mx:FormItem label=“Beschreibung“ width=“100%“>
      <mx:TextArea id=“descriptionInput“ width=“100%“ text=“{ bookmark.description }“ />
    </mx:FormItem>
  </mx:Form>

  <mx:ControlBar horizontalAlign=“right“>
    <mx:Button label=“Abbrechen“ click=“close()“ />
    <mx:Button label=“Speichern“ click=“save()“ />
  </mx:ControlBar>  

</mx:Panel></pre>
<h3>5// Zusammenfügen der einzelnen Elemente</h3>
<p>{{Listing main.mxml}}</p>
<pre lang="xml">

<mx:WindowedApplication xmlns:mx=“http://www.adobe.com/2006/mxml“
    layout=“absolute“ minWidth=“800“ minHeight=“600“
    creationComplete=“onCreationComplete()“>

  <mx:Script>
    <![CDATA[
      import mx.events.ListEvent;
      import com.simonwidjaja.workshop.BookmarkVO;
      import com.simonwidjaja.workshop.EditView;
      import mx.managers.PopUpManager;
      import com.simonwidjaja.workshop.DatabaseConnector;

      [Bindable]
      private var connector:DatabaseConnector =  DatabaseConnector.getInstance();

      private function onCreationComplete():void {
        connector.connect();
      }
      private function openEditView( action:String ):void {
        var popup:EditView = PopUpManager.createPopUp( this, EditView, true ) as EditView;
        popup.bookmark = ( myDataGrid.selectedItem ) ? myDataGrid.selectedItem as BookmarkVO : new BookmarkVO();
        PopUpManager.centerPopUp( popup );
      }
      private function onDeleteClick():void {
        var selectedBookmark:BookmarkVO = myDataGrid.selectedItem as BookmarkVO;
        connector.deleteBookmark( selectedBookmark );
      }
      private function onDataGridChange( event:ListEvent ):void {
        myHTML.location = ( event.itemRenderer.data as BookmarkVO ).url;
      }
    ]]&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.weave.de/code/airworkshop0509/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

