B4J Library [ABMaterial] IMPORTANT B4J v6.00+ (SOLVED)

This is now fixed!

As this was a major issue everyone (donator or not) can download the upgrade to 4.03.

See https://www.b4x.com/android/forum/threads/abmaterial-framework-for-webapps.60072/ for the download link.

Or donators can also use the feedback app to download version 4.03.

For anyone upgrading from Chipmunk, it is very important you also read the included Checklist 4.00 pdf file!

Here is also the latest readme.txt for version 4.03:

B4X:
INTRO
-----
This is a maintenance update to make ABM compatible with B4J 6.00, so no major typical ABM changes, just some new features.

As this version is simulatiously released to donators and the public, users that still work with Chipmunk NEED to read the 'ABMaterial 4.00 Checklist.pdf' file!

**************************************************************************************************
Some older quicklists for updates from earlier versions can be found in the other README files.
**************************************************************************************************

NOTE: When you add a case to the Feedback App, please check from time to time as I may need some extra info before I can proceed.

GENERAL
-------
If you are upgrading from 3.00+ or earlier versions of ABMaterial.
please see the document(s). I saved it in a couple of formats, so you can copy/paste code:
Also, you can use the Template project to copy and paste code into your own projects.

     ABMaterial 3.20 Checklist.docx
     ABMaterial 3.20 Checklist.pdf
    
Version 2.20+ of ABMaterial introduces the ABMGridBuilder!

The ABMGridBuilder is a tool to make grids easy.  It is based on the excellent system introduced by Shoelace.io.  I adapted the system so it is usefull for ABMaterial and added some specific functionalities like adding rows and cells before others.
With the tool, you can generate the needed AddRow and AddCell B4J methods.  Using the Clipboard, you can then paste it at the relevant place in your code.
But even more! You can copy your AddRow and AddCell methods to the clipboard, and ABMGridBuilder can parse this code an 'rebuild' the visual representation. Cool, no?

You can find the ABMGridBuilder in the zip file.  I've created two .bat files to start them: one for a 'light' themed version and one for a 'dark' themed version:

Start.bat
StartDark.bat

The code in the bat file contains a very important parameter: -Dprism.order=sw
This parameter is needed because I use a very big canvas, and without it, it will not work.

----------------------------------------------
java -jar -Dprism.order=sw ABMGridBuilder.jar
----------------------------------------------

INSTALL NOTES:
--------------
Take a backup of your existing version.  These zips contains the library files AND the new javascript/css files.
1. Download: Donators -> see the Download section in the feedback app http://feedback.abmaterial.com
  Public -> see the forum post https://www.b4x.com/android/forum/threads/abmaterial-framework-for-webapps.60072/
2. Copy the library files to your b4j library folder (all jars and xml)
5. For your own projects, copy the www folder to your project www folder and overwrite the files

Refreshing the browser (F5) may be needed! (Or pulling down on your mobile device to refresh the browser).

NEW/FIXES
---------
[NEW] Made ABMaterial compatible with B4J 6.00
----------------------------------------------
The major reason for this quick release.  As the file structure of B4J 6.00 has changed, I had to update the Analysing code of ABMaterial too.

[NEW] Support for the Browsers Passive Event Listeners
------------------------------------------------------
Browsers have introduced a feature to speed up scrolling on mobile browsers. Thanks to EventListenerOptions you have the ability to tell the browser that you just want to do your stuff and you are not gonna call preventDefault.  However, unfortunately they decided to change a parameter of an existing function so it kind of breaks all existing libraries. I found some kind of polyfill and improved it so there will be fewer warnings/errors.  Some libraries (like google maps) are not yet updated by Google, so they still can broadcast warnings.

You can toggle this feature with the ABM.EnablePassiveEventListeners() property (default = true)

[NEW] UseAlternativeScrollBar now also works with a dynamic Navigation Bar
--------------------------------------------------------------------------
The previous version only worked when you create all the sidebar items in the BuildNavigationBar method.  The new version can now also handle it when you add your sidebar items in the ConnectNavigationBar method. 

Note: You still need to set .UseAlternativeScrollBar() in the BuildNavigationBar method so the necessary libraries are loaded!

[NEW] Do not block zoom
-----------------------
In ABM 4.00, by default zoom in mobile devices is disabled.  You can enable it again:

Usage:

in ABMApplication, Initialize:

ABM.AllowZoom = True

This sets the meta tag as it was in ABM 3.

[NEW] Frappé Charts print support
---------------------------------
I added the needed javascript code so Frappé Charts (see tutorial https://www.b4x.com/android/forum/threads/abmaterial-alternative-lightweight-charts.86010/#content) can now also be printed.

Note that you will need to use the new www\js\custom\frappe-charts.min.iife.403.js

[NEW] ABMLabel Blockquote set block width
-----------------------------------------
In the label theme, you can set the width of the little bar on the left (in pixels)

[NEW] ABMCustomComponent set style and class on the wrapper div
---------------------------------------------------------------
Usage:

ABMComp.Initialize("ABMComp", Me, InternalPage, ID, CSS)
ABMComp.SetWrapperDivStyle("min-height:" & HeightPx & "px;")
ABMComp.SetWrapperDivStyle("myclass1 myclass2")


Happy programming!

Alwaysbusy
 
Last edited:

alwaysbusy

Expert
Licensed User
Longtime User
This is just for info to keep everyone updated on my progress:

1. The problem for local files.
ABM checked the first line in a .bas file for the Type. In B4J 6.00+ the order has changed:

Old header:
B4X:
Type=Class  '<-- first line
Version=5.9
ModulesStructureVersion=1
B4J=true
@EndOfDesignText@

New B4J 6.00+ header:
B4X:
B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class  '<-- not the first line
Version=5.9
@EndOfDesignText@

Status: Solved in 4.03+, where it is should not matter anymore: the order can change.

2. B4J before 6.00 had its source code in a fixed folder. In B4J 6.00+ this is not always so as the user can have shared modules, located elsewhere.

Status: Solved in 4.03+. ABM now also handles relative and absolute paths for the modules
 
Last edited:

alwaysbusy

Expert
Licensed User
Longtime User
This night, I think I fixed this. I've tried it with several of my apps and it looks like it is working now. As this version will be released to everyone, it would be nice if some donators could also test it on their apps before releasing it into the wild :). I still have to setup the download, but if you are interested in testing it, drop me a PM with your email and as soon as I have something, I'll send you the library for evaluation.
 
Top