From 78533e7eaa1c122e89e83ca39d43249b988e9ab3 Mon Sep 17 00:00:00 2001 From: Timon Geisbauer Date: Wed, 20 Jul 2022 15:39:42 +0200 Subject: [PATCH] feat(MenuItem): improvements and changes to the demos --- .../ChileCompanyCustomerPortal.bbj | 12 +- .../ChileCompanyMyDashboard.bbj | 6 + demo/Showcase/Showcase.bbj | 12 +- .../Showcase/ShowcasePanels/ToastShowcase.bbj | 9 +- demo/Showcase/components/ShowCaseFrame.bbj | 32 +-- .../Showcase/components/ShowCaseMenuPanel.bbj | 2 +- framework/EmbedPanel/EmbedPanel.bbj | 2 +- framework/Favorites/IFavoritesProvider.bbj | 2 +- .../Favorites/SampleFavoritesProvider.bbj | 2 +- framework/MenuCardPanel/MenuCardPanel.bbj | 2 +- .../MenuCardPanel/MenuCardPanelSorted.bbj | 2 +- framework/MenuPanel/MenuPanel.bbj | 2 +- framework/PortalFrame/PortalFrame.bbj | 6 +- framework/Router/Router.bbj | 2 +- framework/TreeListPanel/TreeListPanel.bbj | 2 +- model/ListView/ListViewDataModel.bbj | 6 +- model/Menu.bbj | 198 ++---------------- model/MenuItem.bbj | 186 ++++++++++++++++ widgets/ListView/ListView.bbj | 4 +- widgets/MenuCard/MenuCard.bbj | 2 +- 20 files changed, 259 insertions(+), 232 deletions(-) create mode 100644 model/MenuItem.bbj diff --git a/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerPortal.bbj b/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerPortal.bbj index 2a2356af..4ba3f277 100644 --- a/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerPortal.bbj +++ b/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerPortal.bbj @@ -1,7 +1,7 @@ use ::WebKit/framework/LoginDialog/LoginDialog.bbj::LoginDialog use ::WebKit/util/ClientUtil.bbj::ClientUtil use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/framework/LoginDialog/SampleAuthProvider.bbj::SampleAuthProvider use ::WebKit/demo/ChileCompanyCustomerPortal/components/ChileFrame.bbj::ChileFrame @@ -57,7 +57,14 @@ m! = new Menu() i! = m!.addMenuItem(m!.getRoot(),101,"Customers","List of Customers","users") i!.setProgram("::WebKit/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerDashboardPanel.bbj::ChileCompanyDashboardPanel") -i!.setStartType(0); rem 0 = class that implements WebWidget and has a constructor that takes the parent window +i!.setStartType(0) + +test! = new MenuItem(i!, 1000, "Details", "Customer Details", "details") +test!.setProgram("::WebKit/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerDashboardPanel.bbj::ChileCompanyDashboardPanel") +test!.setStartType(0) +m!.addItemToIndex(test!) + +rem test! = m!.addMenuItem(i!, 1000, "Details", "Customer Details", "details") i! = m!.addMenuItem(m!.getRoot(),102,"Products","Products - Dashboard","shopping-cart") i!.setProgram("::WebKit/demo/ChileCompanyCustomerPortal/ChileCompanyItemDashboard.bbj::ChileCompanyItemDashboard") @@ -67,6 +74,7 @@ i! = m!.addMenuItem(m!.getRoot(),103,"Salesperson","Salesperson - Dashboard","us i!.setProgram("::WebKit/demo/ChileCompanyCustomerPortal/ChileCompanySalespersonDashboard.bbj::ChileCompanySalespersonDashboard") i!.setStartType(0); rem 0 = class that implements WebWidget and has a constructor that takes the parent window + treeMenuShowCase! = m!.addMenuItem(m!.getRoot(),104,"Sales - Options","Sales - Options","list") treeMenuShowCase!.setStartType(2) diff --git a/demo/ChileCompanyCustomerPortal/ChileCompanyMyDashboard.bbj b/demo/ChileCompanyCustomerPortal/ChileCompanyMyDashboard.bbj index 2725f2cf..95a81246 100644 --- a/demo/ChileCompanyCustomerPortal/ChileCompanyMyDashboard.bbj +++ b/demo/ChileCompanyCustomerPortal/ChileCompanyMyDashboard.bbj @@ -37,6 +37,8 @@ class public ChileCompanyMyDashboard extends BBjWidget canvas!.addStaticText(canvas!.getAvailableControlID(), 0, 0, 0, 0, Icons.get("check","color:red")) rem PortalFrame.getInstance().reloadAllPanels() canvas!.addButton(canvas!.getAvailableControlID(),0,0,0,0,"Overlay").setCallback(BBjAPI.ON_BUTTON_PUSH,#this!,"onBtnPush") + canvas!.addButton(canvas!.getAvailableControlID(),0,0,0,0,"Go to SubRoute of Customer").setCallback(BBjAPI.ON_BUTTON_PUSH,#this!,"onNavBtnPush") + methodret FI methodend @@ -54,6 +56,10 @@ class public ChileCompanyMyDashboard extends BBjWidget #overlay!.setBackgroundColor("rgba(0,0,0,0.35)") methodend + method public void onNavBtnPush(BBjButtonPushEvent event!) + PortalFrame.getInstance().navigateTo("customers/details") + methodend + method public void onOverlayDissmissed(BBjCustomEvent event!) PortalFrame.getInstance().destroyDialogWindow() methodend diff --git a/demo/Showcase/Showcase.bbj b/demo/Showcase/Showcase.bbj index f6c51fc4..131c0474 100644 --- a/demo/Showcase/Showcase.bbj +++ b/demo/Showcase/Showcase.bbj @@ -4,7 +4,7 @@ use ::WebKit/framework/LoginDialog/LoginDialog.bbj::LoginDialog use ::WebKit/framework/PortalFrame/PortalFrame.bbj::PortalFrame use ::WebKit/util/ClientUtil.bbj::ClientUtil use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/demo/Showcase/components/ShowCaseFrame.bbj::ShowCaseFrame use ::WebKit/framework/LoginDialog/SampleAuthProvider.bbj::SampleAuthProvider use ::WebKit/framework/Favorites/SampleFavoritesProvider.bbj::SampleFavoritesProvider @@ -51,8 +51,7 @@ menuItem!.setStartType(0) declare PortalFrame portal! -showCase! = menu!.addMenuItem(menu!.getRoot(),104,"Sales - Options","Sales - Options","list") -showCase!.setStartType(2) +showCase! = menu!.addMenuItem(menu!.getRoot(),104,"salesOptions","Sales - Options","Sales - Options","list") showCaseItem! = menu!.addMenuItem(showCase!,212,"Sales Statistics","Sales Statistics","table") showCaseItem!.setStartType(2) @@ -60,11 +59,12 @@ showCaseItem!.setStartType(2) showCaseItem! = menu!.addMenuItem(showCase!,211,"Diagrams","Diagrams","table") showCaseItem!.setStartType(2) -showCaseItem! = menu!.addMenuItem(showCase!,201,"Direct - Sales - Options","Direct - Sales - Options","table") -showCaseItem!.setStartType(2) +showCaseItem! = menu!.addMenuItem(showCase!,201,"directSales","Direct - Sales - Options","Direct - Sales - Options","table") showCaseSubItem! = menu!.addMenuItem(showCaseItem!,202,"Personal - Sale","Personal - Sale","table") -showCaseSubItem!.setStartType(2) +showCaseSubItem!.setProgram("::WebKit/demo/Showcase/ShowcasePanels/ToastShowcase.bbj::ToastShowcase") +showCaseSubItem!.setMenuItemPathCaption("personal") +showCaseSubItem!.setStartType(0) showCaseSubItem! = menu!.addMenuItem(showCaseItem!,203,"Electronic - Sale","Electronic - Sale","table") showCaseSubItem!.setStartType(2) diff --git a/demo/Showcase/ShowcasePanels/ToastShowcase.bbj b/demo/Showcase/ShowcasePanels/ToastShowcase.bbj index d7c9bb15..23a06554 100644 --- a/demo/Showcase/ShowcasePanels/ToastShowcase.bbj +++ b/demo/Showcase/ShowcasePanels/ToastShowcase.bbj @@ -2,6 +2,7 @@ use ::WebKit/demo/Showcase/ShowcaseWidget/ShowcaseWidget.bbj::ShowcaseWidget use ::WebKit/widgets/InputField/InputField.bbj::InputField use ::WebKit/widgets/Toast/Toast.bbj::Toast +use ::WebKit/framework/PortalFrame/PortalFrame.bbj::PortalFrame class public ToastShowcase extends ShowcaseWidget @@ -48,10 +49,10 @@ class public ToastShowcase extends ShowcaseWidget methodend method public void onShowToast(BBjButtonPushEvent ev!) - - message$=#TitleField!.getInput() - duration=max(1000,num(#DurationField!.getInput(),err=*next)) - Toast.show(message$,duration) + PortalFrame.getInstance().navigateTo("/salesoptions/directsales/personal") + rem message$=#TitleField!.getInput() + rem duration=max(1000,num(#DurationField!.getInput(),err=*next)) + rem Toast.show(message$,duration) methodend diff --git a/demo/Showcase/components/ShowCaseFrame.bbj b/demo/Showcase/components/ShowCaseFrame.bbj index abe8df0f..df3b3484 100644 --- a/demo/Showcase/components/ShowCaseFrame.bbj +++ b/demo/Showcase/components/ShowCaseFrame.bbj @@ -3,29 +3,29 @@ use ::WebKit/framework/TreeListPanel/TreeListPanel.bbj::TreeListPanel use ::WebKit/demo/Showcase/components/ShowCaseMenuPanel.bbj::ShowCaseMenuPanel use ::WebKit/widgets/DashboardHeader/DashboardHeaderEntry.bbj::DashboardHeaderEntry use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem class public ShowCaseFrame extends PortalFrame rem @Override - method protected TreeListPanel createMenuPanelObject(BBjChildWindow panelWindow!) - menuPanel! = new ShowCaseMenuPanel(panelWindow!) - rem Test Colors - colors! = new BBjVector() - colors!.add("#408458") - colors!.add("#9B0058") - colors!.add("#6883BA") - menuPanel!.setColors(colors!) - data! = new BBjVector() - data!.add(new DashboardHeaderEntry(0,2,"Deals Scored")) - data!.add(new DashboardHeaderEntry(1,3,"Upcoming Tasks")) - data!.add(new DashboardHeaderEntry(2,45,"Planned Meetings")) - menuPanel!.setHeadLineEntrys(data!) + rem method protected TreeListPanel createMenuPanelObject(BBjChildWindow panelWindow!) + rem menuPanel! = new ShowCaseMenuPanel(panelWindow!) + rem rem Test Colors + rem colors! = new BBjVector() + rem colors!.add("#408458") + rem colors!.add("#9B0058") + rem colors!.add("#6883BA") + rem menuPanel!.setColors(colors!) + rem data! = new BBjVector() + rem data!.add(new DashboardHeaderEntry(0,2,"Deals Scored")) + rem data!.add(new DashboardHeaderEntry(1,3,"Upcoming Tasks")) + rem data!.add(new DashboardHeaderEntry(2,45,"Planned Meetings")) + rem menuPanel!.setHeadLineEntrys(data!) - methodret menuPanel! + rem methodret menuPanel! - methodend + rem methodend diff --git a/demo/Showcase/components/ShowCaseMenuPanel.bbj b/demo/Showcase/components/ShowCaseMenuPanel.bbj index 524a9499..83b128af 100644 --- a/demo/Showcase/components/ShowCaseMenuPanel.bbj +++ b/demo/Showcase/components/ShowCaseMenuPanel.bbj @@ -7,7 +7,7 @@ use ::WebKit/demo/ChileCompanyCustomerPortal/ChileCompanyCustomerDashboardPanel. use ::WebKit/util/ClientUtil.bbj::ClientUtil use ::WebKit/widgets/InputField/InputField.bbj::InputField use ::WebKit/widgets/MenuCard/MenuCard.bbj::MenuCard -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem class public ShowCaseMenuPanel extends TreeListPanel field public DashboardHeader dashHeader! field public DashboardTasks dashTasks! diff --git a/framework/EmbedPanel/EmbedPanel.bbj b/framework/EmbedPanel/EmbedPanel.bbj index e117faca..d61a5c7f 100644 --- a/framework/EmbedPanel/EmbedPanel.bbj +++ b/framework/EmbedPanel/EmbedPanel.bbj @@ -1,5 +1,5 @@ use ::BBjWidget/BBjWidget.bbj::BBjWidget -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/util/DynamicLoader.bbj::DynamicLoader class public EmbedPanel extends BBjWidget diff --git a/framework/Favorites/IFavoritesProvider.bbj b/framework/Favorites/IFavoritesProvider.bbj index d18b4eba..9351fb66 100644 --- a/framework/Favorites/IFavoritesProvider.bbj +++ b/framework/Favorites/IFavoritesProvider.bbj @@ -1,4 +1,4 @@ -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem interface public IFavoritesProvider diff --git a/framework/Favorites/SampleFavoritesProvider.bbj b/framework/Favorites/SampleFavoritesProvider.bbj index edd934ac..778a2ea8 100644 --- a/framework/Favorites/SampleFavoritesProvider.bbj +++ b/framework/Favorites/SampleFavoritesProvider.bbj @@ -1,5 +1,5 @@ use ::WebKit/framework/Favorites/IFavoritesProvider.bbj::IFavoritesProvider -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/model/Menu.bbj::Menu use ::WebKit/util/WriteFavorites.bbj::WriteFavorites use java.util.ArrayList diff --git a/framework/MenuCardPanel/MenuCardPanel.bbj b/framework/MenuCardPanel/MenuCardPanel.bbj index 07ff9f1d..6d091b42 100644 --- a/framework/MenuCardPanel/MenuCardPanel.bbj +++ b/framework/MenuCardPanel/MenuCardPanel.bbj @@ -1,7 +1,7 @@ use ::WebKit/framework/TreeListPanel/TreeListPanel.bbj::TreeListPanel use ::WebKit/widgets/MenuCard/MenuCard.bbj::MenuCard use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/util/DynamicLoader.bbj::DynamicLoader diff --git a/framework/MenuCardPanel/MenuCardPanelSorted.bbj b/framework/MenuCardPanel/MenuCardPanelSorted.bbj index 7d37e3d6..c85be27a 100644 --- a/framework/MenuCardPanel/MenuCardPanelSorted.bbj +++ b/framework/MenuCardPanel/MenuCardPanelSorted.bbj @@ -1,7 +1,7 @@ use ::WebKit/framework/TreeListPanel/TreeListPanel.bbj::TreeListPanel use ::WebKit/widgets/MenuCard/MenuCard.bbj::MenuCard use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/util/DynamicLoader.bbj::DynamicLoader use ::WebKit/framework/Favorites/SampleFavoritesProvider.bbj::SampleFavoritesProvider diff --git a/framework/MenuPanel/MenuPanel.bbj b/framework/MenuPanel/MenuPanel.bbj index 61b481b5..87dde42a 100644 --- a/framework/MenuPanel/MenuPanel.bbj +++ b/framework/MenuPanel/MenuPanel.bbj @@ -2,7 +2,7 @@ use ::BBjWidget/BBjWidget.bbj::BBjWidget use ::WebKit/widgets/IconTile/IconTile.bbj::IconTile use ::WebKit/util/DynamicLoader.bbj::DynamicLoader use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use java.util.HashMap diff --git a/framework/PortalFrame/PortalFrame.bbj b/framework/PortalFrame/PortalFrame.bbj index 7e4a8b29..95a10e9d 100644 --- a/framework/PortalFrame/PortalFrame.bbj +++ b/framework/PortalFrame/PortalFrame.bbj @@ -3,7 +3,7 @@ use ::BBjWidget/BBjWidget.bbj::BBjWidget use ::WebKit/util/DynamicLoader.bbj::DynamicLoader use ::WebKit/widgets/IconTile/IconTile.bbj::IconTile use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/framework/TreeListPanel/TreeListPanel.bbj::TreeListPanel use ::WebKit/framework/MenuCardPanel/MenuCardPanel.bbj::MenuCardPanel use ::WebKit/framework/MenuCardPanel/MenuCardPanelSorted.bbj::MenuCardPanelSorted @@ -280,7 +280,7 @@ REM footerMenuItem!.setCallback("onChangeTheme") if param! = null() then #navigateTo(menu!) else - #navigateTo(menu!.getBasePath(), str(param!)) + #navigateTo(menu!.getPath(), str(param!)) fi methodend @@ -324,7 +324,7 @@ REM footerMenuItem!.setCallback("onChangeTheme") methodend method public void navigateTo(MenuItem menu!) - #navigateTo(menu!.getBasePath()) + #navigateTo(menu!.getPath()) methodend method public MenuItem getMenuItem(BBjString path$) diff --git a/framework/Router/Router.bbj b/framework/Router/Router.bbj index 1f1bb1b2..4681e3cb 100644 --- a/framework/Router/Router.bbj +++ b/framework/Router/Router.bbj @@ -5,7 +5,7 @@ use ::WebKit/util/ClientUtil.bbj::ClientUtil use ::WebKit/framework/Router/RouterProtocol.bbj::RouterProtocol use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem class public Router diff --git a/framework/TreeListPanel/TreeListPanel.bbj b/framework/TreeListPanel/TreeListPanel.bbj index 07f66dc5..b3102c7c 100644 --- a/framework/TreeListPanel/TreeListPanel.bbj +++ b/framework/TreeListPanel/TreeListPanel.bbj @@ -4,7 +4,7 @@ use ::WebKit/widgets/IconTile/IconTile.bbj::IconTile use ::WebKit/widgets/ListTile/ListTile.bbj::ListTile use ::WebKit/util/DynamicLoader.bbj::DynamicLoader use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use java.util.HashMap use ::WebKit/util/Icons.bbj::Icons use ::WebKit/framework/Favorites/IFavoritesProvider.bbj::IFavoritesProvider diff --git a/model/ListView/ListViewDataModel.bbj b/model/ListView/ListViewDataModel.bbj index 162f725b..3ae0379f 100644 --- a/model/ListView/ListViewDataModel.bbj +++ b/model/ListView/ListViewDataModel.bbj @@ -1,7 +1,7 @@ use ::WebKit/model/ListView/ListHeaderDataModel.bbj::ListHeaderDataModel use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use java.util.HashSet class public ListViewDataModel @@ -25,9 +25,9 @@ class public ListViewDataModel #actionMenus! = new Menu() i! = #actionMenus!.addMenuItem(#actionMenus!.getRoot(), 1, "Edit", "Edit", "edit-2") - i!.setCustomEventName("ON_ACTION_ITEM_EDIT_PRESSED") + rem i!.setCustomEventName("ON_ACTION_ITEM_EDIT_PRESSED") i! = #actionMenus!.addMenuItem(#actionMenus!.getRoot(), 2, "Delete", "Delete", "trash-2") - i!.setCustomEventName("ON_ACTION_ITEM_DELETE_PRESSED") + rem i!.setCustomEventName("ON_ACTION_ITEM_DELETE_PRESSED") methodend method public ListViewDataModel(BBjString listPanelTitle$) diff --git a/model/Menu.bbj b/model/Menu.bbj index 9205d9c3..23c8947c 100644 --- a/model/Menu.bbj +++ b/model/Menu.bbj @@ -1,189 +1,7 @@ -use java.util.HashMap use ::WebKit/util/ClientUtil.bbj::ClientUtil +use ::WebKit/model/MenuItem.bbj::MenuItem -class public MenuItem - - field private BBjNumber NodeId - field private BBjString Caption! - field private BBjString IconFileName! - field private BBjString ToolTip! - field private MenuItem Parent! - field private BBjVector Children! = new BBjVector() - - field private BBjString path$ - field private BBjString basePath$ - field private BBjString parameter$ - - field private BBjNumber StartType - field private BBjString Program$ - field private BBjString Callback$ - field private BBjString CustomEventName$ - - method private MenuItem() - methodend - - method public MenuItem(MenuItem parentItem!, BBjNumber nodeId, BBjString caption!, BBjString toolTip!, BBjString iconFilename!) - - #NodeId = nodeId - #Caption! = caption! - #ToolTip! = toolTip! - #IconFileName! = iconFilename! - #Parent! = parentItem! - if #Parent! <> null() then - #Parent!.addChild(#this!) - fi - #path$ = #buildPath() - #basePath$ = #path$ - methodend - - method private String buildPath() - declare StringBuilder pathBuilder! - declare MenuItem item! - - if #getParent() = null() then - methodret "/" - fi - - pathBuilder! = new StringBuilder() - caption! = #getCaption() - pathBuilder!.append(caption!) - item! = #getParent() - while item! <> null() - pathBuilder!.insert(0, "/") - if item!.getParent() <> null() then - pathBuilder!.insert(0, item!.getCaption()) - fi - item! = item!.getParent() - wend - path! = pathBuilder!.toString() - encodePath! = ClientUtil.encodeURI(path!) - methodret encodePath! - - methodend - - method public BBjNumber getNodeId() - methodret #NodeId - methodend - - method public BBjString getCaption() - methodret #Caption! - methodend - - method public BBjString getToolTip() - methodret #ToolTip! - methodend - - method public BBjString getIcon() - methodret #IconFileName! - methodend - - method public BBjImage getImage() - - if #IconFileName! <> null() and #IconFileName! <> "" then - img! = BBjAPI().getSysGui().getImageManager().loadImageFromFile(#IconFileName!,err=*next) - fi - methodret img! - - methodend - - method public MenuItem getParent() - methodret #Parent! - methodend - - method public Boolean hasChildren() - methodret #Children!.size()>0 - methodend - - method public BBjVector getChildren() - methodret #Children! - methodend - - method public void addChild(MenuItem item!) - #Children!.addItem(item!) - methodend - - method public void setStartType(BBjNumber startType) - #StartType= startType - methodend - - method public void setProgram(BBjString program$) - #Program$ = program$ - methodend - - method public Boolean hasProgram() - methodret #Program$ <> "" - methodend - - method public BBjNumber getStartType() - methodret #StartType - methodend - - method public BBjString getProgram() - methodret #Program$ - methodend - - method public BBjString getPath() - methodret #path$ - methodend - - method public void setPath(BBjString path$) - oldPath$ = #path$ - #path$ = ClientUtil.encodeURI(path$) - #basePath$ = #path$ - Menu.updateMenuIndex(oldPath$, #this!) - methodend - - method public BBjString getBasePath() - methodret #basePath$ - methodend - - method public void setCallback(BBjString callback$) - #Callback$ = callback$ - methodend - - method public BBjString getCallback() - methodret #Callback$ - methodend - - method public BBjString getCustomEventName() - methodret #CustomEventName$ - methodend - - method public void setCustomEventName(BBjString customEventName$) - #CustomEventName$ = customEventName$ - methodend - - method public void removeChild(MenuItem item!) - #Children!.remove(item!) - methodend - - method public MenuItem getChild(String caption!) - for i = 0 to #Children!.size() - 1 - if cast (MenuItem,#Children!.get(i)).getCaption() = caption! - methodret cast (MenuItem,#Children!.get(i)) - endif - next i - methodret null() - methodend - - method public void setParameter(BBjString parameter$) - oldpath$ = str(#path$) - #parameter$ = parameter$ - #path$ = #path$ + parameter$ - Menu.updateMenuIndex(oldpath$, #this!) - methodend - - method public BBjString getParameter() - methodret #parameter$ - methodend - - -classend - - -rem ################################################################################################## -rem class Menu -rem ################################################################################################## +use java.util.HashMap class public Menu field private static HashMap menuIndex! = new HashMap() @@ -199,11 +17,19 @@ class public Menu methodend method public MenuItem addMenuItem(MenuItem parentItem!, BBjString caption!, BBjString toolTip!, BBjString iconFilename!) - methodret #addMenuItem( parentItem!, #highestNodeId+1, caption!, toolTip!, iconFilename!) + methodret #addMenuItem( parentItem!, #highestNodeId+1, caption!, toolTip!, iconFilename!) + methodend + + method public MenuItem addMenuItem(MenuItem parentItem!, BBjString pathCaption! ,BBjString caption!, BBjString toolTip!, BBjString iconFilename!) + methodret #addMenuItem( parentItem!, #highestNodeId+1, pathCaption!, caption!, toolTip!, iconFilename!) methodend method public MenuItem addMenuItem(MenuItem parentItem!, BBjNumber nodeId, BBjString caption!, BBjString toolTip!, BBjString iconFilename!) - item! = new MenuItem(parentItem!, nodeId, caption!, toolTip!, iconFilename!) + methodret #addMenuItem(parentItem!, nodeId, caption!, caption!, toolTip!, iconFilename!) + methodend + + method public MenuItem addMenuItem(MenuItem parentItem!, BBjNumber nodeId, BBjString pathCaption!, BBjString caption!, BBjString toolTip!, BBjString iconFilename!) + item! = new MenuItem(parentItem!, nodeId, pathCaption!, caption!, toolTip!, iconFilename!) #highestNodeId = max(#highestNodeId,nodeId) #menuMap!.put(nodeID,item!) #menuIndex!.put(item!.getPath(), item!) diff --git a/model/MenuItem.bbj b/model/MenuItem.bbj new file mode 100644 index 00000000..d31d09ec --- /dev/null +++ b/model/MenuItem.bbj @@ -0,0 +1,186 @@ +use java.util.HashMap +use ::WebKit/util/ClientUtil.bbj::ClientUtil +use ::WebKit/model/Menu.bbj::Menu + + +class public MenuItem + + field private BBjNumber NodeId + field private BBjString Caption! + field private BBjString IconFileName! + field private BBjString ToolTip! + field private MenuItem Parent! + field private BBjVector Children! = new BBjVector() + + field private BBjString path! + field private BBjString menuItemPathCaption! + field private BBjString parameter$ + + field private BBjNumber StartType + field private BBjString Program$ + field private BBjString Callback$ + + method private MenuItem() + methodend + + method public MenuItem(MenuItem parentItem!, BBjNumber nodeId, BBjString pathCaption! ,BBjString caption!, BBjString toolTip!, BBjString iconFilename!) + #NodeId = nodeId + #Caption! = caption! + #ToolTip! = toolTip! + #IconFileName! = iconFilename! + #Parent! = parentItem! + if #Parent! <> null() then + #Parent!.addChild(#this!) + fi + #menuItemPathCaption! = pathCaption! + #path! = #buildPath() + methodend + + method public MenuItem(MenuItem parentItem!, BBjNumber nodeId, BBjString caption!, BBjString toolTip!, BBjString iconFilename!) + #this!(parentItem!, nodeId, caption! ,caption!, toolTip!, iconFilename!) + methodend + + method private String buildPath() + declare StringBuilder pathBuilder! + declare MenuItem item! + + if #getParent() = null() then + methodret "/" + fi + + pathBuilder! = new StringBuilder() + + pathBuilder!.append(#menuItemPathCaption!) + item! = #getParent() + while item! <> null() + pathBuilder!.insert(0, "/") + if item!.getParent() <> null() then + pathBuilder!.insert(0, item!.getMenuItemPathCaption()) + fi + item! = item!.getParent() + wend + path! = pathBuilder!.toString() + encodePath! = ClientUtil.encodeURI(path!) + methodret encodePath! + + methodend + + method public BBjNumber getNodeId() + methodret #NodeId + methodend + + method public BBjString getCaption() + methodret #Caption! + methodend + + method public BBjString getToolTip() + methodret #ToolTip! + methodend + + method public BBjString getIcon() + methodret #IconFileName! + methodend + + method public BBjImage getImage() + + if #IconFileName! <> null() and #IconFileName! <> "" then + img! = BBjAPI().getSysGui().getImageManager().loadImageFromFile(#IconFileName!,err=*next) + fi + methodret img! + + methodend + + method public MenuItem getParent() + methodret #Parent! + methodend + + method public Boolean hasChildren() + methodret #Children!.size()>0 + methodend + + method public BBjVector getChildren() + methodret #Children! + methodend + + method public void addChild(MenuItem item!) + #Children!.addItem(item!) + methodend + + method public void setStartType(BBjNumber startType) + #StartType= startType + methodend + + method public void setProgram(BBjString program$) + #Program$ = program$ + methodend + + method public Boolean hasProgram() + methodret #Program$ <> "" + methodend + + method public BBjNumber getStartType() + methodret #StartType + methodend + + method public BBjString getProgram() + methodret #Program$ + methodend + + method public BBjString getPath() + methodret #path! + methodend + + method public BBjString getMenuItemPathCaption() + methodret #menuItemPathCaption! + methodend + + rem /** + rem This method only changes the path-name for this Menuitem. + rem Do not give in a full path if this is a Sub-Menuitem. + rem If this Menuitem has children it will build a new path with the new name and register it-self in the menu. + rem */ + method public void setMenuItemPathCaption(BBjString pathCaption!) + oldPath$ = #path! + #menuItemPathCaption! = pathCaption! + #path! = #buildPath() + Menu.updateMenuIndex(oldPath$, #this!) + methodend + + method public void setPath(BBjString path$) + oldPath$ = #path! + #path! = ClientUtil.encodeURI(path$) + Menu.updateMenuIndex(oldPath$, #this!) + methodend + + method public void setCallback(BBjString callback$) + #Callback$ = callback$ + methodend + + method public BBjString getCallback() + methodret #Callback$ + methodend + + method public void removeChild(MenuItem item!) + #Children!.remove(item!) + methodend + + method public MenuItem getChild(String caption!) + for i = 0 to #Children!.size() - 1 + if cast (MenuItem,#Children!.get(i)).getCaption() = caption! + methodret cast (MenuItem,#Children!.get(i)) + endif + next i + methodret null() + methodend + + method public void setParameter(BBjString parameter$) + oldpath$ = str(#path!) + #parameter$ = parameter$ + #path! = #path! + parameter$ + Menu.updateMenuIndex(oldpath$, #this!) + methodend + + method public BBjString getParameter() + methodret #parameter$ + methodend +classend diff --git a/widgets/ListView/ListView.bbj b/widgets/ListView/ListView.bbj index cf2ea0c8..f1495924 100644 --- a/widgets/ListView/ListView.bbj +++ b/widgets/ListView/ListView.bbj @@ -5,7 +5,7 @@ use ::WebKit/model/ListView/ListViewDataModel.bbj::ListViewDataModel use ::WebKit/util/Icons.bbj::Icons use ::WebKit/widgets/common/Overlay/Overlay.bbj::Overlay use ::WebKit/model/Menu.bbj::Menu -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use com.basiscomponents.db.ResultSet use com.basiscomponents.db.DataRow @@ -203,7 +203,7 @@ class public ListView extends BBjWidget menuId = ev!.getControl().getID() menu! = #listDataModel!.getActionMenus() menuItem! = menu!.getItem(menuId) - BBjAPI().postCustomEvent(menuItem!.getCustomEventName(), ev!.getControl().getText()) + rem BBjAPI().postCustomEvent(menuItem!.getCustomEventName(), ev!.getControl().getText()) methodend method public void onDotsPressed(BBjMouseDownEvent ev!) diff --git a/widgets/MenuCard/MenuCard.bbj b/widgets/MenuCard/MenuCard.bbj index d72f9658..2f93c03c 100644 --- a/widgets/MenuCard/MenuCard.bbj +++ b/widgets/MenuCard/MenuCard.bbj @@ -1,7 +1,7 @@ use ::BBjWidget/BBjWidget.bbj::BBjWidget use ::WebKit/util/DynamicLoader.bbj::DynamicLoader use ::WebKit/util/Icons.bbj::Icons -use ::WebKit/model/Menu.bbj::MenuItem +use ::WebKit/model/MenuItem.bbj::MenuItem use ::WebKit/widgets/ListTile/ListTile.bbj::ListTile