diff --git a/src/gui/RemotePluginTab.bbj b/src/gui/RemotePluginTab.bbj index 0fac994..a0446a2 100644 --- a/src/gui/RemotePluginTab.bbj +++ b/src/gui/RemotePluginTab.bbj @@ -12,10 +12,13 @@ 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 BBjListButton hiddenListButton! field private BBjProgressBar pbInstallation! field private BBjStandardGrid grdPlugins! @@ -57,7 +60,15 @@ 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 - 20 + cw_next_id = childWindow!.getAvailableControlID() + #iESearchBar! = childWindow!.addInputE(cw_next_id, row_x, row_y, control_width, control_height) + #iESearchBar!.setCallback(BBjAPI.ON_EDIT_MODIFY, #this!, "inputEModify") + #iESearchBar!.setPlaceholder("Search...") + control_width = 200 control_height = 25 row_x = cw_width - control_width - space - 20 @@ -68,7 +79,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 +299,17 @@ class public RemotePluginTab #pbInstallation!.setText("Plugin Installed") wait 1 #pbInstallation!.setVisible(0) + + #iESearchBar!.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 +317,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 +329,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 +421,39 @@ 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 inputEModify(BBjEditModifyEvent event!) + searchText$ = event!.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 +483,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 +492,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 +526,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 +653,4 @@ class public RemotePluginTab methodret #childWindow! methodend -classend +classend \ No newline at end of file