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

<channel>
	<title>Blog @ SIB Visions &#187; mhandsteiner</title>
	<atom:link href="http://blog.sibvisions.com/author/mhandsteiner/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.sibvisions.com</link>
	<description>Blog @ SIB Visions</description>
	<lastBuildDate>Mon, 13 Apr 2026 09:47:01 +0000</lastBuildDate>
		<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>VisionX Previewer - Tabset update</title>
		<link>https://blog.sibvisions.com/2026/04/13/visionx-previewer-tabset-update/</link>
		<comments>https://blog.sibvisions.com/2026/04/13/visionx-previewer-tabset-update/#comments</comments>
		<pubDate>Mon, 13 Apr 2026 09:46:25 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[VisionX Previewer]]></category>

		<guid isPermaLink="false">https://blog.sibvisions.com/?p=9454</guid>
		<description><![CDATA[To kick off the week, we're rolling out a brand-new tabset for you. Our previous implementation was a bit too static and didn't handle swipe gestures as smoothly as we wanted. It also lacked the fluidity you'd expect on modern mobile devices.
A tabset should feel effortless - fast, responsive, and intuitive. That's why we’ve taken [...]]]></description>
			<content:encoded><![CDATA[<p>To kick off the week, we're rolling out a brand-new tabset for you. Our previous implementation was a bit too static and didn't handle swipe gestures as smoothly as we wanted. It also lacked the fluidity you'd expect on modern mobile devices.</p>
<p>A tabset should feel effortless - fast, responsive, and intuitive. That's why we’ve taken this component back to the workshop and given it a serious upgrade.</p>
<p>Here’s a quick look at how the new version stacks up against the old one:</p>
<p><center></p>
<table>
<tr>
<td><div id="attachment_9455" class="wp-caption aligncenter nomargin" style="width: 266px"><a href="https://blog.sibvisions.com/wp-content/uploads/2026/04/tab_old.gif" rel="lightbox[9454]"><img src="https://blog.sibvisions.com/wp-content/uploads/2026/04/tab_old.gif" alt="Tabset (old)" title="tab_old" width="256" height="492" class="size-full wp-image-9455" /></a><p class="wp-caption-text">Tabset (old)</p></div></td>
<td style="width: 15px;">&nbsp;</td>
<td><div id="attachment_9456" class="wp-caption aligncenter nomargin" style="width: 266px"><a href="https://blog.sibvisions.com/wp-content/uploads/2026/04/tab_new.gif" rel="lightbox[9454]"><img src="https://blog.sibvisions.com/wp-content/uploads/2026/04/tab_new.gif" alt="Tabset (new)" title="tab_new" width="256" height="492" class="size-full wp-image-9456" /></a><p class="wp-caption-text">Tabset (new)</p></div></td>
</tr>
</table>
<p></center></p>
<p>That makes using a tabset so much more fun <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2026/04/13/visionx-previewer-tabset-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VisionX Previewer - Style the menu</title>
		<link>https://blog.sibvisions.com/2026/04/10/visionx-previewer-style-the-menu/</link>
		<comments>https://blog.sibvisions.com/2026/04/10/visionx-previewer-style-the-menu/#comments</comments>
		<pubDate>Fri, 10 Apr 2026 10:13:07 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[VisionX Previewer]]></category>

		<guid isPermaLink="false">https://blog.sibvisions.com/?p=9449</guid>
		<description><![CDATA[The next highlight in our styling offensive: the Main Menu.
With just a few tweaks to spacing, corner radius, and colors, you can give your app an entirely new look. A couple of entries in mobile_style.mxl — and your app transforms instantly.







Look forward to more customization options  
]]></description>
			<content:encoded><![CDATA[<p>The next highlight in our styling offensive: the Main Menu.</p>
<p>With just a few tweaks to spacing, corner radius, and colors, you can give your app an entirely new look. A couple of entries in mobile_style.mxl — and your app transforms instantly.</p>
<p><center></p>
<table>
<tr>
<td><div id="attachment_9450" class="wp-caption aligncenter nomargin" style="width: 172px"><a href="https://blog.sibvisions.com/wp-content/uploads/2026/04/mainmenu_old.png" rel="lightbox[9449]"><img src="https://blog.sibvisions.com/wp-content/uploads/2026/04/mainmenu_old-162x300.png" alt="Main menu (old)" title="mainmenu_old" width="162" height="300" class="size-medium wp-image-9450" /></a><p class="wp-caption-text">Main menu (old)</p></div></td>
<td style="width: 15px"></td>
<td><div id="attachment_9451" class="wp-caption aligncenter nomargin" style="width: 172px"><a href="https://blog.sibvisions.com/wp-content/uploads/2026/04/mainmenu_new.png" rel="lightbox[9449]"><img src="https://blog.sibvisions.com/wp-content/uploads/2026/04/mainmenu_new-162x300.png" alt="Main menu (new)" title="mainmenu_new" width="162" height="300" class="size-medium wp-image-9451" /></a><p class="wp-caption-text">Main menu (new)</p></div></td>
</table>
<p></center></p>
<p>Look forward to more customization options <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2026/04/10/visionx-previewer-style-the-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VisionX Previewer automatic Feedback</title>
		<link>https://blog.sibvisions.com/2025/03/13/visionx-previewer-automatic-feedback/</link>
		<comments>https://blog.sibvisions.com/2025/03/13/visionx-previewer-automatic-feedback/#comments</comments>
		<pubDate>Thu, 13 Mar 2025 15:22:44 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[VisionX]]></category>
		<category><![CDATA[VisionX Previewer]]></category>

		<guid isPermaLink="false">https://blog.sibvisions.com/?p=9084</guid>
		<description><![CDATA[With next VisionX Previewer release we'll have a really useful feature. It's an automatic feedback in case of unexpected application errors. 
It's entirely possible that the app can't handle all use cases equally well. This can lead to overflows or even unexpected display issues. Usually your users won't report such problems if they don't persist. [...]]]></description>
			<content:encoded><![CDATA[<p>With next VisionX Previewer release we'll have a really useful feature. It's an automatic feedback in case of unexpected application errors. </p>
<p>It's entirely possible that the app can't handle all use cases equally well. This can lead to overflows or even unexpected display issues. Usually your users won't report such problems if they don't persist. For such cases, we have implemented an automated feedback handling. Any unexpected issues are reported automatically. The application will send the internal error message and stack trace to the backend and a Screenshot of the current application if possible.</p>
<p>Examples:</p>
<table>
<tr>
<td>
<div id="attachment_9085" class="wp-caption aligncenter" style="width: 148px"><a href="https://blog.sibvisions.com/wp-content/uploads/2025/03/overvlow.png" rel="lightbox[9084]"><img src="https://blog.sibvisions.com/wp-content/uploads/2025/03/overvlow-138x300.png" alt="Text overflow" title="overflow" width="138" height="300" class="size-medium wp-image-9085" /></a><p class="wp-caption-text">Text overflow</p></div>
</td>
<td style="width: 20px;"></td>
<td>
<div id="attachment_9091" class="wp-caption aligncenter" style="width: 148px"><a href="https://blog.sibvisions.com/wp-content/uploads/2025/03/exceptions.png" rel="lightbox[9084]"><img src="https://blog.sibvisions.com/wp-content/uploads/2025/03/exceptions-138x300.png" alt="Exceptions" title="exceptions" width="138" height="300" class="size-medium wp-image-9091" /></a><p class="wp-caption-text">Exceptions</p></div>
</td>
</table>
<p>This will be reported to the backend e.g.</p>
<table>
<tr>
<td>
<div id="attachment_9088" class="wp-caption aligncenter" style="width: 310px"><a href="https://blog.sibvisions.com/wp-content/uploads/2025/03/overflow_feedback.png" rel="lightbox[9084]"><img src="https://blog.sibvisions.com/wp-content/uploads/2025/03/overflow_feedback-300x229.png" alt="Overflow feedback" title="overflow_feedback" width="300" height="229" class="size-medium wp-image-9088" /></a><p class="wp-caption-text">Overflow feedback</p></div>
</td>
<td style="width: 20px;"></td>
<td>
<div id="attachment_9094" class="wp-caption aligncenter" style="width: 310px"><a href="https://blog.sibvisions.com/wp-content/uploads/2025/03/exceptions_feedback.png" rel="lightbox[9084]"><img src="https://blog.sibvisions.com/wp-content/uploads/2025/03/exceptions_feedback-300x229.png" alt="Exceptions feedback" title="exceptions_feedback" width="300" height="229" class="size-medium wp-image-9094" /></a><p class="wp-caption-text">Exceptions feedback</p></div>
</td>
</table>
<p><em>No worries, it's just a demo screen. It doesn't look fancy. Just use <a href="https://visionx.sibvisions.com">VisionX</a> to create your own cool screen.</em></p>
<p>Our feedback handling is not comparable with commercial products like <a href="https://sentry.io/welcome/">Sentry.io</a> which is the recommended system in the <a href="https://docs.flutter.dev/cookbook/maintenance/error-reporting">flutter docs</a>. But it's simple, free and built-in. If you use our <a href="https://github.com/sibvisions/flutter_jvx">flutter client</a> as base of your own application client it's also possible to use other reporting systems like Sentry.io without any limitations.</p>
<p>We always try to keep things simple for you!</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2025/03/13/visionx-previewer-automatic-feedback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Swing to Vaadin?</title>
		<link>https://blog.sibvisions.com/2015/03/31/from-swing-to-vaadin/</link>
		<comments>https://blog.sibvisions.com/2015/03/31/from-swing-to-vaadin/#comments</comments>
		<pubDate>Tue, 31 Mar 2015 15:05:44 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JVx]]></category>
		<category><![CDATA[Vaadin]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=4050</guid>
		<description><![CDATA[Some days ago, vaadin released a Tutorial for Swing developers. It's a hitchhiker's guide to convert a Swing app to modern web app. It's a must-read if you plan to replace/migrate or modernize your Swing application.
We were mentioned in the last paragraph with our JVx framework, as possible conversion strategy. Thanks for that!
I want to [...]]]></description>
			<content:encoded><![CDATA[<p>Some days ago, vaadin released a <a href="https://vaadin.com/wiki/-/wiki/Main/Vaadin+tutorial+for+Swing+developers">Tutorial for Swing developers</a>. It's <strong>a hitchhiker's guide to convert a Swing app to modern web app</strong>. It's a must-read if you plan to replace/migrate or modernize your Swing application.</p>
<p>We were mentioned in the last paragraph with our JVx framework, as possible conversion strategy. Thanks for that!</p>
<p>I want to hook in at this paragraph, because I totally agree with the rest of the tutorial.</p>
<p>It's true that a wrapper has pros, cons and limitations. You can't wrap everything. Sure you could try, but it needs so many developers and doesn't make sense because a wrapper shouldn't copy the underlying technology. The more features the wrapper has, the more problems will occur with new (different) technologies. The wrapper should be a subset of all technologies. But a subset is limited in functionality!</p>
<p>A wrapper should be focused on a specific domain, e.g. database/data driven applications or game development. A wrapper for multiple domains will fail!</p>
<p>I don't know many working wrappers. There were many attempts to create (UI) wrappers, in the past, but most were stopped because of complexity or the developers had other interests (if project was open source).</p>
<p>JVx is one working solution and in my opinion the most complete one because it contains an UI wrapper, has implementations for different technologies like Swing, JavaFX, Headless and Vaadin. The APIs are bulletproof and there are native applications for Android and iOS. JVx is a generic solution and doesn't generate additional source code.<br />
But it has more than that, because it's full-stack and comes with different application frames for <a href="https://www.youtube.com/watch?v=zLEWmqqhowc">desktop</a>, <a href="http://blog.sibvisions.com/2015/03/30/vaadin-application-frame-design/">web</a> and mobile applications.</p>
<p><strong>But what is your advantage if you're using a wrapper?</strong></p>
<p>You're (GUI) technology independent.</p>
<p>An example:</p>
<p>Your current business application is a Swing application and you plan the migration to a modern technology.<br />
Your first migration decision should be: Desktop or Web<br />
<em>Next decision:</em> which UI framework<br />
<em>Optional:</em> Mobile support?</p>
<p><strong>If your platform decision was:</strong> Desktop, then it's very simple to find the right UI framework: JavaFX and try <a href="http://javafxports.org/page/home">JavaFXPorts</a> for mobile support.<br />
<em>Fact:</em> No real web and possible problems with mobile support</p>
<p><strong>If your platform decision was:</strong> Web, then it's not an easy task to find the right UI framework, but <a href="http://vaadin.com/">vaadin</a> should be the first choice because it's comparable to Swing and hides web technology for you!<br />
<em>Fact:</em> No desktop but mobile support</p>
<p>Every decision has pros and cons. If you bet on one technology stack, you're fixed to this technology stack. In our example it was JavaFX or vaadin. And what will be the next preferred UI technology after JavaFX or vaadin?<br />
You'll have the same problems again and it's never easy to migrate a (business) application.</p>
<p>You should bet on a technology independent solution, to be prepared for the future!<br />
Means, you should use a wrapper. But don't use a wrapper which hides the technology from you. It should be possible to access the technology directly - if needed or if it's not important to be technology independent. </p>
<p>Sometimes it's not possible to be technology independent, e.g. some custom controls aren't available for all technologies.</p>
<p>The wrapper should allow technology dependent and independent development without any limitations!</p>
<p><strong>Does it make sense to use the same application with different technologies?</strong></p>
<p>Yes, but...</p>
<p>It's not a good idea to use e.g. Swing AND JavaFX because both technologies are desktop toolkits. But it makes sense to use JavaFX for your backend application and vaadin for your frontend or your mobile devices. </p>
<p>It's also a good idea to create only one application that works as desktop, web and mobile application - the same application. But show different screens/views on different platforms.</p>
<p>There's no big difference between desktop and a standard browser because resolution of a desktop pc is the same. A mobile browser has limited space and you shouldn't use the same screen/view on a mobile device as on the desktop pc.</p>
<p><em><strong>Example</strong></em><br />
We use an ERP backend application to manage vacations. The appliation has about 10 screens for resource management, master data management and accounting. The application runs as desktop application with JavaFX. The same application runs in desktop browsers with 3 screens because the web frontend doesn't offer master data management and accounting. The same application runs on mobile devices with only 1 screen because mobile devices are used from employees to enter and view vacations.</p>
<p>We have only one application, started with different UI technologies and with different screens/views.<br />
<span style="height: 15px;"/><br />
It would be possible to create 3 different applications with different screens and with dependencies between the applications and ... (complex to maintain, 3 different projects, application frame x 3).</p>
<p>If you'll create a "native" vaadin application and a JavaFX application you'll need different development teams with different know-how.</p>
<p>Don't waste time and resources, focus on the real problems of your application. A wrapper hides technology problems and allows fast development with few developers: Win-win situation!</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2015/03/31/from-swing-to-vaadin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New application frame feature - No menu</title>
		<link>https://blog.sibvisions.com/2014/08/06/new-application-frame-feature-no-menu/</link>
		<comments>https://blog.sibvisions.com/2014/08/06/new-application-frame-feature-no-menu/#comments</comments>
		<pubDate>Wed, 06 Aug 2014 08:00:59 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JVx]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[VisionX]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=3129</guid>
		<description><![CDATA[All our applications have a menu and a toolbar. This is great for backend applications but not always good for web frontends. Our web UIs have a different menubar, styled for web, but it's always visible. If you have simple web forms, you won't use a menu. We did some changes and have new options [...]]]></description>
			<content:encoded><![CDATA[<p>All our applications have a menu and a toolbar. This is great for backend applications but not always good for web frontends. Our web UIs have a different menubar, styled for web, but it's always visible. If you have simple web forms, you won't use a menu. We did some changes and have new options for applications without menu and toolbar <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Some impressions with standard (backend) Desktop application and as (frontend) web application:</p>
<table>
<tr>
<td><div id="attachment_3130" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.sibvisions.com/wp-content/uploads/2014/08/nomenu_desktop.png" rel="lightbox[3129]"><img src="http://blog.sibvisions.com/wp-content/uploads/2014/08/nomenu_desktop-300x252.png" alt="Backend application (Swing)" title="nomenu_desktop" width="300" height="252" class="size-medium wp-image-3130" /></a><p class="wp-caption-text">Backend application</p></div></td>
<td>&nbsp;</td>
<td><div id="attachment_3131" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.sibvisions.com/wp-content/uploads/2014/08/nomenu_vaadin.png" rel="lightbox[3129]"><img src="http://blog.sibvisions.com/wp-content/uploads/2014/08/nomenu_vaadin-300x275.png" alt="Frontend application (Vaadin)" title="nomenu_vaadin" width="300" height="252" class="size-medium wp-image-3131" /></a><p class="wp-caption-text">Frontend application</p></div></td>
</tr>
</table>
<p>It's very simple to hide the menu. Simply set an application property via application.xml or directly via launcher - that's it. We changed our web menu and allow access to internal panels and components. It will be possible to hide buttons, change layouts, etc.</p>
<p>It's still possible to create your own, custom, application frame or extend our pre-defined frame. The new feature will be available in the next VisionX update.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2014/08/06/new-application-frame-feature-no-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VisionX compared to RAD</title>
		<link>https://blog.sibvisions.com/2014/06/30/visionx-compared-to-rad/</link>
		<comments>https://blog.sibvisions.com/2014/06/30/visionx-compared-to-rad/#comments</comments>
		<pubDate>Mon, 30 Jun 2014 17:16:09 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=3032</guid>
		<description><![CDATA[We started with VisionX as RAD tool because we tried to solve common problems with database development. If you create applications with access to databases, you know what I mean. It's horrible to do the same boring things multiple times. You have to create table definitions, create screens, bind models to controllers or views, use [...]]]></description>
			<content:encoded><![CDATA[<p>We started with VisionX as RAD tool because we tried to solve common problems with database development. If you create applications with access to databases, you know what I mean. It's horrible to do the same boring things multiple times. You have to create table definitions, create screens, bind models to controllers or views, use or don't use ORM, implement business logic, ...<br />
The most interesting part is business logic because all other things are not that complex (of course, database modelling is not a trivial task). </p>
<p>Today I'm conviced that VisionX is the evolution of RAD. </p>
<p><strong>Why do I think that?</strong></p>
<p>Usually, RAD tools offer an all-in-one solution for developing applications. They contain IDE features but aren't an IDE. A RAD tool is more like a lightweight IDE with some useful addons like database modeler, GUI editor and debugger. Some RAD tools offer SCM integration, Test automation and other ALM methods.</p>
<p><strong>RAD is not the right definition</strong> for VisionX because it's more than that. It doesn't show you the source code directly because an IDE is better for that. Why shouldn't we use an IDE for editing source code? VisionX doesn't offer SCM features because there are enough good tools available.</p>
<p>VisionX primarily supports Eclipse as IDE and all available SCM tools but not directly linked with VisionX. VisionX is not open source but it uses open source frameworks and all built applications are available with their source code. We didn't re-invent the wheel but tried to allow end-users to create their own applications without being a developer.<br />
We think it's better to use the best tools, instead of creating something similar. You decide what's the best tool.</p>
<p>VixionX wasn't designed for developers. <strong>It was designed for end users</strong>. This is a big difference compared to RAD tools.</p>
<p>But VisionX is not limited to end users, because it creates and reads Java source code. Every Java developer can work with VisionX but with familiar development tools like Eclipse. The tool offers a WYSIWYG editor and has some useful addons, but it goes a few steps further.<br />
VisionX doesn't need a database modeler because an end user doesn't know what a database(model) is. The user knows which data is needed, like Phone number, currency, description. The user also knows if a selection field is needed or an image should be shown. But primary key, foreign key and constraints are totally unknown.</p>
<p>You can compare VisionX with Excel because the user enters data and the application decides what is shown. But there's no hidden magic because VisionX simply works with generated and interpreted source code. If you change the source code, VisionX takes care of it.</p>
<p>And another big difference to RAD tools is, that VisionX creates modern 3-tier applications following single-sourcing approach. It's the only tool that creates an application that runs without source code changes as Desktop application, native HTML5 application in modern web browsers and as native smartphone app. It offers live preview on all targets and it has a unique reporting included. It's not based on XML files or meta information. It's based on Word or Excel templates. Every end user is able to create a word or excel file.</p>
<p><strong>VisionX is a tool, designed for end users but a developer will love it because it helps to do all the boring work and under the hood it's still a modern development tool.</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2014/06/30/visionx-compared-to-rad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JVx 1.2 is out</title>
		<link>https://blog.sibvisions.com/2013/10/04/jvx-1-2-is-out/</link>
		<comments>https://blog.sibvisions.com/2013/10/04/jvx-1-2-is-out/#comments</comments>
		<pubDate>Fri, 04 Oct 2013 22:13:22 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Release notes]]></category>
		<category><![CDATA[JVx]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=2473</guid>
		<description><![CDATA[We released JVx 1.2 today - as planned  
The binaries are available on SourceForge or via Maven central. We also updated our Archetype to version 1.2.0 and it should be available in Maven central in the next days.
We told you that the release contains about 90 tickets. The real number of changes is 123.
Check [...]]]></description>
			<content:encoded><![CDATA[<p>We <strong>released JVx 1.2 today</strong> - as planned <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>The binaries are available on <a href="http://sourceforge.net/projects/jvx/">SourceForge</a> or via <a href="http://search.maven.org/#search%7Cga%7C1%7Cjvx">Maven central</a>. We also updated our Archetype to version 1.2.0 and it should be available in Maven central in the next days.</p>
<p>We told you that the release contains about 90 tickets. The real number of changes is 123.<br />
Check the <a href="http://sourceforge.net/projects/jvx/files/JVx%20%2B%20SwingUI/1.2/README_changes_v1_1_to_v1_2.txt/view">changelog</a> for a complete list.</p>
<p><strong>Next version will be 2.0</strong></p>
<p>We did decide that version 1.2 is the last release before 2.0. It's not because of new killer features or big API changes.<br />
The higher version number should represent the maturity of JVx. </p>
<p>JVx was started in 2008 and the low version numbers were fine for our own goals, but our users asked for bigger steps. If we compare our 1.2 with other frameworks, we could use 5.0 without problems.</p>
<p>The version 2.0 will be a smaller feature release that changes MetaData handling on server-side. We'll introduce a new caching mechanism that allows manual change of storage metadata. </p>
<p>We plan the release for the end of this year - <em>without guarantee</em>.</p>
<p><strong>We also plan maintenance releases starting with 2.0</strong></p>
<p>Currently, we don't fix bugs in old JVx releases. We only fix bugs in our development version. We offer nightly builds and maven snapshots and we thought that's enough, but some users want to keep old releases. No worries, we'll do our best to make you happy!</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2013/10/04/jvx-1-2-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rolladen steuern mit Pi</title>
		<link>https://blog.sibvisions.com/2013/06/12/rolladen-steuern-mit-pi/</link>
		<comments>https://blog.sibvisions.com/2013/06/12/rolladen-steuern-mit-pi/#comments</comments>
		<pubDate>Wed, 12 Jun 2013 08:23:13 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Media]]></category>
		<category><![CDATA[RaspberryPi]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=2267</guid>
		<description><![CDATA[


&#160;
Im aktuellen JavaAktuell wurde ein Artikel über die Ansteuerung von Rolläden mittels Raspberry Pi veröffentlicht. Bei JavaAktuell handelt es sich um ein Magazin des iJUG (Interessenverbund der Java User Groups). Das Magazin richtet sich an Java Entwickler und die Artikel werden von Anwendern, die spezialisten in Ihrem Gebiet sind, verfasst.
Wer die aktuelle Ausgabe noch nicht [...]]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td><a href="http://blog.sibvisions.com/wp-content/uploads/2013/06/raspi.png" rel="lightbox[2267]"><img src="http://blog.sibvisions.com/wp-content/uploads/2013/06/raspi-150x150.png" alt="RasPi mit Fernbedienung" title="raspi" width="150" height="150" class="size-thumbnail wp-image-2272" /></a></td>
<td style="width: 10px;">&nbsp;</td>
<td>Im aktuellen <a href="http://www.ijug.eu/java-aktuell/das-magazin.html">JavaAktuell</a> wurde ein Artikel über die Ansteuerung von Rolläden mittels Raspberry Pi veröffentlicht. Bei JavaAktuell handelt es sich um ein Magazin des iJUG (Interessenverbund der Java User Groups). Das Magazin richtet sich an Java Entwickler und die Artikel werden von Anwendern, die spezialisten in Ihrem Gebiet sind, verfasst.</p>
<p>Wer die aktuelle Ausgabe noch nicht in seinen Händen hält, kann <a href="http://blog.sibvisions.com/wp-content/uploads/2013/06/RasPi_Rolladen_steuern.pdf">hier</a> schon mal in den Artikel reinlesen.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2013/06/12/rolladen-steuern-mit-pi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mein KMU bei Überall App Competition</title>
		<link>https://blog.sibvisions.com/2013/05/14/mein-kmu-bei-uberall-app-competition/</link>
		<comments>https://blog.sibvisions.com/2013/05/14/mein-kmu-bei-uberall-app-competition/#comments</comments>
		<pubDate>Tue, 14 May 2013 10:21:38 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[JVx.mobile]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=2230</guid>
		<description><![CDATA[Demnächst findet der erste App Kongress in Wien statt. Mit zur Veranstaltung zählt auch eine App Competition. Dabei werden aus einer Menge an App Ideen bzw. Konzepten die Top 10 ermittelt. Die Top 3 haben dann die Chance auf einen 3 Minuten Pitch und Crowd-Funding.
Unser R&#038;D Team hat ebenfalls eine App Idee am Start, mit [...]]]></description>
			<content:encoded><![CDATA[<p>Demnächst findet der erste <a href="http://www.uberall.at">App Kongress</a> in Wien statt. Mit zur Veranstaltung zählt auch eine <a href="http://www.uberall.at/competition">App Competition</a>. Dabei werden aus einer Menge an App Ideen bzw. Konzepten die Top 10 ermittelt. Die Top 3 haben dann die Chance auf einen 3 Minuten Pitch und Crowd-Funding.</p>
<p>Unser R&#038;D Team hat ebenfalls eine App Idee am Start, mit der erstmals unser <a href="http://sourceforge.net/projects/jvxmobile/">JVx mobile</a> zu sehen ist. Die Idee hat natürlich mit Business zu tun:</p>
<blockquote><p>
Eine App für kleine und mittlere Unternehmen (Handwerker, Dienstleister, Einzelunternehmer, .). Für diese gibt es kaum hilfreiche Apps und Kapital für die Umsetzung eigener Ideen ist meist nicht vorhanden bzw. wird an anderen Stellen benötigt.</p>
<p>Die App ermöglicht die Umsetzung eigener Ideen wie zB. Lagerstandsabfrage, Zeiterfassung für Monteure, mobile Angebotslegung, Preisabfragen, uvm. Damit die Daten auch im Büro eines KMU zur Verfügung stehen und verwendet werden können (zB. für Rechnungeslegung) kommuniziert die App mit einem Backend das entweder in der Cloud oder auf eigener Hardware läuft – je nach KMU. Das KMU erhält somit eine Kombination von Excel und Word das online zur Verfügung steht und angepasst ist an die eigenen Abläufe. Die App ist aber keine simple Dateiverwaltung wie z.B. Dropbox sondern verwaltet Unternehmensdaten in einer zentralen Datenbank. So einfach wie Excel.</p>
<p>Die App passt sich dynamisch an die zu verwaltenden Daten an und bietet eine Standardlösung für KMU.
</p></blockquote>
<p>Und natürlich gibt es auch ein Bild dafür:</p>
<div id="attachment_2232" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.sibvisions.com/wp-content/uploads/2013/05/Ueberall.png" rel="lightbox[2230]"><img src="http://blog.sibvisions.com/wp-content/uploads/2013/05/Ueberall-300x240.png" alt="Mein KMU" title="Ueberall" width="300" height="240" class="size-medium wp-image-2232" /></a><p class="wp-caption-text">Mein KMU</p></div>
<p>Damit eine Idee unter die Top 10 kommt muss sie zuerst durch eine Community Bewertung. Die besten 33 Ideen werden dann noch von einer Jury unter die Lupe genommen. Wir würden uns natürlich freuen wenn Ihr uns unterstützt. Aber bitte Geduld bei der Bewertung, denn der <a href="https://www.neurovation.net/de/compare">Battle Modus</a> ist etwas gewöhnungsbedürftig und es kann auch schon einige Versuche dauern bis "<strong>Mein KMU</strong>" antritt <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2013/05/14/mein-kmu-bei-uberall-app-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla/RSForms post request to Java Servlet</title>
		<link>https://blog.sibvisions.com/2012/11/04/joomlarsforms-post-request-to-java-servlet/</link>
		<comments>https://blog.sibvisions.com/2012/11/04/joomlarsforms-post-request-to-java-servlet/#comments</comments>
		<pubDate>Sun, 04 Nov 2012 20:03:23 +0000</pubDate>
		<dc:creator>mhandsteiner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=1678</guid>
		<description><![CDATA[Maybe this information is useful for other Joomla/RSForms users or for developers who want send a post request from php to anywhere  
I had the following configuration in my dev environment:
Joomla together with RSForms (free version)
I love to use this combination because it is easy and just works. With RSForms I created some forms [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe this information is useful for other Joomla/RSForms users or for developers who want send a post request from php to anywhere <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I had the following configuration in my dev environment:</p>
<p>Joomla together with RSForms (free version)</p>
<p>I love to use this combination because it is easy and just works. With RSForms I created some forms like User registration. This tool allows you to send emails to the registered user and it stores the registration automatically in the database. It's really useful.</p>
<p>In my case, the user registration was not real-time because I got an email and had to create a user account manually. This is web 0.1.</p>
<p>Well, I decided to push the whole process to web 2012. My plan was to create a simple Java servlet that creates my user accounts. This servlet should be called from the RSForms component, with a simple POST request. I don't like SOAP overhead, so it was no option for me. Of course, my servlet is a service <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>BTW, I wouldn't change the RSForms component because it should work as it was. The component has a nice feature that allows you to configure custom scripts for loading and processing. </p>
<p>I started with the configuration and added following process script:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$url</span> <span class="sy0">=</span> <span class="st_h">'https://tomcatvm/services/User'</span><span class="sy0">;</span><br />
&nbsp;<br />
<span class="re0">$ch</span> <span class="sy0">=</span> <a href="http://www.php.net/curl_init"><span class="kw3">curl_init</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://www.php.net/curl_setopt"><span class="kw3">curl_setopt</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re0">$url</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://www.php.net/curl_setopt"><span class="kw3">curl_setopt</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> 1<span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://www.php.net/curl_setopt"><span class="kw3">curl_setopt</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="sy0">,</span> CURLOPT_POST<span class="sy0">,</span> 1<span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://www.php.net/curl_setopt"><span class="kw3">curl_setopt</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> 5<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="co1">//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);</span><br />
<span class="co1">//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);</span></p>
<p><span class="re0">$data</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$data</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'language=en'</span><span class="sy0">;</span></p>
<p><span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st_h">'form'</span><span class="br0">&#93;</span> <span class="kw1">as</span> <span class="re0">$post</span> <span class="sy0">=&gt;</span> <span class="re0">$value</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/is_array"><span class="kw3">is_array</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$value</span> <span class="kw1">as</span> <span class="re0">$post2</span> <span class="sy0">=&gt;</span> <span class="re0">$value2</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$data</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$post</span><span class="sy0">.</span><span class="st_h">'[]='</span><span class="sy0">.</span><a href="http://www.php.net/urlencode"><span class="kw3">urlencode</span></a><span class="br0">&#40;</span><span class="re0">$value2</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$data</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$post</span><span class="sy0">.</span><span class="st_h">'='</span><span class="sy0">.</span><a href="http://www.php.net/urlencode"><span class="kw3">urlencode</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><a href="http://www.php.net/curl_setopt"><span class="kw3">curl_setopt</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="sy0">,</span> CURLOPT_POSTFIELDS<span class="sy0">,</span> <a href="http://www.php.net/implode"><span class="kw3">implode</span></a><span class="br0">&#40;</span><span class="st_h">'&amp;'</span><span class="sy0">,</span> <span class="re0">$data</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp;<br />
<span class="re0">$data</span> <span class="sy0">=</span> <a href="http://www.php.net/curl_exec"><span class="kw3">curl_exec</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/curl_errno"><span class="kw3">curl_errno</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; JUtility<span class="sy0">::</span><span class="me2">sendMail</span><span class="br0">&#40;</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">emailfrom</span><span class="sy0">,</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">emailfromname</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'support@sibvisions.com'</span><span class="sy0">,</span><span class="st_h">'Service error'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'Service call failed! ('</span><span class="sy0">.</span><a href="http://www.php.net/curl_error"><span class="kw3">curl_error</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st_h">')'</span><span class="sy0">,</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">emailmode</span><span class="sy0">,</span><span class="kw4">null</span><span class="sy0">,</span><span class="kw4">null</span><span class="sy0">,</span><span class="kw4">null</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><a href="http://www.php.net/curl_close"><span class="kw3">curl_close</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>The code is written in php, but it is not rocket science. It simply sends a post request to the configured URL. The important thing is that all form parameters were used as parameters for the request, because the service needs the entered values!</p>
<p>That's all for Joomla/RSForms. During development I thought that the process script will be executed only once per form but that was not true. It was executed after loading and everytime when the user submits the form. If the forms had validation errors, the process script was executed more than once (with and without valid inputs).</p>
<p>I changed the php script a little bit and moved the process execution after the validation. It depends on your RSForms version, but in my case the original script (<joomla>/plugins/content/mosforme.php) looks like: </p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="sy0">...</span><br />
<a href="http://www.php.net/eval"><span class="kw3">eval</span></a><span class="br0">&#40;</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">script_process</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$processform</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
<span class="sy0">...</span></div>
</div>
<p>and the new script:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$processform</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
<span class="sy0">...</span><br />
&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st_h">'formmsg'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="sy0">...</span><br />
&nbsp; &nbsp; <span class="co1">// store it in the db</span><br />
&nbsp; &nbsp; <span class="sy0">...</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/eval"><span class="kw3">eval</span></a><span class="br0">&#40;</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">script_process</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="sy0">....</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>But it is also possible to use the original script without modification.</p>
<p>The other side was the servlet... It's to simple to show you the whole source, only a snippet:</p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;">@Override<br />
<span class="kw1">public</span> <span class="kw4">void</span> doPost<span class="br0">&#40;</span>HttpServletRequest pRequest, HttpServletResponse pResponse<span class="br0">&#41;</span> <span class="kw1">throws</span> ServletException<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw3">String</span> sParamFirstName<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw3">String</span> sParamLastName<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw3">String</span> sParamEmail<span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; sParamFirstName <span class="sy0">=</span> getParameter<span class="br0">&#40;</span>pRequest, <span class="st0">&quot;firstname&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; sParamLastName &nbsp;<span class="sy0">=</span> getParameter<span class="br0">&#40;</span>pRequest, <span class="st0">&quot;lastname&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; sParamEmail &nbsp; &nbsp; <span class="sy0">=</span> getParameter<span class="br0">&#40;</span>pRequest, <span class="st0">&quot;email&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; sParamLanguage &nbsp;<span class="sy0">=</span> getParameter<span class="br0">&#40;</span>pRequest, <span class="st0">&quot;language&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; ...</div>
</div>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2012/11/04/joomlarsforms-post-request-to-java-servlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
