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

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.4 is on the way

I'm happy to announce that VisionX 5.4 is on the way. The code is complete and tested. We have some additional tasks to do, but it's ready!

It's one of the really cool things. It has a bunch of new lib versions and got updates for mobility. The web UI of applications is faster than before and we have full responsive support built-in. Not only for web applications, also for desktop applications.

Another big milestone is the new mobile client. It was built from scratch. It's a wonderful piece of software, built with Flutter and Dart. It's one native app for iOS and Android. We will replace the old client in the near future. The new client supports all our layout features and much more... it's modern!

Here are some impressions

New screen wizard

New screen wizard

Responsive for Desktop

Responsive for Desktop

Web settings

Web settings

Mobile settings

Mobile settings

Responsive mode

Some impressions of our new mobile client

What else is new?

Be patient :)

JVx Icon redesign

Our good old JVx icon got a new design for 2020! It's also the new icon for our brand new

The old icon:


JVx Icon pre 2020

The new icon:


JVx 2020

The icon now contains the open source hint in the middle, as closed circle, and also our company colors. We love it.

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.

We're hiring

Wir suchen Verstärkung für unser Framework Team. Wenn du immer schon an einem Open Source Framework mitarbeiten wolltest und Forschung/Entwicklung genau das ist was dir zusagt, dann bewirb dich bitte!

Hier ist die genauere Beschreibung