From f1df3a16b3a2cae1bcf1bca56d1a17182ed4e871 Mon Sep 17 00:00:00 2001 From: Christopher Kochaneck Date: Mon, 10 May 2021 15:56:34 +0200 Subject: [PATCH 1/4] Implemented Searchbar --- ...ckWhite.Black.CancelCross.Normal.16x16.png | Bin 0 -> 281 bytes ...kWhite.Black.ReadingGlass.Normal.16x16.png | Bin 0 -> 370 bytes src/gui/RemotePluginTab.bbj | 134 ++++++++++++++++-- 3 files changed, 119 insertions(+), 15 deletions(-) create mode 100644 icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png create mode 100644 icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png diff --git a/icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png b/icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ff243db27f5c5a73523a1b077d83c60d75867 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enaGj@%V~Bd& literal 0 HcmV?d00001 diff --git a/icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png b/icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..77b543bc95ceba038f943225924aa3a80188a030 GIT binary patch literal 370 zcmV-&0ge8NP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T&G?^AQ306VaDwqU8pBE;m z_nfQfz{4=_%sDgXBNmIcchUn`!_oW@Fa4(Fso233zTgw;urOVDuc^Zpe&7Y(AZuQ6 z$MW7u`V@>H1y$>;?n1Hj38>C#8`L6Hpyoh&0IGA^9<>C82y`#1^G@(hMi=L!9W{ZT zZVc%NX5>`ov<#}Aumy1kJVf_|Lnf;#Bu{hKDQ zIMn%iu{LPBPZw5`NUO8XTCDf|xOao!XBMl8-g#@AsB`Fi_e`Qq{vKI;0?Ru_EP`4U QU;qFB07*qoM6N<$g53m}7XSbN literal 0 HcmV?d00001 diff --git a/src/gui/RemotePluginTab.bbj b/src/gui/RemotePluginTab.bbj index 0fac994..6570448 100644 --- a/src/gui/RemotePluginTab.bbj +++ b/src/gui/RemotePluginTab.bbj @@ -12,10 +12,15 @@ class public RemotePluginTab field private BBjChildWindow childWindow! field private ArrayList pluginList! + field private ArrayList sortedPluginList! + field private BBjString selectedPluginName! rem The available plugin tab's controls field private BBjButton btnInstallPlugin! field private BBjCheckBox cbxIncludeDevPlugins! + field private BBjInputE iESearchBar! + field private BBjButton btnSearch! + field private BBjButton btnClearSearchBar! field private BBjListButton hiddenListButton! field private BBjProgressBar pbInstallation! field private BBjStandardGrid grdPlugins! @@ -57,7 +62,34 @@ class public RemotePluginTab #cbxIncludeDevPlugins!.setSelected(0) #cbxIncludeDevPlugins!.setCallback(BBjAPI.ON_CHECK_ON, #this!, "includeDevelopmentPlugins") #cbxIncludeDevPlugins!.setCallback(BBjAPI.ON_CHECK_OFF, #this!, "excludeDevelopmentPlugins") - + + control_width = 200 + control_height = 25 + row_x = cw_width - control_width - space - 70 + cw_next_id = childWindow!.getAvailableControlID() + #iESearchBar! = childWindow!.addInputE(cw_next_id, row_x, row_y, control_width, control_height) + #iESearchBar!.setCallback(BBjAPI.ON_INPUT_KEYPRESS, #this!, "searchEnterPressed") + #iESearchBar!.setPlaceholder("Search...") + + control_width = 25 + control_height = 25 + row_x = cw_width - control_width - space - 20 + cw_next_id = childWindow!.getAvailableControlID() + #btnSearch! = childWindow!.addButton(cw_next_id, row_x, row_y, control_width, control_height, "1") + #btnSearch!.setCallback(BBjAPI.ON_BUTTON_PUSH, #this!, "searchBtnPressed") + #btnSearch!.setImageSize(16, 16) + #btnSearch!.setImageFile("PluginManager/icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png") + + control_width = 25 + control_height = 25 + row_x = cw_width - control_width - space - 45 + cw_next_id = childWindow!.getAvailableControlID() + #btnClearSearchBar! = childWindow!.addButton(cw_next_id, row_x, row_y, control_width, control_height, "X") + #btnClearSearchBar!.setCallback(BBjAPI.ON_BUTTON_PUSH, #this!, "clearBtnPressed") + #btnClearSearchBar!.setImageSize(16, 16) +REM #btnClearSearchBar!.setImageFile("PluginManager/icons/CancelCross-16x16.png") + #btnClearSearchBar!.setImageFile("PluginManager/icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png") + control_width = 200 control_height = 25 row_x = cw_width - control_width - space - 20 @@ -68,7 +100,7 @@ class public RemotePluginTab rem new row row_x = 10 - control_width = cw_width - 2 * space -20 + control_width = cw_width - 2 * space - 20 control_height = 175 cw_next_id = childWindow!.getAvailableControlID() #grdPlugins! = childWindow!.addGrid(cw_next_id, row_x, row_Y, control_width, control_height, $8140$) @@ -288,14 +320,19 @@ class public RemotePluginTab #pbInstallation!.setText("Plugin Installed") wait 1 #pbInstallation!.setVisible(0) + + #iESearchBar!.setVisible(1) + #btnClearSearchBar!.setVisible(1) + #btnSearch!.setVisible(1) methodend rem /** rem * Refreshes the available plugin grid by adding the plugins which are missing tags rem */ method public void includeDevelopmentPlugins(BBjCheckOnEvent event!) + #selectedPluginName! = #grdPlugins!.getCell(#grdPlugins!.getSelectedRow(), 1).getText() #sysGui!.setRepaintEnabled(0) - #updateTabEntries(#pluginList!, Boolean.TRUE) + #updateTabEntries(#sortedPluginList!, Boolean.TRUE) #sysGui!.setRepaintEnabled(1) methodend @@ -303,8 +340,9 @@ class public RemotePluginTab rem * Refreshes the available plugin grid by only displaying the plugins having tags rem */ method public void excludeDevelopmentPlugins(BBjCheckOffEvent event!) + #selectedPluginName! = #grdPlugins!.getCell(#grdPlugins!.getSelectedRow(), 1).getText() #sysGui!.setRepaintEnabled(0) - #updateTabEntries(#pluginList!,Boolean.FALSE) + #updateTabEntries(#sortedPluginList!,Boolean.FALSE) #sysGui!.setRepaintEnabled(1) methodend @@ -314,19 +352,30 @@ class public RemotePluginTab if(event! <> null()) then row = event!.getRow() column = event!.getColumn() + grid! = cast(BBjStandardGrid,event!.getControl()) else grid! = #grdPlugins! row = grid!.getSelectedRow() column = grid!.getSelectedColumn() endif + + + if (#sortedPluginList!.isEmpty()) then + rem Do nothing + methodret + endif grid!.setEditable(0) grid!.setCellEditable(row, 2, 1) declare RemoteBBjPlugin remotePlugin! remotePlugin! = cast(RemoteBBjPlugin, #getSelectedPlugin()) - + + if remotePlugin! = null() then + methodret + endif + rem Refreshing the tag names in the version tag Combo box tagNames! = new BBjVector(remotePlugin!.getTagNameList(#cbxIncludeDevPlugins!.isSelected(), Boolean.TRUE)) @@ -395,10 +444,52 @@ class public RemotePluginTab #pbInstallation!.setText("Installing plugin: " + remotePlugin!.getName()) #pbInstallation!.setIndeterminate(1) #pbInstallation!.setVisible(1) + + #iESearchBar!.setVisible(0) + #btnClearSearchBar!.setVisible(0) + #btnSearch!.setVisible(0) bbjapi().postCustomEvent(PluginManagerUI.getINSTALL_PLUGIN_REQUEST(), map!) methodend + method public void searchBtnPressed(BBjButtonPushEvent event!) + searchText$ = #iESearchBar!.getText().toLowerCase() + #search(searchText$) + methodend + + method public void searchEnterPressed(BBjInputKeypressEvent event!) + if event!.getKeyCode() = 13 then + searchText$ = #iESearchBar!.getText().toLowerCase() + #search(searchText$) + endif + methodend + + method public void clearBtnPressed(BBjButtonPushEvent event!) + #iESearchBar!.setText("") + searchText$ = #iESearchBar!.getText().toLowerCase() + #search(searchText$) + methodend + + method public void search(BBjString searchText$) + declare BBjVector vect! + declare ArrayList tagList! + vect! = new BBjVector() + + if #pluginList!.isEmpty() then + methodret + fi + + for i=0 to #pluginList!.size()-1 + remotePlugin! = cast(RemoteBBjPlugin, #pluginList!.get(i)) + + if remotePlugin!.getName().toLowerCase().contains(searchText$) then + vect!.add(remotePlugin!) + endif + next i + + #updateTabEntries(vect!, #cbxIncludeDevPlugins!.isSelected()) + methodend + method public void pluginGridMouseUp(BBjGridMouseUpEvent event!) #updatePluginInformation() methodend @@ -428,6 +519,7 @@ class public RemotePluginTab rem * Updates the entries of the ChildWindow controls rem */ method public void updateTabEntries(ArrayList pluginList!) + #pluginList! = pluginList! includeDevelopmentVersions! = #cbxIncludeDevPlugins!.isSelected() #updateTabEntries(pluginList!, includeDevelopmentVersions!) methodend @@ -436,20 +528,25 @@ class public RemotePluginTab method private void updateTabEntries(ArrayList pluginList!, Boolean includeDevelopmentVersions!) declare BBjVector vect! vect! = new BBjVector() - - #pluginList! = pluginList! - + + #sortedPluginList! = pluginList! +REM #pluginList! = pluginList! + + if #sortedPluginList!.size() = 0 then + #grdPlugins!.setNumRows(0) + methodret + fi + rem removing the old entries #grdPlugins!.clearMainGrid() - if(!#pluginList!.isEmpty()) then + if(!#sortedPluginList!.isEmpty()) then declare RemoteBBjPlugin remotePlugin! - for i=0 to #pluginList!.size()-1 - remotePlugin! = cast(RemoteBBjPlugin, #pluginList!.get(i)) - + for i=0 to #sortedPluginList!.size()-1 + remotePlugin! = cast(RemoteBBjPlugin, #sortedPluginList!.get(i)) if(!includeDevelopmentVersions! AND remotePlugin!.isDevelopmentPlugin()) then continue endif - + vect!.add(remotePlugin!.getID()) vect!.add(remotePlugin!.getName()) tag! = remotePlugin!.getTagList(includeDevelopmentVersions!, Boolean.TRUE).get(0) @@ -465,11 +562,18 @@ class public RemotePluginTab next i #grdPlugins!.setNumRows(vect!.size() / 5) #grdPlugins!.setCellText(0, 0, vect!) + + for i=0 to #grdPlugins!.getNumRows()-1 + if #grdPlugins!.getCell(i, 1).getText() = #selectedPluginName! then + #grdPlugins!.setSelectedCell(i,1) + methodret + endif + next i endif #grdPlugins!.deselectAllCells() #grdPlugins!.setSelectedCell(0,0) - + #pluginGridRowSelected(null()) #updatePluginInformation() methodend @@ -585,4 +689,4 @@ class public RemotePluginTab methodret #childWindow! methodend -classend +classend \ No newline at end of file From 58c7dcdad2c645234bd64d04129042bf1132f125 Mon Sep 17 00:00:00 2001 From: Christopher Kochaneck Date: Tue, 11 May 2021 13:33:02 +0200 Subject: [PATCH 2/4] Search is now triggered when modifying the InputE --- ...ckWhite.Black.CancelCross.Normal.16x16.png | Bin 281 -> 0 bytes ...kWhite.Black.ReadingGlass.Normal.16x16.png | Bin 370 -> 0 bytes src/gui/RemotePluginTab.bbj | 40 ++---------------- 3 files changed, 3 insertions(+), 37 deletions(-) delete mode 100644 icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png delete mode 100644 icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png diff --git a/icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png b/icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png deleted file mode 100644 index 2e2ff243db27f5c5a73523a1b077d83c60d75867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enaGj@%V~Bd& diff --git a/icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png b/icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png deleted file mode 100644 index 77b543bc95ceba038f943225924aa3a80188a030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T&G?^AQ306VaDwqU8pBE;m z_nfQfz{4=_%sDgXBNmIcchUn`!_oW@Fa4(Fso233zTgw;urOVDuc^Zpe&7Y(AZuQ6 z$MW7u`V@>H1y$>;?n1Hj38>C#8`L6Hpyoh&0IGA^9<>C82y`#1^G@(hMi=L!9W{ZT zZVc%NX5>`ov<#}Aumy1kJVf_|Lnf;#Bu{hKDQ zIMn%iu{LPBPZw5`NUO8XTCDf|xOao!XBMl8-g#@AsB`Fi_e`Qq{vKI;0?Ru_EP`4U QU;qFB07*qoM6N<$g53m}7XSbN diff --git a/src/gui/RemotePluginTab.bbj b/src/gui/RemotePluginTab.bbj index 6570448..09c7651 100644 --- a/src/gui/RemotePluginTab.bbj +++ b/src/gui/RemotePluginTab.bbj @@ -19,8 +19,6 @@ class public RemotePluginTab field private BBjButton btnInstallPlugin! field private BBjCheckBox cbxIncludeDevPlugins! field private BBjInputE iESearchBar! - field private BBjButton btnSearch! - field private BBjButton btnClearSearchBar! field private BBjListButton hiddenListButton! field private BBjProgressBar pbInstallation! field private BBjStandardGrid grdPlugins! @@ -65,31 +63,12 @@ class public RemotePluginTab control_width = 200 control_height = 25 - row_x = cw_width - control_width - space - 70 + row_x = cw_width - control_width - space - 20 cw_next_id = childWindow!.getAvailableControlID() #iESearchBar! = childWindow!.addInputE(cw_next_id, row_x, row_y, control_width, control_height) - #iESearchBar!.setCallback(BBjAPI.ON_INPUT_KEYPRESS, #this!, "searchEnterPressed") + #iESearchBar!.setCallback(BBjAPI.ON_EDIT_MODIFY, #this!, "inputEModify") #iESearchBar!.setPlaceholder("Search...") - control_width = 25 - control_height = 25 - row_x = cw_width - control_width - space - 20 - cw_next_id = childWindow!.getAvailableControlID() - #btnSearch! = childWindow!.addButton(cw_next_id, row_x, row_y, control_width, control_height, "1") - #btnSearch!.setCallback(BBjAPI.ON_BUTTON_PUSH, #this!, "searchBtnPressed") - #btnSearch!.setImageSize(16, 16) - #btnSearch!.setImageFile("PluginManager/icons/Icon.MonoSeries.BlackWhite.Black.ReadingGlass.Normal.16x16.png") - - control_width = 25 - control_height = 25 - row_x = cw_width - control_width - space - 45 - cw_next_id = childWindow!.getAvailableControlID() - #btnClearSearchBar! = childWindow!.addButton(cw_next_id, row_x, row_y, control_width, control_height, "X") - #btnClearSearchBar!.setCallback(BBjAPI.ON_BUTTON_PUSH, #this!, "clearBtnPressed") - #btnClearSearchBar!.setImageSize(16, 16) -REM #btnClearSearchBar!.setImageFile("PluginManager/icons/CancelCross-16x16.png") - #btnClearSearchBar!.setImageFile("PluginManager/icons/Icon.MonoSeries.BlackWhite.Black.CancelCross.Normal.16x16.png") - control_width = 200 control_height = 25 row_x = cw_width - control_width - space - 20 @@ -452,20 +431,7 @@ REM #btnClearSearchBar!.setImageFile("PluginManager/icons/CancelCross-16 bbjapi().postCustomEvent(PluginManagerUI.getINSTALL_PLUGIN_REQUEST(), map!) methodend - method public void searchBtnPressed(BBjButtonPushEvent event!) - searchText$ = #iESearchBar!.getText().toLowerCase() - #search(searchText$) - methodend - - method public void searchEnterPressed(BBjInputKeypressEvent event!) - if event!.getKeyCode() = 13 then - searchText$ = #iESearchBar!.getText().toLowerCase() - #search(searchText$) - endif - methodend - - method public void clearBtnPressed(BBjButtonPushEvent event!) - #iESearchBar!.setText("") + method public void inputEModify(BBjEditModifyEvent event!) searchText$ = #iESearchBar!.getText().toLowerCase() #search(searchText$) methodend From d9b5c6b39e450e31308e1db4aa5e0fafb03aaee2 Mon Sep 17 00:00:00 2001 From: Christopher Kochaneck Date: Wed, 12 May 2021 17:30:56 +0200 Subject: [PATCH 3/4] Fixed a Bug where the PluginManager was stuck at installing --- src/gui/RemotePluginTab.bbj | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gui/RemotePluginTab.bbj b/src/gui/RemotePluginTab.bbj index 09c7651..571689f 100644 --- a/src/gui/RemotePluginTab.bbj +++ b/src/gui/RemotePluginTab.bbj @@ -301,8 +301,6 @@ class public RemotePluginTab #pbInstallation!.setVisible(0) #iESearchBar!.setVisible(1) - #btnClearSearchBar!.setVisible(1) - #btnSearch!.setVisible(1) methodend rem /** From 802ee663d21a9004afe40675e3593337b75f1fe1 Mon Sep 17 00:00:00 2001 From: Christopher Kochaneck Date: Wed, 12 May 2021 17:35:17 +0200 Subject: [PATCH 4/4] Getting Searchtext from event instead of control --- src/gui/RemotePluginTab.bbj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/RemotePluginTab.bbj b/src/gui/RemotePluginTab.bbj index 571689f..a0446a2 100644 --- a/src/gui/RemotePluginTab.bbj +++ b/src/gui/RemotePluginTab.bbj @@ -430,7 +430,7 @@ class public RemotePluginTab methodend method public void inputEModify(BBjEditModifyEvent event!) - searchText$ = #iESearchBar!.getText().toLowerCase() + searchText$ = event!.getText().toLowerCase() #search(searchText$) methodend