From fa91c9514f399392e4093523eceaefcbf11737f9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Tue, 17 Jul 2018 08:36:35 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31178 --- .../user.jobengine.osgi.server/WEB-INF/zk.xml | 6 +- .../pages/searchitems.zul | 2 +- .../user/jobengine/zk/model/SearchModel.java | 80 ++++++++++++------- 3 files changed, 54 insertions(+), 34 deletions(-) diff --git a/server/user.jobengine.osgi.server/WEB-INF/zk.xml b/server/user.jobengine.osgi.server/WEB-INF/zk.xml index b3278797..590f9ddc 100644 --- a/server/user.jobengine.osgi.server/WEB-INF/zk.xml +++ b/server/user.jobengine.osgi.server/WEB-INF/zk.xml @@ -25,9 +25,9 @@ https://www.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml - - - + + user.jobengine.zk.util.LogEventInterceptor + diff --git a/server/user.jobengine.osgi.server/pages/searchitems.zul b/server/user.jobengine.osgi.server/pages/searchitems.zul index 2840eb32..542b7344 100644 --- a/server/user.jobengine.osgi.server/pages/searchitems.zul +++ b/server/user.jobengine.osgi.server/pages/searchitems.zul @@ -112,7 +112,7 @@ --> diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java index 635e3ab9..7682b961 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java @@ -92,7 +92,7 @@ public class SearchModel extends AsyncBaseModel { private int selectedRowIndex; private int selectedPageIndex; private String mediaID; - private boolean showResult; + private volatile boolean preventAfterRender; public SearchModel() { typeFilters = new LinkedHashMap<>(); @@ -226,6 +226,17 @@ public class SearchModel extends AsyncBaseModel { model.selectArchivedMedia(this.selectedObject, true); } + void ensureVisible(int pos) { + registerTask(() -> { + List children = itemsGrid.getRows().getChildren(); + if (children.size() > 0) { + Component top = children.get(pos); + Clients.scrollIntoView(top); + } + }); + timer.start(); + } + public Validator getAllFilterCheckedValidator() { return allFilterCheckedValidator; } @@ -384,32 +395,24 @@ public class SearchModel extends AsyncBaseModel { @Command public void onAfterRenderGrid() { + if (preventAfterRender) + return; logger.info("onAfterRenderGrid"); - if (mediaID != null) { - selectedObject = searchResult.getElementAt(0); - highlight(selectedObject, true); - notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath"); - } else if (showResult) { - List children = itemsGrid.getRows().getChildren(); - itemsGrid.setActivePage(selectedPageIndex); - Component pos = children.get(selectedRowIndex - itemsGrid.getPageSize() * itemsGrid.getActivePage()); - Clients.scrollIntoView(pos); - showResult = false; - } - } - - @Command - public void onPagingGrid() { - logger.info("onPagingGrid"); - registerTask(() -> { - List children = itemsGrid.getRows().getChildren(); - if (children.size() > 0) { - int pos = itemsGrid.getPageSize() * itemsGrid.getActivePage(); - Component top = children.get(pos); - Clients.scrollIntoView(top); - } - }); - timer.start(); + // if (mediaID != null) { + // selectedObject = searchResult.getElementAt(0); + // highlight(selectedObject, true); + // notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath"); + // } else if (showResult) { + // List children = itemsGrid.getRows().getChildren(); + // itemsGrid.setActivePage(selectedPageIndex); + // Component pos = children.get(selectedRowIndex - itemsGrid.getPageSize() * itemsGrid.getActivePage()); + // Clients.scrollIntoView(pos); + // showResult = false; + // } + + preventAfterRender = true; + ensureVisible(itemsGrid.getPageSize() * itemsGrid.getActivePage()); + preventAfterRender = false; } @Command @@ -496,11 +499,28 @@ public class SearchModel extends AsyncBaseModel { } @Command - @NotifyChange("itemsGrid") + // @NotifyChange("itemsGrid") public void showInResults() { - logger.info("showInResults"); - showResult = true; - onAfterRenderGrid(); + List components = itemsGrid.getRows().getChildren(); + int pos = -1; + for (int i = 0; i < components.size(); i++) { + Row row = (Row) components.get(i); + + if (row.getValue() == null) + logger.info("value is null"); + else + logger.info("{}", row.getValue().getClass()); + if (selectedObject.equals(row.getValue())) { + pos = i; + break; + } + } + + if (pos > 0) { + int page = pos / itemsGrid.getPageSize(); + itemsGrid.setActivePage(page); + ensureVisible(pos - itemsGrid.getPageSize() * page); + } } public void updateAllChecked() { -- 2.54.0