<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Jyloo Software - RSS Feed</title>
    <link>http://www.jyloo.com/news</link>
    <description />
    <copyright>(C) by Jyloo Software, Germany</copyright>
    <dc:rights>(C) by Jyloo Software, Germany</dc:rights>
    <item>
      <title>Synthetica + NetBeans 7.1</title>
      <link>http://www.jyloo.com/news?pubId=1326965356000</link>
      <description>&lt;p&gt;&#xD;
	As of &lt;strong&gt;NetBeans 7.1&lt;/strong&gt; non-document windows in the same docking spot are organized into a tab group and are no longer stretched by default. To support this new feature &lt;a href="http://www.jyloo.com/syntheticaaddons"&gt;&lt;strong&gt;SyntheticaAddons V1.6.2&lt;/strong&gt;&lt;/a&gt; provides an updated NetBeans plugin. The new plugin is backwards compatible and works fine with NetBeans 6.9/7.0.&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="non-stretching view tabs" src="http://www.jyloo.com/images/blog/syntheticaNetBeans/nonStretchingViewTabs.png" style="width: 500px; height: 320px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	To enable the old appearance/behavior NetBeans supports the system property &lt;strong&gt;winsys.stretching_view_tabs&lt;/strong&gt;. By setting the system property to &lt;strong&gt;true&lt;/strong&gt; you can force NetBeans using the old streched tabs appearance.&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="stretching view tabs" src="http://www.jyloo.com/images/blog/syntheticaNetBeans/stretchingViewTabs.png" style="width: 500px; height: 320px;" /&gt;&lt;/p&gt;&#xD;
&lt;h3 style="margin-bottom: 10px;"&gt;&#xD;
	Related Links&lt;/h3&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1308209905000"&gt;Synthetica + NetBeans RCP, Part I&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1322244511000"&gt;Synthetica + NetBeans RCP, Part II&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 10px;"&gt;&#xD;
	&lt;a href="http://wiki.netbeans.org/DevFaqCustomizeWindowSystem"&gt;NetBeans DevFaqCustomizeWindowSystem&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 19 Jan 2012 09:29:16 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1326965356000</guid>
      <dc:date>2012-01-19T09:29:16Z</dc:date>
    </item>
    <item>
      <title>Synthetica V2.14.2 and SyntheticaAddons V1.6.2 have been released!</title>
      <link>http://www.jyloo.com/news?pubId=1326832601000</link>
      <description>&lt;p&gt;&#xD;
	The maintenance releases &lt;a href="http://www.jyloo.com/synthetica/"&gt;Synthetica&lt;/a&gt; &lt;strong&gt;V2.14.2&lt;/strong&gt; and &lt;a href="http://www.jyloo.com/syntheticaaddons/"&gt;SyntheticaAddons&lt;/a&gt; &lt;strong&gt;V1.6.2&lt;/strong&gt; are available. The updates provide support for&lt;strong&gt; NetBeans 7.1&lt;/strong&gt; and some minor bug fixes. See also &lt;a href="http://www.jyloo.com/synthetica/changelog"&gt;Synthetica changelog&lt;/a&gt; and &lt;a href="http://www.jyloo.com/syntheticaaddons/changelog"&gt;SyntheticaAddons changelog&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 17 Jan 2012 20:36:41 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1326832601000</guid>
      <dc:date>2012-01-17T20:36:41Z</dc:date>
    </item>
    <item>
      <title>Synthetica + NetBeans RCP, Part II</title>
      <link>http://www.jyloo.com/news?pubId=1322244511000</link>
      <description>&lt;p&gt;&#xD;
	This Article describes how to integrate Synthetica, Themes and SyntheticaAddons in your Netbeans Platform application (RCP). Instead of extending the classpath as described &lt;a href="http://www.jyloo.com/news/?pubId=1308209905000"&gt;here&lt;/a&gt;, let&amp;#39;s create two additional modules and add these modules to our NetBeans RCP application.&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	The first module covers Swing core components only. For this we create a module called &lt;strong&gt;Synthetica&lt;/strong&gt; which provides Synthetica&amp;#39;s core library and all needed theme libraries. We additionally create a &lt;strong&gt;LAFInstall&lt;/strong&gt; class to install the look and feel on application startup. The &amp;quot;--laf&amp;quot; parameter, mentioned in the first article, is therefore no longer needed.&lt;/p&gt;&#xD;
&lt;h4&gt;&#xD;
	Create Module Synthetica&lt;/h4&gt;&#xD;
&lt;ul&gt;&#xD;
	&lt;li&gt;&#xD;
		Create a new module&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Name: &lt;strong&gt;Synthetica&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Code Name Base: &lt;strong&gt;myrcp.synthetica&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Finish&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Select Module Synthetica / Properties&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Select Libraries / Module Dependencies&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Add Dependency:&lt;strong&gt; Module System API&lt;/strong&gt;, &lt;strong&gt;Utilities API&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Select &amp;#39;Wrapped JARs&amp;#39;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Add JAR: core library &lt;strong&gt;synthetica.jar&lt;/strong&gt; and your preferred theme e.g &lt;strong&gt;syntheticaSimple2D.jar&lt;/strong&gt;, Note: the Standard theme is already part of synthetica.jar&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Select API Versioning, select modul type &lt;strong&gt;eager&lt;/strong&gt; and make &lt;strong&gt;myrcp.synthetica&lt;/strong&gt; and &lt;strong&gt;all listed packages public&lt;/strong&gt;&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Create class myrcp.synthetica.LAFInstall and override the method #restored()&#xD;
		&lt;pre class="brush: java"&gt;public class LAFInstall extends ModuleInstall &#xD;
{&#xD;
  @Override&#xD;
  public void restored() &#xD;
  {&#xD;
    try &#xD;
    {&#xD;
      UIManager.setLookAndFeel(&#xD;
        &amp;quot;de.javasoft.plaf.synthetica.SyntheticaSimple2DLookAndFeel&amp;quot;);&#xD;
    } &#xD;
    catch (Exception e) &#xD;
    {&#xD;
      Exceptions.printStackTrace(e);&#xD;
    }    &#xD;
  }  &#xD;
}&#xD;
&lt;/pre&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Edit Important files / Module Manifest&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				add the line below to the manifest file&#xD;
				&lt;pre class="brush: xml"&gt;&#xD;
				OpenIDE-Module-Install: myrcp/synthetica/LAFInstall.class&#xD;
&lt;/pre&gt;&#xD;
			&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&#xD;
	The second module is used to provide all SynteticaAddons libraries and covers UI-support for Netbeans components. In this example configuration we assume that SyntheticaSimple2D is used as preferred theme, which also means that the theme extension syntheticaSimple2DAddon.jar has to be added to your module.&lt;/p&gt;&#xD;
&lt;h4&gt;&#xD;
	Create Module SyntheticaAddons&lt;/h4&gt;&#xD;
&lt;ul&gt;&#xD;
	&lt;li&gt;&#xD;
		Create a new Module&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Name: &lt;strong&gt;SyntheticaAddons&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Code Name Base: &lt;strong&gt;myrcp.syntheticaaddons&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Finish&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Select Module SyntheticaAddons / Properties&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Select Libraries / Module Dependencies&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Add Dependency:&lt;strong&gt; Look &amp;amp; Feel Customization Library&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;Nodes API&lt;/strong&gt;, &lt;strong&gt;Synthetica&lt;/strong&gt;, &lt;strong&gt;Tab Control&lt;/strong&gt;, &lt;strong&gt;UI Utilities API&lt;/strong&gt;, &lt;strong&gt;Window System API&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Select &amp;#39;Wrapped JARs&amp;#39;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Add JAR: &lt;strong&gt;de-javasoft-synthetica-netbeans.jar&lt;/strong&gt;, &lt;strong&gt;syntheticaAddons.jar&lt;/strong&gt;, &lt;strong&gt;syntheticaSimple2DAddon.jar&lt;/strong&gt;, &lt;strong&gt;jywidgets.jar, swingx-1.6.2.jar&lt;/strong&gt;&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Selet API Versioning, select modul type &lt;strong&gt;eager&lt;/strong&gt; and make &lt;strong&gt;all packages public&lt;/strong&gt;&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h4&gt;&#xD;
	Modify your Main/Core Module&lt;/h4&gt;&#xD;
&lt;ul&gt;&#xD;
	&lt;li&gt;&#xD;
		Select your Main/Core Module / Properties&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Select Libraries / Module Dependencies&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Add Dependency: &lt;strong&gt;Synthetica&lt;/strong&gt;, &lt;strong&gt;SyntheticaNetbeans&lt;/strong&gt;&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h4&gt;&#xD;
	Modify your Netbeans Platform Application&lt;/h4&gt;&#xD;
&lt;ul&gt;&#xD;
	&lt;li&gt;&#xD;
		Select Important Files / Project Properties&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				add &lt;strong&gt;app.conf=myrcp.conf&lt;/strong&gt;&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		create new file myrcp.conf to provide basic configuration&#xD;
		&lt;pre class="brush: xml"&gt;# ${HOME} will be replaced by user home directory according to platform&#xD;
default_userdir=&amp;quot;${HOME}/.${APPNAME}/dev&amp;quot;&#xD;
default_mac_userdir=&amp;quot;${HOME}/Library/Application Support/${APPNAME}/dev&amp;quot;&#xD;
&#xD;
# options used by the launcher by default, can be overridden by explicit&#xD;
# command line switches&#xD;
default_options=&amp;quot;--branding testrcp -J-Dnb.forceui=de.javasoft.synthetica.netbeans.SyntheticaLFCustoms -J-Xms24m -J-Xmx64m&amp;quot;&#xD;
# for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea&#xD;
&lt;/pre&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		make sure that &lt;strong&gt;-J-Dnb.forceui=de.javasoft.synthetica.netbeans.SyntheticaLFCustoms&lt;/strong&gt; has been added to the default options of the config file&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h3 style="margin-bottom: 10px;"&gt;&#xD;
	Related Links&lt;/h3&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 10px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1308209905000"&gt;Synthetica + NetBeans RCP, Part I&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 25 Nov 2011 18:08:31 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1322244511000</guid>
      <dc:date>2011-11-25T18:08:31Z</dc:date>
    </item>
    <item>
      <title>Synthetica maintenance release V2.14.1 is available</title>
      <link>http://www.jyloo.com/news?pubId=1322221917000</link>
      <description>&lt;p&gt;&#xD;
	&lt;a href="http://www.jyloo.com/synthetica/"&gt;Synthetica&lt;/a&gt; &lt;strong&gt;V2.14.1&lt;/strong&gt; is available - see &lt;a href="http://www.jyloo.com/synthetica/changelog"&gt;changelog&lt;/a&gt; for more details.&lt;/p&gt;</description>
      <pubDate>Fri, 25 Nov 2011 11:51:57 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1322221917000</guid>
      <dc:date>2011-11-25T11:51:57Z</dc:date>
    </item>
    <item>
      <title>SyntheticaAddons maintenance release V1.6.1 is available</title>
      <link>http://www.jyloo.com/news?pubId=1321529278000</link>
      <description>&lt;p&gt;&#xD;
	&lt;a href="http://www.jyloo.com/syntheticaaddons/"&gt;SyntheticaAddons&lt;/a&gt; &lt;strong&gt;V1.6.1&lt;/strong&gt; is available - see &lt;a href="http://www.jyloo.com/syntheticaaddons/changelog"&gt;changelog&lt;/a&gt; for more details.&lt;/p&gt;</description>
      <pubDate>Thu, 17 Nov 2011 11:27:58 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1321529278000</guid>
      <dc:date>2011-11-17T11:27:58Z</dc:date>
    </item>
    <item>
      <title>JYTabbedPane Features in SyntheticaAddons V1.6</title>
      <link>http://www.jyloo.com/news?pubId=1320918851000</link>
      <description>&lt;p&gt;&#xD;
	&lt;strong&gt;&lt;a href="http://www.jyloo.com/syntheticaAddons"&gt;SyntheticaAddons V1.6.0&lt;/a&gt;&lt;/strong&gt; provides some new JYTabbedPane features. So let&amp;#39;s take a look at these new features and find out how to use them in your application.&lt;/p&gt;&#xD;
&lt;h3&gt;&#xD;
	PlusButton support to add new tabs&lt;/h3&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;img alt="JYTabbedPane PlusButton" src="http://www.jyloo.com/images/blog/tabbedPane/plusButton.png" style="width: 290px; height: 50px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	The PlusButton isn&amp;#39;t shown by default and has to be enabled by calling JYTabbedPane#setShowPlusButton(true). To let you control how the new Tabs will be created you additionaly have to provide an &amp;quot;addTab&amp;quot; action and put the action into the action map just like in the example below.&lt;/p&gt;&#xD;
&lt;pre class="brush: java"&gt;&#xD;
final JYTabbedPane tabbedPane = new JYTabbedPane();&#xD;
tabbedPane.getActionMap().put(&amp;quot;addTab&amp;quot;, new AbstractAction(){&#xD;
  public void actionPerformed(ActionEvent evt)&#xD;
  {&#xD;
    //add tab and content&#xD;
    tabbedPane.addTab(&amp;quot;New Tab&amp;quot;, createTabbedPaneContent());    &#xD;
    //move tab after selected tab and select the new tab&#xD;
    if (tabPane.getTabCount() &amp;gt; 1)&#xD;
    {  &#xD;
      int index = tabPane.getSelectedIndex() + 1;&#xD;
      tabbedPane.moveTab(tabPane.getTabCount() - 1, index);&#xD;
      tabbedPane.setSelectedIndex(index);&#xD;
    }  &#xD;
  }&#xD;
});&#xD;
tabbedPane.setShowPlusButton(true);&#xD;
&lt;/pre&gt;&#xD;
&lt;h3 class="topSpace"&gt;&#xD;
	Editable tabs&lt;/h3&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;img alt="JYTabbedPane PlusButton" src="http://www.jyloo.com/images/blog/tabbedPane/editableTabs.png" style="width: 290px; height: 50px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	Tabs are non-editable by default. However, JYTabbedPane#setTabsEditable(true) is the related method to make tabs editable on double-click. If you are interested in tab text changes, add a PropertyChangeListener to the tabbed pane and filter events for the property name &amp;quot;title&amp;quot;.&lt;/p&gt;&#xD;
&lt;h3&gt;&#xD;
	Custom Close Button Strategy&lt;/h3&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;img alt="JYTabbedPane CustomCloseButtonStrategy" src="http://www.jyloo.com/images/blog/tabbedPane/customCloseButtonStrategy.png" style="width: 400px; height: 120px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	Sometimes it&amp;#39;s necessary to use a custom strategy e.g. to make one or more tabs non-closable. By setting the custom ICloseButtonStrategy below there&amp;#39;s no way for the user to close the first tab.&lt;/p&gt;&#xD;
&lt;pre class="brush: java"&gt;&#xD;
JYTabbedPane tabbedPane = new JYTabbedPane();&#xD;
tabbedPane.setCloseButtonStrategy(new ICloseButtonStrategy()&#xD;
{      &#xD;
  public boolean isButtonVisible(JYTabbedPane tabbedPane, Tab tab)&#xD;
  {&#xD;
    return tab.getTabIndex()) &amp;gt; 0;&#xD;
  }&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;h3 class="topSpace"&gt;&#xD;
	Tab History Support&lt;/h3&gt;&#xD;
&lt;p&gt;&#xD;
	The default behavior on tab close is to automatically select the next available tab in the tab row. By enabling tab history JYTabbedPane is able to remember the tab which was selected before the currently selected tab and restores the tab on tab close. This feature improves usability for closable tabs.&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;img alt="JYTabbedPane TabHistory" src="http://www.jyloo.com/images/blog/tabbedPane/tabHistory.png" style="height: 353px; width: 540px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	The example below demonstrates how to enable tab history.&lt;/p&gt;&#xD;
&lt;pre class="brush: java"&gt;&#xD;
JYTabbedPane tabbedPane = new JYTabbedPane();&#xD;
tabbedPane.setTabHistoryEnabled(true);&#xD;
tabbedPane.setCloseButtonStrategy(CloseButtonStrategy.ALL_TABS);&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	&amp;nbsp;&lt;/p&gt;&#xD;
&lt;h3 style="margin-bottom: 10px;"&gt;&#xD;
	Related Posts&lt;/h3&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1312880398000"&gt;How to customize a JYTabbedPane component&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1305103127000"&gt;How To Set A Custom Close Tab Action&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 10px;"&gt;&#xD;
	&lt;a href="http://www.javalobby.org/java/forums/t94860.html"&gt;Customization - How to apply a Firefox style to a JTabbedPane&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 10 Nov 2011 09:54:11 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1320918851000</guid>
      <dc:date>2011-11-10T09:54:11Z</dc:date>
    </item>
    <item>
      <title>Synthetica V2.14 and SyntheticaAddons V1.6 is released!</title>
      <link>http://www.jyloo.com/news?pubId=1320762205000</link>
      <description>&lt;p&gt;&#xD;
	We are pleased to announce the release of &lt;a href="http://www.jyloo.com/synthetica/download"&gt;Synthetica V2.14.0&lt;/a&gt; and &lt;a href="http://www.jyloo.com/syntheticaaddons/download"&gt;SyntheticaAddons V1.6.0&lt;/a&gt;. Please find all major improvements below - a complete list of changes can be found at &lt;a href="http://www.jyloo.com/synthetica/changelog"&gt;Synthetica changelog&lt;/a&gt; and &lt;a href="http://www.jyloo.com/syntheticaaddons/changelog"&gt;SyntheticaAddons changelog&lt;/a&gt;.&lt;/p&gt;&#xD;
&lt;h3&gt;&#xD;
	New Synthetica Features&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
	&lt;li&gt;&#xD;
		Style name support by client property &lt;strong&gt;Synthetica.style&lt;/strong&gt; (Java6u10 or above required)&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Until now a custom style has to be bound by the component name (JComponent#setName(String)). The base functionality is inherited from Synth. Because some apps already use the component name for other things there&amp;#39;s a need to bind a style to a component by another mechanism - the client property&amp;nbsp; &amp;quot;Synthetica.style&amp;quot; fulfills this requirement.&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				While style binding by name is still supported, binding by client property &lt;strong&gt;Synthetica.style&lt;/strong&gt; has priority.&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				Because JFrame/JDialog doesn&amp;#39;t support a #putClientProperty() method, you have to use the related RootPane instead.&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Custom window shape support.&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				Non-rectangular (rounded rectangale) window shapes are already supported. However, in case that you want to use a different window shape, you have to create and provide your own shape class which implements the &lt;strong&gt;SyntheticaWindowShape&lt;/strong&gt; interface.&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Improved customization for title panes.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Improved large icon support for menu items.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		New UI-property to enable/disable style name support.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Added UI-property &amp;#39;ToolTip.background&amp;#39; support.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Window close item in system menu will be disabled when close button becomes disabled or invisible.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Updated themes.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h3&gt;&#xD;
	New SyntheticaAddons Features&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
	&lt;li&gt;&#xD;
		New JYTabbedPane features&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				build in plus button support to allow users to add new tabs&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				support for editable tab titles&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				custom close button strategy support&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				tab history support to restore last selected tab on tab close&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				custom font and color support for HTML based tab titles&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		New JYTable features&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				support to specify initial column filter and value&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				improved filter model binding&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		New JYDocking features&#xD;
		&lt;ul&gt;&#xD;
			&lt;li&gt;&#xD;
				tab reorder support&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				DockableFactory support to allow dynamic, persisted dockables being restored&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				support for persistent active and selected dockable states&lt;/li&gt;&#xD;
			&lt;li&gt;&#xD;
				new UI-property to respect the minimum size of Dockables (JYDockingView) when resizing a region - &lt;strong&gt;JYDocking.respectMinimumDockableSize&lt;/strong&gt; (false by default).&lt;/li&gt;&#xD;
		&lt;/ul&gt;&#xD;
	&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		New Component JYTaskPane - improved customizability compared to JXTaskPane.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		JYLabel - support for being editable on double click.&lt;/li&gt;&#xD;
	&lt;li&gt;&#xD;
		Updated DemoCenter application - new examples.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;div&gt;&#xD;
	&lt;strong&gt;Product Links&lt;br /&gt;&#xD;
	&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/synthetica"&gt;Synthetica Look And Feel&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/synthetica/download"&gt;Synthetica Download&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/syntheticaaddons"&gt;SyntheticaAddons&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 20px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/syntheticaaddons/download"&gt;SyntheticaAddons Download&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 08 Nov 2011 14:23:25 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1320762205000</guid>
      <dc:date>2011-11-08T14:23:25Z</dc:date>
    </item>
    <item>
      <title>Swing QuickTip: Redispatching Mouse Events</title>
      <link>http://www.jyloo.com/news?pubId=1315817317000</link>
      <description>&lt;p&gt;&#xD;
	When creating a compound Swing component mouse events for embedded components will be consumed by the related component and do not reach the parent control. Alex from Sun/Oracle recently &lt;a href="http://weblogs.java.net/blog/alexfromsun/archive/2011/07/08/swing-better-world-compound-components-0"&gt;blogged about this behavior in his series &amp;#39;Swing in a better world&amp;#39;&lt;/a&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	Sometimes this is not the intended behavior, but Swing allows us to easily implement what we really need. As already described by Alex, one approach is to add the mouse listener to each subcomponent. Another, more transparent approach is to add another MouseListener to the subcomponent and to redispatch all events to the related parent. This is very helpful if you want to make sure that your custom component can be easily used by other developers and if you want to prevent subcomponents from being directly accessed. No public API is required - mouse handling is transparent.&lt;/p&gt;&#xD;
&lt;pre class="brush: java"&gt;&#xD;
JComponent subComponent = new JButton(&amp;quot;JButton&amp;quot;);    &#xD;
MouseAdapter redispatcher = new MouseAdapter()&#xD;
{&#xD;
  @Override&#xD;
  public void mouseEntered(MouseEvent evt)&#xD;
  {&#xD;
    dispatchMouseEvent(evt);&#xD;
  }      &#xD;
  @Override&#xD;
  public void mouseExited(MouseEvent evt)&#xD;
  {&#xD;
    dispatchMouseEvent(evt);&#xD;
  }&#xD;
  @Override&#xD;
  public void mouseMoved(MouseEvent evt)&#xD;
  {&#xD;
    dispatchMouseEvent(evt);&#xD;
  }&#xD;
  @Override&#xD;
  public void mousePressed(MouseEvent evt)&#xD;
  {&#xD;
    dispatchMouseEvent(evt);&#xD;
  }&#xD;
  private void dispatchMouseEvent(MouseEvent evt)&#xD;
  {&#xD;
    Container parent = evt.getComponent().getParent();&#xD;
    parent.dispatchEvent(SwingUtilities.convertMouseEvent(evt.getComponent(), evt, parent));&#xD;
  }            &#xD;
};&#xD;
subComponent.addMouseListener(redispatcher);&#xD;
subComponent.addMouseMotionListener(redispatcher);&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;b&gt;Note:&lt;/b&gt; Redispatching only a few events by implementing related listener methods gives you fine granulated control on how the compound component will interact with the user.&lt;/p&gt;&#xD;
&lt;h3 style="margin-bottom: 10px;"&gt;&#xD;
	Related Links&lt;/h3&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1294865624000"&gt;Swing QuickTip: Default Button&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 10px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1307039502000"&gt;Swing QuickTip: The Totally GridBag Fix&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 12 Sep 2011 08:48:37 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1315817317000</guid>
      <dc:date>2011-09-12T08:48:37Z</dc:date>
    </item>
    <item>
      <title>How To Set A Custom Scalable Font Size</title>
      <link>http://www.jyloo.com/news?pubId=1315387049000</link>
      <description>&lt;p&gt;&#xD;
	Sometimes it&amp;#39;s necessary to set a custom font size for a component just like below.&lt;/p&gt;&#xD;
&lt;pre class="brush: java"&gt;&#xD;
Font f = c.getFont();&#xD;
//apply 13 point font size&#xD;
c.setFont(f.deriveFont(13f)); &#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	The biggest disadvantage of using a absolute font size is that the default font size will be totally ignored. A better way is to increase/decrease the font size relatively to the default font size and to respect the font scale factor setting too. As you maybe know from the article &lt;strong&gt;&lt;a href="../../news?pubId=1297681728000"&gt;Synthetica Font Settings&lt;/a&gt;&lt;/strong&gt;, Synthetica supports a scale font factor to increase readability.&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	In the example below we increase the font size relatively by 2 points and invoke SyntheticaLookAndFeel#scaleFontSize() to make the value aware of the UI-property &amp;#39;Synthetica.font.scaleFactor&amp;#39;. Because the font size getter method already returns the scaled size, we have to calculate the scaled size for the relative value only.&lt;/p&gt;&#xD;
&lt;pre class="brush: java"&gt;&#xD;
//UIManager.put(&amp;quot;Synthetica.font.scaleFactor&amp;quot;, 125);&#xD;
UIManager.setLookAndFeel(...);&#xD;
...&#xD;
Font f = c.getFont();&#xD;
//increase font size by 2 points&#xD;
c.setFont(f.deriveFont(f.getSize2D() + SyntheticaLookAndFeel.scaleFontSize(2f))); &#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;b&gt;Note:&lt;/b&gt; Keep in mind that the default font size can vary by using different themes. The recommended way to set a custom font size is to do it relatively - avoid to use absolut values.&lt;/p&gt;&#xD;
&lt;h3 style="margin-bottom: 10px;"&gt;&#xD;
	Related Links&lt;/h3&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 10px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news?pubId=1297681728000"&gt;Synthetica Font Settings&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 07 Sep 2011 09:17:29 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1315387049000</guid>
      <dc:date>2011-09-07T09:17:29Z</dc:date>
    </item>
    <item>
      <title>How To Customize A JYTabbedPane Component</title>
      <link>http://www.jyloo.com/news?pubId=1312880398000</link>
      <description>&lt;p&gt;&#xD;
	In this article we describe how to create a custom JYTabbedPane style which will be used as main selector component - similar to page navigation from some popular websites. The result of the customization work is shown below.&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Travel Selector Demo - JYTabbedPane" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	Let&amp;#39;s start with the Swing code used in the demo to create the tabbed panel.&lt;/p&gt;&#xD;
&lt;pre class="brush:java"&gt;&#xD;
JYTabbedPane tabbedPane = new JYTabbedPane();&#xD;
tabbedPane.addTab(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;b&amp;gt;PLANE&amp;lt;/b&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;, createPanel(&amp;quot;Plane-Panel&amp;quot;));&#xD;
tabbedPane.addTab(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;b&amp;gt;SHIP&amp;lt;/b&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;, createPanel(&amp;quot;Ship-Panel&amp;quot;));&#xD;
tabbedPane.addTab(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;b&amp;gt;TRAIN&amp;lt;/b&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;, createPanel(&amp;quot;Train-Panel&amp;quot;));&#xD;
tabbedPane.addTab(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;b&amp;gt;BUS&amp;lt;/b&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;, createPanel(&amp;quot;Bus-Panel&amp;quot;));&#xD;
tabbedPane.addTab(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;b&amp;gt;CAR&amp;lt;/b&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;, createPanel(&amp;quot;Car-Panel&amp;quot;));&#xD;
&#xD;
//set tab icons&#xD;
String[] icons = new String[]{&amp;quot;/demo/travelselector/plane.png&amp;quot;, &amp;quot;/demo/travelselector/plane_selected.png&amp;quot;,&#xD;
        &amp;quot;/demo/travelselector/ship.png&amp;quot;, &amp;quot;/demo/travelselector/ship_selected.png&amp;quot;,&#xD;
        &amp;quot;/demo/travelselector/train.png&amp;quot;, &amp;quot;/demo/travelselector/train_selected.png&amp;quot;,&#xD;
        &amp;quot;/demo/travelselector/bus.png&amp;quot;, &amp;quot;/demo/travelselector/bus_selected.png&amp;quot;,&#xD;
        &amp;quot;/demo/travelselector/car.png&amp;quot;, &amp;quot;/demo/travelselector/car_selected.png&amp;quot;};&#xD;
for (int i=0; i&amp;lt;tabbedPane.getTabCount(); i++)&#xD;
{ &amp;nbsp;&#xD;
&amp;nbsp; JLabel l = tabbedPane.getTabLabelAt(i);&#xD;
&amp;nbsp; l.setIcon(new TabIcon(tabbedPane, i, icons[i*2], icons[i*2+1]));&#xD;
&amp;nbsp; l.setHorizontalTextPosition(SwingConstants.CENTER);&#xD;
&amp;nbsp; l.setVerticalTextPosition(SwingConstants.BOTTOM);&#xD;
} &amp;nbsp;&#xD;
&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	The TabIcon makes use of two icon delegates to support unselected and selected tabs.&lt;/p&gt;&#xD;
&lt;pre class="brush:java"&gt;&#xD;
private static class TabIcon implements Icon&#xD;
{&#xD;
  private JTabbedPane tabPane;&#xD;
  private int index;&#xD;
  private Icon regularIcon;&#xD;
  private Icon selectedIcon;&#xD;
    &#xD;
  public TabIcon(JTabbedPane tabPane, int index, String regularIconPath, String selectedIconPath)&#xD;
  {&#xD;
    this.tabPane = tabPane;&#xD;
    this.index = index;&#xD;
    this.regularIcon = new ImageIcon(getClass().getResource(regularIconPath));&#xD;
    this.selectedIcon = new ImageIcon(getClass().getResource(selectedIconPath));&#xD;
  }&#xD;
    &#xD;
  public void paintIcon(Component c, Graphics g, int x, int y)&#xD;
  {&#xD;
    if (index == tabPane.getSelectedIndex())&#xD;
      selectedIcon.paintIcon(c, g, x, y);&#xD;
    else&#xD;
      regularIcon.paintIcon(c, g, x, y);&#xD;
  }&#xD;
&#xD;
  public int getIconWidth()&#xD;
  {&#xD;
    return (index == tabPane.getSelectedIndex()) ? selectedIcon.getIconWidth() : regularIcon.getIconWidth();&#xD;
  }&#xD;
&#xD;
  public int getIconHeight()&#xD;
  {&#xD;
    return (index == tabPane.getSelectedIndex()) ? selectedIcon.getIconHeight() : regularIcon.getIconHeight();&#xD;
  }    &#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	Because we use HTML-based labels for all tabs and also want to respect the default foreground colors, we have to add some code to update the label foreground. &lt;strong&gt;Update:&lt;/strong&gt; Since SyntheticaAddons V1.6 this is no longer needed.&lt;/p&gt;&#xD;
&lt;pre class="brush:java"&gt;&#xD;
//update foreground for HTML labels&#xD;
tabbedPane.addChangeListener(new ChangeListener()&#xD;
{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
&amp;nbsp; public void stateChanged(ChangeEvent evt)&#xD;
&amp;nbsp; {&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; JYTabbedPane tabPane = (JYTabbedPane)evt.getSource();&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; tabPane.getTabCount(); i++)&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tabPane.getTabLabelAt(i).setForeground(null);&#xD;
&amp;nbsp; }&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	Here&amp;#39;s the resulting screenshot:&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Demo Step 1" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo1.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	In the next step we create a custom style and apply the style to the component. For this we create a XML file called &amp;quot;selectorTabbedPane.xml&amp;quot; and add some base declarations to remove/reduce all predefined insets.&lt;/p&gt;&#xD;
&lt;pre class="brush:xml"&gt;&#xD;
&amp;lt;synth&amp;gt;&#xD;
&#xD;
&amp;lt;!--&#xD;
*******************************************************************************&#xD;
SelectorTabbedPane&#xD;
*******************************************************************************&#xD;
--&amp;gt;&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPane&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp; &amp;lt;/style&amp;gt;&#xD;
&amp;nbsp; &amp;lt;bind style=&amp;quot;selectorTabbedPane&amp;quot; type=&amp;quot;name&amp;quot; key=&amp;quot;TabbedPane.SelectorTabbedPane&amp;quot;/&amp;gt;&#xD;
&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPaneContent&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp; &amp;lt;/style&amp;gt;&#xD;
&amp;nbsp; &amp;lt;bind style=&amp;quot;selectorTabbedPaneContent&amp;quot; type=&amp;quot;name&amp;quot; key=&amp;quot;TabbedPaneContent.SelectorTabbedPane&amp;quot;/&amp;gt;&#xD;
&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPaneTabArea&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp; &amp;lt;/style&amp;gt;&#xD;
&amp;nbsp; &amp;lt;bind style=&amp;quot;selectorTabbedPaneTabArea&amp;quot; type=&amp;quot;name&amp;quot; key=&amp;quot;TabbedPaneTabArea.SelectorTabbedPane&amp;quot;/&amp;gt;&#xD;
&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPaneTab&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp; &amp;lt;/style&amp;gt;&#xD;
&amp;nbsp; &amp;lt;bind style=&amp;quot;selectorTabbedPaneTab&amp;quot; type=&amp;quot;name&amp;quot; key=&amp;quot;TabbedPaneTab.SelectorTabbedPane&amp;quot;/&amp;gt;&#xD;
&#xD;
&amp;lt;/synth&amp;gt;&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	Now we load and apply the style to the tabbed panel.&lt;/p&gt;&#xD;
&lt;pre class="brush:java"&gt;&#xD;
//load custom style&#xD;
UIManager.setLookAndFeel(new SyntheticaBlackEyeLookAndFeel(){&#xD;
  @Override&#xD;
  protected void loadCustomXML() throws ParseException&#xD;
&amp;nbsp; {&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; loadXMLConfig(&amp;quot;/demo/travelselector/selectorTabbedPane.xml&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
&amp;nbsp; }&#xD;
});&#xD;
...&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
JYTabbedPane tabbedPane = new JYTabbedPane();&#xD;
//apply style&#xD;
tabbedPane.setName(&amp;quot;SelectorTabbedPane&amp;quot;)&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	In the screenshot below you can see that all the space around the sub-elements doesn&amp;#39;t appear any longer.&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Demo Step 2" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo2.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	Because we need some space for the selector, we modify tab insets. Additionally we add text related color settings.&lt;/p&gt;&#xD;
&lt;pre class="brush:xml"&gt;&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPaneTab&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;8&amp;quot; left=&amp;quot;2&amp;quot; bottom=&amp;quot;22&amp;quot; right=&amp;quot;2&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;JYTabbedPane.tab.selectedBold.SelectorTabbedPane&amp;quot; type=&amp;quot;boolean&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;state&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;color type=&amp;quot;TEXT_FOREGROUND&amp;quot; value=&amp;quot;#8B8D92&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/state&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;state value=&amp;quot;SELECTED&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;color type=&amp;quot;TEXT_FOREGROUND&amp;quot; value=&amp;quot;#D6D7DC&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/state&amp;gt;&#xD;
&amp;nbsp; &amp;lt;/style&amp;gt;&#xD;
&amp;nbsp; &amp;lt;bind style=&amp;quot;selectorTabbedPaneTab&amp;quot; type=&amp;quot;name&amp;quot; key=&amp;quot;TabbedPaneTab.SelectorTabbedPane&amp;quot;/&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Demo Step 3" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo3.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	By specifying some JYTabbedPane properties, tabs will be centered and some additional space between the tabs appears.&lt;/p&gt;&#xD;
&lt;pre class="brush:xml"&gt;&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPane&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 0 is Swing constant for CENTER --&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;JYTabbedPane.horizontalTabAlignment.SelectorTabbedPane&amp;quot; type=&amp;quot;integer&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;JYTabbedPane.tabGap.SelectorTabbedPane&amp;quot; type=&amp;quot;integer&amp;quot; value=&amp;quot;20&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;JYTabbedPane.tabReorderByDraggingEnabled.SelectorTabbedPane&amp;quot; type=&amp;quot;boolean&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;JYTabbedPane.tabControlsShowStrategy.SelectorTabbedPane&amp;quot; type=&amp;quot;string&amp;quot; value=&amp;quot;NEVER&amp;quot;/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
&amp;nbsp; &amp;lt;/style&amp;gt;&#xD;
&amp;nbsp; &amp;lt;bind style=&amp;quot;selectorTabbedPane&amp;quot; type=&amp;quot;name&amp;quot; key=&amp;quot;TabbedPane.SelectorTabbedPane&amp;quot;/&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Demo Step 4" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo4.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	In the next step we specify a background image for the tab area.&lt;/p&gt;&#xD;
&lt;pre class="brush:xml"&gt;&#xD;
&amp;lt;style id=&amp;quot;selectorTabbedPaneTabArea&amp;quot;&amp;gt;&#xD;
  &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp; &amp;lt;state&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string id=&amp;quot;tabbedPaneTabAreaBackground&amp;quot;&amp;gt;/demo/travelselector/tabAreaBackground.png&amp;lt;/string&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;Synthetica.tabbedPane.tabArea.background.image.top.SelectorTabbedPane&amp;quot; type=&amp;quot;idref&amp;quot; value=&amp;quot;tabbedPaneTabAreaBackground&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;Synthetica.tabbedPane.tabArea.background.image.top.insets.SelectorTabbedPane&amp;quot; type=&amp;quot;insets&amp;quot; value=&amp;quot;2 0 10 0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp; &amp;lt;/state&amp;gt;&#xD;
&amp;lt;/style&amp;gt;	&amp;nbsp;&#xD;
&lt;/pre&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Demo Step 5" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo5.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	As you can see, the tab area background is streched by default. Because the background also contains a &amp;quot;noise-texture&amp;quot;, the scale policy has to be set to TILED. For this and for painting the selector icon we specify our own painter class which implements some simple paint operations.&lt;/p&gt;&#xD;
&lt;pre class="brush:xml"&gt;&#xD;
&amp;nbsp; &amp;lt;style id=&amp;quot;selectorTabbedPane&amp;quot;&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insets top=&amp;quot;0&amp;quot; left=&amp;quot;0&amp;quot; bottom=&amp;quot;0&amp;quot; right=&amp;quot;0&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;object class=&amp;quot;demo.travelselector.SelectorTabbedPanePainter&amp;quot; id=&amp;quot;painter&amp;quot;/&amp;gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultsProperty key=&amp;quot;Synthetica.JYTabbedPanePainter.SelectorTabbedPane&amp;quot; type=&amp;quot;idref&amp;quot; value=&amp;quot;painter&amp;quot;/&amp;gt;&#xD;
...&lt;/pre&gt;&#xD;
&lt;pre class="brush:java"&gt;&#xD;
public class SelectorTabbedPanePainter extends JYTabbedPanePainter&#xD;
{&#xD;
&amp;nbsp; private static Icon selectorIcon;&#xD;
&amp;nbsp;&#xD;
&amp;nbsp; @Override&#xD;
&amp;nbsp; public void paintTabbedPaneTab(JComponent c, SyntheticaState state, int tabIndex, int placement, int position, int angle, Graphics g, int x, int y, int w, int h)&#xD;
&amp;nbsp; {&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!state.isSet(State.SELECTED))&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&#xD;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (selectorIcon == null)&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectorIcon = new ImageIcon(getClass().getResource(&amp;quot;/demo/travelselector/tabbedPaneSelector.png&amp;quot;));&#xD;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x += (w-selectorIcon.getIconWidth())/2;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; y += h-selectorIcon.getIconHeight();&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; selectorIcon.paintIcon(c, g, x, y);&#xD;
&amp;nbsp; }&#xD;
&amp;nbsp;&#xD;
&amp;nbsp; @Override&#xD;
&amp;nbsp; public void paintTabbedPaneTabAreaBackground(JComponent c, SyntheticaState state, int placement, int angle, Graphics g, int x, int y, int w, int h)&#xD;
&amp;nbsp; {&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String imagePath = SyntheticaLookAndFeel.getString(&amp;quot;Synthetica.tabbedPane.tabArea.background.image.top&amp;quot;, c);&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Insets insets = SyntheticaLookAndFeel.getInsets(&amp;quot;Synthetica.tabbedPane.tabArea.background.image.top.insets&amp;quot;, c);&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ImagePainter imagePainter = new ImagePainter(g, x, y, w, h, imagePath, insets, insets, ImagePainter.TILED, ImagePainter.STRETCHED);&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imagePainter.draw();&#xD;
&amp;nbsp; } &amp;nbsp;&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&#xD;
	That&amp;#39;s it - the result looks much more appealing.&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;img alt="Demo Step 6" src="http://www.jyloo.com/images/blog/selectorTabbedPane/travelSelectorDemo6.png" style="width: 600px; height: 340px;" /&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/downloads/public/blogapps/SelectorTabbedPane/travelSelectorDemo.jnlp"&gt;&lt;img alt="WebStart Demo" border="0" src="/images/webstart_small2.png" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/downloads/public/blogapps/SelectorTabbedPane/travelSelectorDemo_src.zip"&gt;Download Demo Sourcecode&lt;br /&gt;&#xD;
	&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
	&lt;strong&gt;Note:&lt;/strong&gt; Of course it&amp;#39;s possible to do similar customization for left/right/bottom placed tabs. All UI-property keys are listed in the API-Doc - see related UI-delegate and painter classes.&lt;/p&gt;&#xD;
&lt;h3 style="margin-bottom: 10px;"&gt;&#xD;
	Related Posts&lt;/h3&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1301306772000"&gt;How To Create A Flat Button Style&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px;"&gt;&#xD;
	&lt;a href="http://www.javalobby.org/java/forums/t94860.html"&gt;Customization - How to apply a Firefox style to a JTabbedPane&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div style="margin-left: 40px; margin-bottom: 10px;"&gt;&#xD;
	&lt;a href="http://www.jyloo.com/news/?pubId=1303822183000"&gt;How To Add History To A JYSearchField&lt;/a&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 09 Aug 2011 08:59:58 GMT</pubDate>
      <guid>http://www.jyloo.com/news?pubId=1312880398000</guid>
      <dc:date>2011-08-09T08:59:58Z</dc:date>
    </item>
  </channel>
</rss>


