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