diff --git a/BBjGridExWidget.bbj b/BBjGridExWidget.bbj
index 3f7261eb..7da7cc51 100644
--- a/BBjGridExWidget.bbj
+++ b/BBjGridExWidget.bbj
@@ -48,6 +48,7 @@ use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEven
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsRowEditing
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsRangeSelection
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsKeypress
+use ::BBjGridExWidget/util/LicenseManager.bbj::LicenseManager
rem /**
rem * The Grid Core Class.This class works as a columns manager and api provider.
rem * It contains a big number of methods and properties to configure the column from A..Z.
@@ -90,7 +91,12 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
rem */
field public static BBjString LicenseKey$
rem /**
- rem * When true the grid will use the unminifed version of the Javascript code then open the debugger
+ rem * When true , the grid will force using the community version of the grid whether there
+ rem * is a license key or not.
+ rem */
+ field public static BBjNumber ForceCommunityBuild! = 0
+ rem /**
+ rem * When true the grid will use the unminifed version of the Javascript code then open the debugger
rem * in the browser when the CHROMIUM_HTMLVIEW is in use·
rem * Note : in BBj 19.10 and higher the grid will open the debugger only when the debugging port is set
rem *
@@ -134,6 +140,10 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
rem * The client's HTML template to use in order to build the grid·
rem */
field protected BBjString Template$ = ""
+ rem /**
+ rem * Instnace of the grid's license manager
+ rem */
+ field protected static LicenseManager LicenseManager! = new LicenseManager()
field protected BBjHtmlView HTMLView!
field protected Boolean IsReady! = BBjAPI.FALSE
field protected BBjVector backlog! = new BBjVector()
@@ -452,6 +462,15 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
methodret BBjGridExWidget.imageToBase64(filename!)
methodend
rem /**
+ rem * The method will check whether the grid has license key or not.
+ rem *
+ rem * @return BBjNumber true when a license key is found , false otherwise
+ rem */
+ method public static BBjNumber isLicensed()
+ #getLicenseManager().setLicenseKey(#getLicenseKey())
+ methodret #getLicenseManager().isLicensed()
+ methodend
+ rem /**
rem * disabled default constructor
rem */
method private BBjGridExWidget()
@@ -577,12 +596,6 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
declare BBjHtmlView htmlview!
if (f_init!) then
- lic!=System.getProperty("bbjgridexwidget.license")
-
- if lic! <> null() and str(lic!) <> "" then
- #setLicenseKey(str(lic!))
- FI
-
html$ = #getTemplate()
if (info(3,6)<>"5" and #Debug>0) then
@@ -612,7 +625,6 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
htmlview!.setNoEdge(1)
htmlview!.setVisible(1)
htmlview!.setText(html$)
-
#HTMLView!=htmlview!
else
#HTMLView!.setSize(#getCanvas().getWidth(),#getCanvas().getHeight())
@@ -659,13 +671,19 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
rem * @param BBjEvent ev! The onLoad event
rem */
method public void onInit(BBjEvent ev!)
+ isLicensed! = 0
+
+ if (#getForceCommunityBuild() = 0) then
+ isLicensed! = #isLicensed()
+ FI
+
ch=unt
distBase$ = "BBjGridExWidget/client/dist"
rem include the grid
if #getDebug() = 1 then
- gridPath$ = iff(LEN(#LicenseKey$) > 0,distBase$ + "/ag-grid-enterprise.noStyle.js",distBase$ +"/ag-grid-community.noStyle.js")
+ gridPath$ = iff(isLicensed!,distBase$ + "/ag-grid-enterprise.noStyle.js",distBase$ +"/ag-grid-community.noStyle.js")
else
- gridPath$ = iff(LEN(#LicenseKey$) > 0,distBase$ + "/ag-grid-enterprise.min.noStyle.js",distBase$ +"/ag-grid-community.min.noStyle.js")
+ gridPath$ = iff(isLicensed!,distBase$ + "/ag-grid-enterprise.min.noStyle.js",distBase$ +"/ag-grid-community.min.noStyle.js")
FI
open (ch)gridPath$
@@ -708,6 +726,7 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
rem */
method public void onLoaded(BBjEvent ev!)
#HTMLView!.clearCallback(#HTMLView!.ON_PAGE_LOADED)
+ #getLicenseManager().register(#this!)
#IsReady! = BBjAPI.TRUE
REM if #RS! <> null() or #URL$>"" then
REM #render()
@@ -2530,4 +2549,4 @@ class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumns
#fireEvent(#ON_GRID_KEYPRESS(), event!)
methodend
-classend
\ No newline at end of file
+classend
diff --git a/demo/Enterprise/AggregationDemo.bbj b/demo/Enterprise/AggregationDemo.bbj
index d1001499..da3d13d9 100644
--- a/demo/Enterprise/AggregationDemo.bbj
+++ b/demo/Enterprise/AggregationDemo.bbj
@@ -8,24 +8,18 @@ rem */
use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use ::BBjGridExWidget/BBjGridExWidgetRenderers.bbj::BBjGridExWidgetRendererGroupCellRenderer
use ::BBjGridExWidget/BBjGridExWidgetExpressions.bbj::BBjGridExWidgetExpression
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.bc.SqlQueryBC
use java.sql.Types
use com.google.gson.JsonObject
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
-lic!=System.getProperty("bbjgridexwidget.license")
-
-if lic!=null() or str(lic!)="" then
- a=msgbox("set license key in bbj.properties under bbjgridexwidget.license=",48,"Demo for Enterprise Features")
- release
-fi
-
-BBjGridExWidget.setLicenseKey(lic!)
-
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"BBj Grid Ex Demo")
wnd! .setCallback(BBjAPI.ON_CLOSE,"byebye")
wnd! .setCallback(BBjAPI.ON_RESIZE,"resize")
diff --git a/demo/Enterprise/ChartingDemo.bbj b/demo/Enterprise/ChartingDemo.bbj
index d5da38ff..b9d173bf 100644
--- a/demo/Enterprise/ChartingDemo.bbj
+++ b/demo/Enterprise/ChartingDemo.bbj
@@ -9,6 +9,7 @@ use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use ::BBjGridExWidget/BBjGridExWidgetClientModels.bbj::BBjGridExWidgetClientAddRangeChartModel
use ::BBjGridExWidget/BBjGridExWidgetClientModels.bbj::BBjGridExWidgetClientAddRangeSelectionModel
use ::BBjGridExWidget/BBjGridExWidgetContextMenu.bbj::BBjGridContextMenuItem
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.db.ResultSet
use com.basiscomponents.bc.SqlQueryBC
use java.util.ArrayList
@@ -17,6 +18,8 @@ use java.util.Random
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"BBj Grid Range Selection Demo")
diff --git a/demo/Enterprise/ContextMenuDemo.bbj b/demo/Enterprise/ContextMenuDemo.bbj
index 9b0bc236..bc69ef06 100644
--- a/demo/Enterprise/ContextMenuDemo.bbj
+++ b/demo/Enterprise/ContextMenuDemo.bbj
@@ -8,11 +8,14 @@ rem */
use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use ::BBjGridExWidget/BBjGridExWidgetContextMenu.bbj::BBjGridContextMenu
use ::BBjGridExWidget/BBjGridExWidgetContextMenu.bbj::BBjGridContextMenuItem
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.db.ResultSet
use com.basiscomponents.bc.SqlQueryBC
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
diff --git a/demo/Enterprise/PivotDemo.bbj b/demo/Enterprise/PivotDemo.bbj
index e3070933..85141062 100644
--- a/demo/Enterprise/PivotDemo.bbj
+++ b/demo/Enterprise/PivotDemo.bbj
@@ -7,25 +7,22 @@ rem * file that was distributed with this source code.
rem */
use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use ::BBjGridExWidget/BBjGridExWidgetSidebar.bbj::BBjGridExWidgetColumnsToolpanel
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.db.ResultSet
use com.basiscomponents.bc.SqlQueryBC
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
-lic!=System.getProperty("bbjgridexwidget.license")
-
-if lic!=null() or str(lic!)="" then
- a=msgbox("set license key in bbj.properties under bbjgridexwidget.license=",48,"Demo for Enterprise Features")
- release
-fi
-
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"Simple CD-Store Demo")
wnd!.setCallback(BBjAPI.ON_CLOSE,"byebye")
wnd!.setCallback(BBjAPI.ON_RESIZE,"resize")
+
REM init the grid
grid! = new BBjGridExWidget(wnd!,100,0,0,800,600)
diff --git a/demo/Enterprise/RangeSelectionDemo.bbj b/demo/Enterprise/RangeSelectionDemo.bbj
index 28df1a86..2f61c46e 100644
--- a/demo/Enterprise/RangeSelectionDemo.bbj
+++ b/demo/Enterprise/RangeSelectionDemo.bbj
@@ -10,6 +10,7 @@ use ::BBjGridExWidget/BBjGridExWidgetStatusBar.bbj::BBjGridExWidgetStatusBarAggr
use ::BBjGridExWidget/BBjGridExWidgetClientModels.bbj::BBjGridExWidgetClientRangeSelectionModel
use ::BBjGridExWidget/BBjGridExWidgetClientModels.bbj::BBjGridExWidgetClientColumnModel
use ::BBjGridExWidget/BBjGridExWidgetClientModels.bbj::BBjGridExWidgetClientAddRangeSelectionModel
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.db.ResultSet
use com.basiscomponents.bc.SqlQueryBC
use java.sql.Types
@@ -19,6 +20,8 @@ use java.util.Random
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"BBj Grid Range Selection Demo")
diff --git a/demo/Enterprise/RowGroupingDemo.bbj b/demo/Enterprise/RowGroupingDemo.bbj
index 6dc36f23..784694e4 100644
--- a/demo/Enterprise/RowGroupingDemo.bbj
+++ b/demo/Enterprise/RowGroupingDemo.bbj
@@ -1,6 +1,14 @@
+rem /**
+rem * This file is part of the BBjGridExWidget plugin.
+rem * (c) Basis Europe
+rem *
+rem * For the full copyright and license information, please view the LICENSE
+rem * file that was distributed with this source code.
+rem */
use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetColumn
use ::BBjGridExWidget/BBjGridExWidgetColumnsToolpanel.bbj::BBjGridExWidgetColumnsToolpanel
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.db.ResultSet
use com.basiscomponents.bc.SqlQueryBC
use com.google.gson.JsonObject
@@ -8,18 +16,11 @@ use java.sql.Types
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
-lic!=System.getProperty("bbjgridexwidget.license")
-
-if lic!=null() or str(lic!)="" then
- a=msgbox("set license key in bbj.properties under bbjgridexwidget.license=",48,"Row Grouping Demo")
- release
-FI
-
-BBjGridExWidget.setLicenseKey(lic!)
-
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"BBj Grid Ex Demo")
wnd!.setCallback(BBjAPI.ON_CLOSE,"byebye")
wnd!.setCallback(BBjAPI.ON_RESIZE,"resize")
diff --git a/demo/Enterprise/SidebarDemo.bbj b/demo/Enterprise/SidebarDemo.bbj
index 3234fd1e..f1f0f9fe 100644
--- a/demo/Enterprise/SidebarDemo.bbj
+++ b/demo/Enterprise/SidebarDemo.bbj
@@ -1,21 +1,24 @@
+rem /**
+rem * This file is part of the BBjGridExWidget plugin.
+rem * (c) Basis Europe
+rem *
+rem * For the full copyright and license information, please view the LICENSE
+rem * file that was distributed with this source code.
+rem */
use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
use ::BBjGridExWidget/BBjGridExWidgetSidebar.bbj::BBjGridExWidgetColumnsToolpanel
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.bc.SqlQueryBC
use java.sql.Types
use com.google.gson.JsonObject
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
-lic!=System.getProperty("bbjgridexwidget.license")
-
-if lic!=null() or str(lic!)="" then
- a=msgbox("set license key in bbj.properties under bbjgridexwidget.license=",48,"Demo for Enterprise Features")
- release
-fi
-
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"BBj Grid Ex Demo")
grid! = new BBjGridExWidget(wnd!,100,0,30,800,570)
diff --git a/demo/Enterprise/StatusbarDemo.bbj b/demo/Enterprise/StatusbarDemo.bbj
index 9cec3342..969fc8ce 100644
--- a/demo/Enterprise/StatusbarDemo.bbj
+++ b/demo/Enterprise/StatusbarDemo.bbj
@@ -3,23 +3,17 @@ use ::BBjGridExWidget/BBjGridExWidgetStatusBar.bbj::BBjGridExWidgetStatusBarTota
use ::BBjGridExWidget/BBjGridExWidgetStatusBar.bbj::BBjGridExWidgetStatusBarFilteredRowCountComponent
use ::BBjGridExWidget/BBjGridExWidgetStatusBar.bbj::BBjGridExWidgetStatusBarTotalAndFilteredRowCountComponent
use ::BBjGridExWidget/BBjGridExWidgetStatusBar.bbj::BBjGridExWidgetStatusBarSelectedRowCountComponent
+use ::BBjGridExWidget/Demo/assets/Utilities.bbj::BBjGridExWidgetDemoUtilities
use com.basiscomponents.bc.SqlQueryBC
use java.sql.Types
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
-lic!=System.getProperty("bbjgridexwidget.license")
-
-if lic!=null() or str(lic!)="" then
- a=msgbox("set license key in bbj.properties under bbjgridexwidget.license=",48,"Demo for Enterprise Features")
- release
-fi
-
-BBjGridExWidget.setLicenseKey(lic!)
-
wnd! = BBjAPI().openSysGui("X0").addWindow(10,10,800,600,"Statusbar Demo")
wnd!.setCallback(BBjAPI.ON_CLOSE,"byebye")
wnd!.setCallback(BBjAPI.ON_RESIZE,"resize")
diff --git a/demo/Enterprise/TreeDataDemo.bbj b/demo/Enterprise/TreeDataDemo.bbj
index f88e90aa..0a1bf389 100644
--- a/demo/Enterprise/TreeDataDemo.bbj
+++ b/demo/Enterprise/TreeDataDemo.bbj
@@ -13,6 +13,8 @@ use com.basiscomponents.db.ResultSet
? 'HIDE'
+BBjGridExWidgetDemoUtilities.nagAboutLicense()
+
declare auto BBjTopLevelWindow wnd!
declare BBjGridExWidget grid!
diff --git a/demo/assets/Utilities.bbj b/demo/assets/Utilities.bbj
index ba4fc68c..f3a67b26 100644
--- a/demo/assets/Utilities.bbj
+++ b/demo/assets/Utilities.bbj
@@ -3,6 +3,7 @@ use java.util.ArrayList
use com.google.gson.JsonObject
use com.google.gson.Gson
use com.basiscomponents.db.ResultSet
+use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
REM /**
REM * Several Utilities Used in Demos
REM *
@@ -10,6 +11,12 @@ REM * @author Hyyan Abo Fakher
REM */
class public BBjGridExWidgetDemoUtilities
+ method public static void nagAboutLicense()
+ if(!BBjGridExWidget.isLicensed())
+ let x=MSGBOX("This is a BBjGridWidget enterprise demo and it requires a license key in order to work." ,48," Failed To Set License" )
+ FI
+ methodend
+
method public static BBjString readAssetsAsString(BBjString file$)
template$ = ""
ch=unt
@@ -22,16 +29,12 @@ class public BBjGridExWidgetDemoUtilities
method public static ArrayList buildArrayListFromDir(BBjString root$, BBjString sub!)
rootResolved! = BBjAPI().getFileSystem().resolvePath(root$)
path! = iff(sub! > "" , sub! , rootResolved!)
-
data! = new ArrayList()
-
folder! = new File(path!)
list! = folder!.list()
length! = list!.length - 1
-
files! = new ArrayList()
dirs! = new ArrayList()
-
FOR i = 0 TO length!
current! = new File(path! + "/" + list![i])
diff --git a/util/LicenseManager.bbj b/util/LicenseManager.bbj
new file mode 100644
index 00000000..37de9109
Binary files /dev/null and b/util/LicenseManager.bbj differ