From cee8e67eb8b0dbd7bb52edd7271df6986c3489b0 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Tue, 8 Apr 2014 10:56:27 +0000 Subject: [PATCH] Added Filters on TemplateApplyPanel and TemplateDeletePanel git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-table-widget@94531 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/resources/ResourceBundle.java | 7 ++ .../client/resources/arrow-refresh.png | Bin 0 -> 572 bytes .../client/resources/arrow-refresh_32.png | Bin 0 -> 1182 bytes .../client/template/TemplateApplyPanel.java | 77 +++++++++++++++-- .../client/template/TemplateDeletePanel.java | 81 ++++++++++++++++-- .../client/resources/arrow-refresh.png | Bin 0 -> 572 bytes .../client/resources/arrow-refresh_32.png | Bin 0 -> 1182 bytes 7 files changed, 155 insertions(+), 10 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh_32.png diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java index 68b17ae..228c54a 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java @@ -33,4 +33,11 @@ public interface ResourceBundle extends ClientBundle { @Source("close-red_32.png") ImageResource close32(); + + @Source("arrow-refresh.png") + ImageResource refresh(); + + @Source("arrow-refresh_32.png") + ImageResource refresh32(); + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..72edf8a35e3ef9d4e039f7346ae1d1745517ad0a GIT binary patch literal 572 zcmV-C0>k}@P)!zsI^oFu^eLtRk2V!i)n@$RxIgIMoHpcTS{|^*cF_{n60zQX00O7z z>L;lelMMptr&pq7df8B*_fWJaiY*;oP)dP9PzVtLg>Z^4+(k#vPQ3ar;+vQ~)45(Q z%?)hdGZ^XK0fLYUv6f5`2nl*rwHNr-y^z|L3d^WEayap3bO(k@ES3CnK z%sca_HH^l7q~U{75O?!B@3jg5!?%v<)3=AEC7_);p%3eJaDM@v$~&2NCw$ld0000< KMNUMnLSTYm0R)}^ literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh_32.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f3521ea5e0d148384d82c3cba4376972090af7f6 GIT binary patch literal 1182 zcmV;P1Y!G$P)wK~z|UwU%8>TXh)5pK}h{F>r;#a2qh7O*95Kj84sVVF)0>j3^p4 z+l*P3Eir0LTz2J!<8Y-HvXPiwPGd;)!W+UC21FUogb~TIiJNG@z%fz>w6Ox~fS&j9 zq93%-(+`60&1wHVeSgpYJ@0v+Kd?n{?7O!1&HPW@DgiX8zuo<6&LXxPhL`+uFTI{=s0ET(5DM0+0|3RW)->y1X^LMNzi6%mh zaL+wATz6f7fsXz&!@8M(JOGF`TtT(1IvGylVK{`T*(vxJ{dn;3!CC`~#6L%NN;DmK zIVU&(CT!i#wJy1XDI_V6P48>^{5k7tSZfwB&QVyQ zC<>l*Jdrdd@Bi(KG`L7#Ry~jix0l;7Ffw3j$%#WsRW;N-y&q*e%i;qrY#10C`VpZ} zC>&PRnv4}#50B4^H1K>&K1xeUVXv~ovdxk-UA-PRLZJ{K{CfP0@q1}2U%2{A+r%9-)=6PIEb&5ZB7;vIH0S1EyDpq>PZt;Go^ zAoH_9IBZ~fIfVIuAKu9++`M%Q{&_zr{8ym7HGcm0?nF+;x1hQ6C7r_dno0*8d+h*- zD_8r?EqUVsHY^6e(kS|kXxS6Pv;wj44E{B2Z`!N)|MAz8fX!-y)9XwJUlI|okYkES zS6I_N__g!)x4zN&#Z>vT_JW4b4(TFncU0No^t$l#*FO))9Z>% wu`P<6%;?&uqdEm0*?7VK8i&pv(6=hre}=nUJq4NLMgRZ+07*qoM6N<$f|YC_5&!@I literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateApplyPanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateApplyPanel.java index a6cc21f..9949900 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateApplyPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateApplyPanel.java @@ -14,6 +14,8 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.web.bindery.event.shared.EventBus; import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; @@ -23,6 +25,9 @@ import com.sencha.gxt.core.client.resources.ThemeStyles; import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.data.client.loader.RpcProxy; import com.sencha.gxt.data.shared.ListStore; +import com.sencha.gxt.data.shared.ModelKeyProvider; +import com.sencha.gxt.data.shared.Store; +import com.sencha.gxt.data.shared.Store.StoreFilter; import com.sencha.gxt.data.shared.loader.ListLoadConfig; import com.sencha.gxt.data.shared.loader.ListLoadResult; import com.sencha.gxt.data.shared.loader.ListLoadResultBean; @@ -38,10 +43,12 @@ import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; +import com.sencha.gxt.widget.core.client.form.TextField; import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; +import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; import com.sencha.gxt.widget.core.client.toolbar.ToolBar; public class TemplateApplyPanel extends FramedPanel { @@ -57,7 +64,7 @@ public class TemplateApplyPanel extends FramedPanel { protected ListLoader> loader; protected Grid grid; - protected ListStore store; + protected ExtendedListStore store; public TemplateApplyPanel(TemplateApplyDialog parent, TRId trId, EventBus eventBus) { @@ -75,7 +82,18 @@ public class TemplateApplyPanel extends FramedPanel { } protected void create() { - + ToolBar toolBarHead = new ToolBar(); + toolBarHead.add(new LabelToolItem("Search: ")); + final TextField searchField = new TextField(); + toolBarHead.add(searchField); + + TextButton btnReload = new TextButton(); + //btnReload.setText("Reload"); + btnReload.setIcon(ResourceBundle.INSTANCE.refresh()); + btnReload.setToolTip("Reload"); + toolBarHead.add(btnReload); + + IdentityValueProvider identity = new IdentityValueProvider(); CheckBoxSelectionModel sm = new CheckBoxSelectionModel( identity); @@ -101,7 +119,29 @@ public class TemplateApplyPanel extends FramedPanel { ColumnModel cm = new ColumnModel(l); - store = new ListStore(props.id()); + store = new ExtendedListStore(props.id()); + + searchField.addKeyUpHandler(new KeyUpHandler() { + + public void onKeyUp(KeyUpEvent event) { + Log.trace("searchTerm: "+searchField.getCurrentValue()); + store.applyFilters(); + } + }); + + store.addFilter(new StoreFilter() { + + @Override + public boolean select(Store store, + TemplateData parent, TemplateData item) { + String searchTerm = searchField.getCurrentValue(); + if (searchTerm == null) return true; + return TemplateApplyPanel.this.select(item, searchTerm); + } + }); + + store.setEnableFilters(true); + RpcProxy> proxy = new RpcProxy>() { @@ -134,7 +174,7 @@ public class TemplateApplyPanel extends FramedPanel { sm.setSelectionMode(SelectionMode.SINGLE); grid.setLoader(loader); grid.setSelectionModel(sm); - grid.setHeight("418px"); + grid.setHeight("384px"); grid.getView().setStripeRows(true); grid.getView().setColumnLines(true); grid.getView().setAutoFill(true); @@ -214,7 +254,9 @@ public class TemplateApplyPanel extends FramedPanel { }); } - + + + /* * protected void setMenu() { Menu contextMenu = new Menu(); * @@ -252,5 +294,30 @@ public class TemplateApplyPanel extends FramedPanel { protected void close() { parent.close(); } + + protected class ExtendedListStore extends ListStore { + + public ExtendedListStore(ModelKeyProvider keyProvider) { + super(keyProvider); + } + + public void applyFilters() + { + super.applyFilters(); + } + + } + + public void gridReload(){ + grid.getLoader().load(); + } + + protected boolean select(TemplateData item, String searchTerm) { + if (item.getName()!=null && item.getName().toLowerCase().contains(searchTerm.toLowerCase())) return true; + if (item.getCategory()!=null &&item.getCategory().toLowerCase().contains(searchTerm.toLowerCase())) return true; + if (item.getAgency()!=null &&item.getAgency().toLowerCase().contains(searchTerm.toLowerCase())) return true; + if (item.getDescription()!=null && item.getDescription().toLowerCase().contains(searchTerm.toLowerCase())) return true; + return false; + } } diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateDeletePanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateDeletePanel.java index 1fc8ae5..0abc52c 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateDeletePanel.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/template/TemplateDeletePanel.java @@ -13,6 +13,8 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.web.bindery.event.shared.EventBus; import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; @@ -22,6 +24,9 @@ import com.sencha.gxt.core.client.resources.ThemeStyles; import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.data.client.loader.RpcProxy; import com.sencha.gxt.data.shared.ListStore; +import com.sencha.gxt.data.shared.ModelKeyProvider; +import com.sencha.gxt.data.shared.Store; +import com.sencha.gxt.data.shared.Store.StoreFilter; import com.sencha.gxt.data.shared.loader.ListLoadConfig; import com.sencha.gxt.data.shared.loader.ListLoadResult; import com.sencha.gxt.data.shared.loader.ListLoadResultBean; @@ -37,10 +42,12 @@ import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; +import com.sencha.gxt.widget.core.client.form.TextField; import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; +import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; import com.sencha.gxt.widget.core.client.toolbar.ToolBar; public class TemplateDeletePanel extends FramedPanel { @@ -55,8 +62,8 @@ public class TemplateDeletePanel extends FramedPanel { protected ListLoader> loader; protected Grid grid; - protected ListStore store; - + protected ExtendedListStore store; + public TemplateDeletePanel(TemplateDeleteDialog parent, EventBus eventBus) { this.parent = parent; @@ -72,7 +79,19 @@ public class TemplateDeletePanel extends FramedPanel { } protected void create() { - + ToolBar toolBarHead = new ToolBar(); + toolBarHead.add(new LabelToolItem("Search: ")); + final TextField searchField = new TextField(); + toolBarHead.add(searchField); + + TextButton btnReload = new TextButton(); + //btnReload.setText("Reload"); + btnReload.setIcon(ResourceBundle.INSTANCE.refresh()); + btnReload.setToolTip("Reload"); + toolBarHead.add(btnReload); + + + IdentityValueProvider identity = new IdentityValueProvider(); CheckBoxSelectionModel sm = new CheckBoxSelectionModel( identity); @@ -98,8 +117,30 @@ public class TemplateDeletePanel extends FramedPanel { l.add(descriptionCol); ColumnModel cm = new ColumnModel(l); + + store = new ExtendedListStore(props.id()); - store = new ListStore(props.id()); + searchField.addKeyUpHandler(new KeyUpHandler() { + + public void onKeyUp(KeyUpEvent event) { + Log.trace("searchTerm: "+searchField.getCurrentValue()); + store.applyFilters(); + } + }); + + store.addFilter(new StoreFilter() { + + @Override + public boolean select(Store store, + TemplateData parent, TemplateData item) { + String searchTerm = searchField.getCurrentValue(); + if (searchTerm == null) return true; + return TemplateDeletePanel.this.select(item, searchTerm); + } + }); + + store.setEnableFilters(true); + RpcProxy> proxy = new RpcProxy>() { @@ -132,7 +173,7 @@ public class TemplateDeletePanel extends FramedPanel { sm.setSelectionMode(SelectionMode.MULTI); grid.setLoader(loader); grid.setSelectionModel(sm); - grid.setHeight("418px"); + grid.setHeight("384px"); grid.getView().setStripeRows(true); grid.getView().setColumnLines(true); grid.getView().setAutoFill(true); @@ -180,6 +221,7 @@ public class TemplateDeletePanel extends FramedPanel { flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4))); VerticalLayoutContainer v = new VerticalLayoutContainer(); + v.add(toolBarHead, new VerticalLayoutData(1, -1, new Margins(0))); v.add(grid, new VerticalLayoutData(-1, -1, new Margins(0))); v.add(toolBar, new VerticalLayoutData(1, 25, new Margins(0))); v.add(flowButton, new VerticalLayoutData(-1, 36, @@ -213,6 +255,10 @@ public class TemplateDeletePanel extends FramedPanel { } + + + + /*protected void setMenu() { Menu contextMenu = new Menu(); @@ -258,5 +304,30 @@ public class TemplateDeletePanel extends FramedPanel { protected void close() { parent.close(); } + + protected class ExtendedListStore extends ListStore { + + public ExtendedListStore(ModelKeyProvider keyProvider) { + super(keyProvider); + } + + public void applyFilters() + { + super.applyFilters(); + } + + } + + public void gridReload(){ + grid.getLoader().load(); + } + + protected boolean select(TemplateData item, String searchTerm) { + if (item.getName()!=null && item.getName().toLowerCase().contains(searchTerm.toLowerCase())) return true; + if (item.getCategory()!=null &&item.getCategory().toLowerCase().contains(searchTerm.toLowerCase())) return true; + if (item.getAgency()!=null &&item.getAgency().toLowerCase().contains(searchTerm.toLowerCase())) return true; + if (item.getDescription()!=null && item.getDescription().toLowerCase().contains(searchTerm.toLowerCase())) return true; + return false; + } } diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..72edf8a35e3ef9d4e039f7346ae1d1745517ad0a GIT binary patch literal 572 zcmV-C0>k}@P)!zsI^oFu^eLtRk2V!i)n@$RxIgIMoHpcTS{|^*cF_{n60zQX00O7z z>L;lelMMptr&pq7df8B*_fWJaiY*;oP)dP9PzVtLg>Z^4+(k#vPQ3ar;+vQ~)45(Q z%?)hdGZ^XK0fLYUv6f5`2nl*rwHNr-y^z|L3d^WEayap3bO(k@ES3CnK z%sca_HH^l7q~U{75O?!B@3jg5!?%v<)3=AEC7_);p%3eJaDM@v$~&2NCw$ld0000< KMNUMnLSTYm0R)}^ literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh_32.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/arrow-refresh_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f3521ea5e0d148384d82c3cba4376972090af7f6 GIT binary patch literal 1182 zcmV;P1Y!G$P)wK~z|UwU%8>TXh)5pK}h{F>r;#a2qh7O*95Kj84sVVF)0>j3^p4 z+l*P3Eir0LTz2J!<8Y-HvXPiwPGd;)!W+UC21FUogb~TIiJNG@z%fz>w6Ox~fS&j9 zq93%-(+`60&1wHVeSgpYJ@0v+Kd?n{?7O!1&HPW@DgiX8zuo<6&LXxPhL`+uFTI{=s0ET(5DM0+0|3RW)->y1X^LMNzi6%mh zaL+wATz6f7fsXz&!@8M(JOGF`TtT(1IvGylVK{`T*(vxJ{dn;3!CC`~#6L%NN;DmK zIVU&(CT!i#wJy1XDI_V6P48>^{5k7tSZfwB&QVyQ zC<>l*Jdrdd@Bi(KG`L7#Ry~jix0l;7Ffw3j$%#WsRW;N-y&q*e%i;qrY#10C`VpZ} zC>&PRnv4}#50B4^H1K>&K1xeUVXv~ovdxk-UA-PRLZJ{K{CfP0@q1}2U%2{A+r%9-)=6PIEb&5ZB7;vIH0S1EyDpq>PZt;Go^ zAoH_9IBZ~fIfVIuAKu9++`M%Q{&_zr{8ym7HGcm0?nF+;x1hQ6C7r_dno0*8d+h*- zD_8r?EqUVsHY^6e(kS|kXxS6Pv;wj44E{B2Z`!N)|MAz8fX!-y)9XwJUlI|okYkES zS6I_N__g!)x4zN&#Z>vT_JW4b4(TFncU0No^t$l#*FO))9Z>% wu`P<6%;?&uqdEm0*?7VK8i&pv(6=hre}=nUJq4NLMgRZ+07*qoM6N<$f|YC_5&!@I literal 0 HcmV?d00001