<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Planet NetBeans</title>
    <link>http://www.planetnetbeans.org/de/</link>
    <language>de</language>
    <description>Planet NetBeans - http://www.planetnetbeans.org/de/</description>
    <item>
      <title>JNBB - Joschs NetBeans Blog: News: Kenai.com nach java.net Migration schreitet voran</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////news_kenaicom_nach_javanet_migration_schreitet_voran/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////news_kenaicom_nach_javanet_migration_schreitet_voran/index.html</link>
      <description>&lt;p class="bodytext"&gt;Wie ich gestern in einer Mail lesen konnte, wird tatsächlich an einer Migration von kenai.com nach java.net gearbeitet.&#160;&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;Work is on-going for migrating the Java.net domain over to the Kenai infrastructure and we will move the existing Kenai.com projects over to the Java.net domain as soon as we have everything in place.&lt;/p&gt;&lt;/blockquote&gt;&lt;p
      class="bodytext"&gt;Nur bittet das Projekt Team um etwas Geduld, weil der Prozess wohl aufwändig ist.&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;The work will take a bit of time to complete, so please feel comfortable using Project Kenai while we work towards the final move to Java.net.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Im Netz gibt es zwar viele Stimmen trotzdem kenai.com zu verlassen, damit man sich der Abhängigkeit eines
      kommerziellen Anbieters wie Oracle entzieht, aber nüchtern betrachtet kann dies einem mit jedem Hoster passieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Trotz der ursprünglichen (schockierenden) Informationspolitik scheint sich Oracle doch eines besseren besinnt zu haben. Damit hat man hier schon einen Ansatz von Sicherheit, was die Beständigkeit von java.net haben wird. &lt;/p&gt; &lt;p class="bodytext"&gt;Ich werde der Migration zu java.net eine Chance geben. Wohl aus einem (eventuellen trügerischen)
      Sicherheitsgefühl, dass java.net für eine lange Zeit ein gutes Heim sein wird, vielleicht auch aus Bequemlichkeit ;-) &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Wed, 03 Mar 2010 08:45:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDEDev: Maven Projekt Bibliotheken für NetBeans Java Projekte</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_maven_projekt_bibliotheken_fuer_netbeans_java_projekte/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_maven_projekt_bibliotheken_fuer_netbeans_java_projekte/index.html</link>
      <description>&lt;p class="bodytext"&gt;Wenn man Java Projekte hat, die Bibliotheken aus einem Maven Projekt benötigen, steht man zunächst auf dem Schlauch. &lt;br /&gt;&lt;br /&gt;Das simple "Add Project..." eines Maven Projektes zu einem NetBeans Java Projekt wird zwar angeboten, funktioniert aber nicht. Es werden keine JAR-Dateien gefunden und eingebunden. Die Problematik liegt vermutlich daran, dass die abhängigen Bibliotheken eines Maven Projektes in einem lokalem Repository zwischengespeichert
      sind (%homepath%/.m2/repository/ ...). &lt;br /&gt;&lt;br /&gt;Wie bekommt man aber alle Dependencies mit einem Schlag in eine herkömmliches Java Projekt?&lt;br /&gt;&lt;br /&gt;Etwas versteckt aber letztendlich einfacher als gedacht. Man öffnet per rechtem Mausklick das Kontextmenü des Maven-Projektes und führt "Show Dependency Graph" aus. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/maven/ShowDependencyGraph.png" alt="" height="678" width="442" /&gt; &lt;/p&gt;
      &lt;p class="bodytext"&gt;Im Graph-View kann man sich die Abhängigkeiten veranschaulichen (und sogar Konflikte korrigieren). &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="Dependency Graph" href="http://www.sepix.de/fileadmin/maven/caldav4j-0.5.png" target="_blank" class="external-link-new-window"&gt;&lt;img src="http://www.sepix.de/fileadmin/maven/caldav4j-0.5-small.png" alt="" height="317" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Im Classpath View kommt nun die eigentliche Funktion zu
      tragen. Der Toolbar-Button "Create Library" rettet vor viel Arbeit: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/maven/ClassPathView.png" alt="" height="466" width="786" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Nur noch im Dialog einen Namen vergeben und per [Ok] die Bibliothek erzeugen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/maven/CreateLibrary.png" alt="" height="638" width="334" /&gt; &lt;/p&gt; &lt;p
      class="bodytext"&gt;&lt;br /&gt;Im Library Manager wird dann die Bibliothek mit den Archiven angezeigt, wenn alle abhängigen JARs heruntergeladen wurden. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="Library Manager" href="http://www.sepix.de/fileadmin/maven/LibraryManager.png" target="_blank" class="external-link-new-window"&gt;&lt;img src="http://www.sepix.de/fileadmin/maven/LibraryManager-small.png" alt="" height="357" width="600" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Nun kann
      man diese Bibliothek dem eigenen Projekt hinzufügen.&lt;br /&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Thu, 25 Feb 2010 10:27:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDEDev: Maven ohne Tests</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_maven_ohne_tests/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_maven_ohne_tests/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin!&lt;br /&gt;&lt;br /&gt;Aktuell hatte ich &lt;a title="Google Code: CalDAV for Java" href="http://code.google.com/p/caldav4j/" target="_blank" class="external-link-new-window"&gt;CalDav4j&lt;/a&gt; als &lt;a title="Soruces" href="http://caldav4j.googlecode.com/svn/trunk/" target="_blank" class="external-link-new-window"&gt;SVN Snapshot&lt;/a&gt; heruntergeladen und musste mal wieder feststellen, wie gut die &lt;a title="Apache Maven"
      href="http://maven.apache.org/" target="_blank" class="external-link-new-window"&gt;Maven&lt;/a&gt;-&lt;a title="Maven best Practices in Netbeans" href="http://wiki.netbeans.org/MavenBestPractices" target="_blank" class="external-link-new-window"&gt;Integration in NetBeans&lt;/a&gt; inzwischen ist.&lt;br /&gt;&lt;br /&gt;Ein schlichtes checkout mit anschließendem Öffnen des Projektes - Build - und alle Dependencies werden sauber geladen. &lt;br /&gt;&lt;br /&gt;Wenn nur das aktuelle Snapshot des
      Google Projektes nur so sauber wäre ;-)&lt;br /&gt;&lt;br /&gt;Die Test Ressourcen sind teilweise &lt;a title="Issue 24" href="http://code.google.com/p/caldav4j/issues/detail?id=24" target="_blank" class="external-link-new-window"&gt;unvollständig&lt;/a&gt;, es &lt;a title="Issue 34" href="http://code.google.com/p/caldav4j/issues/detail?id=34" target="_blank" class="external-link-new-window"&gt;fehlt auch eine Klasse komplett&lt;/a&gt; und einige Testparameter funktionieren schlicht und einfach
      nicht, weil Server und Berechtigungen fehlen. Nun will ich nicht alles an Tests löschen, sondern nur mal schnell ein JAR erzeugen, um das 0.6'er Snapshot ersatzweise für die ältere 0.5'er Version in meine Projekte integrieren. Aber ohne erfolgreichen Test kein JAR, weil das "Build failed" mir einen Strich durch die Rechnung macht.&lt;br /&gt;&lt;br /&gt;Maven hat aber eine Option, zum Deaktivieren der Tests. Und diese lässt sich sehr einfach in dem NetBeans Projekt setzen. Die Projekteigenschaften
      öffnen, in den &lt;a href="http://wiki.netbeans.org/wiki/images/5/52/Actions_MavenBestPractices.png" class="external-link-new-window" title="Actions in den Projekteigenschaften"&gt;Abschnitt Actions&lt;/a&gt; wechseln, "Build project" auswählen und in den "Set Properties" folgende Zeile einfügen: &lt;/p&gt; &lt;pre&gt;maven.test.skip=true&lt;/pre&gt; &lt;p class="bodytext"&gt;Das war es auch schon. Nun wird das JAR erzeugt, die Tests werden ignoriert.&lt;br /&gt;&lt;br /&gt;Beste Grüße,&lt;br
      /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Wed, 24 Feb 2010 09:04:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: PHPDev: NetBeans IDE für PHP - immer mehr eine Liebesgeschichte</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////phpdev_netbeans_ide_fuer_php_immer_mehr_eine_liebesgeschichte/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////phpdev_netbeans_ide_fuer_php_immer_mehr_eine_liebesgeschichte/index.html</link>
      <description>&lt;p class="bodytext"&gt;Besonders ein &lt;a title="Amber Weinberg, PHP Programming with NetBeans" href="http://www.amberweinberg.com/php-programming-with-netbeans/" target="_blank" class="external-link-new-window"&gt;Blogeintrag&lt;/a&gt; zeigt mir in den letzten Tagen, wie sehr &lt;a title="NetBeans PHP Development" href="http://netbeans.org/features/php/" target="_blank" class="external-link-new-window"&gt;NetBeans als PHP IDE&lt;/a&gt; inzwischen geschätzt wird. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Die Kommentare auf &lt;a href="http://www.amberweinberg.com/author/smellyfish/" target="_blank" title="Posts by Nikita Makeyev"&gt;Nikita Makeyev&lt;/a&gt;s Artikel sind überwiegend positiv, was den Einsatz mit NetBeans für PHP betrifft. &lt;/p&gt; &lt;p class="bodytext"&gt;Nikita hebt hervor, wie gut die IDE zu konfigurieren ist.&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;One of the best things about this IDE is its UI.&#160; All
      of the toolbars can be docked, closed or minimized depending on your display preferences.&#160; Minimized toolbars will helpfully spring open when you mouse over them and hide again once you click off of them.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Nicht verwunderlich, wenn das vorherige Tool der Wahl das Programm &lt;a title="TextPad" href="http://www.textpad.com/" target="_blank" class="external-link-new-window"&gt;TextPad&lt;/a&gt; gewesen ist. Aber gerade für PHP Anwender ist die
      Suche nach einer passenden IDE wohl eine Sisyphos Arbeit: &lt;/p&gt; &lt;p class="bodytext"&gt;gollyg:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;I have been using Aptana for about 2 years. Recently they announced that they were dropping development support for their PHP plugin and were going to use pdt instead. The sudden nature of this decision, along with some of the ‘Aptana Cloud’ marketing integration into the interface, left me feeling far less
      love for Aptana. After increasingly regular program freezes I decided to give Netbeans a try.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;&lt;a href="http://www.appropriatesolutions.co.uk" class="url" rel="external nofollow"&gt;Stuart Laverick&lt;/a&gt;:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;I’ve been using Netbeans since about 6.2 after I moved over from Aptana. As I run 64bit Linux as a desktop, I am precluded from using some IDE’s
      [...]&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;&lt;a href="http://www.chruezundquer.ch" class="url" rel="external nofollow"&gt;Christian Zumbrunnen&lt;/a&gt;:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;I made the switch from Aptana and I’m pretty impressed.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Gordon:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;Zend is a great IDE, but it
      is super expensive when you consider Netbeans has more functionality (ever so slightly slower, but unnoticeable on a 4GB Dual Core Windows Vista Laptop), and arguably still better code completion(as you can write custom rules, to personalise the code-completion responds). &lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Die Performance wurde von Nikita als gut bezeichnet mit Abzüge in der B-Note. Die IDE braucht relativ viel Arbeitsspeicher. NetBeans
      ist da aber nicht alleine und macht wohl seinen Job am besten, wenn man sich die anderen Kommentare betrachtet. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="chief27 on Twitter" href="http://www.twitter.com/chief27" target="_blank" class="external-link-new-window"&gt;Colin McCormick&lt;/a&gt;:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;I’ve been using Netbeans as my main IDE for 3/4 years now. I find it a pretty decent IDE. Yes it can be a little
      slow at times, but it’s certainly faster than its main competitor, Eclipse, which is slow regardless of the OS it’s running on. &lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Nacereddine:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;I was using Komodo IDE for my websites even it’s slow as hell, and crashes all the time, [...]&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Den abschließenden
      Worten von Nikita ist nichts hinzuzufügen:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt;Even if you’re pretty happy with your current IDE, give NetBeans a try because as a good developer you should never stop trying out new things and looking for tools that make you better at what you do; and hey, let’s face it, at the incredible price of $0 it’s truly a crime to pass up such a great product that has pretty much everything you will ever
      need.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 24 Feb 2010 07:41:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: News: kenai.com - nur die Domain verschwindet?</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////news_kenaicom_nur_die_domain_verschwindet/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////news_kenaicom_nur_die_domain_verschwindet/index.html</link>
      <description>&lt;p class="bodytext"&gt;(hier ein Update &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2010/january/29/news_kenaicom_wird_abgeschaltet/index.html" class="external-link-new-window" title="Kenai wird abgeschaltet"&gt;zu meinem letzten Blog-Eintrag&lt;/a&gt; vor meinem Urlaub) &lt;/p&gt; &lt;p class="bodytext"&gt;Das die Informationspolitik nicht ideal sei, gibt das kenai-Team selbst in einer kurzen Mitteilung zu. &lt;/p&gt;&lt;blockquote style="margin-bottom: 0;
      margin-top: 0;"&gt;&lt;p class="bodytext"&gt;In an effort to get information out to the Kenai community quickly, while trying to manage the integration of our two companies, I think we did a poor job at communicating our plans for Kenai.com to you.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Aber was das Team zu melden hat, ist dann doch positiver, als es sich in Vergangenheit las. &lt;/p&gt; &lt;p class="bodytext"&gt;Kenai.com als Domain wird wohl tatsächlich nicht mehr bestehen bleiben.
      Eine Migration nach java.net wird empfohlen. Aber der Grund, warum java.net statt kenai.com genutzt werden soll ist neu:&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt; We are in the process of migrating java.net to the kenai technology. This means that any project currently hosted on kenai.com will be able to continue as you are on java.net. &lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Somit gibt Ted Farrell eine beruhigende Meldung
      aus:&lt;img src="http://www.sepix.de/fileadmin/oraclenb/TedFarrell.jpg" style="float: right; padding-left: 25px;" title="Ted Farrell" height="158" width="150" alt="Ted Farrell" /&gt;&lt;/p&gt;&lt;blockquote style="margin-bottom: 0; margin-top: 0;"&gt;&lt;p class="bodytext"&gt; So in the meantime I suggest that you stay put on kenai.com and let us work through the details and get back to you later this month. &lt;/p&gt;&lt;/blockquote&gt;&lt;p class="bodytext"&gt;Ich bin gespannt was Ende diesen
      Monats für Infos kommen. Vielleicht werden ja die Projekte automatisch nach java.net migriert. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Mon, 22 Feb 2010 10:11:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: News: kenai.com wird abgeschaltet</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////news_kenaicom_wird_abgeschaltet/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////news_kenaicom_wird_abgeschaltet/index.html</link>
      <description>&lt;p class="bodytext"&gt;Es scheint im Moment unausweichlich zu sein, dass kenai.com abgeschaltet wird. Damit fällt ein nützlicher Dienst unter den Hammer. Besonders schmerzlich ist das, weil gerade mit NetBeans eine relativ einfache Integration möglich ist (bald war). &lt;/p&gt; &lt;p class="bodytext"&gt;Oracle spricht davon, dass kenai.com intern weiter genutzt werden soll. Nicht verwunderlich. Die Site netbeans.org ist darauf umgestellt worden und keiner will davon wohl wieder weg.
      Auch andere Projekte, beispielsweise odftoolkit.org, basieren auf dem Kenai Projekt. &lt;/p&gt; &lt;p class="bodytext"&gt;Die Überlegung von Oracle war einfach, dass der größere Fokus auf Community basierte Projekte gelegt werden soll. Die Plattform java.net ist eindeutig näher an der Community. Wobei kenai.org eher das Hosting für Inselprojekte und (später) kommerzielle Projekte sein sollte. &lt;/p&gt; &lt;p class="bodytext"&gt;Ob aber in näherer Zukunft java.net tatsächlich auf Kenai basieren soll,
      halte ich im Moment für ausgeschlossen. Diese Umstellung erscheint mir unter aktuellen Gesichtspunkten einfach zu aufwändig. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Nun stellt sich die Frage nach Alternativen. &lt;/p&gt; &lt;p class="bodytext"&gt;Da gäbe es natürlich &lt;a title="java.net" href="http://www.java.net/" target="_blank" class="external-link-new-window"&gt;java.net&lt;/a&gt; selbst. Mir erschien aber bisher die Struktur zu unflexibel, ist aber nur
      eine persönliche Präferenz. Weiterhin gäbe es noch &lt;a title="Google Code" href="http://code.google.com/intl/de/" target="_blank" class="external-link-new-window"&gt;Google Code&lt;/a&gt; - der Dienst bietet auch Mercurial als Versioning System. &lt;/p&gt; &lt;p class="bodytext"&gt;Viele Projektbesitzer liebäugeln mit &lt;a title="Linkification: http://github.com/" href="http://github.com/" target="_blank" class="linkification-ext"&gt;http://github.com/&lt;/a&gt;. Die git-Integration in
      NetBeans&#160;wäre tatsächlich möglich. Es gibt ein &lt;a title="NetBeans git plugin" href="http://git.wiki.kernel.org/index.php/NetBeansPlugin" target="_blank" class="external-link-new-window"&gt;Plugin&lt;/a&gt; dafür.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Auch sieht &lt;a title="JavaForge" href="http://javaforge.com/" target="_blank" class="external-link-new-window"&gt;JavaForge&lt;/a&gt; gar nicht so schlecht aus (ebenfalls Mercurial). Der Dienst ist in einer Cloud implementiert und bietet
      als Highlight ein &lt;a title="Application Lifecycle Management for NetBeans" href="http://www.javaforge.com/wiki/41101" target="_blank" class="external-link-new-window"&gt;ALM Plugin&lt;/a&gt; für NetBeans an. Ich konnte das Plugin aber leider unter 6.8 noch nicht testen. &lt;/p&gt; &lt;p class="bodytext"&gt;Einen Vergleich weiterer Dienste &lt;a title="Opens external link in new window" href="http://www.ibiblio.org/fosphost/exhost.htm" target="_blank" class="external-link-new-window"&gt;findet sich
      hier&lt;/a&gt; und auch auf &lt;a title="Opens external link in new window" href="http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities" target="_blank" class="external-link-new-window"&gt;Wikipedia&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Eine Empfehlung kann ich kaum geben. Ich werde zunächst javaforge ausprobieren (entgegen des Namens ist es nicht ausschließlich für Java Projekte gedacht). Ich finde es nur sehr ärgerlich, dass es z.Z. keinen Zeitplan gibt, wann
      kenai.com verschwindet, bzw. wie lange man noch auf die Projekte (zumindest read only) zugreifen kann. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 29 Jan 2010 10:14:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: News: Oracle, Sun, Java Developer Tools Strategy und NetBeans</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////news_oracle_sun_java_developer_tools_strategy_und_netbeans/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////news_oracle_sun_java_developer_tools_strategy_und_netbeans/index.html</link>
      <description>&lt;p class="bodytext"&gt;Nun ist es raus, in den nächsten 100 Tagen wird Oracle die Strategie mit den Java-Tools neu aufbauen. Allerdings gibt es jetzt schon eine Richtung wohin es gehen wird. &lt;/p&gt; &lt;p class="bodytext"&gt;Hier ein paar Slides und Fotos aus einem &lt;a title="Oracle NetBeans Java Strategy Video" href="http://oracle.com.edgesuite.net/ivt/4000/8104/9236/12627/lobby_external_flash_clean_480x360/default.htm" target="_blank"
      class="external-link-new-window"&gt;Podcast&lt;/a&gt; von Ted Farell (Chief Architect of Oracle Tools and Middleware), die die Strategie von Oracle verdeutlichen sollen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_0_TedFarrel.png" alt="" height="537" width="614" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Ted Farrel spricht von einem Oracle Stack. Java Development aus der Midleware ist ist ein primärer Bereich
      worüber er spricht. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_1_Oracle_Stack.png" alt="" height="505" width="614" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_2_Middleware_Stack.png" alt="" height="500" width="614" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Besonders spannend ist, wie Oracle mit den drei großen IDEs umgehen will. &lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_3_Strategy.png" alt="" height="500" width="616" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Ted Farell spricht im Video eindeutig darüber, dass die NetBeans IDE die primäre Plattform für Java Development wird. Darunter fällt JavaME, JavaSE, JavaEE und auch JavaFX sowie alle aktuellen Scripting Sprachen auf der Java VM. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img
      src="http://www.sepix.de/fileadmin/oraclenb/_5_NetBeans_IDE_Strategy.png" alt="" height="501" width="612" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_6_NetBeans_IDE_Strategy-2.png" alt="" height="500" width="614" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Eclipse wird weiterhin von Oracle als Partner und Mitglied unterstützt. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Auch JDeveloper behält seinen Platz im Oracle Portfolio. JDeveloper wird in Zukunft (und im Prinzip wie bisher) die komplette Middleware der Oracle Tools übernehmen.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Die Unterscheidung zwischen NetBeans und JDeveloper divergiert dann in den beiden Attributen: Lightweight Java Development für NetBeans und Heavyweight Java Development für JDeveloper.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Nichts desto trotz werden alle drei IDEs
      gleichberechtigt von Oracle als IDE angeboten und unterstützt. Besonders zwischen NetBeans und Eclipse wird es wohl weiterhin Überschneidungen geben. Aber das ist so gewollt, weil es nicht zu übersehen ist, dass die Entwickler weltweit doch in Zukunft zwei "Lager" bleiben werden. Ich denke das ist auch ganz gut so, denn nur wo Konkurrenz existiert bleibt die Entwicklung nicht stehen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_4_JavaTools.png" alt=""
      height="500" width="616" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Die CDDL für die NetBeans IDE (und Platform) wird in zukünftigen Versionen wohl weiter existieren. Sie wird mit mit einer flexibleren Policy von Oracle erweitert. Wie erwartet bleibt GPLv2 mit classpath exception. Das bedeutet eine Sicherheit in der Entwicklung von Rich Client Platform Anwendungen auf freier und kommerzieller Basis. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img
      src="http://www.sepix.de/fileadmin/oraclenb/_7_Lizensing.png" alt="" height="502" width="615" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="kenai.com" href="http://kenai.com" target="_blank" class="external-link-new-window"&gt;kenai.com&lt;/a&gt; wird als Hosting Project wohl nicht mehr bestehen bleiben. Oracle will kenai.com intern weiterverwenden. Das wäre ein herber Verlust für die NetBeans Integration. IMHO ein Punkt, wo die Community unbedingt
      intervenieren sollte, damit Oracle diesen Dienst bestehen lässt. &lt;/p&gt; &lt;p class="bodytext"&gt;Ein wirklich schöne Neuigkeit ist, dass die JavaONE bleibt und sogar auf weitere Länder ausgeweitet werden soll. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/oraclenb/_8_JavaONE.png" alt="" height="501" width="612" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Ich vermisse nur ein Land in Europa. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p
      class="bodytext"&gt;Ich denke damit haben wir insgesamt sehr gute Neuigkeiten von Oracle erhalten. Nach den sehr stillen Tagen ohne das kleinste Commit zur NetBeans IDE und Platform ist das eine fantastische Aussage. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Thu, 28 Jan 2010 05:20:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: Silent Update/Install mit NBM Dateien</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_silent_updateinstall_mit_nbm_dateien/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_silent_updateinstall_mit_nbm_dateien/index.html</link>
      <description>&lt;p class="bodytext"&gt;RCP Anwendungen im Unternehmenseinsatz benötigen meistens eine Updatepolitik, die mit dem Standard Autoupdatecenter nicht optimal abgebildet wird. Über das, von der NetBeans Platform gebotene, AutoUpdate Center wird vom Anwendern einiges an Konfiguration und manuellen Eingriffen erwartet, was häufig nicht gewünscht ist.&lt;br /&gt;&lt;br /&gt;Die zwei wichtigsten Gründe sind, dass der Anwender zum einem mit der (teilweise fehleranfälligen) Konfiguration der
      Updates schlicht überfordert ist und zum anderen, dass ein Updaterollout der RCP Anwendung durch Anwender nicht verhindert werden soll.&lt;br /&gt;&lt;br /&gt;&lt;a title="Opens external link in new window" href="http://wiki.netbeans.org/FaqSilentInstallationNBPlugin" target="_blank" class="external-link-new-window"&gt;Bisher&lt;/a&gt; wurde empfohlen, dass man stille (silent) Updates über das Kopieren von Dateien in Cluster-Ordner realisieren soll. Der wichtigste Nachteil ist, dass man beim Kopieren
      exakt wissen muss, in welchem Cluster-Ordner die Installationsdateien kopiert werden sollen. &lt;br /&gt;&lt;br /&gt;Der zweite deutlich Nachteil ist, dass man danach den Updater explizit per Befehl aufrufen muss. Das ist für platformunabhängige Anwendungen schon fast ein Totschlagargument gegen diese Vorgehensweise. &lt;br /&gt;&lt;br /&gt;&lt;a title="Opens external link in new window" href="http://blogs.sun.com/rechtacek/entry/how_to_update_netbeans_platform" target="_blank"
      class="external-link-new-window"&gt;Jiri Rechtacek hat in seinem Blog&lt;/a&gt; aufgezeigt wie man mit der Autoupdate Services API im Hintergrund Updates aller Bibliotheken durchführt, so dass bestehende (im Plugin-Dialog eingetragene Updatecenter) automatisch komplett aktualisiert werden. Ich habe das bisher so in meinen Anwendungen ähnlich angewendet. Allerdings habe ich teilweise Infrastrukturen, wo ich nicht mal Updatecenter als XML-Dateien auf Servern zur Verfügung stellen kann. Teilweise werden
      die NBM-Dateien sogar "on-the-fly" erzeugt, um diese direkt zu installieren. &lt;br /&gt;&lt;br /&gt;Aber sogar für manuell heruntergeladene NBM-Dateien bietet die Update Autoupdate Services API eine Möglichkeit der Installation. Es ist nämlich nicht zwingend notwendig ein Updatecenter zu haben, um NBM-Dateien zu installieren. Der Plugin Dialog zeigt es ja schon selbst mit der &lt;a title="Opens external link in new window" href="http://blogs.sun.com/NetBeansSupport/entry/how_to_download_and_install"
      target="_blank" class="external-link-new-window"&gt;Registerzunge für Downloads&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Zunächst benötigt man eine Modul mit einer &lt;a title="Opens external link in new window" href="http://bits.netbeans.org/dev/javadoc/org-openide-modules/org/openide/modules/ModuleInstall.html" target="_blank" class="external-link-new-window"&gt;ModuleInstall&lt;/a&gt; Klasse die am besten über den Assistenten erzeugt wird. Man überschreibt die restored() Methode und sucht sich die
      passende (bereits) heruntergeladene NBM-Datei. Hier im Beispiel soll das in einer Methode namens getMyDownloadedNBMFile() realisiert werden: &lt;/p&gt; &lt;pre&gt; @Override&lt;br /&gt; public void restored() {&lt;br /&gt; // schedule refresh providers&lt;br /&gt; // install update checker when UI is ready (main window shown)&lt;br /&gt; WindowManager.getDefault().invokeWhenUIReady(new Runnable() {&lt;br /&gt; public void run() {&lt;br /&gt; File file = getMyDownloadedNBMFile();&lt;br /&gt;
      RequestProcessor.getDefault().post(new SilentNBMInstaller(file), 10000); &lt;br /&gt; }&lt;br /&gt; });&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Der Aufruf der Hilfsklasse SilentNBMInstaller erfolgt erst, wenn die Anwendung einigermaßen hochgefahren ist (invokeWhenUIReady). Der SilentNBMInstaller ist eine schlichte Java Klasse die massiven Gebrauch von der Autoupdate Services API macht. Im Gegensatz zu dem Beispiel von Jiri Rechtacek verwende ich die Progress API
      gar nicht, um den Fortschritt der Installation zu visualisieren. Auch bekommt der Anwender keine Info die Anwendung neu zu starten. Das kann aber individuell nachgerüstet werden. &lt;/p&gt; &lt;pre&gt;public class SilentNBMInstaller implements Runnable {&lt;br /&gt; &lt;br /&gt; private final File nbmFile;&lt;br /&gt;&lt;br /&gt; public SilentNBMInstaller(File nbmFile) {&lt;br /&gt; this.nbmFile = nbmFile;&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Die run-Methode muss erstmal
      implementiert werden, außerdem sollte man für das Update (oder die Neuinstallation) aus dem EventDispatchThread heraus sein. Die Methode timeToCheck() liefert true, wenn das Update/die Installation durchgeführt werden soll. Wie das gemacht wird, kann man selbst implementieren. Auch könnte die Prüfung eher im ModulInstall durchgeführt werden. &lt;/p&gt; &lt;pre&gt; public void run() {&lt;br /&gt; if (SwingUtilities.isEventDispatchThread()) {&lt;br /&gt; RequestProcessor.getDefault().post(this);&lt;br
      /&gt; return;&lt;br /&gt; }&lt;br /&gt; if (timeToCheck()) {&lt;br /&gt; runUpdate();&lt;br /&gt; }&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Das Kernstück ist nun die runUpdate()-Methode. Außerdem unterscheidet sich meine Implementation von Jiri Rechtaceks Beispiel bei dem Ermitteln des Updates. In meinem Fall erzeuge ich einen temporären UpdateUnitProvider zu einer (oder auch mehreren) NBM Datei(en). Dafür nutzt man die Klasse UpdateUnitProviderFactory. &lt;/p&gt; &lt;pre&gt; private void
      runUpdate() {&lt;br /&gt; try {&lt;br /&gt; // Step (1) &lt;br /&gt; boolean isInstalled = false;&lt;br /&gt; // A temporary installer for downloaded nbm files:&lt;br /&gt; UpdateUnitProvider uup = UpdateUnitProviderFactory.getDefault().create("Installer for " + nbmFile.getName(), nbmFile);&lt;br /&gt; Collection&amp;lt;UpdateElement&gt; elements4update = new HashSet&amp;lt;UpdateElement&gt;();&lt;br /&gt; List&amp;lt;UpdateUnit&gt; updateUnits = uup.getUpdateUnits();&lt;br /&gt; for (UpdateUnit unit
      : updateUnits) {&lt;br /&gt; isInstalled = unit.getInstalled() != null; // We need this flag for different OperationContainer&lt;br /&gt; List&amp;lt;UpdateElement&gt; updates = unit.getAvailableUpdates();&lt;br /&gt; if (!updates.isEmpty()) { // has updates&lt;br /&gt; elements4update.add(updates.get(0)); // add plugin with highest version&lt;br /&gt; }&lt;br /&gt; } &lt;br /&gt; // ... continue with (2)&lt;/pre&gt; &lt;p class="bodytext"&gt;Wie man oben sieht, wird aus dem UpdateUnitProvider die
      Collection der UpdateUnits gezogen. Außerdem merke ich mir, ob die NBM-Datei neu installiert werden soll, oder ein Update erfährt. Das ist notwendig, weil da für unterschiedliche OperationContainer erzeugt werden müssen. Das habe ich in eine extra Methode ausgelagert: &lt;/p&gt; &lt;pre&gt; // Step (2)&lt;br /&gt; if (elements4update.size() &gt; 0) {&lt;br /&gt; OperationContainer&amp;lt;InstallSupport&gt; operation = getOperationContainer(elements4update, !isInstalled);&lt;br /&gt; // ... continue
      with (3)&lt;/pre&gt; &lt;p class="bodytext"&gt;Die Methode getOperationContainer liefert mir den passenden Container, der die folgende Installation oder das Update durchführen soll.&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;pre&gt; private OperationContainer&amp;lt;InstallSupport&gt; getOperationContainer (Collection&amp;lt;UpdateElement&gt; elements4update, boolean install) {&lt;br /&gt; OperationContainer&amp;lt;InstallSupport&gt; container = install ? OperationContainer.createForInstall() :
      OperationContainer.createForUpdate ();&lt;br /&gt; for (UpdateElement element : elements4update) {&lt;br /&gt; if (container.canBeAdded (element.getUpdateUnit(), element)) {&lt;br /&gt; OperationInfo&amp;lt;InstallSupport&gt; operationInfo = container.add (element);&lt;br /&gt; if (operationInfo == null) {&lt;br /&gt; continue;&lt;br /&gt; }&lt;br /&gt; container.add (operationInfo.getRequiredElements ());&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; return container;&lt;br /&gt; }&lt;/pre&gt; &lt;p
      class="bodytext"&gt;Im dritten Schritt (der runUpdate-Methode) kann ich den OperationContainer (vom Typ InstallSupport) nun endlich für die Installation oder das Update nutzen: &lt;/p&gt; &lt;pre&gt; // Step (3)&lt;br /&gt; InstallSupport install = operation.getSupport();&lt;br /&gt;&lt;br /&gt; Validator validator = install.doDownload(null, false); // Yes we need this call (but the file is already downloaded)&lt;br /&gt; Installer installer = install.doValidate(validator, null); // Validating&lt;br
      /&gt; Restarter restarter = install.doInstall(installer, null); // Installing&lt;br /&gt;&lt;br /&gt; // ... continue with (4)&lt;/pre&gt; &lt;p class="bodytext"&gt;Auch wenn man das NBM-File schon lokal auf der Festplatte haben wird, müssen zwingend die drei Aufrufe doDownload/doValidate/doInstall durchgeführt werden. Nur so bekommt man die Objekte Validator/Installer/Restarter, um die Kette auszuführen. Die null-Parameter sind die von mir vernachlässigten ProgressHandle Objekte für die Darstellung
      des Verlaufs. Die Installation ist aber meistens so schnell, dass das UI in der Statuszeile gar nicht reagiert. &lt;br /&gt;&lt;br /&gt;Der Installationsvorgang ist mit den obigen Schritten "vorbereitet". Wir müssen nur dem InstallSupport sagen, wann der Abschluss erfolgen soll. &lt;/p&gt; &lt;pre&gt; // Step (4)&lt;br /&gt;&lt;br /&gt; // It's a silent updated library. For the current run it's unnessesary to ask the user for a restart.&lt;br /&gt; install.doRestartLater(restarter);&lt;br /&gt; //
      ... continue with (5)&lt;/pre&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Für den Abschluss der Methode runUpdate() noch dieses hier:&lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;pre&gt; // Step (5)&lt;br /&gt; }&lt;br /&gt; } catch (OperationException ex) {&lt;br /&gt; Exceptions.printStackTrace(ex);&lt;br /&gt; } &lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Damit wäre die Klasse SilentNBMInstaller vollständig. Jiri Rechtacek empfiehlt noch, die Lizenzen der Updates abzufragen und (ggf.) dem
      Anwender vorzulegen. Das ist spannend bei 3rd-party Bibliotheken und Plugins. Für Silent Updates von Unternehmensanwendungen ist das eher hinderlich und wird bei mir auch damit nicht abgefragt. &lt;br /&gt;&lt;br /&gt;In Jiris Blog findet man dazu mehr, wie man die Lizenzen ausliest.&lt;br /&gt;&lt;br /&gt;SilentNBMInstaller installiert auch nur einzelne NMB-Dateien. Das ist aber keine notwendige Einschränkung, weil der UpdateUnitProviderFactory.create Methode mehr als eine Datei für die Installation
      übergeben werden darf. Allerdings erhöht sich dann der Komplexitätsgrad, wenn einige NBM Dateien neu installiert werden und andere nur ein Update benötigen (verschiedene OperationContainer!). Für das einfache Beispiel habe ich es damit erstmal bei einer Unterscheidung einer NBM-Datei belassen. &lt;br /&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 12 Jan 2010 09:35:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: Essential NetBeans Platform</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_essential_netbeans_platform/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_essential_netbeans_platform/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Auf dzone gibt es eine brandneue Ref-Card zur NetBeans Platform. Die Essential NetBeans Platform&lt;a title="Opens external link in new window" href="http://refcardz.dzone.com/refcardz/essential-netbeans-platform" target="_blank" class="external-link-new-window"&gt; Refcard&lt;/a&gt; zeigt auf sechs Seiten die wichtigsten Referenzen der NetBeans Platform.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a
      title="Opens external link in new window" href="http://refcardz.dzone.com/refcardz/essential-netbeans-platform" target="_blank" class="external-link-new-window"&gt;&lt;img src="http://www.sepix.de/fileadmin/NBPlatformRefcard.PNG" alt="" height="519" width="403" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Also ausdrucken und an die Wand gepinnt! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 29 Dec 2009 19:51:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDEDev: NetBeans 6.8 und Embedded Webbrowser</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_netbeans_68_und_embedded_webbrowser/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_netbeans_68_und_embedded_webbrowser/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Irgendwie hatte ich in Erinnerung, dass das Plugin für den nativen Webbrowser als Embedded Komponente nicht unter 64Bit OS funktioniert. Nun ja. Mit 6.8 wollte ich es einfach mal selber testen und sogar Win7 deutsch, 64Bit ausprobieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Das Plugin findet sich ganz oben in der Liste des AutoUpdate Center. Der Download ist schnell, reicht dann aber noch nicht. Mit dem ersten Aufruf des
      Webbrowser (zu finden mit Menu View/Ansicht) müssen die nativen Bibliotheken nachgeladen werden.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Bis zum Schluss glaubte ich nicht an einen Erfolg. Aber wie man sieht, es geht doch :-D &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/NB68Webbrowser.PNG" alt="" height="553" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Der Embedded Browser (auf Basis des XULRunner für den Mozilla Browser) verhält sich dann so, wie
      gewohnt. Nur nicht als extra Browserfenster, sondern direkt in NetBeans integriert. Also auch für Kenai.com Projekte, JavaDoc usw.. &lt;/p&gt; &lt;p class="bodytext"&gt;Nur der Mauszeiger ist nicht immer passend und flackert. Ansonsten ist mir nichts Negatives aufgefallen. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Sat, 12 Dec 2009 18:38:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDEDev: Interaktiver IDE-Vergleich: Teil 1 - NetBeans</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_interaktiver_ide_vergleich_teil_1_netbeans/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_interaktiver_ide_vergleich_teil_1_netbeans/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Es geht nun los. Der interaktive IDE Vergleich hat gleich mit meinen Antworten auf JAXenter begonnen. Jeder IDE Nutzer und interessierte Leser darf die Fragen und Antworten gerne kommentieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Alle Kommentare werden gesammelt und im Finale zusammengefasst. Hier geht es nicht um die 100% objektive Empfehlung und vielleicht bleibt jeder Anwender da wo er heute mit seiner IDE ist. Aber
      ich finde es sehr wichtig sich im IDE "Geschäft" nicht nur als Konkurrenz zu sehen, sondern auch die IDE User der Mitbewerber zu verstehen. Bestimmt lässt sich viel über die Motivation der Community lernen. Aber dafür brauchen wir nun Feedback: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="JAXenter: IDE Vergleich - Kommentare" href="http://it-republik.de/jaxenter/artikel/Interaktiver-IDE-Vergleich-Teil-1---NetBeans-2740.html#last_comment" target="_blank"
      class="external-link-new-window"&gt;Kommentarbereich zum interaktiven IDE Vergleich&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Danke für Eure Hilfe! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 08 Dec 2009 13:33:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDEDev: IDE Vergleich und Voting</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_ide_vergleich_und_voting/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////idedev_ide_vergleich_und_voting/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Votings zu einer Lieblingsanwendung sind selten Objektiv und belastbar, besonderns wenn es ein Onlinevoting ist. &lt;/p&gt; &lt;p class="bodytext"&gt;Aber in diesem Fall ist es nicht so wichtig. JAXenter versucht mal auf eine andere Art und Weise heranzugehen, wie man die aktuellen IDEs vergleichen kann. Es wurden drei Fragen gestellt, die man über die Kommentar-Funktion der JAXenter Seite beantworten kann.&#160;
      &lt;/p&gt; &lt;p class="bodytext"&gt;Wir werden darauf eingehen und bestmögliche Antworten finden. Daniel Megert, Roman Strobl und ich haben die Antworten schon hinterlegt die in Zusammenfassung mit allen anderen Antworten der Community in ein paar Tagen veröffentlicht werden sollen. &lt;/p&gt; &lt;p class="bodytext"&gt;So lässt sich vielleicht mal die Motivation erkennen, warum&#160;sich andere für eine bestimmte IDE entschieden haben.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="Opens
      external link in new window" href="http://it-republik.de/jaxenter/news/Interaktiver-IDE-Vergleich-Eclipse-vs.-NetBeans-vs.-IntelliJ-052829.html" target="_blank" class="external-link-new-window"&gt;Hier geht es zu dem Einstiegsartikel auf JAXenter&lt;/a&gt;. Es würde mich freuen, wenn viele mitmachen würden.&#160;Denn auch für mich ist es spannend zu wissen, was die persönliche Entscheidung ausmacht eine bestimmte IDE einzusetzen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br
      /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Mon, 07 Dec 2009 15:01:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Trends: Statistiken auf Suchanfragen</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////trends_statistiken_auf_suchanfragen/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////trends_statistiken_auf_suchanfragen/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Einige Zeit gab es weniger Blog-Posts von mir, aber das hat gute Gründe: Ich hab viel zu tun, was ja auch was Positives ist. &lt;/p&gt; &lt;p class="bodytext"&gt;Nach dem ich aber &lt;a title="Charles Ditzel" href="http://cld.blog-city.com/oracles_missed_opportunity.htm" target="_blank" class="external-link-new-window"&gt;Charles Ditzel mit seinem letzten Blog&lt;/a&gt; gelesen hatte, musste ich doch selber mal wieder
      was schreiben. Statistiken sind eine schöne Sache etwas zu untermauern, von dem man selbst überzeugt ist. Und gerade die Google Trends Statistiken helfen einem sehr dabei. &lt;/p&gt; &lt;p class="bodytext"&gt;Ich muss Charles Ditzel sehr zustimmen, dass Oracle die NetBeans IDE und Platform erheblich unterschätzt. Allerdings geht es auch in einem solch kommerziell orientierten Unternehmen nicht nur ausschließlich um ein Wesen als Gesamtes, das Fehler macht, sondern auch um eine gehörige Portion von
      Lobbyismus - und die geht wohl gerade von der JDeveloper Entwicklingsabteilung aus. Aber egal, das soll jetzt nicht mein Thema sein. &lt;/p&gt; &lt;p class="bodytext"&gt;Charles hatte Eclipse aus der Google Trends Abfrage raus genommen, weil das Ergebnis (wegen der angeblichen Marktdominanz) von Eclipse das Ergebnis schwerer zu lesen macht. Aber das ist m.E. eine falsche Einschätzung, denn der Suchbegriff Eclipse bei Google Trends gibt keinesfalls das Ergebnis der Suchmasse zur Eclipse
      Entwicklungsumgebung wieder. Das sieht man eindeutig an den Trend-Peeks zu den letzten Naturschauspielen: Sonnenfinsternisse. &lt;/p&gt; &lt;p class="bodytext"&gt;Also habe ich mal mir genehme Suchbegriffe genommen. &lt;a title="NetBeans IDE vs. Eclipse IDE" href="http://www.google.de/trends?q=netbeans+IDE%2C+eclipse+IDE&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=0" target="_blank" class="external-link-new-window"&gt;NetBeans IDE vs. Eclipse IDE&lt;/a&gt;. Und schon verändert sich
      die Welt der Wahrnehmung. Eclipse IDE nimmt mehr und mehr ab. NetBeans war bis 2007 stabil und schoss dann Ende 2007 sogar über die Eclipse IDE Suchanfragen. Beide IDEs nahmen dann aber auch weiter (und wieder) ab, bis NetBeans Anfang 2009 plötzlich wieder einbrach (womit wir wieder beim Oracle/IBM-Übernahme Thema wären). Seit 2009 halten sich beide IDEs im Trend stabil, weder NetBeans IDE noch Eclipse IDE verlieren oder gewinnen. &lt;/p&gt; &lt;p class="bodytext"&gt;Dabei ist der Druck bei NetBeans
      IDE eindeutig: die Übernahmegerüchte durch IBM und die tatsächliche Übernahme von Oracle (und die nun furchtbare Informationspolitik). &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/NBvsEc.jpg" alt="" height="363" width="734" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Warum schwächelt aber Eclipse? Ist die Stabilisierung von Eclipse (nach dem langen Fall) nur eine Auswirkung des "schwachen" NetBeans? (Ich spreche nicht von den Features, sondern von der Wahrnehmung in
      der Community, denn nur das zeigt Google Trends auf). Würde der Trend Eclipse IDE weiter sinken, wenn Oracle sich besser zu NetBeans positionieren würde? &lt;/p&gt; &lt;p class="bodytext"&gt;Ich kann das kaum beantworten, subjektiv habe ich mir meine Meinung gebildet, untermauern könnte ich es mit Google Trends Abfragen, die meiner Meinungsbildung am besten passen. Aber ganz neutral: NetBeans IDE vs. Eclipse IDE ist schon ein spannender Blick. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br
      /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Nov 2009 10:23:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: LowLevelDev: Code Signierung mit echten Root CAs, wen nehmen?</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////lowleveldev_code_signierung_mit_echten_root_cas_wen_nehmen/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////lowleveldev_code_signierung_mit_echten_root_cas_wen_nehmen/index.html</link>
      <description>&lt;p class="bodytext"&gt;Es stellt sich für mich immer wieder die Frage, ob die JAR-Dateien unserer Firmen-Projekte signiert werden müssen. Für die meisten Entwicklungen war es nicht notwendig. Nur für spezielle Java ME Projekte brauchte ich Signaturen die auf Root-Zertifikate basieren, die von der VM ohne Klage angenommen werden. &lt;/p&gt; &lt;p class="bodytext"&gt;Gerade im ME Bereich ist es recht schwer passende Root CA's zu finden, die auf möglichst vielen Mobiles funktionieren.
      Und einige Endgeräte Hersteller brauen da sowieso ihre eigenen Süppchen. &lt;/p&gt; &lt;p class="bodytext"&gt;Im Java SE/EE Bereich gibt es zumindest einen festen Satz von vorinstallierten Root-CA's die man nicht mehr importieren muss. Das manuelle Importieren kann schon eine Hürde für den Endanwender einer Software sein, die dieser nicht bereit ist zu überspringen. &lt;/p&gt; &lt;p class="bodytext"&gt;Aber wie lautet nun die Liste? Es gibt da tatsächlich nichts öffentliches. Trotzdem kann man diese
      Liste mit einem installierten JDK schnell ermitteln. &lt;/p&gt; &lt;p class="bodytext"&gt;Es wird das keytool benötigt, es muss bekannt sein, wo sich die Zertifikate der Root-CA's befinden und es wird das Kennwort für den Keystore gebraucht. &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Das keytool findet sich im Ordner "bin" des installierten JDK&lt;/li&gt;&lt;li&gt;Die Datei "cacerts" findet sich im JRE Ordner: "lib/security"&lt;/li&gt;&lt;li&gt;und das Kennwort? Sun verrät es auf seiner Homepage:
      changeit&lt;/li&gt;&lt;/ol&gt;&lt;p class="bodytext"&gt;Nein das ist kein Witz, es funktioniert ;-) &lt;/p&gt; &lt;p class="bodytext"&gt;Also in den "bin"-Ordner wechseln und (z.B. für Windows) folgenden Befehl eingeben: &lt;/p&gt; &lt;pre&gt;keytool -list -storepass changeit -keystore {...}\jre\lib\security\cacerts &lt;/pre&gt; &lt;p class="bodytext"&gt;Statt {...} gibt man natürlich den Pfad zum JRE an. &lt;/p&gt; &lt;p class="bodytext"&gt;Das Ergebnis ist eine Liste mit Aliasnamen der Root-CAs,
      Datum der Ausstellung, Typ und MD5-Hash. &lt;/p&gt; &lt;p class="bodytext"&gt;Meine Java Runtime in Version 1.6_14 enthält 63 Aliasnamen mit zugehörigen Zertifikaten. Mehrere Zertifikate wurden allerdings teilweise von einer Stelle ausgestellt. Z.B. Verisign hat da mehrere Root-Zertifikate hinterlegt. &lt;/p&gt; &lt;p class="bodytext"&gt;Mit dem -v Parameter wird die Ausgabe erheblich geschwätziger. Die ca. 80kB große Ausgabe informiert dann genauer über die Aussteller und Eigner der Zertifikate.
      &lt;/p&gt; &lt;p class="bodytext"&gt;Mit dieser (doch sehr umfangreichen) Liste kann man sich übrigens gut auf die Suche machen, um einen Root CA mit passenden Konditionen zu finden. Außerdem läuft man nicht in Gefahr, dass der Anwender (trotz Signatur) genötigt wird ein Root-Zertifikat zu importieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Wed, 23 Sep 2009 12:56:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Training: NetBeans Certified Platform Training - Noch 3 Tage Early Bird Anmeldung</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////training_netbeans_certified_platform_training_noch_3_tage_early_bird_anmeldung/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////training_netbeans_certified_platform_training_noch_3_tage_early_bird_anmeldung/index.html</link>
      <description>&lt;p class="bodytext"&gt;Während der Göttinger Source Talk Tage wird vom 29.-30. September 2009 ein NetBeans Platform Certified Training am Mathematischen Institut angeboten. &lt;/p&gt; &lt;p class="bodytext"&gt;Wer noch den Early Bird Rabatt für das NetBeans Platform Certified Training in Göttingen abschnappen möchte, sollte sich umgehend (und spätestens bis Freitag, 4. September) dazu verbindlich anmelden.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Die Plätze schmelzen langsam
      dahin!&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/diplom.jpg" alt="" height="138" width="200" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Weitere Infos zum Kurs &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/august/28/training_netbeans_certified_training_anmeldung_jetzt/index.html" class="external-link-new-window" title="Infos"&gt;finden sich hier&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Für Firmenmitglieder gilt eine
      Teilnahmegebühr von 699,-- Euro. Für Frühbucher gibt es einen Early Bird Discount bis zum 4. September 2009, dann kostet die Teilnahme nur 599,-- Euro. Studenten und Mitarbeiter von Non-Profit-Organisationen dürfen kostenlos teilnehmen! &lt;/p&gt; &lt;p class="align-left"&gt;Hier geht es zur verbindlichen Teilnameanmeldung:&lt;/p&gt; &lt;p class="align-center"&gt;&lt;a title="Anmelden. Jetzt!" href="http://www.uni-math.gwdg.de/st-anmelden/" target="_blank"
      class="external-link-new-window"&gt;Anmeldeseite der Source Talk Tage 2009&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wir benötigen die Anmeldedaten (auch von Studenten) so früh wie möglich, damit auch die Zertifikate vorbereitet werden können.&#160;&lt;/p&gt; &lt;p class="align-center"&gt;Beste Grüße,&lt;br /&gt;&#160; Aljoscha Rittner&lt;/p&gt;</description>
      <pubDate>Wed, 02 Sep 2009 07:06:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Tutorial Builder Bug Fix Update</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_bug_fix_update/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_bug_fix_update/index.html</link>
      <description>&lt;p class="bodytext"&gt;Der Tutorial Builder hat ein kleines Update erhalten.&#160;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Sortieren der Galeriebilder funktioniert nun mit passender Selektion&lt;/li&gt;&lt;li&gt;Tastaturkürzel zum Sortieren sind nun [Alt-Shift-Pfeil auf] und [Alt-Shift-Pfeil ab]&lt;/li&gt;&lt;li&gt;Unter Linux/Unix-Systemen wurde der Screen Shot zweimal ausgeführt. Das müsste nun korrigiert sein. Bitte mal testen.&lt;/li&gt;&lt;li&gt;Bei Macs wurden die Sondertasten in der
      Optionsauswahl als Icons dargestellt. Allerdings musste ich feststellen, dass die Symbole schlecht zu lesen sind und teilweise auf MacBooks gar nicht existieren... Für Macs werden nun Texte angezeigt&lt;/li&gt;&lt;li&gt;Meta-Taste im Optionsdialog ist für Linux/Win ausgeblendet&lt;/li&gt;&lt;li&gt;Es gibt einen neuen Speicher-Provider für die Screen Shots. Man kann nun auch JPEG speichern. Bei Bildern mit Transparenz kann man im Speicherdialog die Hintergrundfarbe festlegen (JPEG unterstützt ja keine
      Transparenz)&lt;/li&gt;&lt;li&gt;Der Toolbar Button für die Bereichsanalyse ist in das Vorschaufenster gewandert (wegen kompletter Umstellung der Programmierung)&lt;/li&gt;&lt;li&gt;Im Bereichsanalyse-Modus kann man nun per Strg+Mausklick mehrere Bereiche direkt in der Vorschau zusammenfassen. Das ging auch schon im Inspektor.&#160;&lt;/li&gt;&lt;li&gt;Die Mehrfachauswahl von Bereichen wird nun ordentlich im Vorschaufenster angezeigt.&lt;/li&gt;&lt;li&gt;Im Optionsdialog wurden für einige Werkzeuge
      das Optionspanel mehrfach angezeigt. Korrigiert.&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Außerdem gibt es ein paar Verbesserungen und Refactorings im Quelltext, die aber so noch nicht sichtbar sind. Performance-Verbesserungen sind auch ein paar rein gekommen. &lt;/p&gt; &lt;p class="bodytext"&gt;Das Update ist wie immer im UpdateCenter erreichbar. Oder per Download: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a href="http://www.sepix.de/fileadmin/tutorialbuilder/org-sepix-tutorialbuilder.nbm"
      class="download" title="Initiates file download"&gt;Download-Link&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Fri, 28 Aug 2009 12:36:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Training: NetBeans Certified Training. Anmeldung JETZT!</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////training_netbeans_certified_training_anmeldung_jetzt/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////training_netbeans_certified_training_anmeldung_jetzt/index.html</link>
      <description>&lt;p class="bodytext"&gt;Während der &lt;a title="Source Talk Tage 2009" href="http://www.sourcetalk.de/2009/" target="_blank" class="external-link-new-window"&gt;Göttinger Source Talk Tage&lt;/a&gt; wird vom 29.-30. September 2009 ein NetBeans Platform Certified Training am Mathematischen Institut angeboten.&lt;br /&gt;&lt;br /&gt;Studenten und Mitglieder einer Non-Profit Organisation haben die Möglichkeit kostenlos an dem zweitägigen Kurs teilzunehmen. Zum Abschluss des Kurses erhält
      jeder Teilnehmer und jede Teilnehmerin ein Zertifikat.&lt;br /&gt;&lt;br /&gt;Nähere Details zu den Inhalten des Trainings findet sich auf der &lt;a title="NetBeans Platform Education Program" href="http://edu.netbeans.org/courses/nbplatform-certified-training/" target="_blank" class="external-link-new-window"&gt;Homepage von NetBeans&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;h2&gt;Themenübersicht&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/lookup-pres.jpg" alt=""
      height="115" style="padding-bottom: 10px; padding-left: 10px; float: right; padding-top: 25px;" width="150" /&gt;&lt;/h2&gt; &lt;p class="bodytext"&gt;Hier eine Übersicht der Themen zu einem Kurs: &lt;/p&gt; &lt;h3&gt;Tag 1&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Intro &amp;amp; Simple Port of a Swing Application&lt;/li&gt;&lt;li&gt;Window System (Teil 1)&lt;/li&gt;&lt;li&gt; Window System (Teil 2)&lt;/li&gt;&lt;li&gt; Nodes &amp;amp; Views&lt;/li&gt;&lt;li&gt; Workshop&lt;/li&gt;&lt;/ul&gt;&lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt; &lt;h3&gt;Tag 2&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Visual Library&lt;/li&gt;&lt;li&gt; Workshop&lt;/li&gt;&lt;li&gt; Lookup&lt;/li&gt;&lt;li&gt; Module System&lt;/li&gt;&lt;li&gt; Workshop&lt;/li&gt;&lt;li&gt; Wrap Up&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;&lt;br /&gt;Es stehen insgesamt 24 Rechnerplätze zur Verfügung. Darüber hinaus ist es möglich ein eigenes Notebook mitzubringen (kostenloses WLAN ist verfügbar). Alle Teilnehmer mit einem eigenen Notebook
      sollten ein installiertes &lt;a title="Opens external link in new window" href="http://java.sun.com/javase/downloads/index.jsp" target="_blank" class="external-link-new-window"&gt;Java 6 JDK&lt;/a&gt; und die aktuelle &lt;a title="NetBeans IDE" href="http://www.netbeans.org/downloads/index.html" target="_blank" class="external-link-new-window"&gt;NetBeans 6.7.1 IDE&lt;/a&gt; zur Verfügung haben, damit die Workshops erfolgreich durchgespielt werden können. &lt;/p&gt; &lt;h2&gt;Infos zum
      Zertifizierungsprogramm&lt;img src="http://www.sepix.de/fileadmin/certtrainings/diplom.jpg" style="padding-bottom: 10px; padding-left: 10px; float: right; padding-top: 25px;" title="NetBeans Certified Associate" height="138" width="200" alt="" /&gt;&lt;/h2&gt; &lt;p class="bodytext"&gt;Es gibt insgesamt drei Stufen der Zertifizierung. &lt;/p&gt; &lt;h3&gt;NetBeans Certified Associate&lt;/h3&gt; &lt;p class="bodytext"&gt;Die erste Stufe bekommt schon man mit der Teilnahme an beiden Tagen des
      Zertifizierungskurses. Danach sollte jeder Teilnehmer das Rüstzeug in die Hand gelegt bekommen haben, um sich in der Platform Entwicklung bei den ersten Schritten zurechtzufinden. &lt;/p&gt; &lt;h3&gt;NetBeans Certified Engineer&lt;/h3&gt; &lt;p class="bodytext"&gt;Dieses Zertifikat erhält jeder Teilnehmer, der ein Programm basierend auf der NetBeans Platform (zum Beispiel eine Migration einer alten Swing Anwendung) oder ein Plugin programmiert hat. Dabei geht es nicht um Größe, sondern um das
      Verständnis. Wir schauen uns die Projekte an, helfen dabei und geben Tipps, bis das Projekt den Status erreicht hat, wo so ein Zertifikat besten Gewissens vergeben werden kann. &lt;/p&gt; &lt;h3&gt;NetBeans Certified Committer&lt;/h3&gt; &lt;p class="bodytext"&gt;Diese höchste Stufe ist schon etwas anspruchsvoller. Es handelt sich dabei um Erweiterungen und Korrekturen (z.B. Bug fixing, Feature enhancements) der NetBeans Platform (oder Derivate, wie z.B. die IDE selbst), die in den Quelltext von
      NetBeans eingereicht und bestätigt werden. Da werden dann noch andere Augenpaare auf die eingereichten Quelltexte geworfen (nämlich von den Core Entwicklern) und erwartet auch eine hohe Bereitschaft sich direkt mit den Entwicklungsprozessen auseinander zu setzen. Aber auch hier lassen wir niemanden allein.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alle Teilnehmer erhalten eine Nachbetreuung in einer dafür speziell eingerichteten Mailingliste. In der können sich weltweit die Mitglieder der
      Zertifizierungskurse austauschen. &lt;/p&gt; &lt;h2&gt;Studenten &amp;amp; Non-Profit frei!&lt;br /&gt; Frühbucherrabatt bis 4.9. sichern...&lt;/h2&gt; &lt;p class="bodytext"&gt;Für Firmenmitglieder gilt eine Teilnahmegebühr von 699,-- Euro. Für Frühbucher gibt es einen Early Bird Discount bis zum 4. September 2009, dann kostet die Teilnahme nur 599,-- Euro. Studenten und Mitarbeiter von Non-Profit-Organisationen dürfen kostenlos teilnehmen! &lt;/p&gt; &lt;h2&gt;Anmeldung&lt;/h2&gt; &lt;p
      class="bodytext"&gt;WICHTIG: Hier geht es zur verbindlichen Teilnameanmeldung:&lt;br /&gt;&lt;a title="Anmelden. Jetzt!" href="http://www.uni-math.gwdg.de/st-anmelden/" target="_blank" class="external-link-new-window"&gt;Anmeldeseite der Source Talk Tage 2009&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wir benötigen die Anmeldedaten so früh wie möglich, damit auch die Zertifikate vorbereitet werden können.&lt;br /&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&lt;br /&gt;Aljoscha Rittner&lt;/p&gt;</description>
      <pubDate>Fri, 28 Aug 2009 07:48:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Artikel: JAXenter - Mehr Substanz für NetBeans</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////artikel_jaxenter_mehr_substanz_fuer_netbeans/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////artikel_jaxenter_mehr_substanz_fuer_netbeans/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbsubstance/nbsubstance.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans Substance Logo" height="128" width="128" alt="NetBeans Substance Logo" /&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Auf JAXenter ist ein kleiner Artikel zu dem Substance Support Plugin erschienen. Wer mehr über die Interna des Plugins erfahren möchte, findet weitere Infos dort: &lt;/p&gt; &lt;p
      class="bodytext"&gt;&lt;a title="JAXenter: Mehr Substanz für NetBeans" href="http://it-republik.de/jaxenter/artikel/Mehr-Substanz-fuer-NetBeans-2518.html" target="_blank" class="external-link-new-window"&gt;JAXenter: Mehr Substanz für NetBeans&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 26 Aug 2009 12:38:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Substance Support Plugin auf kenai.com</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_substance_support_plugin_auf_kenaicom/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_substance_support_plugin_auf_kenaicom/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbsubstance/nbsubstance.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans Substance Logo" height="128" width="128" alt="NetBeans Substance Logo" /&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Da mein Blog etwas unter Überlastung leidet, habe ich das Plugin nun nach &lt;a title="Opens external link in new window" href="http://kenai.com/projects/nbsubstance" target="_blank"
      class="external-link-new-window"&gt;kenai.com verschoben&lt;/a&gt; (was sowieso meine Intention war). Damit sollte das hängende Update-Center wieder funktionieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Wer das Plugin schon installiert hat, wird automatisch nach kenai.com für die Updates umgeleitet. Es muss also nichts neu installiert werden (ja, wie genial ist das denn...) &lt;/p&gt; &lt;p class="bodytext"&gt;Die &lt;a title="Opens external link in new window"
      href="http://kenai.com/projects/nbsubstance/downloads/directory/updates" target="_blank" class="external-link-new-window"&gt;neuen Download Links&lt;/a&gt; sind folgende (nur für eine Neuinstallation notwendig):&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a title="Opens external link in current window" href="http://kenai.com/projects/nbsubstance/downloads/download/updates/org-sepix-substance.nbm" target="_blank" class="external-link"&gt;Substance Support Plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Opens
      external link in current window" href="http://kenai.com/projects/nbsubstance/downloads/download/updates/org-jvnet-substance.nbm" target="_blank" class="external-link"&gt;Substance 5.2 Patch Module&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Opens external link in current window" href="http://kenai.com/projects/nbsubstance/downloads/download/updates/org-jvnet-lafwidget.nbm" target="_blank" class="external-link"&gt;Substance LAF Widget Patch Module&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p
      class="bodytext"&gt;Das Plugin hat auch eine Änderung erfahren. Man erhält nur eine Neustart Erinnerung, wenn man das Skinning geändert hat. Das ist sinnvoll, da manche Editor-Elemente nach dem Ändern etwas "spinnen". &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 25 Aug 2009 11:05:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: PHPDev: We need your Help - Dateisynchronisation im aktuellen NetBeans PHP-Build</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////phpdev_we_need_your_help_dateisynchronisation_im_aktuellen_netbeans_php_build/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////phpdev_we_need_your_help_dateisynchronisation_im_aktuellen_netbeans_php_build/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Hier ein Aufruf aus dem PHP Blog, ein neues spezielles NetBeans PHP Build zu testen: &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Wir suchen Anwender, die uns beim Testen unseres neuen experimentellen PHP NetBeans Builds helfen möchten. Jeder ist willkommen, aber wir benötigen ein besonderes Feedback von den Benutzern, die häufig zwischen NetBeans und externen Anwendungen wechseln
      müssen (Versionierung, PHP-Framework etc.), wobei es zu externen Dateiänderungen kommen kann. Alle diese Veränderungen durch Drittanbieter-Tools sollten korrekt in NetBeans zurück fließen. Es geht also um eine gut funktionierende Synchronisation der Dateiänderungen zwischen NetBeans und anderen Tools, die an den selben Dateien arbeiten. &lt;/p&gt; &lt;p class="bodytext"&gt;Allerdings könnte die Performnce, vor allem auf nicht-lokalen Festplatten, etwas schlechter werden. Wenn Sie PHP-Projekte mit
      solchen Quellen auf externen Medien haben (z.B. Netzlaufwerke), testen Sie bitte den aktuellen Build, weil wir wirklich an Ihren Ergebnissen interessiert sind. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn Sie als an diesem Test teilnehmen möchten, downloaden Sie das aktuelle Build (93,2 MB) und starten Sie NetBeans mit der Option &lt;/p&gt; &lt;pre&gt;-J-Dorg.netbeans.modules.masterfs.REFRESH.level=0&lt;/pre&gt; &lt;p class="bodytext"&gt;damit nützliche Informationen protokolliert werden können. Senden
      Sie bitte bis Ende August 2009 (je früher, desto besser) uns Ihr Feedback zusammen mit dem IDE-Log direkt an an tomas (dot) mysik (at) sun (dot) com. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Der &lt;a title="We need your Help!" href="http://blogs.sun.com/netbeansphp/entry/we_need_your_help" target="_blank" class="external-link-new-window"&gt;Link zum Download&lt;/a&gt; ist in dem englischsprachigen PHP Blog zu finden. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste
      Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 25 Aug 2009 07:36:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: GUI Beans, Container Beans mit Komponenten</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_container_beans_mit_komponenten/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_container_beans_mit_komponenten/index.html</link>
      <description>&lt;p class="bodytext"&gt;In einem &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_zurueck_zu_den_wurzeln/index.html" class="external-link-new-window" title="GUI Beans"&gt;mehrteiligen Tutorial&lt;/a&gt; habe ich beschrieben, wie man mit GUI Beans im GUI Builder umgeht. Eine Spezialität ist aber offen geblieben. Wie kann man GUI Container in den GUI Builder verwenden und zugleich schon Komponenten vorgeben? &lt;/p&gt; &lt;p
      class="bodytext"&gt;Generell ist es erstmal nur möglich Container als GUI Elemente zu verwenden, wenn diese keine Komponenten enthalten. Also ein leeres JPanel. Diese Container müssen auch zwingend&#160;java.awtContainer als Super-Klasse haben und die letzte Einschränkung: der LayoutManager des Beans muss vom GUI Builder verstanden werden. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn diese Voraussetzungen erfüllt sind, kann man das Bean direkt per Drag and Drop in den GUI-Builder ziehen und dann auch
      sofort Komponenten einfügen. &lt;/p&gt; &lt;p class="bodytext"&gt;Aber gerade bei GUI Beans will man schon Komponenten in das Bean einfügen. Das darf man auch, allerdings muss dann das Bean im GUI Builder "so-wie-es-ist" verwenden. Man darf dem Bean selber keine Komponenten mehr hinzufügen. &lt;/p&gt; &lt;p class="bodytext"&gt;Was also tun, wenn man dem Bean-Anwender doch die Möglichkeit geben möchte, Komponenten hinzufügen zu dürfen. Beispiele gibt es genug. Vielleicht könnte es ein File-Dialog Bean
      sein, dem der Entwickler später eine Vorschauansicht mitgeben möchte. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man solche Beans realisieren möchte, kommt man (leider) um die BeanInfo Klasse nicht herum. Man muss nämlich auf dem Bean eine freien Platz reservieren, in dem der spätere Anwender seine Komponenten hinzufügen darf. &lt;/p&gt; &lt;p class="bodytext"&gt;Diesen freien Platz muss man in der BeanInfo Klasse bekannt machen. Aber erstmal zum ersten Schritt. Einfach mal ein JPanel-GUI mit der
      NetBeans IDE erzeugen. Dort packe ich ein Label und ein Textfeld rein. Diese beiden Komponenten sollen immer von diesem Bean vorgegeben sein: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorials/beans/BeanContainer1.PNG" alt="" height="464" width="737" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Den Container (das Delegate Panel) habe ich grün eingefärbt, damit man ihn in diesem Tutorial besser sehen kann. Es ist ein einfaches JPanel mit beliebigen Namen. In diesem
      Fall ist es der Name innerPane. &lt;/p&gt; &lt;p class="bodytext"&gt;Das Bean benötigt nun eine Methode, die das JPanel als Container bekannt gibt. Auch dieser Name der Methode ist gleichgültig. Aber getInnerPane bietet sich an: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorials/beans/BeanContainer2.PNG" alt="" height="288" width="455" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Aber damit kann der GUI Builder noch nichts anfangen. Wenn wir das Bean (im
      compilierten Zustand) so per Drag and Drop in den GUI Builder ziehen würden, könnte man dem Bean keine Komponente hinzufügen. &lt;/p&gt; &lt;p class="bodytext"&gt;Nun der Trick. Auf das Bean die rechte Maustaste und eine BeanInfo-Klasse erzeugen lassen. Der Quelltext wird folgendermaßen ergänzt: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorials/beans/BeanContainer3.PNG" alt="" height="212" width="963" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Es muss also nur
      der Wert containerDelegate gesetzt werden: Mit dem Methodennamen aus unserem Bean. &lt;/p&gt; &lt;p class="bodytext"&gt;Nun kann man das Bean (neu compiliert und eingefügt) als Container für Komponenten nutzen. Wenn man den grünen Platzhalter nicht sofort sieht, einfach trotzdem eine Komponente von der Palette auf das Bean ziehen. Die Komponente wird dann an der passenden Stelle eingefügt. Ggf. wurde nämlich vom LayoutManager der Bereich einfach auf 0 * 0 Pixel zusammen geschrumpft. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Hier das Ergebnis: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorials/beans/BeanContainer4.PNG" alt="" height="232" width="829" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Bleibt nur noch zu sagen, dass in diesem Fall das Delegate die Einschränkungen geerbt hat: Es dürfen keine vorgegebenen Komponenten im Panel liegen und ein bekannter LayoutManager des GUI-Builders muss genutzt werden. &lt;/p&gt;
      &lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Mon, 24 Aug 2009 14:05:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: @ConvertAsProperties zerstört Singleton Pattern von TopComponents</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_convertasproperties_zerstoeren_singleton_pattern_von_topcomponents/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_convertasproperties_zerstoeren_singleton_pattern_von_topcomponents/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Seit dem 10. Januar 2009 gibt es eine nette Erweiterung der NetBeans API für TopComponents. Die &lt;a title="@ConvertAsProperties" href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-settings/apichanges.html#convertor.propertyannotation" target="_blank" class="external-link-new-window"&gt;@ConvertAsProperties Annotation&lt;/a&gt; erlaubt es Eigenschaften des Fensters als Properties zu speichern.&#160;
      &lt;/p&gt; &lt;p class="bodytext"&gt;Das ist sehr bequem, weil man sich erstmal nicht generell mit der Serialisierung beschäftigen muss. &lt;/p&gt; &lt;h3&gt;@ConvertAsProperties einsetzen&lt;/h3&gt; &lt;p class="bodytext"&gt;Das Schreiben von Eigenschaften sieht dann so aus: &lt;/p&gt; &lt;pre&gt; void writeProperties(java.util.Properties p) {&lt;br /&gt; p.setProperty("version", "1.2");&lt;br /&gt; // TODO store your settings&lt;br /&gt; p.setProperty("dividerLocation",
      Integer.toString(jSPLMain.getDividerLocation()));&lt;br /&gt; p.setProperty("regionViewer.visible", Boolean.toString(((JPreviewViewer)jPNPreview).isRegionViewerVisible()));&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Und das Einlesen: &lt;/p&gt; &lt;pre&gt; private void readPropertiesImpl(java.util.Properties p) {&lt;br /&gt; String version = p.getProperty("version");&lt;br /&gt; // TODO read your settings according to their version&lt;br /&gt; if ( "1.1".equals(version) ) {&lt;br /&gt;
      jSPLMain.setDividerLocation(Integer.parseInt(p.getProperty("dividerLocation")));&lt;br /&gt; }&lt;br /&gt; if ( "1.2".equals(version)) {&lt;br /&gt; ((JPreviewViewer)jPNPreview).setRegionViewerVisible(Boolean.valueOf(p.getProperty("regionViewer.visible", "true")));&lt;br /&gt; }&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Die NetBeans Platform kümmert sich automatisch um das Speichern auf die Festplatte (oder sonst wo hin). Ich als Programmierer muss mich darum nicht kümmern. Die TopComponent
      muss aber annotiert werden: &lt;/p&gt; &lt;pre&gt;@ConvertAsProperties(&lt;br /&gt; dtd = "-//org.sepix.tutorialbuilder.ui//Gallery//EN",&lt;br /&gt; autostore = false)&lt;br /&gt;public final class GalleryTopComponent extends TopComponent {&lt;/pre&gt; &lt;p class="bodytext"&gt;Das erstellt übrigens schon alles das Template, wenn man neue TopComponents mit dem Wizard erzeugt. &lt;/p&gt; &lt;h3&gt;Singleton Pattern funktioniert nicht mehr&lt;/h3&gt; &lt;p class="bodytext"&gt;Nun zum Problem. Es
      passiert nun, dass zum Einlesen der Properties das Fenster zwei mal erzeugt wird. Einmal zum Einlesen der Eigenschaften und das zweite Mal bei ersten Anzeigen der TopComponent. Das ist natürlich fatal, wenn man davon ausgeht, dass das Fenster ein Singleton sein soll. Zum Beispiel wenn man Resourcen bindet, Listener verknüpft usw... &lt;/p&gt; &lt;p class="bodytext"&gt;Es wurde ein &lt;a title="Issue 167395" href="http://www.netbeans.org/issues/show_bug.cgi?id=167395" target="_blank"
      class="external-link-new-window"&gt;Issue&lt;/a&gt; dazu angelegt und heute kam &lt;/p&gt; &lt;h3&gt;...die Lösung&lt;/h3&gt; &lt;p class="bodytext"&gt;Es ist tatsächlich kein API Problem, sondern das vom Wizard erzeugte Template hat einen winzigen Bug. &lt;/p&gt; &lt;p class="bodytext"&gt;Wie man oben sehen kann, werden die Eigenschaften in der Methode readPropertiesImpl eingelesen. Es gibt auch noch readProperties, die in der alten Version des Templates folgendes machte: &lt;/p&gt; &lt;pre&gt;
      Object readProperties(java.util.Properties p) {&lt;br /&gt; GalleryTopComponent singleton = GalleryTopComponent.getDefault();&lt;br /&gt; singleton.readPropertiesImpl(p);&lt;br /&gt; return singleton;&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Das sieht zunächst sauber aus, verursacht aber durch den getDefault()-Aufruf eine Instanz, die bedauerlicherweise später verworfen wird. &lt;/p&gt; &lt;p class="bodytext"&gt;Das neue (korrigierte) Template wurde nun in den &lt;a title="Template
      correction" href="http://hg.netbeans.org/main-golden/rev/1e286e551363" target="_blank" class="external-link-new-window"&gt;main-golden Trunk&lt;/a&gt; integriert und würde folgende Methode erzeugen: &lt;/p&gt; &lt;pre&gt; Object readProperties(java.util.Properties p) {&lt;br /&gt; if ( instance == null ) {&lt;br /&gt; instance = this;&lt;br /&gt; }&lt;br /&gt; instance.readPropertiesImpl(p);&lt;br /&gt; return instance;&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Sieht eigentlich noch
      logischer aus ;-) - Und das ist übrigens auch die Lösung für aktuelle Versionen (6.7 und 6.7.1) von NetBeans. Einfach in den TopComponents, die man durch den Assistenten erzeugt hatte, die readProperties-Methode mit dem obigen Quelltext austauschen. Dann werden die TopComponents garantiert nur noch einmal erzeugt. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Fri, 21 Aug 2009 08:16:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Substance 5.2 for NetBeans Update</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_substance_52_for_netbeans_update/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_substance_52_for_netbeans_update/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Das Plugin für den Substance Support hat ein kleines Update erfahren. &lt;/p&gt; &lt;p class="bodytext"&gt;Zum einem gab es noch eine Violation Exception im Plugin Manager, die nun unterdrückt wird und man kann nun "On-the-fly" die Skins ändern (soweit man das erste mal das Substance PLAF aktiviert hatte und ein Neustart erfolgte). Man kann Substance trotz Plugin deaktivieren und Fensterdekoration von Substance
      übernehmen lassen (Unterschiede sieht man in den unteren Screenshots) &lt;/p&gt; &lt;p class="bodytext"&gt;Ich habe das Plugin in meinem Updatecenter aktualisiert. Wenn es Probleme beim Updatecenter gibt (ewiges herunterladen), gelten noch diese Download-Links:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/nbsubstance/org-sepix-substance.nbm" class="download" title="Initiates file download"&gt;NetBeans Substance 5.2 Module&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a
      href="http://www.sepix.de/fileadmin/nbsubstance/org-jvnet-substance.nbm" class="download" title="Initiates file download"&gt;NetBeans Substance 5.2 Patch Libraries&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/nbsubstance/org-jvnet-lafwidget.nbm" class="download" title="Initiates file download"&gt;NetBeans Substance LAF Widget Patch&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Fensterdekoration vom Betriebssystem:
      &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbsubstance/SubstanceOptions.JPG" alt="" height="386" width="758" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Fensterdekoration von Substance: &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbsubstance/SubstanceOptions-2.JPG" alt="" height="394" width="759" /&gt; &lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 19 Aug 2009 14:55:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: NetBeans Substance 5.2 Look and Feel</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_netbeans_substance_52_look_and_feel/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_netbeans_substance_52_look_and_feel/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Ich habe heute noch mal schnell ein Substance Look And Feel Support erstellt. Es ist etwas Beta und man kann nur ein paar PLAFs über die Optionen einstellen (die --laf Einstellung geht im Moment nicht). &lt;/p&gt; &lt;p class="bodytext"&gt;Hier ein Screen-Shot einer der PLAFs: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;&lt;img src="http://www.sepix.de/fileadmin/nbsubstance/NB-Substance-small.JPG" alt=""
      height="418" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Man benötigt für das Plugin drei Dateien:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/nbsubstance/org-sepix-substance.nbm" class="download" title="Initiates file download"&gt;NetBeans Substance 5.2 Module&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/nbsubstance/org-jvnet-substance.nbm" class="download" title="Initiates file download"&gt;NetBeans Substance 5.2 Patch
      Libraries&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/nbsubstance/org-jvnet-lafwidget.nbm" class="download" title="Initiates file download"&gt;NetBeans Substance LAF Widget Patch&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="bodytext"&gt;Nach der Installation der drei NBM-Dateien findet Ihr unter den Optionen (in Verschiedenes) eine Registerzunge Look and Feel. Mal eines ausprobieren und die IDE neu starten. Updates zu dem Plugin erhaltet Ihr per Update-Center. &lt;/p&gt;
      &lt;p class="bodytext"&gt;Voraussetzung ist NetBeans 6.7.1 und Java 6. Und es ist pure Beta, nur unter Windows getestet. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Aug 2009 14:58:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Certified Training: NetBeans Platform in Bonn</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////certified_training_netbeans_platform_in_bonn/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////certified_training_netbeans_platform_in_bonn/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Am Wochenende gab es wieder ein Certified Training zur NetBeans Platform in der schönen und quirligen Universitätsstadt Bonn. &lt;/p&gt; &lt;p class="bodytext"&gt;Das war die Ankündigung der studentischen Consultingfirma &lt;a title="aureliusconsult.de" href="http://www.aureliusconsult.de/" target="_blank" class="external-link-new-window"&gt;AureliusConsult&lt;/a&gt;. Ich möchte mich im Namen der Trainer für
      die hervorragende Planung und Bewirtung bedanken! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/teaser.jpg" alt="" height="405" width="500" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Zusammen mit &lt;a title="Geertjan" href="http://blogs.sun.com/geertjan/entry/welcome_to_me" target="_blank" class="external-link-new-window"&gt;Geertjan&lt;/a&gt; (Sun Microsystems) und &lt;a title="Blog" href="http://eppleton.sharedhost.de/blog/" target="_blank"
      class="external-link-new-window"&gt;Toni&lt;/a&gt; (&lt;a title="Eppleton" href="http://eppleton.sharedhost.de/" target="_blank" class="external-link-new-window"&gt;Eppleton&lt;/a&gt;) haben wir in zwei Tagen ein strammes Programm zur Platform Programmierung geboten: &lt;/p&gt; &lt;p class="bodytext"&gt;Samstag &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Intro &amp;amp; Simple Port of Anagram Game (Geertjan) &lt;/li&gt;&lt;li&gt;Window System (Teil 1) (Toni) &lt;/li&gt;&lt;li&gt;Window System (Teil 2) (Toni)
      &lt;/li&gt;&lt;li&gt;Nodes &amp;amp; Views (Josh) &lt;/li&gt;&lt;li&gt;Workshop (Geertjan) &lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt; Sonntag&lt;b&gt;&lt;/b&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Visual Library (Toni) &lt;/li&gt;&lt;li&gt;Workshop (Toni) &lt;/li&gt;&lt;li&gt;Lookup (Josh) &lt;/li&gt;&lt;li&gt;Workshop (Geertjan) &lt;/li&gt;&lt;li&gt;Wrap Up (all) &lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Hier ein Gruppenfoto aller Teilnehmer mit uns Trainern im Hintergrund: &lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/bonnGroup.jpg" alt="Gruppenfoto" height="299" title="Gruppenfoto" width="500" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Die Unterlagen zu dem Training sind unter &lt;a title="NetBeans Platform Docs" href="http://edu.netbeans.org/contrib/slides/netbeans-platform/" target="_blank" class="external-link-new-window"&gt;edu.netbeans.org&lt;/a&gt; zu finden. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Meine Vortrags-Präsentationen waren folgende: &lt;/p&gt; &lt;p class="align-left"&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/lookup-pres.jpg" alt="" height="105" style="padding-bottom: 10px; padding-left: 10px; float: right;" width="150" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Modules-und-Lookups.pdf" href="http://edu.netbeans.org/contrib/slides/netbeans-platform/nbp-lookup-gj_de.pdf" target="_blank" class="external-link-new-window"&gt;Modules
      &amp;amp; Lookups (vollständige Präsentation)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Nodes-and-Views.pdf" href="http://edu.netbeans.org/contrib/slides/netbeans-platform/nbp-javabeans_de.pdf" target="_blank" class="external-link-new-window"&gt;Nodes &amp;amp; Views (vollständige Präsentation)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p
      class="bodytext"&gt;Und hier noch ein paar Impressionen: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/geertjanToni.jpg" alt="" height="260" width="300" /&gt;&lt;br /&gt;Geertjan (links) und Toni (rechts) beim Intro zur Visual Library &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/learning.jpg" alt="" height="140" width="300" /&gt;&lt;br /&gt;Geertjan unterstützt die Studenten bei den Workshops.
      &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;&lt;img src="http://www.sepix.de/fileadmin/certtrainings/bonn/josh.jpg" alt="" height="175" width="300" /&gt;&lt;br /&gt;Ich bei der Präsentation der Nodes und Explorer API &lt;/p&gt; &lt;p class="bodytext"&gt;Dieser 2-tages Kurs ist Teil des &lt;a title="Certified Training" href="http://edu.netbeans.org/courses/nbplatform-certified-training/" target="_blank" class="external-link-new-window"&gt;NetBeans Platform Certified Training&lt;/a&gt;. Wir bieten
      diese Kurse kostenlos für Universitäten, Java User Groups und Non-Profit-Unternehmen an. Als Ergebnis erhalten die Teilnehmer Zertifikate, die noch in zwei Stufen erweitert werden können. &lt;/p&gt; &lt;p class="bodytext"&gt;Natürlich bieten wir erweiterte Kurse auch für Firmen weltweit in deutscher und englischer Sprache an. Sprechen Sie uns an! &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Tue, 18 Aug 2009 09:24:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Project Group Toolbar - Update auf 1.0.2</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_project_group_toolbar_update_auf_102/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_project_group_toolbar_update_auf_102/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbprjgrptoolbar/Project_Group_Toolbar.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="Project Group Toolbar" height="227" width="288" alt="Project Group Toolbar" /&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Ich habe der Project Group Toolbar ein kleines Update gegeben. &lt;/p&gt; &lt;p class="bodytext"&gt;Nun werden alle Änderungen der Gruppen an den Toolbar-Button und an das Menü
      weitergereicht. Darunter fällt das Hinzufügen und Entfernen sowie das Umbenennen von Projekt-Gruppen. &lt;/p&gt; &lt;p class="bodytext"&gt;Weiterhin habe ich einen Lizenztext hinzugefügt. Ich werde für den Sourcecode ein paar Hinweise als zukünftige Blog-Einträge posten. Der Quelltext selbst kämpft mit so vielen Hacks und Tricks, das will ich so nicht veröffentlichen. Ich möchte eher dafür sorgen, dass die API in NetBeans da verbessert wird ;-) &lt;/p&gt; &lt;p class="bodytext"&gt;Link für &lt;a
      href="http://www.sepix.de/fileadmin/nbprjgrptoolbar/org-sepix-modules-project-ui-groups.nbm" class="download" title="Initiates file download"&gt;Download&lt;/a&gt;. Ein Update ist im Plugin-Center auf plugins.netbeans.org. Und mein Update-Center wird bei allen installierten Versionen sowieso reagieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Aug 2009 08:19:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Project Group Toolbar 1.0.1</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_project_group_toolbar_101/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_project_group_toolbar_101/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Ich arbeite sehr gerne mit Projekt-Gruppen, da ich ständig in unterschiedlichen Bereichen mit verschiedenen Projekten arbeiten muss. So habe ich eine Projektgruppe für den Tutorial Builder, für den CronJob Scheduler und noch viele weitere Projektgruppen (für das Certified Training und für meine kommerziellen Anwendungen).&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Allerdings nervte mich das ständige rumgeklicke im
      Datei-Menü. Mit dem kleinen Plugin wird das Projektgruppen-Untermenü als DropDown Menü in die Toolbar übertragen: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbprjgrptoolbar/Project_Group_Toolbar.png" alt="" height="227" width="288" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Mit dem Mausklick auf den kleinen Pfeil wird das Menü geöffnet und man kann eine Projektgruppe auswählen. Ein direkter Klick auf den Button öffnet umgehend die Projektgruppeneigenschaften. Das
      finde ich persönlich sehr bequem, um unmittelbar die Gruppenzugehörigkeit zu speichern (Ich verwende nämlich nicht das automatische Speichern). &lt;/p&gt; &lt;p class="bodytext"&gt;Für wen das kleine Plugin auch praktisch ist, findet es im &lt;a title="Plugin Site" href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=20677" target="_blank" class="external-link-new-window"&gt;Plugin-Center von netbeans.org&lt;/a&gt; oder bei mir als &lt;a
      href="http://www.sepix.de/fileadmin/nbprjgrptoolbar/org-sepix-modules-project-ui-groups.nbm" class="download" title="Initiates file download"&gt;Download&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Mon, 17 Aug 2009 13:06:00 +0000</pubDate>
    </item>
    <item>
      <title>OlliN's » netbeans: Netbeans, Ivy und Spring 3.0.0M4</title>
      <guid isPermaLink="false">http://www.nautsch.net/?p=357</guid>
      <link>http://www.nautsch.net/2009/08/11/netbeans-ivy-und-spring-3-0-0m4/</link>
      <description>&lt;p&gt;Ich programmiere gerade eine kleine Web-Applikation und möchte dazu die neuen &lt;a href="http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/"&gt;REST-Features&lt;/a&gt; vom &lt;a href="http://www.springsource.org/"&gt;Spring-Framework&lt;/a&gt; benutzen. Bis gestern habe ich mir dazu in Netbeans ein Webprojekt gebaut und dann ganz artig alle notwendigen Bibos von Hand dem Projekt hinzugefügt. Gestern wurde nun der Milestone 4 von Spring 3.0.0 veröffentlicht und ich
      wollte mir nicht noch einmal die Arbeit machen.&lt;br /&gt; &lt;span id="more-357"&gt;&lt;/span&gt;&lt;br /&gt; Also musste ein Tool her, welches mir alle notwendigen Jar’s auflösen kann und in mein Projekt einhängt. Da ich nicht so ein rechter Fan von &lt;a href="http://ant.apache.org/ivy/"&gt;Maven&lt;/a&gt; bin, habe ich wieder einmal die Gelegenheit genutzt und &lt;a href="http://ant.apache.org/ivy/"&gt;Ivy&lt;/a&gt; ausprobiert. Als IDE verwende ich &lt;a
      href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt; – also muss ein Plugin für Netbeans her, welches mir die Arbeit mit Ivy innerhalb der IDE vereinfacht. Also schnell mal bei &lt;a href="http://code.google.com/p/ivybeans/"&gt;ivybeans&lt;/a&gt; vorbeigeschaut. Version 1.1 unterstützt jetzt auch Webprojekte – Schick! Also schnell das Plugin installiert und ein Repository gesucht in welchem die 3.0.0M4 Version von Spring liegt. Nach ein wenig Suchen habe ich dann herausgefunden, dass es ein
      Spring-eigenes Repository in &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt; gibt (&lt;a href="http://s3browse.com/explore/maven.springframework.org/milestone/org/springframework/spring-webmvc/3.0.0.M4/"&gt;S3Browse&lt;/a&gt; ist übrigens ein guter Browser für S3).&lt;/p&gt; &lt;p&gt;Dann habe ich mir noch die folgenden zwei Dateien für die Konfiguration von Ivy im Projektverzeichnis meines Webprojektes angelegt:&lt;/p&gt; &lt;p&gt;&lt;a
      href="http://www.nautsch.net/wp-content/uploads/ivy-configfiles-location.png"&gt;&lt;img src="http://www.nautsch.net/wp-content/uploads/ivy-configfiles-location-224x300.png" title="Ablageort der Konfigurationsdateien von Ivy" height="300" width="224" alt="Ablageort der Konfigurationsdateien von Ivy" class="alignnone size-medium wp-image-370" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Hier der Inhalt der Dateien:&lt;/p&gt; &lt;div class="wp_codebox_msgheader"&gt;&lt;span class="right"&gt;&lt;sup&gt;&lt;a
      href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"&gt;&lt;span style="color: #99cc00;"&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class="left2"&gt;Download &lt;a href="http://www.nautsch.net/wp-content/plugins/wp-codebox/wp-codebox.php?p=357&amp;amp;download=ivy.xml"&gt;ivy.xml&lt;/a&gt;&lt;/span&gt;&lt;div class="codebox_clear"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="wp_codebox"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr
      id="p3573"&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 &lt;/pre&gt;&lt;/td&gt;&lt;td id="p357code3" class="code"&gt;&lt;pre style="font-family: monospace;" class="xml"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: #000066;"&gt;version&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"1.0"&lt;/span&gt; &lt;span style="color:
      #000066;"&gt;encoding&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"UTF-8"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;?&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;ivy-module&lt;/span&gt; &lt;span style="color: #000066;"&gt;version&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"2.0"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt; &lt;span style="color:
      #000066;"&gt;xmlns:xsi&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt; &lt;span style="color: #000066;"&gt;xsi:noNamespaceSchemaLocation&lt;/span&gt;=&lt;/span&gt; &lt;span style="color: #009900;"&gt; &lt;span style="color: #ff0000;"&gt;"http://ant.apache.org/ivy/schemas/ivy.xsd"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span
      style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;info&lt;/span&gt; &lt;span style="color: #000066;"&gt;module&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"WebApplication2"&lt;/span&gt; &lt;span style="color: #000066;"&gt;organisation&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"WebApplication2"&lt;/span&gt; &lt;span style="color: #000066;"&gt;revision&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"1.0"&lt;/span&gt;&lt;span style="color: #000000;
      font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;configurations&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;conf&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"compile"&lt;/span&gt;&lt;span
      style="color: #000000; font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;conf&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"runtime"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight:
      bold;"&gt;&amp;lt;conf&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"compile-test"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;conf&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"runtime-test"&lt;/span&gt;&lt;span style="color: #000000;
      font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/configurations&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;dependencies&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color:
      #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;dependency&lt;/span&gt; &lt;span style="color: #000066;"&gt;org&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"org.springframework"&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"spring-webmvc"&lt;/span&gt; &lt;span style="color: #000066;"&gt;rev&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"3.0.0.M4"&lt;/span&gt; &lt;span style="color:
      #000066;"&gt;conf&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;""&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/dependencies&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/ivy-module&lt;span
      style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;div class="wp_codebox_msgheader"&gt;&lt;span class="right"&gt;&lt;sup&gt;&lt;a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"&gt;&lt;span style="color: #99cc00;"&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class="left2"&gt;Download &lt;a
      href="http://www.nautsch.net/wp-content/plugins/wp-codebox/wp-codebox.php?p=357&amp;amp;download=ivysettings.xml"&gt;ivysettings.xml&lt;/a&gt;&lt;/span&gt;&lt;div class="codebox_clear"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="wp_codebox"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr id="p3574"&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1 2 3 4 5 6 7 8 9 10 &lt;/pre&gt;&lt;/td&gt;&lt;td id="p357code4" class="code"&gt;&lt;pre style="font-family: monospace;" class="xml"&gt;&lt;span style="color:
      #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: #000066;"&gt;version&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"1.0"&lt;/span&gt; &lt;span style="color: #000066;"&gt;encoding&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"UTF-8"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;?&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight:
      bold;"&gt;&amp;lt;ivysettings&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;settings&lt;/span&gt; &lt;span style="color: #000066;"&gt;defaultResolver&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"chained"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span
      style="color: #000000; font-weight: bold;"&gt;&amp;lt;resolvers&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;chain&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"chained"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color:
      #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;ibiblio&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"maven2"&lt;/span&gt; &lt;span style="color: #000066;"&gt;m2compatible&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"true"&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight:
      bold;"&gt;&amp;lt;ibiblio&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"s3.maven.springframework.org"&lt;/span&gt; &lt;span style="color: #000066;"&gt;m2compatible&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"true"&lt;/span&gt; &lt;span style="color: #000066;"&gt;root&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"http://s3.amazonaws.com/maven.springframework.org/milestone/"&lt;/span&gt;&lt;span style="color: #000000; font-weight:
      bold;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/chain&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/resolvers&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&lt;span
      style="color: #000000; font-weight: bold;"&gt;&amp;lt;/ivysettings&lt;span style="color: #000000; font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;p&gt;Dann im Projekt Ivy aktivieren. Dazu mit der rechten Maustaste auf das Projekt und in den Ivy-Einstellungen das Häkchen machen und die zwei Dateien auswählen:&lt;/p&gt; &lt;p&gt;&lt;a
      href="http://www.nautsch.net/wp-content/uploads/ivy-activation-netbeans.png"&gt;&lt;img src="http://www.nautsch.net/wp-content/uploads/ivy-activation-netbeans-300x142.png" title="Ivy in Netbeans aktivieren" height="142" width="300" alt="Ivy in Netbeans aktivieren" class="alignnone size-medium wp-image-365" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Dann noch das Projekt zwingen sich die Jars zu holen:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.nautsch.net/wp-content/uploads/ivy-force-resolve.png"&gt;&lt;img
      src="http://www.nautsch.net/wp-content/uploads/ivy-force-resolve-179x300.png" title="Force Resolve" height="300" width="179" alt="Force Resolve" class="alignnone size-medium wp-image-366" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Und siehe da… alle Jar’s und Sourcen (wenn im Repository) sind da:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.nautsch.net/wp-content/uploads/ivy-resolved-jars.png"&gt;&lt;img src="http://www.nautsch.net/wp-content/uploads/ivy-resolved-jars-243x300.png" title="Mit Ivy geholte
      Abhängigkeiten (Jar's und Sourcen)" height="300" width="243" alt="Mit Ivy geholte Abhängigkeiten (Jar's und Sourcen)" class="alignnone size-medium wp-image-367" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Mit der rechten Maustaste kann man nun ganz einfach die Abhängigkeiten entfernen, die man nicht braucht.&lt;/p&gt;</description>
      <pubDate>Tue, 11 Aug 2009 20:35:52 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Tipps: CronJob Plugin für NetBeans</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////tipps_cronjob_plugin_fuer_netbeans/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////tipps_cronjob_plugin_fuer_netbeans/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/nbcronjob-small.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans CronJob Scheduler" height="120" width="120" alt="NetBeans CronJob Scheduler" /&gt;Da das Plugin für CronJobs in NetBeans relativ schnell gewachsen ist, sammele ich hier mal ein paar Feature und gebe Tipps, wie man das Tool einsetzen kann. &lt;/p&gt; &lt;h3&gt;Die grundsätzliche Überlegung ist natürlich:
      Braucht man sowas? &lt;/h3&gt; &lt;p class="bodytext"&gt;Natürlich gibt es 100 andere Lösungswege, wenn man zeit- und aktionsgesteuert Ant-Targets auslösen möchte. Aber es macht Sinn innerhalb der IDE von NetBeans, direkt das Build-System ansprechen zu können. Und auch die Aktionen Projekt öffnen, Projekt schließen, IDE starten und IDE beenden gehören einfach zur IDE. Darum das Plugin. &lt;/p&gt; &lt;h3&gt;Warum Ant Targets?&lt;/h3&gt; &lt;p class="bodytext"&gt;Wenn man bei fast allen Projekt Typen
      in NetBeans Ant basierte Build Systeme hat (ausgenommen mal C/C++ und PHP), macht es schon Sinn auf dieser Ebene das (in der IDE) frei verfügbare "Scripting"-Framework zu verwenden. Allerdings möchte ich für die Zukunft nicht ausschließen, andere Aktionen (als Ant-Targets) zu starten. Deswegen muss man schon jetzt immer bei den Aktionsdefinitionen das Schlüsselwort "ANT" verwenden. &lt;/p&gt; &lt;p class="bodytext"&gt;Und auch bei Nicht-Ant-Projekte kann man natürlich eigene Ant Scripte angeben und
      ausführen lassen. &lt;/p&gt; &lt;h3&gt;Warum die CronJob Syntax?&lt;/h3&gt; &lt;p class="bodytext"&gt;Die Syntax ist zwar auf den ersten Blick nicht sofort verständlich aber universell. Man bekommt in allen Ecken des Internets Doku und Hilfestellung. Außerdem erschien mir die &lt;a title="Cron4j Homepage" href="http://www.sauronsoftware.it/projects/cron4j/" target="_blank" class="external-link-new-window"&gt;Cron4j&lt;/a&gt; Implementation sehr sauber und stabil. Schlussendlich kam ich erstmal um ein
      eigenes Scheduler Framework plus GUI drumherum. Damit konnte die erste Version innerhalb von drei Mannstunden zum laufen gebracht werden. Ich will aber nicht ausschließen, dass ein Assistent zum Einplanen von CronJobs folgen wird. &lt;/p&gt; &lt;p class="bodytext"&gt;Man darf aber auch den Nachteil nicht vergessen. Exakt alle (möglichen) Zeitpunkte für einen Job kann man nicht definieren. Auch sind CronJobs wiederkehrend. Einen Job für nur ein Datum kann man nicht einrichten (der längste
      Wiederholungszeitraum ist jährlich). Wenn gewünscht könnte man die Syntax erweitern, um den CronJob nach erster Ausführung zu deaktivieren... &lt;/p&gt; &lt;p class="bodytext"&gt;Außerdem sind CronJobs exakt an Minuten ausgerichtet. Deswegen kann man keine CronJobs 10 Sekunden nach IDE Start ausführen (ich erzeuge nämlich aus der relativen Angabe von z.B. 3m einen CronJob zu einem Zeitpunkt exakt 3 Minuten nach IDE Start). Es wäre aber möglich diese Einschränkung in Zukunft fallen zu lassen.
      &lt;/p&gt; &lt;h3&gt;Unterschiede der Job-Einplanungen&lt;/h3&gt; &lt;h4&gt;Globale Jobs&lt;/h4&gt; &lt;p class="bodytext"&gt;Man kann Global (in den Optionen der NetBeans IDE) Jobs einplanen. Einmal für wiederkehrende Zeiten und außerdem für den NetBeans Start und für das NetBeans Beenden. Jobs für den NetBeans Start müssen mit einer Duration-Angabe versehen werden (z.B 2m für zwei Minuten nach IDE Start oder 1h für eine Stunde). Jobs für das Beenden der IDE werden unmittelbar ausgeführt (eine
      Angabe einer Zeit ist da nicht möglich). Die Jobs beim Beenden verhindern natürlich erstmal den Shutdown der IDE. Es erscheint der bekannte Progress Dialog, dass noch Tasks am laufen sind. &lt;/p&gt; &lt;h4&gt;Projektbezogene Jobs&lt;/h4&gt; &lt;p class="bodytext"&gt;Die projektbezogenen Jobs beziehen sich direkt auf das Projekt, dem sie zugeordnet sind. Dafür erhalten fast alle Projekttypen (JavaSe, -ME, EE, PHP, Web, Groovy, NetBeans-Modules, usw) einen neuen Anzeige-Knoten in der Projektansicht.
      Unter dieser CronJob Konfiguration verbergen sich zur Zeit drei Punkte zum konfigurieren von Jobs. Projekt-CronJobs, Beim Öffnen ausführen und Beim Schließen ausführen. Bei all diesen Jobs wird das Ant-Script aus dem Projekt ermittelt (also gibt man es bei der Definition nicht mit an). "Beim Öffnen" bedeutet nicht nur das Öffnen eines Projektes während der Arbeit mit der IDE, sondern auch bei IDE Start (wenn das Projekt schon vormals geöffnet war). "Beim Schließen" triggert auch beim Beenden der IDE.
      &lt;/p&gt; &lt;p class="bodytext"&gt;Nicht immer will man (oder kann man, siehe PHP-Projekte) das Script des Projektes verwenden. In dem Konfigurationsdialog kann man dann ein individuelles Script angeben. &lt;/p&gt; &lt;h3&gt;Erste Schritte&lt;/h3&gt; &lt;h4&gt;Ein Testtarget&lt;/h4&gt; &lt;p class="bodytext"&gt;Als ein sehr nützliches Ant Target hat sich dieses Beispiel bewährt: &lt;/p&gt; &lt;pre&gt; &amp;lt;target name="scheduletest"&gt;&lt;br /&gt; &amp;lt;tstamp&gt;&lt;br /&gt; &amp;lt;format
      property="start" pattern="yyyy MMMM dd HH:mm:ss" locale="en"/&gt;&lt;br /&gt; &amp;lt;/tstamp&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;echo message="Target started at ${start}"/&gt;&lt;br /&gt; &amp;lt;sleep seconds="15"/&gt;&lt;br /&gt; &amp;lt;echo message="Target finished. Thank you for the audience."/&gt;&lt;br /&gt; &amp;lt;/target&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Es zeigt die Startzeit an, wartet 15 Sekunden und verabschiedet sich höflich. &lt;/p&gt; &lt;p class="bodytext"&gt;Wann immer man
      am Anfang mit dem Plugin rumspielt sollte man diese Target parat haben und es in die eigenen Ant-Scripte einfügen. Ein komplettes Ant-Script (jetzt ohne Target) sollte so aussehen: &lt;/p&gt; &lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;project name="somename" basedir="."&gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;/project&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Das Target kann man zwischen &amp;lt;project&gt; (hier) &amp;lt;/project&gt; einfügen. Gerade für Globale Jobs
      muss man ein eigenes Script anlegen. &lt;/p&gt; &lt;h4&gt;Ein globaler CronJob&lt;/h4&gt; &lt;p class="bodytext"&gt;Das obige Script einfach mal (komplett) in das Home-Verzeichnis in den Unterordner jobs ablegen. Das Script als text.xml benennen. &lt;/p&gt; &lt;p class="bodytext"&gt;Nun in der IDE Extras-&gt;Optionen (Tools-&gt;Options) öffnen. Unter Verschiedenes (Miscellaneous) den Tab "CronJob" auswählen. Unter Globale CronJobs nun diese Zeile einfügen: &lt;/p&gt; &lt;pre&gt;*/2 * * * * ANT
      "{user.home}/jobs/test.xml" scheduletest&lt;/pre&gt; &lt;p class="bodytext"&gt;&lt;/p&gt;&lt;div class="indent"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobOptions-1.0.4.png" alt="" height="628" width="586" /&gt; &lt;p&gt;&lt;/p&gt; &lt;p class="bodytext"&gt;Die ersten fünf Angaben der Zeile sind echte CronJob-Syntax und bedeuten, dass der nachfolgende Befehl alle 2 Minuten ausgeführt werden soll (*/2 bedeutet: Nimm die Minuten der aktuellen Zeit, führe die Operation
      "aktuelle_minute modular 2" aus und prüfe das Ergebnis auf 0, dann führe den Befehl aus - also */5 würde alle 5 Minuten ausgeführt. */30 würde um :00 und :30, also jede halbe Stunde, und nun die Preisfrage: */31?). &lt;/p&gt; &lt;p class="bodytext"&gt;Die Angabe ANT ist einfach ein eigenes Schlüsselwort (im Moment das einzige). Für globale Jobs muss (nach ANT) immer ein individuelles Script angegeben werden. Am besten in Anführungsstriche, besonders dann, wenn man Properties mit angibt. In diesem
      Fall wäre das {user.home} und wird mit dem Home-Pfad des Betriebsystems-Anwenders substituiert. Und da so ein Pfad Leerzeichen enthalten kann, brauchen wir die Anführungsstriche... &lt;/p&gt; &lt;p class="bodytext"&gt;Als Properties sind alle System.properties der Java VM möglich (aber nicht unbedingt sinnvoll). Der letzte Parameter ist das Target in dem ANT Script. Man darf auch mehrere mit Komma getrennt (aber ohne Leerzeichen) angeben. Die werden dann in der vorgegebenen Reihenfolge abgearbeitet
      (z.B. clean,compile). &lt;/p&gt; &lt;p class="bodytext"&gt;Damit das obige Beispiel nun läuft, muss man die Jobs generell aktivieren. Entweder auf die Uhr (obere rechte Ecke) klicken (so dass diese farbig wird), oder die Checkbox unten links anhaken. &lt;/p&gt; &lt;p class="bodytext"&gt;Den kompletten Optionsdialog mit [Ok] bestätigen. Dann ist alles scharf geschaltet. &lt;/p&gt; &lt;p class="bodytext"&gt;Sofort sollte sich das Ausgabe Fenster öffnen und folgendes anzeigen: &lt;/p&gt; &lt;pre&gt;Try
      to start scheduler&lt;br /&gt;Initializing 1 cronjob tasks for the scheduler...&lt;br /&gt; Scheduler started.&lt;/pre&gt; &lt;p class="bodytext"&gt;Das ist das CronJob Fenster (ein extra Ausgabe Fenster nur für Job-Einplanungen) &lt;/p&gt; &lt;p class="bodytext"&gt;Nach zwei Minuten (+ x Sekunden &amp;lt; 60) erscheint ein weiteres Fenster (Titel ist test(scheduletest)) mit folgender Ausgabe: &lt;/p&gt; &lt;pre&gt;scheduletest:&lt;br /&gt;Target started at 2009 August 06 10:36:00&lt;br /&gt;Target
      finished. Thank you for the audience.&lt;br /&gt;ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 15 Sekunden)&lt;/pre&gt; &lt;p class="bodytext"&gt;Nun exakte zwei Minuten später die Aktualisierung: &lt;/p&gt; &lt;pre&gt;scheduletest:&lt;br /&gt;Target started at 2009 August 06 10:38:00&lt;br /&gt;Target finished. Thank you for the audience.&lt;br /&gt;ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 15 Sekunden)&lt;/pre&gt; &lt;p class="bodytext"&gt;Das war es auch schon. Der Test für die ersten Schritte
      war erfolgreich. Am besten wird der CronJob nun wieder in den Optionen deaktiviert... &lt;/p&gt; &lt;h4&gt;Ein Job beim IDE Start&lt;/h4&gt; &lt;p class="bodytext"&gt;Wenn man das selbe Script auch beim Hochfahren der IDE starten will, muss man dieses in den Optionen im zweiten Eingabefeld eintragen. Allerdings verlassen wir damit die reguläre CronJob-Syntax. Die erste Angabe ist ausschließlich eine Duration Angabe: &lt;/p&gt; &lt;pre&gt;2m ANT "{user.home}/jobs/test.xml" scheduletest&lt;/pre&gt;
      &lt;p class="bodytext"&gt;Damit uns der erste Test nicht reinpfuscht, kommentieren wir im darüber liegenden Feld (für die CronJobs) die Testzeile mit einem # aus. &lt;/p&gt; &lt;p class="bodytext"&gt;Nicht die angehakte Checkbox vergessen, mit [Ok] bestätigen und mal in das CronJob Ausgabefenster schauen. Folgende Zeilen sind hinzugekommen: &lt;/p&gt; &lt;pre&gt;Starting ANT {user.home}/jobs/test.xml scheduletest &lt;br /&gt;Starting succeeded ANT {user.home}/jobs/test.xml scheduletest &lt;br
      /&gt;Starting ANT {user.home}/jobs/test.xml scheduletest &lt;br /&gt;Starting succeeded ANT {user.home}/jobs/test.xml scheduletest &lt;br /&gt;Starting ANT {user.home}/jobs/test.xml scheduletest &lt;br /&gt;Starting succeeded ANT {user.home}/jobs/test.xml scheduletest &lt;br /&gt;Stopping tasks for the schedulerScheduler stopped.&lt;br /&gt;Try to start scheduler&lt;/pre&gt; &lt;p class="bodytext"&gt;Die Starting-Zeilen sind noch vom letzten Test. Die letzte Zeile verwundert erst. Es fehlt eine
      Angabe von neuen Taskeinplanungen. Aber tatsächlich ist das nicht falsch. Denn für den Neustart eingerichtete Jobs werden erst bei dem Start der IDE aktiviert. Im Moment läuft die IDE ja schon eine Weile. &lt;/p&gt; &lt;p class="bodytext"&gt;Also die IDE beenden und neu starten. &lt;/p&gt; &lt;p class="bodytext"&gt;... &lt;/p&gt; &lt;p class="bodytext"&gt;Wieder da? Gut. &lt;/p&gt; &lt;p class="bodytext"&gt;Unmittelbar sieht man nun im CronJob-Ausgabefenster dies hier: &lt;/p&gt; &lt;pre&gt;Try to
      start scheduler&lt;br /&gt;Initializing 1 startup tasks for the scheduler...&lt;br /&gt; Scheduler started.&lt;/pre&gt; &lt;p class="bodytext"&gt;Na also, ein Startup-Task wurde eingerichtet. Und zwei Minuten später die bekannte Testausgabe: &lt;/p&gt; &lt;pre&gt;scheduletest:&lt;br /&gt;Target started at 2009 August 06 10:51:00&lt;br /&gt;Target finished. Thank you for the audience.&lt;br /&gt;ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 15 Sekunden)&lt;/pre&gt; &lt;p class="bodytext"&gt;Damit
      funktionieren auch die Startup-Jobs. &lt;/p&gt; &lt;h4&gt;Ein Job beim IDE beenden&lt;/h4&gt; &lt;p class="bodytext"&gt;Jobs, die beim Beenden aktiviert werden, benötigen gar keine Zeitangabe mehr. Wer will schon länger auf den Feierabend warten, als es nötig ist? &lt;/p&gt; &lt;p class="bodytext"&gt;Wieder in den CronJob-Optionen kommt in das letzte Feld diese Zeile: &lt;/p&gt; &lt;pre&gt;ANT "{user.home}/jobs/test.xml" scheduletest&lt;/pre&gt; &lt;p class="bodytext"&gt;Nun mal die IDE schließen.
      Unmittelbar erscheint ein Dialog "IDE beenden", in dem sind zwei Prozesse aufgelistet: &lt;/p&gt; &lt;pre&gt;Prozess - Run 1 shutdown task(s)&lt;br /&gt;test (scheduletest)&lt;/pre&gt; &lt;pre&gt;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; [IDE beenden]&#160; [Abbrechen]&lt;/pre&gt; &lt;p class="bodytext"&gt;Wenn man nun geduldig wartet ist die IDE 15 Sekunden später weg vom Fenster. Ungeduldigerweise könnte man auf [IDE beenden] klicken. Der aktuelle Ant-Task
      (und alle weiteren) würden abgebrochen werden. Mit [Abbrechen] beendet sich die IDE nicht. Aber es würden trotzdem alle Shutdown-Jobs weiter eingeplant laufen (das kann zu dem Zeitpunkt nicht mehr verhindert werden)! &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Soweit erstmal die wichtigsten Tipps zum neuen CronJob-Plugin. In einem zweiten Teil gehe ich auf die projektbezogenen Ant Jobs ein. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p
      class="bodytext"&gt;*) Zur Preisfrage: Nur einmal jede Stunde in der 31. Minute, nicht um :31 und :01! Wenn man zur ersten und 31. Minute den Job haben will, muss man den ersten Parameter so schreiben 1,31 (ohne Leerzeichen)&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;pre&gt;&#160;&lt;/pre&gt;</description>
      <pubDate>Thu, 06 Aug 2009 07:39:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: CronJob 1.0.4: "Beim Schließen" Jobs und eigene Ant-Scripts</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_104_beim_schliessen_jobs_und_eigene_ant_scripts/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_104_beim_schliessen_jobs_und_eigene_ant_scripts/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/nbcronjob-small.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans CronJob Scheduler" height="120" width="120" alt="NetBeans CronJob Scheduler" /&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Die Version 1.0.4 hat gleich einiges zu bieten.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Unterstützung für alle bekannten offiziellen Projekttypen (z.B. PHP, Web, J2EE, Grrovy, Ruby, NetBeans
      Plugins und Module)&lt;/li&gt;&lt;li&gt;Für das Schließen eines Projekts können nun auch Jobs eingeplant werden (die auch alle beim Runterfahren der IDE ausgeführt werden)&lt;/li&gt;&lt;li&gt;Man darf nun für jedes Projekt (auch für nicht Ant-Build basierte Projekte) eine eigenes Ant-Script angeben.&lt;/li&gt;&lt;li&gt;Mehrere Targets pro Ant Job (mit Komma trennen - ohne Leerzeichen), z.B.: clean,compile&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Damit ist von meiner Seite das CronJob-Plugin
      nahezu Feature complete. Wenn noch weitere Wünsche bestehen, würde ich mich freuen, wenn entsprechende Diskussionen auf der &lt;a title="Opens external link in new window" href="http://kenai.com/projects/nbcronjob" target="_blank" class="external-link-new-window"&gt;Projekt-Homepage&lt;/a&gt; starten würden. &lt;/p&gt; &lt;p class="bodytext"&gt;Hier noch ein paar Screen shots (natürlich mit dem &lt;a href="http://www.sepix.de/blogs/blogrittner/category/tutorial_builder/index.html"
      class="external-link-new-window" title="Opens external link in new window"&gt;Tutorial Builder&lt;/a&gt; erstellt): &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobProjectOptions-1.0.4.PNG" alt="" height="433" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Hier die Auswahl eines eigenen Scripts in einem PHP-Projekt: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img
      src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobProjectOptions-php-1.0.4.PNG" alt="" height="420" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Der Download des Binaries erfolgt im &lt;a title="Opens external link in new window" href="http://kenai.com/projects/nbcronjob/downloads/directory/Binaries/1.0.4" target="_blank" class="external-link-new-window"&gt;Download-Bereich&lt;/a&gt; des Projektes. Wer schon ältere Versionen hat, checkt einfach mal auf Updates (im Hilfe Menü der IDE).
      &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Wed, 05 Aug 2009 14:01:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: CronJob 1.0.3 - Cronjobs für individuelle Projekte</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_103_cronjobs_fuer_individuelle_projekte/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_103_cronjobs_fuer_individuelle_projekte/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/nbcronjob-small.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans CronJob Scheduler" height="120" width="120" alt="NetBeans CronJob Scheduler" /&gt;Nun ist ein wichtiger Teil der Kür geschafft.&lt;br /&gt;&lt;br /&gt;Jetzt können für JavaSE - Projekte Cronjobs und "Beim-Öffnen" Jobs für Ant Targets definiert werden. "Beim Schließen" folgt noch (das ist etwas
      komplizierter).&lt;br /&gt;&lt;br /&gt;Auf &lt;a href="http://kenai.com/projects/nbcronjob" target="_blank" class="postlink"&gt;kenai.com&lt;/a&gt; ist alles aktualisiert, AutoUpdate-Center hat auch die aktuelle Version.Dort findet sich im Download-Bereich das Binary und im Wiki ein Screenshot. &lt;/p&gt; &lt;p class="bodytext"&gt;Es ist übrigens auch eine nette Studie für Entwickler, die herausfinden wollen, wie man bestehende Projekt-Typen sowie geöffnete Projekte abfragt und erweitert. Die Doku
      dazu ist nämlich recht spärlich oder besser gesagt: sehr dünn im Internet verteilt...&lt;/p&gt;</description>
      <pubDate>Tue, 04 Aug 2009 15:24:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: CronJob 1.0.2: Startup- und Shutdown-Jobs</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_102_startup_und_shutdown_jobs/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_102_startup_und_shutdown_jobs/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/nbcronjob-small.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans CronJob Scheduler" height="120" width="120" alt="NetBeans CronJob Scheduler" /&gt;Die aktuelle Version 1.0.2 bietet nun Startup- und Shutdown-Jobs an. Startup-Jobs benötigen eine Zeitangabe in Minuten oder Stunden nach dem Starten der NetBeans IDE und Shutdown-Tasks ausschließlich nur den ANT-Befehl.
      &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Hier der neue Optionen-Dialog: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobOptions-1.0.2.JPG" alt="" height="523" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn Shutdown-Jobs beim Beenden von NetBeans angestoßen werden, sieht das folgendermaßen aus: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobShutDown-1.0.2.PNG" alt="" height="334"
      width="766" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Um das vernünftig zu testen, kann man mal folgendes Ant-Script verwenden: &lt;/p&gt; &lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;project name="test" basedir="."&gt;&lt;br /&gt; &amp;lt;description&gt;Builds the module suite sXprjsched-suite.&amp;lt;/description&gt;&lt;br /&gt; &amp;lt;target name="run"&gt;&lt;br /&gt; &amp;lt;tstamp&gt;&lt;br /&gt; &amp;lt;format property="start" pattern="yyyy MMMM dd HH:mm:ss"
      locale="en"/&gt;&lt;br /&gt; &amp;lt;/tstamp&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;echo message="Task started at ${start}"/&gt;&lt;br /&gt; &amp;lt;sleep seconds="15"/&gt;&lt;br /&gt; &amp;lt;echo message="Task finished. Thank you for the audience."/&gt;&lt;br /&gt; &amp;lt;/target&gt;&lt;br /&gt;&amp;lt;/project&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Ich hoffe damit sind erstmal die wichtigsten Features implementiert. Der Sourcecode wurde auf kenai.com aktualisiert. Das Projekt findet sich &lt;a
      title="kenai.com nbcronjob" href="http://kenai.com/projects/nbcronjob" target="_blank" class="external-link-new-window"&gt;hier&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Wer die Version 1.0.1 schon hat, erhält das Update im Auto-Update Center. Ansonsten biete ich &lt;a href="http://www.sepix.de/fileadmin/nbcronjobs/org-sepix-projectscheduler.nbm" class="download" title="Initiates file download"&gt;hier einen Download des Plugins&lt;/a&gt; an. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn weitere
      Änderungen gewünscht werden, kann man sich ja als Developer in dem kenai-Projekt anmelden. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Mon, 03 Aug 2009 12:01:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: CronJob Scheduler 1.0.1 für NetBeans</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_scheduler_101_fuer_netbeans/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_cronjob_scheduler_101_fuer_netbeans/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin!&lt;img src="http://www.sepix.de/fileadmin/nbcronjobs/nbcronjob-small.png" style="padding-bottom: 10px; padding-left: 10px; float: right;" title="NetBeans CronJob Scheduler" height="120" width="120" alt="NetBeans CronJob Scheduler" /&gt; &lt;/p&gt; &lt;p class="align-right"&gt;Die Idee hatte lothorien (&lt;a title="Twitter" href="https://twitter.com/lothorien" target="_blank" class="external-link-new-window"&gt;Twitter&lt;/a&gt;) in diesem &lt;a
      title="NetBeans Forum" href="http://www.netbeans-forum.de/viewtopic.php?f=9&amp;amp;t=3133&amp;amp;start=0" target="_blank" class="external-link-new-window"&gt;Forums-Eintrag&lt;/a&gt;. Die Umsetzung dauerte ungefähr 3h (ohne Doku zu schmökern, ohne Mittagspause und ohne andere wichtige Arbeiten ;-)).&lt;/p&gt; &lt;p class="bodytext"&gt;Nun kann man in den Optionen CronJobs für Ant-Scripte einrichten. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;&lt;img
      src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobOptions.PNG" alt="" height="419" width="722" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Die Syntax ist gleich den normalen CronJobs, die man von Unix/Linux kennt. Der Befehl ANT muss folgen, dann das Ant-Script. In geschweiften Klammern sind alle System-Properties erlaubt. Letzter Parameter ist das Target. &lt;/p&gt; &lt;p class="bodytext"&gt;Als Scheduler verwende ich &lt;a title="Cron4j"
      href="http://www.sauronsoftware.it/projects/cron4j/index.php" target="_blank" class="external-link-new-window"&gt;Cron4j&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man diese Ant-Script verwendet: &lt;/p&gt; &lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;project name="test" basedir="."&gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;description&gt;Builds the module suite sXprjsched-suite.&amp;lt;/description&gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;target
      name="build"&gt;&lt;br /&gt; &amp;lt;tstamp&gt;&lt;br /&gt; &amp;lt;format property="start" pattern="yyyy MMMM dd HH:mm:ss" locale="en"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;/tstamp&gt;&lt;br /&gt; &amp;lt;echo message="Task started at ${start}"/&gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;/target&gt;&lt;br /&gt;&amp;lt;/project&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Gibt es minütlich (soweit natürlich eingerichtet) diese Ausgabe: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img
      src="http://www.sepix.de/fileadmin/nbcronjobs/cronJobOutput.PNG" alt="" height="119" width="474" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Und nicht vergessen: In den Optionen auch den Scheduler aktivieren! &lt;/p&gt; &lt;p class="bodytext"&gt;Download: &lt;a href="http://www.sepix.de/fileadmin/nbcronjobs/org-sepix-projectscheduler.nbm" class="download" title="Initiates file download"&gt;CronJob Scheduler&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;AutoUpdate-Center ist gleich mit dabei.
      &lt;/p&gt; &lt;p class="bodytext"&gt;Lokalisierung in Deutsch und Englisch. Über Feedbacks würde ich mich freuen. Lizenz wird LGPL werden. &lt;/p&gt; &lt;h3&gt;Kenai.com&lt;/h3&gt; &lt;p class="bodytext"&gt;Das Projekt ist nun auf &lt;a title="NbCronJob on kenai" href="http://kenai.com/projects/nbcronjob" target="_blank" class="external-link-new-window"&gt;kenai.com&lt;/a&gt; gehostet. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Fri, 31 Jul 2009 13:43:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Tutorial Builder 1.06: Options, Lens-Werkzeug, verbessertes Clipping</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_106_options_lens_werkzeug_verbessertes_clipping/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_106_options_lens_werkzeug_verbessertes_clipping/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Wieder ein kleines Update für den Tutorial Builder. Ich freue mich über jedes Feedback! &lt;/p&gt; &lt;h3&gt;Updatehinweise&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Das AutoUpdate erzwingt nun ein Neustart der IDE (geht nicht anders, da die Service-API verwendet wird).&lt;/li&gt;&lt;li&gt;Man kann nun zwischen drei verschiedenen Vergrößerungswerkzeugen aussuchen. Dafür habe ich den DropDownToggleButton von NetBeans etwas
      umgestrickt (die NetBeans-Variante kam nur mit horizontalen Toolbars klar)&lt;/li&gt;&lt;li&gt;Das Hinweisfenster kann nun dauerhaft deaktiviert werden. Um das Hinweisfenster wieder anzuzeigen, gibt es eine Einstellung in den Optionen.&lt;/li&gt;&lt;li&gt;Im Hinweisfenster habe ich mir erlaubt einen Link zu diesem Blog zu setzen, damit bekommt man schnell die neuesten Infos.&lt;/li&gt;&lt;li&gt;Das Statusleisten-Icon hat sich ein wenig verändert&lt;/li&gt;&lt;li&gt;Wenn man im Regionen-Navigator
      mehrere Well-Known-Areas (mit der Strg-Taste) auswählt, kann man nun diese gemeinsam in ein neues Bild zuschneiden. So kann man Toolbars, Menüs und Modes gemeinsam auf ein Screenshot bannen.&lt;/li&gt;&lt;li&gt;Es gibt eine weitere Drucktastenkombination. &lt;ul&gt;&lt;li&gt;Druck (Prinstcreen) macht eine Kopie des kompletten Desktops&lt;/li&gt;&lt;li&gt;Alt+Druck macht eine Kopie des NetBeans Anwendungsfenster&lt;/li&gt;&lt;li&gt;Strg+Druck erzeugt ein Bildschirmfoto des aktiven Fensters der
      NetBeans-Anwendung (praktisch für modale Dialoge)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Der Kopie-Bereich "blitzt" nun beim Screenshot auf.&lt;/li&gt;&lt;li&gt;Die Vorschau hat nun eine verbesserte Darstellung, wenn der Screenshot verkleinert dargestellt wird&lt;/li&gt;&lt;li&gt;Es gibt ein Optionsdialog für den Tutorial Builder&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;In den Optionen wird man nun die Einstellungen des Tutorial Builders finden. Ich habe mich dazu entschlossen eine
      Hauptkategorie zu erstellen, da ich selbst für den Tutorial Builder jede Menge Unter-Registerzungen habe. &lt;/p&gt; &lt;p class="bodytext"&gt;In der Unterkategorie Darstellung können grundlegende Einstellungen vorgenommen werden: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Options_%28standard%29.PNG" alt="" height="530" width="498" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Wie man sieht, ist es nun möglich, die
      Tastenkombinationen für die unterschiedlichen Screenshot-Aktionen einzustellen. Da einige Tasten nicht einfach einzugeben sind, muss man den [...] Button dafür verwenden. Ansonsten einfach in das Textfeld Klick und z.B. Strg+F10 drücken. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Options__shortcuts_.PNG" alt="" height="94" width="647" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Die Einstellung für den Doppelklick auf das
      Statusleistensymbol wird im nächsten Update aktiviert. Das ist noch nicht fertig geworden. &lt;/p&gt; &lt;p class="bodytext"&gt;In der zweiten Unterkategorie "Werkzeuge" werden in Zukunft alle Optionen der Werkzeuge des Vorschaufensters vereinigt. Im Moment ist dort nur das Lens-Werkzeug. Die anderen bestehenden Werkzeuge (Zuschneiden usw.) werden noch umprogrammiert... &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img
      src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Options_%28tools%29.PNG" alt="" height="530" width="498" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Durch die Erweiterung mit Optionen und Werkzeugeinstellungen gab es ziemlich große Umstellungen im Quelltext. Aber so kann jedes Werkzeug in Zukunft seine Einstellungen global registrieren, die ich dann im Options-Dialog anzeige. &lt;/p&gt; &lt;h3&gt;Bekannte Probleme&lt;/h3&gt; &lt;p class="bodytext"&gt;Move-Up und Move-Down der
      Screenshots aktualisieren immer noch nicht die Selektion... &lt;/p&gt; &lt;p class="bodytext"&gt;Java 1.6 ist Voraussetzung. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man nun die Screenshots mit den Pfeiltasten sortiert, aktualisiert sich nicht korrekt die Selektion der Screenshots. &lt;/p&gt; &lt;p class="bodytext"&gt;Es gibt neuerdings eine Racecondition bei der Darstellung des Screenshots. Manchmal vergrößert sich die Vorschau nicht vollständig. Workaround: In der Galerie deselektieren und wieder
      selektieren. Ich habe da zu viel optimiert und es scheint nicht 100% Threadsafe zu sein. &lt;/p&gt; &lt;p class="bodytext"&gt;Es ist noch nicht alles 100% in Deutsch/Englisch übersetzt.&lt;/p&gt; &lt;h3 class="bodytext"&gt;Download&lt;/h3&gt; &lt;p class="bodytext"&gt;Das Update ist im Update-Center seit gestern verfügbar. Ansonsten gilt wie immer: &lt;a href="http://www.sepix.de/fileadmin/tutorialbuilder/org-sepix-tutorialbuilder.nbm" class="download" title="Initiates file download"&gt;Dieser
      Download-Link&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Thu, 30 Jul 2009 06:44:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Tutorial Builder 1.05: Hoover, Toolbars und Statusline</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_105_hoover_toolbars_und_statusline/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_105_hoover_toolbars_und_statusline/index.html</link>
      <description>&lt;p class="bodytext"&gt;Hi! &lt;/p&gt; &lt;h3&gt;Updateinformation&lt;/h3&gt; &lt;p class="bodytext"&gt;Mit dem Update auf 1.0.5 werden ein paar nützliche Features hinzugefügt. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Gallery_1.05.jpg" alt="" height="314" width="640" /&gt; &lt;/p&gt; &lt;h4&gt;Regionen Viewer&lt;/h4&gt; &lt;p class="bodytext"&gt;Was ursprünglich eine Combobox war ist nun zu einer JList mutiert
      und hat einen eigenen Bereich rechts neben dem Vorschaubild erhalten. Man kann den Regionen Viewer auch ausblenden, wenn er zu&#160;viel Platz verbraucht. &lt;/p&gt; &lt;p class="bodytext"&gt;Der Vorteil ist, dass man einfach schneller einen bekannten Bereich auswählen kann, um diesen zuzuschneiden. &lt;/p&gt; &lt;h4&gt;Mouse Gestures&lt;/h4&gt; &lt;p class="bodytext"&gt;Der Doppelklick wird nun massiv unterstützt. Doppelklick in den Regionen-Viewer und Doppelklick auf ein angezeigtes Areal im
      Vorschaubild erzeugen immer einen neuen Zuschnitt. Schneller geht es jetzt wohl nicht mehr. &lt;/p&gt; &lt;h4&gt;Hoover&lt;/h4&gt; &lt;p class="bodytext"&gt;Es gibt einen Hoover-Effekt, den man mit dem neuen Werkzeug im Regionen-Viewer aktivieren kann. Wenn das Werkzeug aktiv ist, wird unter der Maus ein hellgrüner Bereich dargestellt und wechselweise mit dem Region-Viewer synchronisiert. Somit kann man im Vorschaufenster eine Zuschnittsregion sehr schnell ausmachen und per Doppelklick
      herausschneiden. &lt;/p&gt; &lt;h4&gt;Toolbars und Statusbar&lt;/h4&gt; &lt;p class="bodytext"&gt;Der Regionen-Viewer zeigt nun auch alle Toolbars und die Statusleiste mit ihren Elementen an. Somit kann man jede Toolbar für sich ausschneiden. Auch auf Wunsch jedes einzelne Statusline-Element. &lt;/p&gt; &lt;h4&gt;Lupe&lt;/h4&gt; &lt;p class="bodytext"&gt;Die Lupe blendet sich nun automatisch aus, wenn die Maus das Vorschaufenster verlässt. &lt;/p&gt; &lt;h3&gt;Bekannte Probleme&lt;/h3&gt; &lt;p
      class="bodytext"&gt;Wenn man mehrere Screenshots auf einmal speichert, wird die Ersetzungsregel im Speicherdialog verwendet. Allerdings kann das im Moment zu Problemen führen, wenn die Bereichsnamen Sonderzeichen enthalten (z.B. das Property-Fenster, wenn man Favoriten markiert hat). Man muss dann diese Screenshots einzeln mit selbst festgelegten Namen exportieren. &lt;/p&gt; &lt;p class="bodytext"&gt;Move-Up und Move-Down der Screenshots aktualisieren immer noch nicht die Selektion... &lt;/p&gt;
      &lt;p class="bodytext"&gt;Java 1.6 ist Voraussetzung. &lt;/p&gt; &lt;p class="bodytext"&gt;Es gibt noch keine Optionsdialog. &lt;/p&gt; &lt;p class="bodytext"&gt;Schließt man dass Hinweisfenster erscheint es nach Neustart der IDE. &lt;/p&gt; &lt;h3&gt;Download&lt;/h3&gt; &lt;p class="bodytext"&gt;Der &lt;a href="http://www.sepix.de/fileadmin/tutorialbuilder/org-sepix-tutorialbuilder.nbm" class="download" title="Initiates file download"&gt;Download erfolgt hier&lt;/a&gt;. Ansonsten bekommt man die
      aktuelle Version auch im AutoUpdate-Center. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Jul 2009 12:45:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Tutorial Builder 1.04 mit neuen Features</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_104_mit_neuen_features/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_104_mit_neuen_features/index.html</link>
      <description>&lt;p class="bodytext"&gt;Hi! &lt;/p&gt; &lt;h3&gt;Updatehinweise&lt;/h3&gt; &lt;p class="bodytext"&gt;Der Tutorial Builder in der Version 1.04 hat ein paar neue Features erhalten. Zusätzlich wurde die interne Umsetzung der Galerie von einer Swing-JList in eine ListView Komponente mit Nodes umgestellt. Der NodeRenderer bereitete mir zwar einige graue Haare, aber nun geht es.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Mit der Umstellung sind nun die Toolbar-Actions der Galerie nun echte
      NetBeans-Actions, die man in der layer.xml konfigurieren kann. Außerdem werden nun ausgewählte Screenshots in dem Property-Fenster angezeigt. Die Entfernen-Action ist mit der Entf (Delete) - Taste verknüpft. Auch die Verschieben-Actions haben Tastenkürzel. Infos zeigen die Tooltips dazu an. &lt;/p&gt; &lt;p class="bodytext"&gt;Aber auch bei der Erkennung von "Well-Known-Areas" gibt es Fortschritte. Nun werden alle Popup-Menus (Menüs bei rechter Maustaste) erkannt. Inkl. der HeavyWeight Menüs, die aus
      dem Fenster herausragen. Auch dort kann man nun echte Clipping-Areas als Zuschnitt verwenden. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Statusbar-Menu.PNG" alt="" height="149" width="481" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Das Menü in der Statusleiste hat Zuwachs bekommen: Man kann nun das Hauptfenster in bestimmte Größen zwingen. Ein paar Vorgaben hat das Menü, aber man darf auch eigene Pixel-Breiten/Höhen in einem
      Dialog festlegen. Sinn dieser Funktion ist es, einheitliche Hauptfenstergrößen für Tutorials zu erreichen. Gerade in Blogs möchte man z.B. nur exakte 800px Breite haben, und das möglichst über mehrere Tutorials hinweg. &lt;/p&gt; &lt;p class="bodytext"&gt;Die ComboBox mit den Well-Known Regionen nimmt nicht mehr die komplette Vorschaubreite ein. Außerdem habe ich teilweise einen Wunsch von "&lt;a href="http://www.netbeans-forum.de/memberlist.php?mode=viewprofile&amp;amp;u=1133"
      target="_blank"&gt;Arno.Nyhme&lt;/a&gt;" aufgenommen. Wenn man mit der Maus über die ComboBox-Einträge wandert, wird der Hoover-Bereich im Vorschaufenster markiert. Für die Mausbewegung über der Vorschau wird ein Hoover, in einem zukünftigen Update, noch hinzugefügt (den müsste man dann aber explizit aktivieren). &lt;/p&gt; &lt;p class="bodytext"&gt;Ein weiterer Wunsch war, den manuellen Zuschnitt sofort per Doppelklick durchzuführen. Auch das ist implementiert. &lt;/p&gt; &lt;h3&gt;Bekannte
      Probleme&lt;/h3&gt; &lt;p class="bodytext"&gt;Einen Backport zu Java 1.5 ist leider noch nicht möglich. Eine statische Methode&#160;Frame.getWindows() wird benötigt, um die HeavyWeight-Popup-Menüs und Dialog-Fenster zu finden. Ich weiß leider noch nicht, wie man das in 1.5 abbilden könnte. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man nun die Screenshots mit den Pfeiltasten sortiert, aktualisiert sich nicht korrekt die Selektion der Screenshots. Wird bestimmt im nächsten Update korrigiert. &lt;/p&gt;
      &lt;p class="bodytext"&gt;Toolbars werden noch nicht als bekannte Bereiche erkannt. &lt;/p&gt; &lt;p class="bodytext"&gt;Das Hilfefenster aktualisiert auf manchen Systemen nicht die kontextsensitiven Hilfen. Da läuft noch was mit dem Laden des ServiceProviders schief. Wird in 1.0.5 korrigiert. Ärgerlich ist, dass das in der Testuserdir-Umgebung funktioniert, nur nicht deterministisch in der IDE... &lt;/p&gt; &lt;h3&gt;Noch ein paar Tipps zur Version 1.0.3 und 1.04: &lt;/h3&gt; &lt;p
      class="bodytext"&gt;Man kann alternative Tastenkürzel hinzufügen: Tools -&gt; Options -&gt; Keymap. Nach "Bild" (oder "Screen" in der englischen Version) suchen und dann einen Shortcut hinzufügen. Dann kann man zusätzlich zu Printscreen andere Tasten verwenden. Die über die Keymap konfigurierten Tasten funktionieren aber nicht in modalen Dialogen. Dann muss man doch die Bildschirm-Druck Taste verwenden. &lt;/p&gt; &lt;p class="bodytext"&gt;Man kann einen Screenshot auch mit Doppelklick auf das
      Kamerasymbol in der Statusleiste auslösen. &lt;/p&gt; &lt;h3&gt;Update/Download&lt;/h3&gt; &lt;p class="bodytext"&gt;Wer die älteren Version 1.0.2 und 1.0.3 hatte, erhält das Update über das AutoUpdate-Center. Ansonsten gilt immer noch &lt;a href="http://www.sepix.de/fileadmin/tutorialbuilder/org-sepix-tutorialbuilder.nbm" class="download" title="Initiates file download"&gt;dieser Download-Link&lt;/a&gt;. &lt;/p&gt; &lt;h3&gt;Infos im Blog&lt;/h3&gt; &lt;p class="bodytext"&gt;Ich habe die
      Blog-Einträge zu dem Tutorial-Builder unter einer Blog-Kategorie zusammengefasst. Alle Aktualisierungen finden sich unter diesem Link: &lt;a href="http://www.sepix.de/blogs/blogrittner/category/tutorial_builder/index.html" class="external-link-new-window" title="Tutorial Builder Blog Entries"&gt;TutorialBuilder&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 21 Jul 2009 09:55:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: Tutorial Builder 1.03 verfügbar</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_103_verfuegbar/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_tutorial_builder_103_verfuegbar/index.html</link>
      <description>&lt;p class="bodytext"&gt;Moin! &lt;/p&gt; &lt;p class="bodytext"&gt;Die neue Version des Tutorial Builders ist verfügbar. &lt;/p&gt; &lt;p class="bodytext"&gt;Änderungen: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Neben der Snapshot Kamera in der Statusleiste wird die Anzahl der Bilder in der&#160;Galerie angezeigt.&lt;/li&gt;&lt;li&gt;Nach einem Snapshot gibt es eine kurze Info in der Statusleiste&lt;/li&gt;&lt;li&gt;Lokalisierung in Deutsch (teilweise!)&lt;/li&gt;&lt;li&gt;Lupe mit 4-facher
      Vergrößerung für die Bildervorschau, wenn man mit der Maus drüber wandert&lt;/li&gt;&lt;li&gt;Und das Wichtigste:&lt;br /&gt;Manuelle Zuschnitte mit der Maus&lt;/li&gt;&lt;li&gt;Da das Ausschnittswerkzeug einer Erklärung bedarf, gibt es noch oben drauf (zum selben Preis!) eine kontextsensitive Hinweisbox. Das manuelle Zuschneiden hat nämlich noch zwei Tastaturbefehle, die mit der Hinweisbox erklärt werden.&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Alle, die schon Version 1.02 haben, erhalten das
      Update über das Auto-Update Center. Einfach in dem IDE Hilfe Menü nach Updates suchen. &lt;/p&gt; &lt;p class="bodytext"&gt;Für Neueinsteiger gilt wie immer dieser Link: &lt;a href="http://www.sepix.de/fileadmin/tutorialbuilder/org-sepix-tutorialbuilder.nbm" class="download" title="Initiates file download"&gt;Download Tutorial Builder&lt;/a&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Fri, 17 Jul 2009 13:10:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: Extensionpoints für Actions</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_extensionpoints_fuer_actions/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_extensionpoints_fuer_actions/index.html</link>
      <description>&lt;p class="bodytext"&gt;Der Begriff Extension Point wird in der Eclipse Welt so inflationär&#160;verwendet, dass man meinen könnte in der NetBeans Platform würde so etwas nicht existieren. Dabei ist das nicht richtig, im Gegenteil. Es gibt so viele Möglichkeiten, dass man als Modulentwickler schon mal etwas überfordert ist. &lt;/p&gt; &lt;p class="bodytext"&gt;Möchte man selber Extension Points anbieten, muss man sich sowieso zwangsläufig damit beschäftigen. Aber es ist einfacher als
      man denkt. Der Modul-Assistent legt bei Wunsch schon eine deklarative Schnittstelle an, in der man eigene Objekte global registrieren kann. Die globalen Bekanntmachungen können von anderen Modulen aufgegriffen, erweitert und sogar ausgeblendet werden. Umgekehrt habe ich aus meinem Modul die Möglichkeit auch anderen Modulen in die Registrierung einzugreifen (Menüs ausblenden oder neue hinzufügen, Tastenkürzel anpassen, Toolbars verändern, Paletten anreichern, Lokalisierungen vornehmen, usw usf.).
      &lt;/p&gt; &lt;p class="bodytext"&gt;Hier geht es aber mal erstmal darum selber Extension-Points anzubieten. &lt;/p&gt; &lt;p class="bodytext"&gt;Wie schon gesagt, auf Wunsch wird eine XML-Datei zum Modul erzeugt und diese XML-Datei als deklarativer Ansprungspunkt registriert. Die Info, dass es eine (sogenannte) Layer Datei gibt, erfolgt in der MANIFEST.MF: &lt;/p&gt; &lt;pre&gt;OpenIDE-Module-Layer: org/sepix/tutorialbuilder/layer.xml&lt;/pre&gt; &lt;p class="bodytext"&gt;Damit muss eine Datei
      namens layer.xml im Paket org.sepix.tutorialbuilder existieren. Diese Datei enthält zunächst nur den Struktureintrag &amp;lt;filesystem&gt;&amp;lt;/filesystem&gt;. &lt;/p&gt; &lt;p class="bodytext"&gt;In meinem (gar nicht so fiktiven) Modul habe ich ein Icon in der Statusleiste registriert und möchte dort per Mausklick ein Popup-Menu darstellen. Das möchte ich selbst einfach aufbauen können und auch anderen Entwicklern die Möglichkeit bieten dieses Menü zu erweitern/verändern. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Ich füge dafür folgende Einträge zwischen &amp;lt;filesystem&gt;&amp;lt;/filesystem&gt; ein: &lt;/p&gt; &lt;pre&gt;&#160;&#160;&#160; &amp;lt;folder name="org-sepix-tutbuilder"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;folder name="Menu"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Es bietet sich immer an, für ein Modul als Root-Folder den eigenen Paket-Namen zu
      verwenden. Ansonsten kommt es ggf. zu unerwünschten Überdeckungen in der globalen Registry. Schließlich werden alle Layer-Dateien aller aktiven Module zu einem großen globalen Lookup zusammengestellt. &lt;/p&gt; &lt;p class="bodytext"&gt;Irgendwo in meinem Modul gibt es nun einen MouseListener, der darauf wartet, dass der Anwender das Statusleisten-Icon anklickt. Dann baue ich eine Popup-Menü zusammen: &lt;/p&gt; &lt;pre&gt;&#160;&#160;&#160; JPopupMenu menu = new JPopupMenu();&lt;br
      /&gt;&#160;&#160;&#160; Lookup lookup = Lookups.forPath("org-sepix-tutbuilder/Menu");&lt;br /&gt;&#160;&#160;&#160; for (Action a : lookup.lookupAll (Action.class)) {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; menu.add(new JMenuItem (a));&lt;br /&gt;&#160;&#160;&#160; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Der Aufruf Lookups.forPath("org-sepix-tutbuilder/Menu") liefert mir umgehend ein Lookup (das ist ein "Korb" von Objekten) auf mein Menu-Folder. Mit lookupAll (Action.class) will ich aus dem "Korb"
      nun alle Objekte mit der Super-Klasse javax.swing.Action. Aus den Actions bastele ich mit Menü-Einträge und füge diese dem Popup-Menü hinzu. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn ich nicht nur Actions in dem Folder habe, sondern auch andere Objekte, sieht das nur unwesentlich komplizierter aus: &lt;/p&gt; &lt;pre&gt;&#160;&#160;&#160; JPopupMenu menu = new JPopupMenu();&lt;br /&gt;&#160;&#160;&#160; Lookup lookup = Lookups.forPath("org-sepix-tutbuilder/Menu");&lt;br /&gt;&#160;&#160;&#160;
      Collection c = lookup.lookupAll (Object.class);&lt;br /&gt;&#160;&#160;&#160; for (Object next : c) {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; if (next instanceof Action) {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; JMenuItem item = new JMenuItem ((Action)next);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; menu.add(item);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; } else if (next instanceof JSeparator) {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; JSeparator item =
      (JSeparator)next;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; menu.add(item);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Mit lookupAll (Object.class) muss ich mich dann aber selber darum kümmern, welche Objekte mir in der Collection angeboten werden. &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn ich jetzt mein Modul teste, wird das Popup-Menü etwas traurig sein. Kein Wunder. In meiner layer.xml sind ja auch keine Actions
      vorhanden. Die werden da auch nicht direkt eingetragen. In der NetBeans Platform werden alle Actions zentral registriert. Dazu nutze ich den "New Action" Assistenten. Dieser erzeugt mir ebenfalls in meiner layer.xml einige Einträge und eine&#160;ActionListener-Klasse: &lt;/p&gt; &lt;pre&gt; &amp;lt;folder name="Actions"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;folder name="Help"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;file
      name="org-sepix-tutorialbuilder-ui-ScreenShotAction.instance"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="SystemFileSystem.localizingBundle" stringvalue="org.sepix.tutorialbuilder.Bundle"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="delegate" newvalue="org.sepix.tutorialbuilder.ui.ScreenShotAction"/&gt;&lt;br
      /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="displayName" bundlevalue="org.sepix.tutorialbuilder.ui.Bundle#CTL_ScreenShotAction"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="iconBase" stringvalue="org/sepix/tutorialbuilder/res/statusicon.gif"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
      &amp;lt;attr name="instanceCreate" methodvalue="org.openide.awt.Actions.alwaysEnabled"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="noIconInMenu" boolvalue="false"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;/file&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;/pre&gt; &lt;p
      class="bodytext"&gt;Das Attribut "delegate" verweist übrigens auf die reale Klasse ScreenShotAction die aber nichts anderes als ein Object implements ActionListener ist (also in Wirklichkeit keine javax.swing.Action). &lt;/p&gt; &lt;p class="bodytext"&gt;Wie komme ich aber an meine Action ran, die ich dem Popup-Menü hinzufügen will? Durch Magie. Oder besser gesagt, der automatischen Erstellung von Actions aus Layer.xml-Einträgen durch die NetBeans Platform. Alle global registrierten Actions werden
      nämlich auf Wunsch in echte Action-Objekte ins Leben gerufen. Das geht aber nur, wenn man sie eben in dem Root-Folder "Actions" einträgt und diese Bekanntmachungen als symbolische Links an anderen Stellen "überträgt". Damit kommen wir zu den shadow-Links. &lt;/p&gt; &lt;p class="bodytext"&gt;Also, der "New Action"-Assistent erzeugt mir eine globale Registrierung einer Klasse, die nichts anderes ist als ein ActionListener. Diese Klasse soll aber in meinem Popup-Menü liegen. Also füge ich in meinem
      Menü einen Link zu dieser globalen Registrierung ein: &lt;/p&gt; &lt;pre&gt;&#160;&#160;&#160; &amp;lt;folder name="org-sepix-tutbuilder"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;folder name="Menu"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;file name="org-sepix-tutorialbuilder-ui-ScreenShotAction.shadow"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="originalFile"
      stringvalue="Actions/Help/org-sepix-tutorialbuilder-ui-ScreenShotAction.instance"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;/file&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;br /&gt;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Und (taaaraaa) nun habe ich in meinem Popup-Menü auch eine echte Action liegen (nicht nur einen ActionListener), weil NetBeans bei shadow-Anforderungen automatisch ein Wrapper-Objekt erzeugt (was
      als Superklasse eine javax.swing.Action ist) und ActionEvents an den ActionListener delegiert. &lt;/p&gt; &lt;p class="bodytext"&gt;Das sieht ungeheuer kompliziert aus, um ein Popup aufzubauen. Aber doch auch schlüssig. Jetzt gibt es eine zentrale Deklaration von einer Action. Der Anwender findet diese in den Optionen zur Keymap wieder und darf beliebige Tastenkürzel hinzufügen. Andere Modulprogrammierer können ebenfalls diese Action manipulieren (sogar austauschen). Zusätzlich habe ich mit meinem
      Extension-Point eine Möglichkeit geboten&#160;Menüeinträge hinzufügen zu lassen. &lt;/p&gt; &lt;p class="bodytext"&gt;Denn jetzt kann ein anderes Modul in "seiner" layer.xml folgendes machen: &lt;/p&gt; &lt;pre&gt;&#160;&#160; &amp;lt;folder name="org-sepix-tutbuilder"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;folder name="Menu"&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;file name="other-company-ui-GalleryAction.shadow"&gt;&lt;br
      /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;attr name="originalFile" stringvalue="Actions/Window/other-company-ui-GalleryAction.instance"/&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;lt;/file&gt;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160; &amp;lt;/folder&gt;&lt;br /&gt;&#160;&#160; &amp;lt;/folder&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Damit ist in meinem Popup-Menü ein neuer Eintrag hinzugefügt worden. Mein Modul wurde also erweitert. Und nur so können
      eigene Entwicklungen in dem Ökosystem NetBeans Platform bestehen: Nicht durch Abkapselung, sondern durch Offenheit und Extension Points. Man kann selber die eigenen Module besser erweitern und fremde Entwickler fügen Funktionen hinzu, an die man selber vielleicht nie gedacht hatte. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Fri, 17 Jul 2009 07:17:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Plugin: NetBeans Tutorial Builder - Screen capture und Crop Tool</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_netbeans_tutorial_builder_screen_capture_und_crop_tool/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////plugin_netbeans_tutorial_builder_screen_capture_und_crop_tool/index.html</link>
      <description>&lt;p class="bodytext"&gt;In einer internen Mailingliste hatte ich es schon angekündigt. Ich entwickle ein Plugin, damit man innerhalb von NetBeans und Platform-Anwendungen sehr einfach Tutorials erzeugen kann. &lt;/p&gt; &lt;p class="bodytext"&gt;Der erste Schritt ist gemacht. Der Tutorial Builder kann nun Screenshots erzeugen und bietet eine sehr schnell zu bedienendes Crop-Tool (Ausschnitte von Screenshots). &lt;/p&gt; &lt;p class="bodytext"&gt;Nach der Installation des Plugins hat
      man in der Statusleiste einen kleinen Fotoapparat. Per Klick gibt es ein Popup-Menü mit "Gallery" und "Screen capture". Der Menüpunkt "Screen capture" kann auch über der Printscreen-Taste ausgelöst werden (auf deutschen Tastaturlayouts: Druck S-Abf...). &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Statusbar.PNG" alt="" height="63" width="247" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Der Capture wird mit einer Sekunde verzögert
      ausgeführt und steht dann in der Gallery zur Verfügung. Es können beliebig viele Screenshots erzeugt werden. Diese können in der Gallery sortiert und wieder entfernt werden. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/tutorialbuilder/Tutorial_Builder_-_Gallery.PNG" alt="" height="382" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Ein besonderes Feature ist aber der Befehl Crop. Wählt man ein Bild in der Gallery aus, erscheint dieses (ggf. verkleinert) in
      der Vorschau. Über dem Vorschau-Bild ist eine Combobox mit allen ermittelten Clipping-Regionen des NetBeans-Fensters. Einfach mal unterschiedliche Regionen auswählen. In der Vorschau erscheint dafür ein roter Rahmen. Mit dem Mausklick auf "Crop" (rechts neben der Combobox) wird dieser Ausschnitt der Gallery neu hinzugefügt. &lt;/p&gt; &lt;p class="bodytext"&gt;Für aufgeklappte Menüs bietet die Auswahl an Regionen sogar ein "nichtrechteckiges", also polygonales Clipping an, damit man keinen störenden
      Fensterhintergrund hat, wenn man Menüverschachtelungen darstellen will. &lt;/p&gt; &lt;p class="bodytext"&gt;Die so erzeugten Screenshots können auch als PNG-Dateien gespeichert werden. Alle gewünschten Bilder markieren, den Speicherbutton in der Gallery anklicken, einen Ort festlegen und speichern. Polygonale Clippings sind in den freien Bereichen transparent. &lt;/p&gt; &lt;p class="bodytext"&gt;Damit habe ich nun Meilenstein 1 erreicht. &lt;/p&gt; &lt;p class="bodytext"&gt;Mit der weiteren
      Entwicklung werden folgende Features hinzugefügt (ohne bestimmte Reihenfolge):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;[Erledigt] Manuelle Clippings (wie in einem Grafik-Programm)&lt;/li&gt;&lt;li&gt;Snapping für manuelle Clippings (auch wieder an bekannten Komponentengrenzen)&lt;/li&gt;&lt;li&gt;Umbenennen von Screenshots schon in der Gallery&lt;/li&gt;&lt;li&gt;[Angefangen] Mehrsprachigkeit&lt;/li&gt;&lt;li&gt;Hinzufügen von Kommentaren "in" den Screenshots&lt;/li&gt;&lt;li&gt;Hinzufügen von grafischen
      Elementen in den Screenshots&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Zu den Screenshots sollen Kommentare und Kurztexte sowie Sourcecode hinzuzufügen sein&lt;/li&gt;&lt;li&gt;Kommentare mit Stilen (fett, kursiv, ...)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Export der komponierten Gallery (mit Texten) als PDF, ODF (Writer und Presentation), HTML (damit wird es zum echten Tutorial Builder)&lt;/li&gt;&lt;li&gt;Export als Java Help&lt;/li&gt;&lt;li&gt;Export als NetBeans RCP
      Java-Help Projektteil&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;[Angefangen] Ausbau von Extensionpoints, damit fremde Modulentwickler zusätzliche Funktionen (z.B. Grafikbearbeitung, Exportformate) hinzufügen können.&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Und ja klar: &lt;a href="http://www.sepix.de/fileadmin/tutorialbuilder/org-sepix-tutorialbuilder.nbm" class="download" title="Initiates file download"&gt;Hier ist der Download&lt;/a&gt;. Und noch mein Disclaimer: BETA, nicht auf allen OS und
      allen NB Versionen getestet (mind. 6.7 erforderlich). Support gibt es nicht, aber ich freue mich über Feedback - auch über Fehlermeldungen. Für Mac-User eine gute Nachricht: Java-Abhängigkeit ist nun &gt;= 1.5 &lt;/p&gt; &lt;p class="bodytext"&gt;So, nun hat die aktuelle Version ein Update-Center. Für Neuerungen muss man nicht mehr immer hier ungeduldig reinschauen. Wer das Update-Center von Hand eintragen will: &lt;a
      href="http://www.sepix.de/fileadmin/tutorialbuilder/updates.xml"&gt;http://www.sepix.de/fileadmin/tutorialbuilder/updates.xml&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/july/17/plugin_tutorial_builder_103_verfuegbar/index.html" class="external-link-new-window" title="Update auf 1.03"&gt;Bitte diese Update-Hinweise beachten&lt;/a&gt; für 1.0.3. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/july/21/plugin_tutorial_builder_104_mit_neuen_features/index.html" class="external-link-new-window" title="Update auf 1.0.4"&gt;Bitte diese Update-Hinweise beachten&lt;/a&gt; für 1.0.4. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/july/22/plugin_tutorial_builder_105_hoover_toolbars_und_statusline/index.html" class="external-link-new-window" title="Update auf 1.0.5"&gt;Bitte diese
      Update-Hinweise beachten&lt;/a&gt; für 1.0.5. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Thu, 16 Jul 2009 07:15:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: ...is not the real McCoy!</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_is_not_the_real_mccoy/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_is_not_the_real_mccoy/index.html</link>
      <description>&lt;p class="bodytext"&gt;Gerade hab' ich eine witzige Fehlermeldung in meiner IDE gefunden: &lt;/p&gt; &lt;pre&gt;WARNUNG [org.openide.util.lookup.MetaInfServicesLookup]: org.sepix.tutorialbuilder.api.ScreenCaptureProvider is not the real McCoy! Actually found it in ModuleCL@ae678a[org.sepix.tutorialbuilder]&lt;/pre&gt; &lt;p class="bodytext"&gt;Das kann passieren, wenn man Plugins in der eigenen IDE testet und man mit der ServiceProvider Annotation arbeitet. Es kann wohl passieren,
      dass die registrierten Services in einem Plugin in der aktuellen IDE nicht immer ausgetauscht werden. &lt;/p&gt; &lt;p class="bodytext"&gt;Dann muss man entweder in einer neuen IDE Instanz testen oder (wenn man unbedingt in der aktuellen IDE etwas probieren muss), neu starten. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;PS: &lt;a title="Wikipedia: Real McCoy" href="http://en.wikipedia.org/wiki/Elijah_McCoy" target="_blank"
      class="external-link-new-window"&gt;Elijah McCoy&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 15 Jul 2009 12:36:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: Neuerer Neustart der NetBeans Platform</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_neuerer_neustart_der_netbeans_platform/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_neuerer_neustart_der_netbeans_platform/index.html</link>
      <description>&lt;p class="bodytext"&gt;In einem &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_neustart_der_netbeans_platform/index.html" class="external-link-new-window" title="Neustart der NetBeans Platform"&gt;älteren Blog&lt;/a&gt; für die platform8 hatte ich eine Möglichkeit ausgearbeitet eine RCP Anwendung neu zu starten. &lt;/p&gt; &lt;p class="bodytext"&gt;Jesse Glick verweist auf eine Neuerung in 6.7 / 6.8 (für 6.8 wohl dann mit eigener API), die mit der
      Besonderheit des AutoUpdate Center arbeitet. &lt;/p&gt; &lt;p class="bodytext"&gt;Jesse zeigt in diesem &lt;a title="Issue 168257" href="http://www.netbeans.org/nonav/issues/show_bug.cgi?id=168257" target="_blank" class="external-link-new-window"&gt;Issue&lt;/a&gt; die Kennzeichnung eines Neustarts: &lt;/p&gt; &lt;pre&gt;File targetUserdir = new File(System.getProperty("netbeans.user"));&lt;br /&gt;File restartFile = new File(targetUserdir, "var/restart");&lt;br /&gt;if (!restartFile.exists())
      {&lt;br /&gt; restartFile.createNewFile();&lt;br /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Man muss also nur eine Datei namens restart in den var-Bereich schreiben und dann die Anwendung neu starten. &lt;/p&gt; &lt;p class="bodytext"&gt;Der Neustart erfolgt wie gewohnt mit dem LifecycleManager.getDefault().exit(). &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man den Neustart nicht direkt per Action initiieren will, sondern als Vorschlag für den Anwender angezeigt werden soll, dann hat man mit der
      platform10 (seit NetBeans 6.7) noch ein zusätzliches nettes Feature. Man kann ein Icon in der Statuszeile einblenden lassen, der den User darüber informiert, dass es sinnvoll wäre die Anwendung einmal durchzustarten. &lt;/p&gt; &lt;p class="bodytext"&gt;Hier ein adaptiertes Beispiel aus einem &lt;a title="Silent Update" href="http://blogs.sun.com/rechtacek/entry/how_to_update_netbeans_platform" target="_blank" class="external-link-new-window"&gt;anderen Blog&lt;/a&gt;: &lt;/p&gt;
      &lt;pre&gt;@org.openide.util.lookup.ServiceProvider(service=org.openide.awt.StatusLineElementProvider.class, position=610)&lt;br /&gt;public class RestartNotification implements org.openide.awt.StatusLineElementProvider {&lt;br style="color: rgb(135, 45, 0);" /&gt; public Component getStatusLineElement () {&lt;br style="color: rgb(135, 45, 0);" /&gt; ImageIcon img = new ImageIcon (ImageUtilities.loadImage ("org/netbeans/modules/mymodule/restart.png", false));&lt;br style="color: rgb(135, 45, 0);"
      /&gt; JPanel p = new StatusLinePanel (img);&lt;br style="color: rgb(135, 45, 0);" /&gt; p.setVisible (false);&lt;br style="color: rgb(135, 45, 0);" /&gt; return p;&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt;&lt;br style="color: rgb(135, 45, 0);" /&gt; public static class StatusLinePanel extends JPanel {&lt;br style="color: rgb(135, 45, 0);" /&gt; private ImageIcon icon = null;&lt;br style="color: rgb(135, 45, 0);" /&gt; public StatusLinePanel (ImageIcon
      img) {&lt;br style="color: rgb(135, 45, 0);" /&gt; icon = img;&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt;&lt;br style="color: rgb(135, 45, 0);" /&gt; @Override&lt;br style="color: rgb(135, 45, 0);" /&gt; public void addNotify () {&lt;br style="color: rgb(135, 45, 0);" /&gt; this.addMouseListener (new MouseListener () {&lt;br style="color: rgb(135, 45, 0);" /&gt; public void mouseClicked (MouseEvent e) {&lt;br style="color: rgb(135, 45, 0);" /&gt; if
      (isVisible ()) {&lt;br style="color: rgb(135, 45, 0);" /&gt; File targetUserdir = new File(System.getProperty("netbeans.user"));&lt;br /&gt; File restartFile = new File(targetUserdir, "var/restart");&lt;br /&gt; if (!restartFile.exists()) {&lt;br /&gt; restartFile.createNewFile();&lt;br /&gt; }&lt;br /&gt; LifecycleManager.getDefault().exit();&lt;br /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt; public void mousePressed (MouseEvent e) {}&lt;br
      style="color: rgb(135, 45, 0);" /&gt; public void mouseReleased (MouseEvent e) {}&lt;br style="color: rgb(135, 45, 0);" /&gt; public void mouseEntered (MouseEvent e) {}&lt;br style="color: rgb(135, 45, 0);" /&gt; public void mouseExited (MouseEvent e) {}&lt;br style="color: rgb(135, 45, 0);" /&gt; });&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt;&lt;br style="color: rgb(135, 45, 0);" /&gt; @Override&lt;br style="color: rgb(135, 45, 0);" /&gt; public void
      paint (java.awt.Graphics g) {&lt;br style="color: rgb(135, 45, 0);" /&gt; if (isVisible ()) {&lt;br style="color: rgb(135, 45, 0);" /&gt; icon.paintIcon (this, g, 0, 0);&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt; }&lt;br style="color: rgb(135, 45, 0);" /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Da RestartNotification von Applikations-Start an in der Statusbar registriert ist, wird diese erstmal mit
      setVisible (false) abgeschaltet. Wenn man den Neustart nun benötigt, holt man sich das Object aus dem globalen Lookup-Pool: &lt;/p&gt; &lt;pre&gt;RestartNotification rn = Lookup.getDefault.lookup(RestartNotification.class);&lt;br /&gt;rn.getStatusLineElement().setVisible(true);&lt;/pre&gt; &lt;p class="bodytext"&gt;Der Vorteil dieser neuen Methode ist, dass man keine OS-abhängigen Bestandteile mehr berücksichtigen muss. Auch muss man nicht mehr den Namen des Launchers kennen. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Wed, 08 Jul 2009 07:52:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Forum: Das deutschsprachige NetBeans-Forum im neuen Gewand</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////forum_das_deutschsprachige_netbeans_forum_im_neuen_gewand/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////forum_das_deutschsprachige_netbeans_forum_im_neuen_gewand/index.html</link>
      <description>&lt;p class="bodytext"&gt;Nur wenige Stunden ist es her, als das &lt;a title="Das deutsche NetBeans Forum" href="http://netbeans-forum.de/" target="_blank" class="external-link-new-window"&gt;deutsche NetBeans Forum&lt;/a&gt;, plötzlich und unerwartet in einem komplett neuen Look erschien. "Smurfi" (Michael, auch hier mit einem &lt;a title="DZone Interview" href="http://netbeans.dzone.com/news/dental-workflow-management" target="_blank" class="external-link-new-window"&gt;DZone
      Interview&lt;/a&gt;), hat mal das komplette Forum auf den neuesten (und damit auch Sicherheits-) Stand gebracht. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/blogs/blogrittner/uploads/RTEmagicC_NetBeansForum.PNG.PNG" alt="" height="105" width="600" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Was natürlich bleibt, ist die große Vielfalt an Unterforen - nicht nur &lt;a title="Java Forum" href="http://netbeans-forum.de/viewforum.php?f=38" target="_blank"
      class="external-link-new-window"&gt;Java&lt;/a&gt; und die &lt;a title="NetBeans IDE Forum" href="http://netbeans-forum.de/viewforum.php?f=37" target="_blank" class="external-link-new-window"&gt;NetBeans IDE&lt;/a&gt; sondern auch zu &lt;a title="PHP NetBeans Forum" href="http://netbeans-forum.de/viewforum.php?f=40" target="_blank" class="external-link-new-window"&gt;PHP&lt;/a&gt;, &lt;a title="Java FX NetBeans Forum" href="http://netbeans-forum.de/viewforum.php?f=39" target="_blank"
      class="external-link-new-window"&gt;JavaFX&lt;/a&gt; und &lt;a title="Glassfish Forum für die NetBeans IDE" href="http://netbeans-forum.de/viewforum.php?f=41" target="_blank" class="external-link-new-window"&gt;Glassfish&lt;/a&gt;. Und die freundliche deutschsprachige Community, die das Vorhaben mit großem Spaß unterstützt! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Fri, 19 Jun 2009 10:31:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: Import und Export von Optionen</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_import_und_export_von_optionen/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_import_und_export_von_optionen/index.html</link>
      <description>&lt;p class="bodytext"&gt;Mit der IDE Version 6.7 gibt es auch eine neue Platform Version 10. Und mit jedem Update der Platform kommt für die Entwickler auch die Arbeit (oder Freude) die RCP Entwicklungen mit neuen Features anzureichern.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Eine sehr schöne Funktionailtät ist das neue Importieren und Exportieren von Optionen. Wie immer im deklarativen Ansatz und modulorientiert. &lt;/p&gt; &lt;p class="bodytext"&gt;Man kann nun in der layer.xml
      festlegen, welche Optionen des eigenen Moduls vom Anwender zu exportieren sind. Diese darf er beliebig häufig in andere Programmversionen importieren. Das ist praktisch für Backups und für Programme auf verschiedenen Rechnern. &lt;/p&gt; &lt;p class="bodytext"&gt;Nebenbei erhält man noch einen automatischen Import-Dialog für Moduloptionen, wenn man eine neue Version installiert. Die IDE macht es mit Version 6.7 schon vor. &lt;/p&gt; &lt;p class="bodytext"&gt;Grundsätzlich ist es notwendig, dass man
      seine Optionen schon seit je her mit NbPreferences speichert, damit diese im config/* Ordner aufschlagen. Aber auch andere Speicherorte von Dateien wären möglich, soweit es Dateien sind, die als Ablageort von Eigenschaften verwendet werden. Was für das Dateien letztendlich sind, ist auch egal. Der Export zippt nur die Daten und interpretiert nichts. Dem Import&#160;ist auch herzlich egal, was in den Dateien stand. &lt;/p&gt; &lt;p class="bodytext"&gt;Jeder Modul-Entwickler kann seine eigenen
      Export-Definitionen festlegen. In der layer.xml muss dazu ein Folder namens OptionsExport angelegt werden. In diesem Ordner muss ein Unterordner eingefügt werden, der die eigenen Export-Definitionen als File deklariert. Tiefere Unterordner (zur Gruppierung) werden ignoriert. &lt;/p&gt; &lt;p class="bodytext"&gt;Hier ein kleines Beispiel: &lt;/p&gt; &lt;pre&gt;&amp;lt;folder name="&lt;span class="searchword"&gt;Options&lt;/span&gt;&lt;span class="searchword"&gt;Export&lt;/span&gt;"&gt;&lt;br /&gt;
      &amp;lt;!-- Meine Kategorie im Export --&gt;&lt;br /&gt; &amp;lt;folder name="Mapping"&gt;&lt;br /&gt; &amp;lt;!-- Lokalisierte Darstellung der Kategorie--&gt;&lt;br /&gt; &amp;lt;attr name="displayName"&lt;br /&gt; bundlevalue="de/sepix/mapping.&lt;span class="searchword"&gt;options&lt;/span&gt;.Bundle#Category_Display_Name"/&gt;&lt;br /&gt; &amp;lt;!-- item --&gt;&lt;br /&gt; &amp;lt;file name="mapOpt"&gt;&lt;br /&gt; &amp;lt;!-- Lokalisierte Darstellung des Export-Elements--&gt;&lt;br /&gt;
      &amp;lt;attr name="displayName"&lt;br /&gt; bundlevalue="de/sepix/mapping.&lt;span class="searchword"&gt;options&lt;/span&gt;.Bundle#&lt;span class="searchword"&gt;Export&lt;/span&gt;_Display_Name"/&gt;&lt;br /&gt; &amp;lt;attr name="include"&lt;br /&gt; stringvalue="config/Preferences/de/sepix/mapping/settings(.*?)\.properties"/&gt;&lt;br /&gt; &amp;lt;/file&gt;&lt;br /&gt; &amp;lt;/folder&gt;&lt;br /&gt;&amp;lt;/folder&gt;&lt;/pre&gt; &lt;p class="bodytext"&gt;Mit der obigen Konfig wird eine
      Export-Kategorie mit dem internen Namen Mapping angelegt. Dargestellt wird aber der Text aus dem ResourceBundle mit dem Schlüssel Category_Display_Name. Unter dieser Kategorie wird eine Export-Definition mit einem include deklariert. Es ist ein regulärer Ausdruck für Dateinamen. &lt;/p&gt; &lt;p class="bodytext"&gt;Man darf übrigens auch per exclude Dateien ausschließen. &lt;/p&gt; &lt;p class="bodytext"&gt;Grundsätzlich zeigt so schon die Platform im Export-Dialog die Kategorie mit der
      Exportdefinition an. Wenn aber keine Dateien existieren, die mit include/exclude gefunden werden sollten, ist der Bereich in Export-Dialog deaktiviert. Finden sich aber Dateien, kann der Anwender, diese auch zum Exportieren auswählen.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;So sieht das letztendlich aus: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/Nb67OptionExport.PNG" alt="" height="409" width="561" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Wählt man eine
      Datei zum Importieren aus, kann der Anwender nur die Kategorien auswählen, die tatsächlich in der ZIP-Datei liegen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/Nb67OptionImport.PNG" alt="" height="369" width="364" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Weitere Informationen finden sich dazu im &lt;a title="Export Import Options" href="http://wiki.netbeans.org/ExportImportOptions" target="_blank" class="external-link-new-window"&gt;NetBeans Wiki&lt;/a&gt;.
      &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Tue, 09 Jun 2009 10:49:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDE 6.7: Multilingual switch in's Angloamerikanische</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_mulitingual_switch_ins_angloamerikanische/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_mulitingual_switch_ins_angloamerikanische/index.html</link>
      <description>&lt;p class="bodytext"&gt;Für viele im nichtenglischsprachigen Raum ist es eine Erleichterung, dass NetBeans 6.7 seit dem RC1 mehrsprachig ausgeliefert wird. D.h. für viele Sprachen sind schon die passenden Resource-Bundle-Dateien mitgeliefert.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Welche Sprachen das sind, kann man mal im platform10/modules/locale Ordner nachprüfen. Französisch, Spanisch, Deutsch, Niederländisch, Polnisch, Russisch... alles dabei. &lt;/p&gt; &lt;p
      class="bodytext"&gt;De Java-VM selbst gibt die Spracheinstellungen vor, die sie sich einfach aus dem Locale des Betriebsystems zieht. Java legt diese Information in den beiden System Properties user.language und user.country an. &lt;/p&gt; &lt;p class="bodytext"&gt;Damit kommen wir schon zu einer Problemlösung. Manche wollen nämlich lieber mit der englischen Oberfläche arbeiten - aus Gewohnheitssache, oder weil man im Team mehrsprachig ist und sich auf eine Sprache geeinigt hat. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Man überschreibt einfach die Java-VM Vorgaben, in dem man in der der netbeans.conf den Parameter netbeans_default_options am Ende um folgende Optionen erweitert: &lt;/p&gt; &lt;p class="bodytext"&gt;-J-Duser.country=US -J-Duser.language=en &lt;/p&gt; &lt;p class="bodytext"&gt;Die netbeans.conf findet sich im etc-Ordner der NetBeans-Installation. &lt;/p&gt; &lt;p class="bodytext"&gt;Beim Neustart von NetBeans 6.7 ist dann die komplette Oberfläche in englischer Sprache. &lt;/p&gt;
      &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Fri, 05 Jun 2009 07:50:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDE 6.7: In Farbe und Bunt - Das Ausgabefenster wird erwachsen</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_in_farbe_und_bunt_das_ausgabefenster_wird_erwachsen/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_in_farbe_und_bunt_das_ausgabefenster_wird_erwachsen/index.html</link>
      <description>&lt;p class="bodytext"&gt;Das Ausgabe (Output) Fenster der neuen NetBeans IDE 6.7 hat ein paar kleine Überraschungen parat.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Augenfällig ist die Farbe bei einem Build. Ant-Target-Namen erscheinen nun in Hellgrau, Echo-Ausgaben in Schwarz und auch rote und grüne Zeilen sind zu finden. Wer sich mit der Platform-API beschäftigt und eigene Plugins schreibt kann auch selber farbige Ausgaben in das Output-Fenster bringen. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Allerdings werden ANSI-Konsolen Spiele immer noch nicht möglich sein ;-) &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/output-menu.png" alt="" height="417" width="502" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Für den IDE Endanwender gibt es aber noch ein paar zusätzliche Features: Man kann nun die Schriftgröße und die Schriftart verändern. Entweder per Kontextmenü (rechte Maustaste in das Ausgabefenster) oder Tastenkürzel: Strg+- verkleinert und
      Strg+= vergrößert. Und damit kommen wir zu einem Problem mit deutschem Tastaturlayout. Nur Strg+- funktioniert... (ändern lassen sich hier die Tastenkürzel nicht) &lt;/p&gt; &lt;p class="bodytext"&gt;Über die Menüfunktion "Schrift wählen" kann eine gänzlich andere Schriftart (und Größe) gewählt oder auf die Standardschrift zurückgesetzt werden. &lt;/p&gt; &lt;p class="bodytext"&gt;Aber richtig genial ist die neue Filter-Funktion (Strg+G). Mit ihr kann man die Ausgabezeilen einfach und schnell
      filtern. Strg+G -&gt; Text eingeben, Enter und schon werden nur noch die Zeilen mit der beinhalteten Suchzeichenkette angezeigt. Auf Wunsch wird der Suchfilter auch als Regular Expression behandelt. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/output-menu-filter.png" alt="" height="396" width="595" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Man sieht also, dass auch in kleinen Dingen die IDE immer weiter entwickelt wird. Und gerade so kleine Features erleichtern
      einem das Leben wirklich. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Thu, 04 Jun 2009 09:08:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDE 6.7: Issue Tracker Modul in NetBeans</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_issue_tracker_modul_in_netbeans/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_issue_tracker_modul_in_netbeans/index.html</link>
      <description>&lt;p class="bodytext"&gt;Die letzten Monate war ich etwas "Busy" und steckte in ein paar Projekten. Damit lag das Blog etwas brach. Aber so habe ich jetzt die Möglichkeit ein paar Dinge nachzuholen und die Schlagzahl etwas zu erhöhen. &lt;/p&gt; &lt;p class="bodytext"&gt;Die neue Beta-Version von NetBeans 6.7 ist seit einigen Tagen endlich auf meiner Festplatte gelandet (viel zu spät, ich hätte mich schon mit den M-Kandidaten befassen müssen) und finde lauter schöne neue Dinge.
      &lt;/p&gt; &lt;p class="bodytext"&gt;Aber auch Sachen, da bin ich etwas überrascht - nicht nur im Positiven. Wer versucht, das Issue-Tracker Modul mit NetBeans Issuezilla zu verknüpfen, muss feststellen, dass man - egal welche URL angegeben wird - immer nur mit Fehlermeldungen bei der Testverbindung bestraft wird. &lt;/p&gt; &lt;p class="bodytext"&gt;Der Grund liegt an der Inkompatibilität zwischen &lt;a title="Bugzilla Homepage" href="http://www.bugzilla.org/" target="_blank"
      class="external-link-new-window"&gt;Bugzilla&lt;/a&gt; und Issuezilla. Das Bugzilla-Plugin kann den Fork &lt;a title="Issuezilla for NetBeans" href="http://www.netbeans.org/kb/articles/issuezilla.html" target="_blank" class="external-link-new-window"&gt;Issuezilla&lt;/a&gt; nicht bedienen. Schade eigentlich. Und m.E. etwas unverständlich, da doch gerade NetBeans Issuezilla verwendet. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160;
      Josch.&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 30 Apr 2009 07:13:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDE 6.7: Debuggen in Schönschrift - der Variable Formatter</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_debuggen_in_schoenschrift_der_variable_formatter/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////ide_67_debuggen_in_schoenschrift_der_variable_formatter/index.html</link>
      <description>&lt;p class="bodytext"&gt;Einer der richtig schönen neuen Features von NetBeans 6.7 (jetzt als beta zu erhalten) ist, Werte während des Debuggens mit konfigurierten Formatierungs-Befehlen anzuzeigen. &lt;/p&gt; &lt;p class="bodytext"&gt;Ich programmiere zur Zeit einen DayPlanner und habe naturgemäß viel mit java.util.Calendar zu tun. Dessen toString()-Methode ist mehr als geschwätzig und hilft mir, für einen schnellen Überblick, wenig. &lt;/p&gt; &lt;p class="bodytext"&gt;Also mal
      schnell: Extras -&gt; Optionen -&gt; Verschiedenes -&gt; Java Debugger geöffnet. Mit [Add...] kann man eine neue Formatierung anlegen. Hier ein einfaches Beispiel für java.util.Calendar: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/VariableFormatter.PNG" alt="" height="519" width="419" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man nun den Debugger anwirft, zeigt mir NetBeans an einem Breakpoint alle Calendar-Variablen mit meinem neuen Formatter an: &lt;/p&gt;
      &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/VariableFormatterDebugView.PNG" alt="" height="492" width="549" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Übrigens, das Symbol mit dem Schraubenschlüssel öffnet direkt aus dem Debugger-Fenster die Formatter-Optionen. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Wed, 29 Apr 2009 13:25:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: Softwareentwicklung in 10 Jahren und ein Video</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_softwareentwicklung_in_10_jahren_und_ein_video/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_softwareentwicklung_in_10_jahren_und_ein_video/index.html</link>
      <description>&lt;p class="bodytext"&gt;Eine spannende Darstellung, wie die Entwicklung von&#160;NetBeans vorangeschritten ist, findet sich &lt;a title="NetBeans Code Swarm" href="http://netbeans.tv/community/NetBeans-Code-Swarm-Video%3A-10-Years-of-NetBeans-History-in-5-Minutes!-436/" target="_blank" class="external-link-new-window"&gt;unter diesem Link.&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/NetBeansCodeSwarm.PNG" alt="" height="333" width="410"
      /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Die Berechnung für den Code-Swarm wurde aus den CVS-History Daten von 1998 bis 2008 erstellt. Danach wurde das NetBeans Projekt in das Mecurial Repositiory verschoben. &lt;/p&gt; &lt;p class="bodytext"&gt;Viel Spaß beim anschauen und zuhören... &lt;/p&gt; &lt;p class="bodytext"&gt;Josch.&lt;/p&gt;</description>
      <pubDate>Tue, 28 Apr 2009 14:07:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Vorträge zum Swing Application Framework, BeansBinding und JPA</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////vortraege_zum_swing_application_framework_beansbinding_und_jpa/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////vortraege_zum_swing_application_framework_beansbinding_und_jpa/index.html</link>
      <description>&lt;p class="bodytext"&gt;Am 12. Februar folgte ich einer Einladung zu der &lt;a title="JUG Nürnberg" href="http://sourceknights.blogspot.com/search/label/JUG" target="_blank" class="external-link-new-window"&gt;Java User Group Nürnberg&lt;/a&gt;. Ich wurde gefragt, ob ich ein wenig über &lt;a title="NetBeans Homepage" href="http://www.netbeans.org" target="_blank" class="external-link-new-window"&gt;NetBeans&lt;/a&gt;, dem Swing GUI Builder, &lt;a title="Beans Binding"
      href="https://beansbinding.dev.java.net/" target="_blank" class="external-link-new-window"&gt;BeansBinding&lt;/a&gt; und &lt;a title="JPA" href="http://java.sun.com/developer/technicalArticles/J2EE/jpa/" target="_blank" class="external-link-new-window"&gt;JPA&lt;/a&gt; erzählen könnte. &lt;br /&gt;&lt;br /&gt;Nun ja, ein weites Feld könnte man da sagen. Für den Tag habe ich drei aufbauende Präsentationen und einiges an Demoapplikationen vorbereitet. Die Zeit von 18:00 Uhr bis 19:45 reichte natürlich
      nicht, aber es hat mich sehr gefreut, dass die Hälfte der ca. 40 Zuhöhrer bis halb Zehn durchgehalten haben. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/nuremberg.JPG" alt="" height="355" width="400" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;br /&gt;Im ersten Teil zeigte ich das &lt;a title="Swing Application Framework" href="https://appframework.dev.java.net/" target="_blank" class="external-link-new-window"&gt;Swing Application Framework&lt;/a&gt;, mit dem
      man deutlich einfacher Swing Anwendungen von Null auf programmieren kann. Viele Standardprobleme von Swing (und Applikationen allgemein) werden von dem Framework abgefangen. Zum Beispiel Lifecycle-Management, Persistens von Applikations-Sessions, Task-Verwaltung, vereinfachte Bindung von Actions und Ressource-Injection. &lt;br /&gt;Insbesondere die NetBeans-Integration wurde gezeigt.&#160; &lt;br /&gt;&lt;br /&gt;Der zweite Teil befasste sich mit dem BeansBinding Framework. In kleinen Beispielen (mit
      und ohne NetBeans-Integration) bekamen die Zuschauer ein Bild davon, wo BeansBinding sinnvoll einzusetzen ist und welche Arbeitserleichterung BeansBinding bietet. Insbesondere in der Problematik der Bindung von Swing-Komponenten mit Beans. Das BeansBinding Framework verinfacht solche Bindungen durch vorgefertigte Adapter, die über Factory-Methoden erzeugt werden können. Besonders mit JTables eine Vereinfachung.&lt;br /&gt;&lt;br /&gt;Mit dem dritten Teil wurde zu dem Swing Application Framework und
      BeansBinding die Java Persistence API hinzugefügt. Ich war erstaunt, dass viele Teilnehmer sich gar nicht bewusst waren, dass &lt;a title="JPA in Desktop Applications" href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/persistenceapi/" target="_blank" class="external-link-new-window"&gt;JPA auch problemlos in Java Desktop Anwendungen eingesetzt&lt;/a&gt; werden kann. Die meisten gingen davon aus, dass man unbedingt einen Server-Container (Glassfish, JBoss, ...) dafür benötigt. &lt;br
      /&gt;Ich gab noch mal einen winzigen Überblick von JPA und zeigte dann, wie BeansBinding mit JPA und Swing-Komponenten realisiert wird. In Demos wurde eine kleine CRUD-Anwendung aufgebaut.&lt;br /&gt;&lt;br /&gt;Ich möchte mich nochmal herzlich für die vielen Fragen und die Aufmerksamkeit bedanken. Es hat mir viel Spaß bereitet den Abend in Nürnberg sein zu dürfen. &lt;/p&gt; &lt;p class="bodytext"&gt;Hier noch die Links zu den Präsentationen als PDF:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a
      href="http://www.sepix.de/fileadmin/appframework_de.pdf" class="external-link-new-window" title="Präsentation zum Swing Application Framework"&gt;Swing Application Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/beansbinding_de.pdf" class="external-link-new-window" title="Präsentation zu BeansBinding"&gt;Beans Binding&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sepix.de/fileadmin/jpabeansbinding_de.pdf" class="external-link-new-window" title="Präsentation zu
      BeansBinding, JPA und Swing Application Framework"&gt;JPA, BeansBinding und das SAF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;&lt;br /&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt;&lt;br /&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Sun, 15 Feb 2009 11:30:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: NetBeans Platform Training in Ulm</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////netbeans_platform_training_in_ulm/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////netbeans_platform_training_in_ulm/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/Ulm_Smiley.JPG" style="padding-right: 10px; padding-bottom: 10px; float: left;" title="Ulm Smiley" height="195" width="200" alt="" /&gt;Die letzten zwei Tage war ich mit &lt;a href="http://blogs.sun.com/geertjan/" target="_blank"&gt;Geertjan Wielenga&lt;/a&gt; und &lt;a href="http://eppleton.sharedhost.de/" target="_blank"&gt;Toni Epple&lt;/a&gt; als Trainer an der Universität Ulm. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Mit dem &lt;a title="NetBeans Training" href="http://edu.netbeans.org/courses/nbplatform-certified-training/" target="_blank" class="external-link-new-window"&gt;NetBeans Platform Certified Training&lt;/a&gt; unterstützen wir die Studenten an der Universität mit einem Einstieg in die Softwareentwicklung mit der NetBeans Platform. Am Freitag erhielten wir Verstärkung von Lorenz Weber. Er ist Student der &lt;a
      href="http://edu.netbeans.org/courses/nbplatform-certified-training/wurzburg.html" target="_blank"&gt;Universität Würzburg&lt;/a&gt; und hatte vor einiger Zeit das Certified Training erfolgreich absolviert. Er zeigte den Studenten sein &lt;a href="http://www.netbeans.org/issues/show_bug.cgi?id=25377" target="_blank"&gt;Batch Refactoring Projekt&lt;/a&gt; für die NetBeans IDE &lt;/p&gt; &lt;p class="bodytext"&gt;Ganz besonders freuten wir uns über den Besuch von David Botterill, dem Technology Manager
      der &lt;a href="http://developers.sun.com/students/campus_ambassadors.jsp" target="_blank"&gt;Sun Campus Ambassadors&lt;/a&gt;. Vielleicht bringt er unsere Trainings ja über die Campus Ambassadors in die Universitäten? Das wäre fantastisch :-) &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/blogs/blogrittner/uploads/RTEmagicC_Course1.JPG.JPG" alt="Training Ulm" height="297" width="400" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;An dieser Stelle möchte ich mich auch für die
      hervorragende Führung durch die wunderschön Stadt Ulm bedanken. Der Organisator des Kurses, Ph. D. Guido de Melo, gab uns einen unvergesslichen Einblick in die Geschichte von Ulm mit seinen kuriosen und staunendswerten Gebäuden und Eckchen. &lt;/p&gt; &lt;p class="bodytext"&gt;Folgendes Programm haben wir den Teilnehmern geboten:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tag 1 &lt;ul&gt;&lt;li&gt;Präsentation 1: Einführung in den Kurs (Geertjan) &lt;/li&gt;&lt;li&gt;Präsentation 2: Einstieg in die NetBeans
      Platform (Toni) &lt;/li&gt;&lt;li&gt;Präsentation 3 + Workshop: Modular Systems &amp;amp; Lookup API (Geertjan) &lt;/li&gt;&lt;li&gt;Präsentation 4: System FileSystem (Toni) &lt;/li&gt;&lt;li&gt;Präsentation 5: Window System (Aljoscha) &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Tag 2 &lt;ul&gt;&lt;li&gt;Präsentation 1: Nodes und Explorer Views (Aljoscha) &lt;/li&gt;&lt;li&gt;Präsentation 2 + Workshop: Visual Library (Toni) &lt;/li&gt;&lt;li&gt;Präsentation 3: Portierung einer Anwendung zur NetBeans
      Platform (Aljoscha) &lt;/li&gt;&lt;li&gt;Präsentation 4: Ideen für Studenten Projekte (Alle)&lt;/li&gt;&lt;li&gt; Präsentation 5: Beispiel eines Studenten Projektes: Batch Refactoring (Lorenz) &lt;/li&gt;&lt;li&gt;Präsentation 6: Zusammenfassung des Kurses (Geertjan) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Von hier aus noch mal viele Grüße an die Uni Ulm und den Teilnehmern des Kurses. Wir Trainer hatten viel Spaß und hoffen, dass es Euch gefallen hat! &lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;img src="http://www.sepix.de/blogs/blogrittner/uploads/RTEmagicC_UlmGroup.JPG.JPG" alt="" height="339" title="Gruppenbild Ulm" width="400" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Sat, 07 Feb 2009 14:03:00 +0000</pubDate>
    </item>
    <item>
      <title>Bernhard's Weblog: Using unit-testing code using Netbeans' Repository class</title>
      <guid isPermaLink="false">http://www.jroller.com/berni/entry/using_repository_in_unit_testing</guid>
      <link>http://www.jroller.com/berni/entry/using_repository_in_unit_testing</link>
      <description>&lt;p&gt; This blog is about unit-testing using netbeans Repository. I'm using the solution described below on Netbeans 6.5. &lt;/p&gt; &lt;p&gt; In my netbeans plugin-project I have code like &lt;/p&gt;&lt;pre&gt;&lt;code&gt; Repository r = Repository.getDefault(); FileSystem fs = r.getDefaultFileSystem(); FileObject root = fs.getRoot(); FileObject baseFolder = FileUtil.createFolder(root, "nb-xpath/data"); final String foName = "history.xml"; FileObject historyFileObject =
      baseFolder.getFileObject(foName); ... File file = FileUtil.toFile(historyFileObject); &lt;/code&gt;&lt;/pre&gt; &lt;p&gt; When you try to unit-test this code, the file instance is null. &lt;/p&gt; &lt;p&gt; Thus I read &lt;a href="http://wiki.netbeans.org/UsingFileSystemsMasterfs"&gt;UsingFileSystemsMasterfs&lt;/a&gt;, and I installed the masterfs in the UnitTestLibary. By selecting "UnitTestLibraries|Add UnitTest Dependency", selecting "Show Non-API Modules, and searching for "masterfs", and
      selecting the Module "Master Filesystem". &lt;/p&gt; &lt;p&gt; The nbproject/project.xml results : &lt;/p&gt;&lt;pre&gt;&lt;code&gt; ... &amp;lt;/module-dependencies&gt; &amp;lt;test-dependencies&gt; &amp;lt;test-type&gt; &amp;lt;name&gt;unit&amp;lt;/name&gt; &amp;lt;test-dependency&gt; &amp;lt;code-name-base&gt;org.netbeans.modules.masterfs&amp;lt;/code-name-base&gt; &amp;lt;compile-dependency/&gt; &amp;lt;/test-dependency&gt; &amp;lt;/test-type&gt; &amp;lt;/test-dependencies&gt;
      &amp;lt;public-packages/&gt; ... &lt;/code&gt;&lt;/pre&gt; &lt;p&gt; But this does not help! The file instance is still null! &lt;/p&gt; &lt;p&gt; After examing the Repsitory sources, I came to the conclusion that if there is no Repository registered in META-INF/services, the MemoryFileSystem is used. Thus I need a way to register some repository class. &lt;/p&gt; &lt;p&gt; Thanks to &lt;a href="http://wiki.netbeans.org/InitializationOfDefaultLookup"&gt;InitializationOfDefaultLookup&lt;/a&gt;,
      &lt;code&gt;MockServices&lt;/code&gt; can help. &lt;/p&gt; &lt;p&gt; I wrote a simple Repository implementation, and register it as Repository implementation to use: &lt;/p&gt; &lt;p&gt; The Repository implemenation for my test-case: &lt;/p&gt; &lt;pre&gt;&lt;code&gt; public static final class MyRepositoryIOTempDir extends Repository { private static final long serialVersionUID = 20090127L; public MyRepositoryIOTempDir() { this(new LocalFileSystem()); } private MyRepositoryIOTempDir(LocalFileSystem
      lfs) { super(lfs); // make the java.io.tmpdir the root of this lfs final String tmpDir = System.getProperty("java.io.tmpdir"); assertNotNull(tmpDir); File rootFile = new File(tmpDir); assertTrue(rootFile != null); assertTrue(rootFile.canRead()); assertTrue(rootFile.canWrite()); assertTrue(rootFile.isDirectory()); try { lfs.setRootDirectory(rootFile); } catch (Exception ex) { AssertionError ae = new AssertionError("Cannot set root directory"); ae.initCause(ex); throw ae; } } }
      &lt;/code&gt;&lt;/pre&gt; &lt;p&gt; My test-case setUp registers this class like: &lt;/p&gt; &lt;pre&gt;&lt;code&gt; @Before public void setUp() { MockServices.setServices(MyRepositoryIOTempDir.class); // assert that for lookup(Repository.class) MyRepositoryIOTempDir is returned final Repository repositoryInstance = Lookup.getDefault().lookup(Repository.class); assertTrue(repositoryInstance instanceof MyRepositoryIOTempDir); } &lt;/code&gt;&lt;/pre&gt; &lt;p&gt; Now my tests can run the above code,
      and the file instance is not null! &lt;/p&gt; &lt;p&gt; Now, that I removed the Master Filesystem dependency from the Unit Test Libraries, my test-cases still work, so it seems to me that when you use File instances retrieved via Repository, you don't need the masterfs test dependency, so far. &lt;/p&gt; &lt;p&gt;Have fun!&lt;/p&gt;</description>
      <pubDate>Tue, 27 Jan 2009 23:08:42 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Termin: BeansBinding, JPA und Matisse - NetBeans@JUG-Nürnberg</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////termin_beansbinding_jpa_und_matisse_netbeansjug_nuernberg/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////termin_beansbinding_jpa_und_matisse_netbeansjug_nuernberg/index.html</link>
      <description>&lt;p class="bodytext"&gt;Nicht nur Werbung in eigener Sache, sondern ein Hinweis auf ein doch bestimmt sehr spannendes Thema.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;Am 12. Februar bin ich in Nürnberg und bringe, den hoffentlich zahlreich anwesenden Zuhörern, die Technologien &lt;a title="Beans Binding" href="https://beansbinding.dev.java.net/" target="_blank" class="external-link-new-window"&gt;Beans Binding&lt;/a&gt;, &lt;a title="JPA in Desktop Applikationen"
      href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/persistenceapi/" target="_blank" class="external-link-new-window"&gt;Java Persistence API&lt;/a&gt; und &lt;a title="Swing GUI Builder" href="http://www.netbeans.org/features/java/swing.html" target="_blank" class="external-link-new-window"&gt;Matisse&lt;/a&gt; im Zusammenhang mit &lt;a title="NetBeans Homepage" href="http://www.netbeans.org" target="_blank" class="external-link-new-window"&gt;NetBeans&lt;/a&gt;, nahe. &lt;/p&gt;
      &lt;p class="bodytext"&gt;Es gibt ein wenig Theorie über Beans Binding und JPA, und ordentlich Praxis, wie das in NetBeans umgesetzt wird. Insbesondere, die Anwendung des Swing GUI-Designer mit Beans Binding wird demonstriert. &lt;/p&gt; &lt;p class="bodytext"&gt;Wer am 12. Februar 2009 von 18:00 bis 19:45 Uhr Zeit hat, melde sich doch bitte kurz formlos über die folgende Mail an: &lt;a href="http://www.sepix.de/blogs/blogrittner/mailto:info@jug-ern.de" class="mail" title="info at jug-ern .
      de"&gt;info &amp;lt;at&gt;&#160; jug-ern.de&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Der Veranstaltungsort ist: &lt;/p&gt; &lt;p class="bodytext"&gt;ING DiBa, &lt;br /&gt;Allgemeine Deutsche Direktbank AG, &lt;br /&gt;Südwestpark 97, &lt;br /&gt;90449 Nürnberg, Deutschland &lt;/p&gt; &lt;p class="bodytext"&gt;Weitere Infos zur Java User Group Erlangen/Nürnberg finden sich auf der Homepage source-knights.de &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;/p&gt;&lt;hr
      /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Da der Termin rum ist, &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/february/15/vortraege_zum_swing_application_framework_beansbinding_und_jpa/index.html" class="external-link-new-window" title="Vorträge zum Swing Application Framework, BeansBinding und JPA"&gt;hier die Präsentationen&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Beste Grüße,&lt;br /&gt;&#160;
      Josch.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 21 Jan 2009 16:30:00 +0000</pubDate>
    </item>
    <item>
      <title>Seapegasus Blog: Kostenloses Java-EBook (Neue Auflage)</title>
      <guid isPermaLink="false">http://blogs.sun.com/seapegasus/entry/kostenloses_java_ebook_neue_auflage</guid>
      <link>http://blogs.sun.com/seapegasus/entry/kostenloses_java_ebook_neue_auflage</link>
      <description>&lt;p&gt; Die achte Auflage des Java-Kurses "Java ist auch eine Insel" ist draußen: Ein praxisorientiertes &lt;em&gt;Buch nicht nur für diejenigen, die beim Brennball in der Schule immer als letztes gewählt wurden&lt;/em&gt;! (He... woher weiss der das?) &lt;/p&gt; &lt;p&gt; Das Buch erwähnt (empfiehlt) auch IDEs (z.B. auch den NetBeans GUI Builder), bleibt aber insgesamt Tool-neutral. Das hat den Vorteil, dass man das Gelernte überall einsetzen kann -- und welchem IDE-Menüpunkt das
      Beschriebene eventuell entspricht, &lt;a href="http://www.netbeans.org/kb/trails/java-se.html"&gt;findet man recht schnell raus&lt;/a&gt;. Anscheinend ist &lt;a href="http://www.tutego.com/javabuch/"&gt;geplant&lt;/a&gt;, die achte Auflage nach und nach für JDK 7 zu aktualisieren. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; Für 50 Euro bekommt man das komplette &lt;a href="http://www.galileocomputing.de/2069?GPP=opjiVIII"&gt;Buch&lt;/a&gt; auf toten Bäumen ausgedruckt -- plus eine DVD mit JDK 6,
      NetBeans, Eclipse, &lt;a href="http://download.galileo-press.de/openbook/javainsel7/javainsel7_programme.zip"&gt;Beispielprogramme&lt;/a&gt;, &lt;a href="http://www.tutego.com/aufgaben/j/"&gt;Aufgaben&lt;/a&gt; und &lt;a href="http://www.tutego.com/aufgaben/j/insel/solutions.zip"&gt;Lösungen&lt;/a&gt;, und sogar (hä?) ;) ein paar C/C++ Openbooks.&lt;br /&gt; Das &lt;a href="http://openbook.galileocomputing.de/javainsel8/"&gt;Javainsel-Ebook&lt;/a&gt; ist kostenlos online, und es gibt's es auch als
      14MB Download zum Mitnehmen. &lt;/p&gt;</description>
      <pubDate>Wed, 21 Jan 2009 12:42:20 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Poll: Verwendet Ihr Beans Binding in der NetBeans IDE</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////poll_verwendet_ihr_beans_binding_in_der_netbeans_ide/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////poll_verwendet_ihr_beans_binding_in_der_netbeans_ide/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;a href="http://www.netbeans.org/community/articles/interviews/dreamprofile-chandler.html" target="_blank" class="postlink"&gt;Wade Chandler&lt;/a&gt; vom &lt;a href="http://dreamteam.netbeans.org/" target="_blank" class="postlink"&gt;NetBeans Dream Team&lt;/a&gt; hat eine Umfrage gestartet, um abzufragen wer &lt;a href="https://beansbinding.dev.java.net/" target="_blank" class="postlink"&gt;BeansBinding (JSR-295)&lt;/a&gt; in der NetBeans IDE verwendet.
      &lt;br /&gt; &lt;br /&gt; Poll: &lt;a href="http://poll.pollcode.com/Ha8W" target="_blank" class="postlink"&gt;Do you use Beans Binding in the NetBeans IDE?&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; In der Umfrage gibt es auch eine Kommentar-Funktion. Wäre schön wenn Ihr schreiben könntet, warum Ihr BeansBinding (oder auch nicht) verwendet. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Unterstützung für BeansBinding gibt es seit Version 6.0 in NetBeans - insbesondere in dem Projekttyp "Java Desktop Application"
      mit dem Swing Application Framework und der Java Persistence API. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Tutorials und Screencasts zu BeansBinding (wer es noch nicht nutzt): &lt;br /&gt; &lt;a href="http://www.netbeans.org/kb/60/java/gui-binding.html" target="_blank"&gt;http://www.netbeans.org/kb/60/java/gui-binding.html&lt;/a&gt; &lt;br /&gt; &lt;a href="http://www.netbeans.org/kb/60/java/swing-app-beans-binding-screencast.html"
      target="_blank"&gt;http://www.netbeans.org/kb/60/java/swing-app-beans-binding-screencast.html&lt;/a&gt; &lt;br /&gt; &lt;a href="http://wiki.netbeans.org/NBDemoTicker" target="_blank"&gt;http://wiki.netbeans.org/NBDemoTicker&lt;/a&gt; &lt;br /&gt; &lt;a href="http://www.bestechvideos.com/2008/10/29/netbeans-tv-swing-application-framework-and-beans-binding" target="_blank"&gt;http://www.bestechvideos.com/2008/10/29/netbeans-tv-swing-application-framework-and-beans-binding&lt;/a&gt; &lt;br /&gt; &lt;a
      href="http://wiki.netbeans.org/BestPracticesWithJPAAndBeansBinding" target="_blank"&gt;http://wiki.netbeans.org/BestPracticesWithJPAAndBeansBinding&lt;/a&gt; &lt;br /&gt; &lt;a href="http://blogs.sun.com/roumen/entry/swing_application_framework_swing_databinding" target="_blank"&gt;http://blogs.sun.com/roumen/entry/swing_application_framework_swing_databinding&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; Beste Grüße und vielen Dank für Eure Hilfe! &lt;br /&gt; Josch.&lt;/p&gt;</description>
      <pubDate>Sat, 17 Jan 2009 09:38:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: IDE: NetBeans räumt ab!</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////ide_netbeans_raeumt_ab/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////ide_netbeans_raeumt_ab/index.html</link>
      <description>&lt;p class="bodytext"&gt;Dieses Jahr geht es richtig ab, bei der Preisvergabe. &lt;/p&gt; &lt;p class="bodytext"&gt;NetBeans hat gleich &lt;a title="Developer.com Winners 2009" href="http://www.developer.com/java/other/article.php/3795991" target="_blank" class="external-link-new-window"&gt;in mehreren Disziplinen&lt;/a&gt; gewonnen. &lt;/p&gt; &lt;h3 style="text-decoration: underline;"&gt;Development Tool&lt;/h3&gt; &lt;p class="bodytext"&gt;&lt;b&gt;Winner: NetBeans Platform&lt;/b&gt;
      &lt;/p&gt; &lt;h3 style="text-decoration: underline;"&gt;Development Utilities&lt;/h3&gt; &lt;p class="bodytext"&gt;&lt;b&gt;Winner: NetBeans Profiler&lt;/b&gt; &lt;/p&gt; &lt;h3 style="text-decoration: underline;"&gt;Wireless/Mobile&lt;/h3&gt; &lt;p class="bodytext"&gt;&lt;b&gt;Winner: NetBeans Mobility Pack for Connected Device Configuration (CDC) 5.5&lt;/b&gt; &lt;/p&gt; &lt;h3 style="text-decoration: underline;"&gt;Java Tool&lt;/h3&gt; &lt;p class="bodytext"&gt;&lt;b&gt;Winner: NetBeans
      IDE&lt;/b&gt; &lt;/p&gt; &lt;h3 style="text-decoration: underline;"&gt;Open Source&lt;/h3&gt; &lt;p class="bodytext"&gt;&lt;b&gt;Winner: NetBeans&lt;/b&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;/p&gt;</description>
      <pubDate>Thu, 15 Jan 2009 11:14:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: GUI Beans, ein Custom Property-Editor</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_ein_custom_proprty_editor/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_ein_custom_proprty_editor/index.html</link>
      <description>&lt;p class="bodytext"&gt;In den letzten drei Teilen nahm das JImagePanel durchaus schöne Formen an. Nur fehlt mir noch ein Editor für das Hintergrundbild. Die einfachste Möglichkeit per Dateipfad ein Bild auszuwählen möchte ich hier besprechen. &lt;/p&gt; &lt;p class="bodytext"&gt;Vorweg auch der größte Nachteil: Der Pfad ist natürlich unabhängig vom Programm. Das ist für eine Anwendung, die bei einem Nutzer installiert wird, nicht praktikabel. Zu einem späteren Zeitpunkt zeige ich aber
      die Möglichkeit, Bilder aus dem Projekt zu wählen. Hier im letzten Teil geht es aber zunächst nur um den Custom Editor. Eine weitere Besonderheit ist der Typ des Property: ImageIcon. Der PropertyEditor verwaltet aber nur eine Pfadangabe. Bestimmt wäre es einfacher das Property von Anfang an als Pfadangabe zu betrachten, aber im realen Leben ist es leider nicht immer zu vermeiden, dass man solche Sonderfälle zu meistern hat. Deswegen auch hier ein komplizierteres Beispiel. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Unser JavaBean JImagePanel hat das Property backgroundImage und erwartet den Typ ImageIcon. Da man dem GUI-Design-Anwender nicht zumuten kann, das Bild jedes mal neu zu zeichnen, müssen wir eine Möglichkeit bieten, dieses von der Festplatte zu laden. Natürlich könnte der Anwender auch den Pfad als Text eingeben, aber das soll ja bequem gehen. &lt;/p&gt; &lt;p class="bodytext"&gt;Zunächst brauchen wir wieder einen PropertyEditor für ImageIcons. Strg+N -&gt; Kategorie "JavaBeans
      Objects" -&gt; Property Editor. Name: ImageIconPropertyEditor. &lt;/p&gt; &lt;p class="bodytext"&gt;Die Java-Klasse wird dann folgendermaßen erweitert:&#160; &lt;/p&gt; &lt;pre&gt;package org.sepix.beandemo;&lt;br /&gt;&lt;br /&gt;import java.beans.*;&lt;br /&gt;import javax.swing.ImageIcon;&lt;br /&gt;&lt;br /&gt;public class ImageIconPropertyEditor extends PropertyEditorSupport {&lt;br /&gt; private String pathToImage;&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public String
      getJavaInitializationString() {&lt;br /&gt; if ( pathToImage != null ) {&lt;br /&gt; return "new javax.swing.ImageIcon (\"" + pathToImage.replace ('\\', '/') + "\")";&lt;br /&gt; }&lt;br /&gt; return "null";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public String getAsText() {&lt;br /&gt; ImageIcon ii = (ImageIcon) getValue();&lt;br /&gt; if ( ii == null ) return null;&lt;br /&gt; return pathToImage;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void
      setAsText(String text) throws IllegalArgumentException {&lt;br /&gt; pathToImage = text;&lt;br /&gt; setValue(new ImageIcon (pathToImage));&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Im Gegensatz zum letzen PropertyEditor wird hier getTags() nicht überschrieben. Damit kann ein Anwender auch direkt einen Pfad in der Wertfeld des Properties eingeben. Die Methode getAtText() und setAsText(String) konvertieren eine Pfadangabe in ein ImageIcon. Eingehende Prüfungen auf korrekte
      Pfadangaben ignoriere ich erstmal (Nur Backslash wird in Slash gewandelt) &lt;/p&gt; &lt;p class="bodytext"&gt;Der Property-Editor wird wieder (per BeanInfo-Editor), in der JImagePanelBeanInfo-Klasse registriert. &lt;/p&gt; &lt;p class="bodytext"&gt;Gewünscht ist aber die Auswahl per Custom Editor. Dazu erstelle ich zunächst ein Customizer Panel. Strg+N -&gt; Kategorie "JavaBeans Objects" -&gt; Customizer. Der Name ist:&#160;ImageIconCustomizer. &lt;/p&gt; &lt;p class="bodytext"&gt;So sollte der
      minimale Customizer dann aussehen: &lt;/p&gt; &lt;pre&gt;package org.sepix.beandemo;&lt;br /&gt;&lt;br /&gt;public class ImageIconCustomizer extends javax.swing.JPanel implements java.beans.Customizer {&lt;br /&gt; private Object bean;&lt;br /&gt;&lt;br /&gt; public ImageIconCustomizer() {&lt;br /&gt; initComponents();&lt;br /&gt; }&lt;br /&gt; public void setObject(Object bean) {&lt;br /&gt; this.bean = bean;&lt;br /&gt; }&lt;br /&gt; private void initComponents() { &lt;br /&gt; setLayout(new
      java.awt.BorderLayout());&lt;br /&gt; } &lt;br /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Im Design-Modus habe ich den Customzier in dieser Art aufgebaut: &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-CustomizerDesign.PNG" alt="" height="513" width="442" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Ansonsten ist noch keine Funktion hinterlegt. Der Customizer muss aber nun im PropertyEditor hinterlegt werden: &lt;/p&gt; &lt;pre&gt;public class
      ImageIconPropertyEditor extends PropertyEditorSupport {&lt;br /&gt; private String pathToImage;&lt;br /&gt; private ImageIconCustomizer customizer;&lt;br /&gt; public ImageIconPropertyEditor () {&lt;br /&gt; customizer = new ImageIconCustomizer();&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;und am Ende folgende Methoden hinzufügen: &lt;/p&gt; &lt;pre&gt; @Override&lt;br /&gt; public Component getCustomEditor() {&lt;br /&gt; return customizer;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;
      @Override&lt;br /&gt; public boolean supportsCustomEditor() {&lt;br /&gt; return true;&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Das war es auch schon erstmal. "Clean &amp;amp; Build" des Projektes. Im Test-JFrame das alte Bean entfernen und aus der Bean-Kategorie erneut hinzufügen. Jetzt kann man im Property backgroundImage den Button [...] anklicken und bekommt den selbst programmierten Customizer angeboten. Zusätzlich kann man natürlich über die ComboBox alle weiteren NetBeans-Editoren
      auswählen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-CustomizerInAction.PNG" alt="" height="391" width="598" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Die Kommunikation zwischen PropertyEditor und Customizer muss über PropertyChangeEvents erfolgen. Wenn der Customizer etwas ändert, muss dieser ein Event feuern. Der PropertyEditor setzt ohne zu zögern den Wert in das Bean ein. Zwar kann der Anwender den Customizer-Dialog abbrechen, aber um das
      Zurücksetzen des alten Wertes kümmert sich dann NetBeans selber. &lt;/p&gt; &lt;p class="bodytext"&gt;Also erweitere ich schon mal den ImageIconPropertyEditor, um das Event-Handling: &lt;/p&gt; &lt;pre&gt; public ImageIconPropertyEditor() {&lt;br /&gt; customizer = new ImageIconCustomizer();&lt;br /&gt; customizer.addPropertyChangeListener(new PropertyChangeListener() {&lt;br /&gt; public void propertyChange(PropertyChangeEvent evt) {&lt;br /&gt; if ( "backgroundImage".equals(evt.getPropertyName()) )
      {&lt;br /&gt; setAsText (customizer.getPath());&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; });&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Die Methode getPath() existiert im Customizer noch nicht, wird aber gleich hinzugefügt. Ich lege dazu das Feld path an, dazu noch setPath und getPath und weitere Hilfsmethoden zum Anpassen der Customizer-GUI-Ausgabe: &lt;/p&gt; &lt;pre&gt;public class ImageIconCustomizer extends javax.swing.JPanel implements java.beans.Customizer {&lt;br /&gt;&lt;br /&gt;
      private Object bean;&lt;br /&gt; private String path;&lt;br /&gt;&lt;br /&gt; // ... Constructor und setObject bleibt wie es ist&lt;br /&gt;&lt;br /&gt; public void setPath (String path) {&lt;br /&gt; this.path = path;&lt;br /&gt; updateEditor();&lt;br /&gt; updateImage();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getPath () {&lt;br /&gt; return path;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void updateUserChange (String newPath) {&lt;br /&gt; path = newPath;&lt;br /&gt;
      firePropertyChange("backgroundImage", null, null);&lt;br /&gt; updateEditor();&lt;br /&gt; updateImage();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void updateEditor() {&lt;br /&gt; jTF_Path.setText (path != null ? path : "");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void updateImage() {&lt;br /&gt; jLB_IconViewer.setIcon(path != null ? new ImageIcon(path) : null);&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Die obige Methode updateUserChange() kümmert sich um das Feuern des Events
      und um die passende Aktualisierung im Customizer-Dialog. Damit der Dialog überhaupt auf Benutzereingaben reagieren kann, setze ich einfach zwei Action-Listener an das Textfeld und den Button für die Pfadauswahl. In NetBeans ist das sehr einfach gemacht. Im Designer des Customizers das Textfeld markieren -&gt; Property Window -&gt; View Events -&gt; In das Wertfeld von actionPerformed klicken -&gt; jTF_PathActionPerformed mit [Enter] bestätigen. NetBeans wechselt sofort in den Quelltexteditor und ich
      fülle die neue Methode aus: &lt;/p&gt; &lt;pre&gt; private void jTF_PathActionPerformed(java.awt.event.ActionEvent evt) { &lt;br /&gt; updateUserChange (jTF_Path.getText());&lt;br /&gt; } &lt;/pre&gt; &lt;p class="bodytext"&gt;Der gleiche Vorgang mit dem Button. Im Designer des Customizers den Button markieren -&gt; Property Window -&gt; View Events -&gt; In das Wertfeld von actionPerformed klicken -&gt; jPB_ChooserActionPerformed mit [Enter] bestätigen. NetBeans wechselt erneut in den
      Quelltexteditor und ich fülle die zweite Methode so aus: &lt;/p&gt; &lt;pre&gt; private void jPB_ChooserActionPerformed(java.awt.event.ActionEvent evt) {&lt;br /&gt; JFileChooser loadFile = new JFileChooser (path);&lt;br /&gt; loadFile.setFileFilter(new FileFilter() {&lt;br /&gt; @Override&lt;br /&gt; public boolean accept(File f) {&lt;br /&gt; String name = f.getName().toLowerCase();&lt;br /&gt; return name.endsWith(".jpg")&lt;br /&gt; || name.endsWith(".png")&lt;br /&gt; ||
      name.endsWith(".gif");&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; @Override&lt;br /&gt; public String getDescription() {&lt;br /&gt; return "Grafikdateien";&lt;br /&gt; }&lt;br /&gt; });&lt;br /&gt; int result = loadFile.showOpenDialog(this);&lt;br /&gt; if ( result == JFileChooser.APPROVE_OPTION ) {&lt;br /&gt; updateUserChange (loadFile.getSelectedFile().getAbsolutePath());&lt;br /&gt; }&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;(ggf. muss man nun die Imports korrigieren. Rechte Maustaste
      -&gt; Fix imports...). &lt;/p&gt; &lt;p class="bodytext"&gt;Das war es auch schon. Der Customizer funktioniert nun und übergibt die Benutzereingaben an den PropertyEditor. Damit kann der Customizer mit dem Editor schon erheblich mehr, als das eigentlich Bean. Denn JImagePanel macht ja nun überhaupt nichts mit den mühevoll übertragenen Daten. &lt;/p&gt; &lt;p class="bodytext"&gt;Aber auch das ist schnell erledigt. Einfach folgende Methode in JImagePanel einfügen: &lt;/p&gt; &lt;pre&gt; @Override&lt;br
      /&gt; public void paintComponent(Graphics g) {&lt;br /&gt; super.paintComponent(g);&lt;br /&gt; ImageIcon background = getBackgroundImage();&lt;br /&gt; if ( background != null ) {&lt;br /&gt; Dimension s = getSize();&lt;br /&gt; int x = 0;&lt;br /&gt; int y = 0;&lt;br /&gt; int width = background.getIconWidth();&lt;br /&gt; int height = background.getIconHeight();&lt;br /&gt; switch ( getAppearance() ) {&lt;br /&gt; case SCALE: {&lt;br /&gt; width = s.width;&lt;br /&gt; height = s.height;&lt;br
      /&gt; break;&lt;br /&gt; }&lt;br /&gt; case CENTER: {&lt;br /&gt; x = (s.width/2) - (width/2);&lt;br /&gt; y = (s.height/2) - (height/2);&lt;br /&gt; break;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; g.drawImage(background.getImage(), x, y, width, height, this);&lt;br /&gt; }&lt;br /&gt; }&lt;/pre&gt; &lt;p class="bodytext"&gt;Die Methode berücksichtigt allerdings nicht die Breite eines eingefügten&#160;Border-Objektes. Das ist aber bestimmt einfach nachzuprogrammieren. &lt;/p&gt; &lt;p
      class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Mit diesem kleinen Vierteiler sollte es nun möglich sein, beliebig komplexe GUI JavaBeans in NetBeans integrieren zu können. Inklusive eigenen Property-Editoren. Über Feedback würde ich mich natürlich freuen. &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_zurueck_zu_den_wurzeln/index.html" class="external-link-new-window" title="Teil 1"&gt;Teil 1&lt;/a&gt; | &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_der_beaninfo_editor/index.html" class="external-link-new-window" title="Teil 2"&gt;Teil 2&lt;/a&gt; | &lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_eigene_property_editoren/index.html" class="external-link-new-window" title="Teil 3"&gt;Teil 3&lt;/a&gt; | &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_ein_custom_proprty_editor/index.html" class="external-link-new-window" title="Teil 4"&gt;-&gt; Teil 4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
      &lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jan 2009 13:49:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: GUI Beans, eigene Property-Editoren</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_eigene_property_editoren/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_eigene_property_editoren/index.html</link>
      <description>&lt;p class="bodytext"&gt;In diesem dritten Teil geht es ans Eingemachte. Das farbenfrohe Klicken ist vorbei, es wird programmiert. &lt;/p&gt; &lt;p class="bodytext"&gt;Im vorherigen Teil habe ich den BeanInfo-Editor vorgestellt und zu der JImagePanel-Klasse nur wenige Eigenschaften freigeschaltet. &lt;/p&gt; &lt;p class="bodytext"&gt;Die zwei neuen Eigenschaften backgroundImage und appearance bieten aber nur einen Komfort von zweifelhaften Wert an. NetBeans bietet keinen Editor für
      ImageIcons an und schon gar nicht für die selbst programmierte Enumeration Appearance. &lt;/p&gt; &lt;p class="bodytext"&gt;Ich fange mal mit Appearance an, weil ich dafür erstmal nur die Möglichkeiten von NetBeans ausschöpfen will. Da NetBeans (leider noch nicht) selbst enum-Klassen erkennt, muss ich selber ran und einen eigenen Editor dafür programmieren. Einmal geht es dafür noch in den Datei-Assistenten: Strg+N -&gt; Kategorie "JavaBeans Objects" -&gt; Property Editor. Name soll sein:
      "AppearancePropertyEditor". Die erzeugte Klasse ist klein und bietet nicht viel. &lt;/p&gt; &lt;p class="bodytext"&gt;Nun wird folgendes in die Klasse programmiert: &lt;/p&gt; &lt;pre&gt;package org.sepix.beandemo;&lt;br /&gt;&lt;br /&gt;import java.beans.*;&lt;br /&gt;import org.sepix.beandemo.JImagePanel.Appearance;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author Aljoscha Rittner&lt;br /&gt; */&lt;br /&gt;public class AppearancePropertyEditor extends PropertyEditorSupport {&lt;br /&gt;
      @Override&lt;br /&gt; public String[] getTags() {&lt;br /&gt; return new String[] {"SCALE", "CENTER"};&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void setAsText(String text) throws IllegalArgumentException {&lt;br /&gt; String input = text != null ? text.toLowerCase() : "";&lt;br /&gt; if ( input.equals("scale")) {&lt;br /&gt; setValue(JImagePanel.Appearance.SCALE);&lt;br /&gt; } else if ( input.equals("center")) {&lt;br /&gt; setValue(JImagePanel.Appearance.CENTER);&lt;br
      /&gt; } else {&lt;br /&gt; setValue (null);&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public String getJavaInitializationString() {&lt;br /&gt; JImagePanel.Appearance app = (Appearance) getValue();&lt;br /&gt; if ( app == null ) return "null";&lt;br /&gt; switch (app) {&lt;br /&gt; case SCALE: {&lt;br /&gt; return "org.sepix.beandemo.JImagePanel.Appearance.SCALE";&lt;br /&gt; }&lt;br /&gt; case CENTER: {&lt;br /&gt; return
      "org.sepix.beandemo.JImagePanel.Appearance.CENTER";&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; return "";&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Was da passiert ist relativ einfach. Die Methode getTags() liefert alle möglichen "Human readable" Werte für appearance. Die Methode setAtText "übersetzt" diese Zeichenketten in echte Werte vom Typ JImagePanel.Appearance. Und letztendlich bastelt die Methode getJavaInitializationString() aus dem Wert einen Java-Befehl, der direkt in
      das Programm vom Form-Designer eingefügt wird. &lt;/p&gt; &lt;p class="bodytext"&gt;Woher weiß nun NetBeans, dass ich nun einen neuen Editor für Appearance habe? Noch gar nicht. Dafür rufe ich wieder die Klasse JImagePanelBeanInfo auf, wechsele in den Desinger und markiere das Property appearence. Auf der rechten Seite kann ich nun die Eigenschaft "Property Editor Class" setzen. In meinem Fall ist das der Name: org.sepix.beandemo.AppearancePropertyEditor.class - es muss also der vollqualifizierte
      Name der Editor-Klasse sein (mit Package) und dem Anhängsel .class (das ist übrigens ein Pseudofeld der Java-Programmiersprache für Object-Klassen). &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-FormDesigner-BeanInfoEditor-EditorClass.PNG" alt="" height="326" width="663" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Nun erneut ein "Clean &amp;amp; Build" des Projektes. Das Test-JFrame öffnen und das alte JImagePanel rauslöschen und erneut über die Palette
      hinzufügen. &lt;/p&gt; &lt;p class="bodytext"&gt;Und tatsächlich: appearance hat nun eine Combobox mit zwei Werten. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-FormDesigner-GUI-Designer-EditorComboBox.PNG" alt="" height="342" width="276" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn ich einen auswähle, wird im Guarded Block des Quelltextes auch der passende Programmbefehl eingefügt: &lt;/p&gt;
      &lt;pre&gt;jImagePanel1.setAppearance(org.sepix.beandemo.JImagePanel.Appearance.CENTER);&lt;/pre&gt; &lt;p class="bodytext"&gt;Nur noch eine Sache stört mich. Das Property appearance zeigt zunächst immer null an. Wenn man aber JImagePanel anpasst und das Feld appearance initialisiert, dann ist das Problem auch verschwunden: &lt;/p&gt; &lt;pre&gt;public class JImagePanel extends JPanel {&lt;br /&gt;&lt;br /&gt; public static enum Appearance {SCALE, CENTER};&lt;br /&gt;&lt;br /&gt; private ImageIcon
      backgroundImage;&lt;br /&gt; public static final String PROP_BACKGROUNDIMAGE = "backgroundImage";&lt;br /&gt; private Appearance appearance = Appearance.SCALE; // &amp;lt;- Standard&lt;br /&gt; public static final String PROP_APPEARANCE = "appearance";&lt;br /&gt; ...&lt;/pre&gt; &lt;p class="bodytext"&gt;Super. Eine Eigenschaft haben wir schon auf die Sprünge geholfen. Nun geht es um das Hintergrundbild. Dazu mehr im nächsten Teil! &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;/p&gt;&lt;hr
      /&gt;&lt;p&gt;&lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_zurueck_zu_den_wurzeln/index.html" class="external-link-new-window" title="Teil 1"&gt;Teil 1&lt;/a&gt; | &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_der_beaninfo_editor/index.html" class="external-link-new-window" title="Teil 2"&gt;Teil 2&lt;/a&gt; | -&gt; &lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_eigene_property_editoren/index.html" class="external-link-new-window" title="Teil 3"&gt;Teil 3&lt;/a&gt; | &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_ein_custom_proprty_editor/index.html" class="external-link-new-window" title="Teil 4"&gt;Teil 4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt; &lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jan 2009 13:00:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: GUI Beans, der BeanInfo Editor</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_der_beaninfo_editor/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_der_beaninfo_editor/index.html</link>
      <description>&lt;p class="bodytext"&gt;Im vorherigen Teil habe ich eine Bean-Klasse erstellt, die zwei zusätzliche Eigenschaften zu einem JPanel hinzufügt. Zum einem Appearance (Darstellung) und backgroundImage (Hintergrundbild).&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;In diesem Teil möchte ich den BeanInfo-Editor verwenden, um diese Eigenschaften in gewünschter Form in NetBeans darzustellen und vor allem viele andere Properties (von JPanel) abschalten. &lt;/p&gt; &lt;p
      class="bodytext"&gt;Zunächst wähle ich die JImagePanel-Klasse im Explorer aus, rechte Maustaste und rufe im Kontextmenü den "BeanInfo Editor..." auf. Da noch keine BeanInfo-Klasse exisitiert, fragt NetBeans noch höflich nach, ob diese Klasse erzeugt werden soll. Das bestätige ich und erhalte damit eine wirklich monströs große Klasse mit dem Namen JImagePanelBeanInfo. Im BeanInfo-Editor habe ich zwei Views zur Verfügung: Source und Designer. Source zeigt mir den Java-Quelltext und Designer eine
      hierarchische Darstellung von Properties, Event Sources und Methods. Natürlich auch alle Elemente aus JPanel und den Superklassen. Zwischen den ganzen Properties verstecken sich auch die neuen Eigenschaften appearance und backgroundImange. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-BeanInfoDesigner.PNG" alt="" height="328" width="577" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Um die spätere Darstellung der Eigenschaften im NetBeans-GUI-Designer
      übersichtlich zu halten, deaktiviere ich einfach erstmal alle Properties und Methods. Also alle Property-Knoten markieren, rechte Maustaste -&gt; "Toggle Include". Das selbe mit den Methoden durchführen.&#160; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-BeanInfoDesignerTI.PNG" alt="" height="385" width="441" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Wenn man nun speichert und in die Source-Ansicht wechselt, sieht man, dass der Quelltext doch deutlich
      kürzer geworden ist. Zurück in der Design-Ansicht markiere ich in der Kategorie Properties die Eigenschaften appearance, backgroundImage und border -&gt; rechte Maustaste -&gt; "Toggle Include". &lt;/p&gt; &lt;p class="bodytext"&gt;Damit sollten nur noch die drei Eigenschaften und alle Ereignisse (Event Source) aktiviert sein. &lt;/p&gt; &lt;p class="bodytext"&gt;Jetzt kommt die Stunde der Wahrheit. Vom Projekt ein Clean&amp;amp;Build machen. Mit der rechten Maustaste auf JImagePanel klicken -&gt;
      Tools -&gt; Add to Palette... In dem Dialog nun die Beans-Kategorie auswählen (so finden wir unser Bean einfacher wieder). &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-AddToPalette.PNG" alt="" height="271" width="251" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Nun erzeuge ich ein neue JFrame zum testen. Strg+N -&gt; Kategorie "Swing GUI Forms" -&gt; JFrame Form. &lt;/p&gt; &lt;p class="bodytext"&gt;Der Designer öffnet sich auch sofort und aus der Palette
      ziehe ich (aus der Kategorie Beans) mein persönliches JImagePanel-Bean. Und wie man am Eigenschaftsfenster sieht, werden nur drei Properties angezeigt. So wie ich das im BeanInfo-Editor festgelegt hatte. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-FormDesigner-FirstImport.PNG" alt="" height="607" width="721" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Für das Property "border" gibt es schon einen schönen Editor, den ich über den Button [...] aufrufen kann.
      Für appearance und backgroundImage sieht die Sache noch etwas Mau aus. &lt;/p&gt; &lt;p class="bodytext"&gt;Im dritten Teil zeige ich, wie man für die zwei neuen Eigenschaften eigene Editoren hinterlegen kann. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_zurueck_zu_den_wurzeln/index.html" class="external-link-new-window" title="Teil 1"&gt;Teil 1&lt;/a&gt; | &lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_der_beaninfo_editor/index.html" class="external-link-new-window" title="Teil 2"&gt;-&gt; Teil 2&lt;/a&gt; | &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_eigene_property_editoren/index.html" class="external-link-new-window" title="Teil 3"&gt;Teil 3&lt;/a&gt; | &lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_ein_custom_proprty_editor/index.html" class="external-link-new-window" title="Teil 4"&gt;Teil 4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt; &lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jan 2009 12:27:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: BeanDev: GUI Beans - Zurück zu den Wurzeln</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_zurueck_zu_den_wurzeln/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////beandev_gui_beans_zurueck_zu_den_wurzeln/index.html</link>
      <description>&lt;p class="bodytext"&gt;Manchmal kann man schon vergessen, warum NetBeans überhaupt den Teil "Beans" im Namen trägt. Dabei ist es gerade in der NetBeans-IDE recht einfach im Form-Editor eigene Java-Bean-Komponenten einzufügen. &lt;/p&gt; &lt;p class="bodytext"&gt;Sicherlich, im Entwicklungsprozess von Version 5.5 zu 6.5 ist ein praktisches Werkzeug, zwischenzeitlich in Version 6.0, unter die Räder gekommen: Der BeanInfo-Editor. Dabei hat gerade dieses Tool in Vergangenheit viel
      Handarbeit abgenommen, die bei der Pflege von BeanInfo-Klassen auf einem so zukommen. &lt;/p&gt; &lt;p class="bodytext"&gt;Auch die aktuelle Version in 6.5 lässt noch einige Wünsche offen, aber es ist wieder schön bequem geworden zu seinen &lt;a title="Plain Old Java Object" href="http://de.wikipedia.org/wiki/Plain_Old_Java_Object" target="_blank" class="external-link-new-window"&gt;POJO&lt;/a&gt;-Klassen BeanInfo-Deskriptoren hinzuzufügen. &lt;/p&gt; &lt;p class="bodytext"&gt;NetBeans hat für
      Java-Bean-Komponenten einiges an Assistenten bereitgestellt. Diese Assistenten stellen i.d.R. nur einfache Java-Templates zur Verfügung. Mit New File... -&gt; Kategorie "JavaBeans Objects" kommt man an die Vorlagen heran. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-NewFile.PNG" alt="" height="480" width="577" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;JavaBeans Component&lt;br /&gt;Erzeugt eine einfache serialisierbare Java-Klasse mit PropertyChangeSupport und
      dazu einem Beispiel-Property.&lt;/li&gt;&lt;li&gt;BeanInfo und BeanInfo w/o Icon&lt;br /&gt;Erstellt eine BeanInfo-Klasse (mit oder ohne Icon-Abfrage), die sich auf eine Java-Klasse bezieht. Die BeanInfo-Klasse arbeitet mit einem MultiView-Editor für den Java-Quelltext und einem Designer.&lt;/li&gt;&lt;li&gt;PropertyEditor&lt;br /&gt;Dieser Assistent erzeugt eine sehr&#160;einfache Vorlage eines eigenen Eigenschafts-Editor, der für bestimmte Properties festgelegt werden kann. Die Klasse erweitert nur
      PropertyEditorSupport.&lt;/li&gt;&lt;li&gt;Customizer&lt;br /&gt;Mit dem Customizer-Assistenten wird ein GUI-Panel erstellt, der als besonderer grafischer Editor über den PropertyEditor zurückgegeben werden kann. NetBeans zeigt dann im Eigenschafts-Fenster für das Property einen zusätzlichen Button an, um diesen Customizer aufzurufen.&lt;br /&gt;Der Customizer ist ein JPanel und implementiert das Interface java.beans.Customizer. &lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Als Beispiel (wie man
      die Klassen verwendet), möchte ich hier ein JPanel-GUI Bean vorstellen, &lt;/p&gt;&lt;ul&gt;&lt;li&gt;welches ein Hintergrund-Bild darstellt, &lt;/li&gt;&lt;li&gt;dieses Bild skaliert oder zentriert darstellt &lt;/li&gt;&lt;li&gt;und im GUI-Editor weitere Komponenten aufnehmen darf.&lt;/li&gt;&lt;/ul&gt;&lt;p class="bodytext"&gt;Für das Bean JImagePanel nehme ich nicht den Assistenten, um eine JavaBeans Component zu erzeugen. Einfach nur Strg+N -&gt; Java Class auswählen und die Klasse "JImagePanel"
      nennen. Nun das Panel noch von JPanel ableiten, Fix Imports..., und schon haben wir ein einfaches Java Bean. &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;pre&gt;import javax.swing.JPanel;&lt;br /&gt;public class JImagePanel extends JPanel {&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt; &lt;p class="bodytext"&gt;Ein sehr einfaches Java-Bean. Um das Hintergrundbild im Panel anzeigen zu können, muss dieses als Property hinterlegt werden. Den Eingabecursor in den Body der Klasse setzen, Alt+Einf
      eintippen und im Kontextmenü "Add Property..." auswählen. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-AddProperty.PNG" alt="" height="374" width="465" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Im Dialog des Assistenten einfach den Namen auf "backgroundImage" setzen, für Type nehme ich den Browse-Button und gebe im Filter einfach ImageIcon ein und übernehme die Klasse javax.swing.ImageIcon. Außerdem sollte die Eigenschaft "private" sein und ein Haken bei
      "Bound" sollte noch gesetzt werden. Damit wird auch automatisch "Generate Property Change Support" aktiviert. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-AddPropertyDialog.PNG" alt="" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;Da das Hintergrundbild entweder skaliert oder zentriert werden soll, käme da noch eine zusätzliche Eigenschaft hinzu. Man könnte ein boolean verwenden, nur um das Skalieren einstellbar zu
      machen. Bei false könnte man das Bild dann zentrieren. Das wäre aber schlecht erweiterbar. Also verwende ich eine Enumeration. &lt;/p&gt; &lt;p class="bodytext"&gt;Ich füge der Klasse einfach folgende Zeile hinzu: &lt;/p&gt; &lt;pre&gt;public static enum Appearance {SCALE, CENTER};&lt;/pre&gt; &lt;p class="bodytext"&gt;Dann erzeuge ich das passende Property hinzu: Alt+Einf -&gt; "Add Property...". Den Namen auf "appearance" setzen, für Type den enum-Namen "Appearance", Zugriff wieder "private" und
      [X] Bound. Dann wieder [Ok] anklicken. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;img src="http://www.sepix.de/fileadmin/BeansDemo-AddPropertyAppearanceDialog.PNG" alt="" height="471" width="599" /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Jetzt ist in der (anfänglich einfachen) Java-Klasse eine Menge los. Zwei Properties sind hinzugekommen und PropertyChangeSupport. Außerdem darf man dem Bean nun Listener hinzufügen und entfernen. Ein richtig schönes Bean also! &lt;/p&gt; &lt;p class="bodytext"&gt;Im
      zweiten Teil geht es an den BeanInfo-Editor, um nun die Darstellung der Eigenschaften in NetBeans zu steuern. &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_zurueck_zu_den_wurzeln/index.html" class="external-link-new-window" title="Teil 1"&gt;-&gt; Teil 1&lt;/a&gt; | &lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_der_beaninfo_editor/index.html" class="external-link-new-window" title="Teil 2"&gt;Teil 2&lt;/a&gt; | &lt;a href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_eigene_property_editoren/index.html" class="external-link-new-window" title="Teil 3"&gt;Teil 3&lt;/a&gt; | &lt;a
      href="http://www.sepix.de/blogs/blogrittner/blog/archive/2009/january/13/beandev_gui_beans_ein_custom_proprty_editor/index.html" class="external-link-new-window" title="Teil 4"&gt;Teil 4&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jan 2009 10:33:00 +0000</pubDate>
    </item>
    <item>
      <title>JNBB - Joschs NetBeans Blog: Artikel: NetBeans 6.5 in Übersicht</title>
      <guid isPermaLink="false">http://www.sepix.de/blogs/blogrittner/blog/archive////artikel_netbeans_65_in_uebersicht/index.html</guid>
      <link>http://www.sepix.de/blogs/blogrittner/blog/archive////artikel_netbeans_65_in_uebersicht/index.html</link>
      <description>&lt;p class="bodytext"&gt;&lt;a title="Toni Epple" href="http://eppleton.sharedhost.de/blog/?p=401" target="_blank" class="external-link-new-window"&gt;Toni Epple&lt;/a&gt;, Mitglied des &lt;a title="NetBeans Dream Team Member" href="http://dreamteam.netbeans.org" target="_blank" class="external-link-new-window"&gt;NetBeans Dream Team&lt;/a&gt;, hat einen schönen Beitrag zu den Features von &lt;a title="NetBeans Homepage" href="http://www.netbeans.org" target="_blank"
      class="external-link-new-window"&gt;NetBeans 6.5&lt;/a&gt; für das &lt;a title="JavaMagazine" href="http://www.javamagazine.de" target="_blank" class="external-link-new-window"&gt; JavaMagazine&lt;/a&gt; geschrieben. &lt;/p&gt; &lt;p class="bodytext"&gt;Es gibt auch eine gekürzte Online-Version in zwei Teilen im &lt;a title="JAXenter" href="http://it-republik.de/jaxenter/artikel/Was-bringt-NetBeans-6.5-2084.html" target="_blank" class="external-link-new-window"&gt;JAXenter&lt;/a&gt;: &lt;/p&gt; &lt;p
      class="bodytext"&gt;&lt;a title="Teil 1" href="http://it-republik.de/jaxenter/artikel/NetBeans-6.5-2083.html" target="_blank" class="external-link-new-window"&gt;Teil 1 - Alles rund um das Release 6.5 mit Unterstützung für PHP und JavaFX&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&lt;a title="Teil 2" href="http://it-republik.de/jaxenter/artikel/Was-bringt-NetBeans-6.5-2084.html" target="_blank" class="external-link-new-window"&gt;Teil 2 - Wenn's mal nicht so läuft – Profiler &amp;amp;
      Debugger&lt;/a&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;Beste Grüße,&lt;br /&gt;&#160; Josch.&lt;br /&gt; &lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt; &lt;p class="bodytext"&gt;&#160;&lt;/p&gt;</description>
      <pubDate>Mon, 12 Jan 2009 13:39:00 +0000</pubDate>
    </item>
  </channel>
</rss>
