git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorMárk Mérész <USER\mark.meresz>
Tue, 17 Jul 2018 14:33:49 +0000 (14:33 +0000)
committerMárk Mérész <USER\mark.meresz>
Tue, 17 Jul 2018 14:33:49 +0000 (14:33 +0000)
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java

index 9f96b5787360ca19f46570ef07d9c3505856b82d..ca72266bef5df3259a0d6c27403733e04deb05e1 100644 (file)
@@ -99,11 +99,9 @@ public class SearchModel extends AsyncBaseModel {
        private boolean orderAscending;\r
 \r
        private Map<String, String> topColorClasses;\r
-       private int selectedRowIndex;\r
-       private int selectedPageIndex;\r
+       private int selectedRowIndex = -1;\r
        private volatile boolean preventAfterRender;\r
-       private Row lastSelectedRow;\r
-       private int positionToScroll;\r
+       private int positionToScroll = -1;\r
        private ListModelList<String> searchHistory;\r
 \r
        public SearchModel() {\r
@@ -203,7 +201,7 @@ public class SearchModel extends AsyncBaseModel {
                clipboard.setContents(strSel, null);\r
                String email = String.format("mailto:?subject=Média címe: %s &body=A média itt tekinthető meg: %s", selectedObject.getMedia().getTitle(), url);\r
                // Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + email, "", Messagebox.OK, Messagebox.NONE);\r
-               Executions.getCurrent().sendRedirect(email, "_blank");\r
+               Executions.getCurrent().sendRedirect(email);\r
        }\r
 \r
        @Command\r
@@ -263,6 +261,7 @@ public class SearchModel extends AsyncBaseModel {
                        if (children.size() > 0) {\r
                                Component top = children.get(pos);\r
                                Clients.scrollIntoView(top);\r
+                               logger.info("Scrolled into the {}. row on the page.", pos);\r
                        }\r
                });\r
                timer.start();\r
@@ -391,7 +390,8 @@ public class SearchModel extends AsyncBaseModel {
                List<Component> components = itemsGrid.getRows().getChildren();\r
                for (int i = 0; i < components.size(); i++) {\r
                        Row row = (Row) components.get(i);\r
-                       if (am == row.getValue()) {\r
+                       ArchivedMedia archivedMedia = (ArchivedMedia) row.getValue();\r
+                       if (archivedMedia != null && am.getMedia().getId() == archivedMedia.getMedia().getId()) {\r
                                Detail detail = (Detail) row.getChildren().get(0);\r
                                Hlayout hlayout = (Hlayout) detail.getChildren().get(0);\r
                                if (highlight) {\r
@@ -405,7 +405,22 @@ public class SearchModel extends AsyncBaseModel {
 \r
                        }\r
                }\r
+       }\r
 \r
+       private void highlight(int index, boolean highlight) {\r
+               if (index >= itemsGrid.getRows().getChildren().size())\r
+                       return;\r
+               List<Component> components = itemsGrid.getRows().getChildren();\r
+               Row row = (Row) components.get(index);\r
+               Detail detail = (Detail) row.getChildren().get(0);\r
+               Hlayout hlayout = (Hlayout) detail.getChildren().get(0);\r
+               if (highlight) {\r
+                       row.setStyle("background: #F1F8E9;");\r
+                       hlayout.setStyle("border-bottom: 1px solid #C5E1A5; background: #F1F8E9;");\r
+               } else {\r
+                       row.setStyle("background: none;");\r
+                       hlayout.setStyle("border-bottom: 1px solid #ebebeb; background: none;");\r
+               }\r
        }\r
 \r
        public boolean isAllChecked() {\r
@@ -426,30 +441,31 @@ public class SearchModel extends AsyncBaseModel {
 \r
        @Command\r
        public void onAfterRenderGrid() {\r
-               if (preventAfterRender)\r
-                       return;\r
                logger.info("onAfterRenderGrid");\r
-               //              if (mediaID != null) {\r
-               //                      selectedObject = searchResult.getElementAt(0);\r
-               //                      highlight(selectedObject, true);\r
-               //                      notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
-               //              } else if (showResult) {\r
-               //                      List<Component> children = itemsGrid.getRows().getChildren();\r
-               //                      itemsGrid.setActivePage(selectedPageIndex);\r
-               //                      Component pos = children.get(selectedRowIndex - itemsGrid.getPageSize() * itemsGrid.getActivePage());\r
-               //                      Clients.scrollIntoView(pos);\r
-               //                      showResult = false;\r
-               //              }\r
-\r
-               preventAfterRender = true;\r
-               if (positionToScroll > -1) {\r
-                       ensureVisible(positionToScroll - itemsGrid.getPageSize() * itemsGrid.getActivePage());\r
+               if (!preventAfterRender) {\r
+                       preventAfterRender = false;\r
+                       return;\r
+               }\r
+               if (mediaID != null) {\r
+                       selectedObject = searchResult.getElementAt(0);\r
+                       highlight(selectedObject, true);\r
+                       notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
+               }\r
+               if (positionToScroll != -1) {\r
+                       ensureVisible(positionToScroll);\r
+                       highlight(selectedObject, true);\r
                        positionToScroll = -1;\r
                } else\r
                        ensureVisible(itemsGrid.getPageSize() * itemsGrid.getActivePage());\r
                preventAfterRender = false;\r
        }\r
 \r
+       @Command\r
+       public void onPaging() {\r
+               logger.info("onPaging");\r
+               preventAfterRender = true;\r
+       }\r
+\r
        @Command\r
        public void openMetaDataDialog() {\r
                String template = "/pages/metadatadetails.zul";\r
@@ -475,19 +491,8 @@ public class SearchModel extends AsyncBaseModel {
                selectedRowIndex = ((Row) event.getTarget()).getIndex();\r
                highlight(this.selectedObject, false);\r
                this.selectedObject = selectedObject;\r
-               selectedPageIndex = itemsGrid.getActivePage();\r
                highlight(this.selectedObject, true);\r
-\r
-               List<Component> components = itemsGrid.getRows().getChildren();\r
-               for (Component obj : components) {\r
-                       Row row = (Row) obj;\r
-                       if (selectedObject.equals(row.getValue())) {\r
-                               lastSelectedRow = row;\r
-                               break;\r
-                       }\r
-               }\r
-               //lastSelectedRow.getUuid()\r
-               logger.info(itemsGrid.getActivePage());\r
+               logger.info("Media was selected. Selected media archive:{}", selectedObject.getMedia().getId());\r
        }\r
 \r
        @NotifyChange("typeFilters")\r
@@ -572,16 +577,19 @@ public class SearchModel extends AsyncBaseModel {
        }\r
 \r
        @Command\r
-       //      @NotifyChange("itemsGrid")\r
+       @NotifyChange("itemsGrid")\r
        public void showInResults() {\r
-               if (lastSelectedRow == null)\r
+               if (selectedObject == null)\r
                        return;\r
-\r
-               List<Component> components = itemsGrid.getRows().getChildren();\r
-               positionToScroll = components.indexOf(lastSelectedRow);\r
-               if (positionToScroll > -1) {\r
-                       int page = positionToScroll / itemsGrid.getPageSize();\r
-                       itemsGrid.setActivePage(page);\r
+               int activePageIndex = selectedRowIndex / itemsGrid.getPageSize();\r
+               positionToScroll = selectedRowIndex - itemsGrid.getPageSize() * activePageIndex;\r
+               preventAfterRender = true;\r
+               if (activePageIndex != itemsGrid.getActivePage()) {\r
+                       itemsGrid.setActivePage(activePageIndex);\r
+                       logger.info("Selected media is shown in the results, which can be found on {} page and also it will be highlighted.", activePageIndex + 1);\r
+               } else {\r
+                       onAfterRenderGrid();\r
+                       logger.info("Selected media is shown in the results, which can be found on opened page.");\r
                }\r
        }\r
 \r