This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Category: Development

VisionX with Docker support

The next VisionX release will support Docker. If you are not familiar with Docker, it's worth a try. It offers super fast deployment and app delivery without additional hardware or software installation. If you're interested in Docker simply use Google.

The whole Docker technology is a big plus for application developers and also for our low-code platform VisionX. We will support Docker deployment with our next release.

Every application, created with VisionX, requires a Java application server like Tomcat and a relational database like Postgresql in order to run. If you don't own such runtime environment, it might be tricky to roll out your application! Sure, there are very cheap hosting provider which offers root server and application hosting, but this requires lots of IT skills. With docker, deployment is getting easier for you.

With next VisionX, it will be possible to create a pre-defined docker container in seconds. Use this container to create your own docker image and use Docker to run your application.

We'll show you some impressions how this will work:

Docker support

And it will also be possible to use existing Docker Hosting Provider to run your application.
We tried it out with sloppy.io:

sloppy.io

Our docker container uses our own Tomcat definition, which can be found here. Feel free to use our tomcat image in your environment. It solves some common configuration problems like custom port definition, username, password.

VisionX update release 5.4.3900 is available

VisionX 5.4.3900 is available!

It's a small bugfix release with following improvements:

  • Fixed using server storage in combobox

    It wasn't possible to use a server storage in the data wizard.

  • FilterEditor API improved

    The FilterEditor API change was needed to support new features of Profiles and Filter AddOn. It's now possible to better group And/Or and to disable "expert mode".

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

Adding new paths for native libraries at runtime in Java

If you want to add some native libraries at runtime, it was tricky with Java 8+:

This was a valid solution:

final Field fldUsrPaths = ClassLoader.class.getDeclaredField("usr_paths");
fldUsrPaths.setAccessible(true);
 
//get array of paths
final String[] saPath = (String[])fldUsrPaths.get(null);
 
//check if the path to add is already present
for (String path : saPath)
{
    if (path.equals(pPath))
    {
        return;
    }
}
 
//add the new path
final String[] saNewPaths = Arrays.copyOf(saPath, saPath.length + 1);
saNewPaths[saNewPaths.length - 1] = pPath;
fldUsrPaths.set(null, saNewPaths);

Since Java 10+ it's not possible anymore, because of: JDK-8210522
Some details from Stackoverflow

If someone still needs a solution for Java 10+, here it is:

Lookup cl = MethodHandles.privateLookupIn(ClassLoader.class, MethodHandles.lookup());
VarHandle usr_paths = cl.findStaticVarHandle(ClassLoader.class, "usr_paths", String[].class);
String[] path = (String[])usr_paths.get();

...

usr_paths.set(new String[] {"A", "B"});

This code won't work if you are using Java 8. If you want support for e.g. Java < 10, simply use reflection :)
Sounds simple, but it is not simple.....

Here's a working solution: toPDF project (search for addLibraryPath(String pPath)).

The code in detail:

Class<?> clsMHandles = Class.forName("java.lang.invoke.MethodHandles");
       
Method mStaticLookup = clsMHandles.getMethod("lookup");
Object oStaticLookup = mStaticLookup.invoke(null);

Method mLookup = clsMHandles.getMethod("privateLookupIn", Class.class, Class.forName("java.lang.invoke.MethodHandles$Lookup"));
Object oLookup = mLookup.invoke(null, ClassLoader.class, oStaticLookup);

Method mFindStatic = oLookup.getClass().getMethod("findStaticVarHandle", Class.class, String.class, Class.class);

Object oVarHandle = mFindStatic.invoke(oLookup, ClassLoader.class, "usr_paths", String[].class);

//MethodHandle mh = MethodHandles.lookup().findVirtual(VarHandle.class, "get", MethodType.methodType(Object.class));
//mh.invoke(oVarHandle);

Method mFindVirtual = oStaticLookup.getClass().getMethod("findVirtual", Class.class, String.class, Class.forName("java.lang.invoke.MethodType"));

Class<?> clsMethodType = Class.forName("java.lang.invoke.MethodType");
Method mMethodType = clsMethodType.getMethod("methodType", Class.class);

Object oMethodHandleGet = mFindVirtual.invoke(oStaticLookup, Class.forName("java.lang.invoke.VarHandle"), "get", mMethodType.invoke(null, Object.class));

Method mMethodHandleGet = oMethodHandleGet.getClass().getMethod("invokeWithArguments", Object[].class);

String[] saPath = (String[])mMethodHandleGet.invoke(oMethodHandleGet, new Object[] {new Object[] {oVarHandle}});

//check if the path to add is already present
for (String path : saPath)
{
    if (path.equals(pPath))
    {
        return;
    }
}

//add the new path
final String[] saNewPaths = Arrays.copyOf(saPath, saPath.length + 1);
saNewPaths[saNewPaths.length - 1] = pPath;

//MethodHandle mh = MethodHandles.lookup().findVirtual(VarHandle.class, "set", MethodType.methodType(Void.class, Object[].class));
//mh.invoke(oVarHandle, new String[] {"GEHT"});

mMethodType = clsMethodType.getMethod("methodType", Class.class, Class.class);

Object oMethodHandleSet = mFindVirtual.invoke(oStaticLookup, Class.forName("java.lang.invoke.VarHandle"), "set", mMethodType.invoke(null, Void.class, Object[].class));

Method mMethodHandleSet = oMethodHandleSet.getClass().getMethod("invokeWithArguments", Object[].class);

mMethodHandleSet.invoke(oMethodHandleSet, new Object[] {new Object[] {oVarHandle, saNewPaths}});

Not simple!!!

Summarized: It's not easy but it's still possible. So.... why are things getting more and more complex?

VisionX 5.4 Update release is available

VisionX 5.4.2450 is available!

It's a small update release with following improvements:

  • MySql database support

    We fixed a problem with app export (from embedded PostgreSql) and re-import into a MySql database. It wasn't possible to configure combobox columns.

  • Popup Menu button click

    Sometimes, a click on the arrow of a popup menu button, didn't show the popup and triggered the button action instead.

  • Screen generation

    A new screen with only one table was generated with an additional "white" panel.

  • Filter AddOn update

    We improved the Filter AddOn and now support And/Or grouping. It's also possible to save and load filter settings.

    Some impressions:

    Filter AddOn

    Filter AddOn

    Load settings

    Load settings

  • Filter Editor API

    We improved our Filter Editor API. It's now possible to define the Full-text Filter column names and also which column names can be filtered in general. It's possible to group filter editors by condition (or, and, ...). This enhancement is relevant for developers.

VisionX 5.4 is available

VisionX 5.4.1835 is available!

It's a great release with big changes.

The new VisionX version got updates of used open source libraries. It runs with openJDK 12 and supports openJDK 14. It comes with awesome responsive UI support for desktop, web and mobile. We support our brand new mobile UI which is still under development.

What's different?

  • New MorphPanel with full responsive support

    This feature is available for Desktop, Web and Mobile devices. Create only one screen to support all targets.

    Responsive for Desktop

    Responsive for Desktop

    Web settings

    Web settings

    Mobile settings

    Mobile settings

  • Responsive option for Panels

    Simply en/disable the responsive feature for single panels.

    Responsive option

    Responsive option

  • MorphPanel navigation bar

    The MorphPanel shows a small navigation bar directly in the screen. You can use this bar to switch between the tabs without opening the customizer every time.

    Morph Panel navigation

    Morph Panel navigation

  • New work-screen wizard

    We have 4 types of screens: Table with Detail form, Table, Form, Empty. Each type has different layout options for Web, Desktop, Mobile and Universal. The difference are gaps and margins and default settings of elements. Some layouts include full-text search and some don't include search options.

    New screen wizard

    New screen wizard

  • New customizable screen generators

    The screen generators are customizable for developers. Simply create your own or extend an existing generator and use it directly in VisionX. Simply create your own definition file like this one:

    <?xml version="1.0" encoding="UTF-8"?>

    <generator>
      <group text="Table with detail form"
             image="/c/s/v/i/w/w/category_tableform.png">
        <entry class="com.sibvisions.visionx.uigenerator.WebTableFormUIGenerator"
               text="Web layout"
               image="/c/s/v/i/w/w//group_web.png" />
        <entry class="com.sibvisions.visionx.uigenerator.MobileTableFormUIGenerator"
               text="Mobile layout"
               image="/c/s/v/i/w/w//group_mobile.png" />
        <entry class="com.sibvisions.visionx.uigenerator.TableFormUIGenerator"
               text="Desktop layout"
               image="/c/s/v/i/w/w//group_desktop.png" />
        <entry class="c.s.visionx.uigenerator.UniversalTableFormUIGenerator"
               text="Universal layout"
               image="/c/s/v/i/w/w//group_universal.png" />
      </group>
    </generator>

  • Live Preview without any differences

    We improved our UI for browsers. New layouts, better performance and same features.

  • Shared folder support

    An awesome new feature is the shared folder support for your projects if you are a developer. Simply put your POJOs or Beans in the new shared folder and use this classes in your client or server classes.

  • New domain management

    Change pre-defined or create custom datatypes. The screen is available in VisionX' Administration menu.

    Domain management

    Domain management

  • Support for latest Workflow AddOn (3.0)
  • Performance improvement of Designer

This is how the responsive mode works on Desktop

Responsive mode

Some impressions of our new mobile client are available here

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

VisionX 5.3 is available

VisionX 5.3.2 is available!

It's a minor update release with big changes.
The release got updates of open source libraries like JVx and Vaadin UI.

But the biggest changes are the integrated Java 12 support. VisionX 5.3 comes with and runs under Java 12 (openJDK).

What's different?

  • Performance improvement of Designer
  • Performance improvement of HTML5 UI
  • New App Elements

    Save All Changes, Reload All Changes, Advanced Panel and Advanced Group Panel

  • REST documentation contains admin services
  • Bundled open JDK 12
  • Support for latest Workflow AddOn (1.5)

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

Eclipse 2018.12 with ANT and JRE 6

The support for ANT and JRE6 with Eclipse 2018.12.

The plugin was created for:

Version: 2018-12 (4.10.0)
Build id: 20181214-0600

Don't forget the -clean start (read the original article for more details)!

One more thing you should do:

Photon includes ANT > 1.10. This version requires Java 8. In order to use Java 6, you have to download ANT 1.9.x. Simply download ANT and set the ANT Home to your version, via

(Window >>) Preferences >> ANT >> Runtime >> Ant Home...

If you try to use the bundled ANT with JRE 6, it will fail with an Exception.

Download the plugin from here. It works for us - no warranty!

More Details: Eclipse Photon with ANT and JRE6.

VisionX 5 update Release-3

VisionX 5.2.27 is available!

It's a small bugfix release with an update of open source libraries like JVx and Vaadin UI.

What's different?

  • Group Panel visibility now working in Browser
  • Group Panel text color now working in Browser
  • Set additional css class names for labels and checkbox editors
  • It's now easier to extend search behavior of NavigationTable
  • Checkbox alignment fixed in Browser
  • Support for latest Workflow AddOn

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

VisionX 5 update Release-2

We're happy to anounce that VisionX 5.1.221 is available!

It's a bigger update release of VisionX 5.1.8 with with some new "visible" features and many awesome new features under the hood.

Let's start with important bug fixes

  • Popup Menu in Browser application

    A custom Popup Menu in Browser applications was always empty. This problem was fixed in an OpenSource library and is now available in VisionX applications.

  • Timeout with customizer changes

    If VisionX timeout while a customizer with changed values was open, the timeout operation failed and VisionX was unusable.

  • Element selection not always working

    Sometimes it wasn't possible to select elements if they where behind other elements.

  • Database procedure and function calls with more than 10 parameters

    It's now supported to call database procedures and functions with max. 100 parameters.

  • External CSS file detection

    VisionX had some path problems with Linux and MacOS to find the external CSS file for browser applications.

  • Fixed painting of overlays (MacOS)

    The position of e.g. VisionX Guides wasn't correct. The small numbers were wrong positioned.

  • Workflow integration

    The workflow engine wasn't always started correctly and not in the correct window.

  • All bugfixes of JVx, VaadinUI and other OpenSource libraries

What's new?

  • A new Workflow AddOn
  • Swagger documentation

    The documentation now contains information about sub storages (used in drop down boxes) and default admin services. It's now easier to grant access to external applications based on the REST API of your application.

  • Java 9+

    It's now possible to use e.g. Java 11 as runtime for VisionX.

  • Storage editor for Developers

    Out storage Editor was only available if you bought the Forms license. Now all users with Development license will be able to use the Storage Editor. The storage editor is a feature which allows you to change the database query of a table, directly in VisionX.

  • Prompt/Placeholder support
  • Better layouting in browser application

    We improved the layouting in our browser applications and also improved scrolling of panels.

  • Experimental (Early Access) Features

    We added some experimental features in this release: QR code authentication, Spnego (Active Directory) authentication base support (needs an additional AddOn), SSO authentication feature for REST services (bypass option).

    This features are available for interested developers. Simply talk to your contact person.

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

JVx 2.8 is available

We're happy to announce that JVx 2.8 is available. It's a big release with lots of important bug fixes and some awesome new features. The last release of JVx was in January. It was version 2.7 which was more or less a small bugfix release with few new features. We took more time for JVx 2.8 to make it awesome.

What's new?

  • Placeholder/Prompt support

    This feature is available for input fields and cell editors. Simply enable this feature:

    editor.setPlaceholderVisible(true);
    editor.setPlaceholder("PLACEHOLDER");

    to get

    Prompt support

    Prompt support

  • New popup menu button

    This new button reduces the visible components. It's a must have for modern applications:

    Menu button

    Menu button

  • Savepoints for transaction handling in PostgreSql
  • Components have a unique name

    This is an important feature fore UI tests and our headless UI as well. It's now possible to address components in vaadin UI by their id to apply custom css.

  • Configurable REST services
  • Mac OS UI improvements

The full changelog is available here.

Start with JVx