feladat megoldva
authorOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Wed, 18 May 2022 13:11:32 +0000 (15:11 +0200)
committerOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Tue, 24 May 2022 22:02:34 +0000 (00:02 +0200)
server/user.mediacube.gui/index.zul
server/user.mediacube.gui/pages/index.zul2 [moved from server/user.mediacube.gui/pages/index.zul with 100% similarity]
server/user.mediacube.gui/pages/sidewindow.zul [new file with mode: 0644]
server/user.mediacube.gui/src/user/jobengine/zk/model/GlobalConstants.java [new file with mode: 0644]
server/user.mediacube.gui/src/user/jobengine/zk/model/IndexModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/SidewindowModel.java [new file with mode: 0644]
server/user.mediacube.gui/src/user/jobengine/zk/util/SessionUtil.java

index 4c1a9132640eb5a310eb0a6168be4ecfefe3119e..821c540d172934cbd0aae1cdd791172c5db693bc 100644 (file)
@@ -1,26 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <?init class="user.jobengine.zk.util.AuthInitiator"?>\r
+\r
+<?component name="sidewindow" inline="true" macroURI="pages/sidewindow.zul"?>\r
+\r
+<!DOCTYPE xml>\r
 <zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
        <style src="/css/archivum.css" />\r
-       <zscript><![CDATA[\r
-       // Chrome F5 bug workaround (miscalculates 100% width on second refresh)\r
-       void onClientInfo(ClientInfoEvent evt) {\r
-       int myHeight = evt.getScreenHeight();\r
-        int myWidth = evt.getScreenWidth();\r
-    }\r
-       \r
-       void resizeComp(org.zkoss.zk.ui.Component toResize){\r
-               org.zkoss.zk.ui.util.Clients.resize(toResize);\r
-       }\r
-       \r
-       public void clearErrorMsg(Component comp){\r
-               if(comp != null && comp.getErrorMessage() != null){\r
-               //comp.setErrorMessage(comp.getErrorMessage().replaceAll("aaaa.nn.jj","éééé.hh.nn"));\r
-               comp.setErrorMessage("Hibás érték! (ÉÉÉÉ.HH.NN)");\r
+       <zscript>\r
+               <![CDATA[\r
+               // Chrome F5 bug workaround (miscalculates 100% width on second refresh)\r
+               void onClientInfo(ClientInfoEvent evt) {\r
+               int myHeight = evt.getScreenHeight();\r
+               int myWidth = evt.getScreenWidth();\r
+           } \r
+               \r
+               void resizeComp(org.zkoss.zk.ui.Component toResize){\r
+                       org.zkoss.zk.ui.util.Clients.resize(toResize);\r
                }\r
-       }\r
-       ]]></zscript>\r
+               \r
+               public void clearErrorMsg(Component comp){\r
+                       if(comp != null && comp.getErrorMessage() != null){\r
+                       //comp.setErrorMessage(comp.getErrorMessage().replaceAll("aaaa.nn.jj","éééé.hh.nn"));\r
+                       comp.setErrorMessage("Hibás érték! (ÉÉÉÉ.HH.NN)");\r
+                       }\r
+               }\r
+               ]]>\r
+       </zscript>\r
        <!-- ZKOSS chrome listbox scroll bug workaround: http://tracker.zkoss.org/browse/ZK-3263 -->\r
        <script>\r
                window.onpopstate = function(event) {\r
@@ -63,8 +69,9 @@
        \r
 <!--   onClientInfo="onClientInfo(event)" -->\r
 \r
-       <window id="zkwindow" viewModel="@id('vm') @init('user.jobengine.zk.model.IndexModel')" border="none" width="100%" height="100%" contentStyle="padding:0;">\r
-               <custom-attributes org.zkoss.zul.image.preload="true" />\r
+       <window id="zkwindow" viewModel="@id('im') @init('user.jobengine.zk.model.IndexModel')" border="none" \r
+               width="100%" height="100%" contentStyle="padding:0;" onClientInfo="@command('onClientInfo', evt=event)">\r
+               <custom-attributes org.zkoss.zul.image.preload="true"/>\r
 <!--           <borderlayout width="${myWidth}" height="${myHeight}"> -->\r
                <borderlayout>\r
                        <north border="0">\r
                                </div>\r
                        </north>\r
                        <center border="0">\r
-                               <include style="background: #e3e3e3;" id="includeContent" src="@load(vm.page)" />\r
+                               <include style="background: #e3e3e3;" id="includeContent" src="@load(im.page)" />\r
                        </center>\r
+<!--                   <east> -->\r
+<!--                           <sidewindow /> -->\r
+<!--                   </east> -->\r
                </borderlayout>\r
        </window>\r
 </zk>\r
diff --git a/server/user.mediacube.gui/pages/sidewindow.zul b/server/user.mediacube.gui/pages/sidewindow.zul
new file mode 100644 (file)
index 0000000..ea55144
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE xml>\r
+\r
+<zk>   \r
+       <div width="50px" vflex="1">\r
+               <window mode="overlapped" viewModel="@id('sm') @init('user.jobengine.zk.model.SidewindowModel')" \r
+               width="@bind(sm.width)" left="@bind(sm.left)" top="@bind(sm.top)" height="@bind(sm.height)"\r
+                       onClose="@command('onClose')" visible="@bind(sm.visible)">\r
+                       <tabbox id="pagesTab" vflex="true" orient="left" \r
+                               onSelect="@command('onSelectTab', evt=event)" visible="@bind(sm.visible)">\r
+                               <tabs>\r
+                                       <tab id="tab0" iconSclass="z-icon-envelope-o" selected="true"/>\r
+                                       <tab id="tab1" iconSclass="z-icon-glass"/>\r
+                               </tabs>\r
+                               <tabpanels visible="@bind(sm.opened)">\r
+                                       <tabpanel>\r
+                                               teszt1\r
+                                       </tabpanel>\r
+                                       <tabpanel>\r
+                                               teszt2\r
+                                       </tabpanel>\r
+                               </tabpanels>\r
+                       </tabbox>\r
+               </window>\r
+       </div>\r
+</zk>
\ No newline at end of file
diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/model/GlobalConstants.java b/server/user.mediacube.gui/src/user/jobengine/zk/model/GlobalConstants.java
new file mode 100644 (file)
index 0000000..98f7b53
--- /dev/null
@@ -0,0 +1,5 @@
+package user.jobengine.zk.model;\r
+\r
+public interface GlobalConstants {\r
+       public static final String EVENTQUEUE_NAME= "OnClientInfoEvents";\r
+}
\ No newline at end of file
index 21d1e57a96cd36f0d2939a7b7c6ad11d70b8eae2..05b413fc4336e7771f8153c93c2469524baf673b 100644 (file)
@@ -12,6 +12,7 @@ import org.zkoss.bind.annotation.ContextParam;
 import org.zkoss.bind.annotation.ContextType;\r
 import org.zkoss.zk.ui.Component;\r
 import org.zkoss.zk.ui.Executions;\r
+import org.zkoss.zk.ui.event.ClientInfoEvent;\r
 import org.zkoss.zk.ui.event.Event;\r
 import org.zkoss.zk.ui.select.Selectors;\r
 import org.zkoss.zk.ui.util.Clients;\r
@@ -26,12 +27,14 @@ public class IndexModel extends BaseModel {
        private String page;\r
        private Map<String, Object> pathMap = ListUtils.asMap("/", "searchitems", "jobs", "jobs", "missingmaterials", "missingmaterials", "newshistory",\r
                        "newshistory", "edithistory", "edithistory", "statistics", "statistics", "maestro", "maestro", "pwdgen", "pwdgen");\r
+       \r
 \r
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
                Selectors.wireComponents(view, this, false);\r
                Selectors.wireEventListeners(view, this);\r
-               route(Executions.getCurrent().getParameter("action"), SessionUtil.getQueryString(Arrays.asList("action")), false);\r
+               route(Executions.getCurrent().getParameter("action"), \r
+                               SessionUtil.getQueryString(Arrays.asList("action")), false);\r
                SessionUtil.setAttribute(IndexModel.class.getCanonicalName(), this);\r
        }\r
 \r
@@ -47,6 +50,17 @@ public class IndexModel extends BaseModel {
                logger.info("Popped to client: {}", h);\r
                route(h.getString("action"), h.getString("query"), true);\r
        }\r
+       \r
+       @Command\r
+       public void onClientInfo(@ContextParam(ContextType.TRIGGER_EVENT) ClientInfoEvent event) {\r
+               logger.info("onClientInfo()");\r
+               SessionUtil.publish(event);\r
+       }\r
+       \r
+       public void onVisibilityChanged(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
+               logger.info("onVisibilityChanged");\r
+               SessionUtil.publish(event);             \r
+       }\r
 \r
        public void pushClientHistory(String action, String query) {\r
                String realAction = action.equals("/") ? action : "/actions/" + action;\r
@@ -72,5 +86,4 @@ public class IndexModel extends BaseModel {
                BindUtils.postNotifyChange(null, null, this, "page");\r
                logger.info("Page set to {}", getPage());\r
        }\r
-\r
 }
\ No newline at end of file
diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/model/SidewindowModel.java b/server/user.mediacube.gui/src/user/jobengine/zk/model/SidewindowModel.java
new file mode 100644 (file)
index 0000000..6eaf9a1
--- /dev/null
@@ -0,0 +1,139 @@
+package user.jobengine.zk.model;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.annotation.AfterCompose;\r
+import org.zkoss.bind.annotation.Command;\r
+import org.zkoss.bind.annotation.ContextParam;\r
+import org.zkoss.bind.annotation.ContextType;\r
+import org.zkoss.bind.annotation.NotifyChange;\r
+import org.zkoss.zk.ui.Component;\r
+import org.zkoss.zk.ui.event.ClientInfoEvent;\r
+import org.zkoss.zk.ui.event.Event;\r
+import org.zkoss.zk.ui.event.EventListener;\r
+import org.zkoss.zk.ui.event.SelectEvent;\r
+import org.zkoss.zk.ui.event.VisibilityChangeEvent;\r
+import org.zkoss.zk.ui.select.Selectors;\r
+import org.zkoss.zul.Tab;\r
+\r
+import user.jobengine.zk.util.SessionUtil;\r
+\r
+public class SidewindowModel extends BaseModel {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private boolean opened= false;\r
+       private String top= "70px";     \r
+       private String width="50px";\r
+       private String left= "1482px";\r
+       private String height="680px";\r
+       private int screenWidth;\r
+       private int screenHeight;\r
+       private boolean visible= true;\r
+\r
+       private EventListener<Event> eventListener = new EventListener<Event>() {\r
+               public void onEvent(Event evt) {\r
+                       if(evt instanceof ClientInfoEvent) {\r
+                               ClientInfoEvent evt2 = (ClientInfoEvent) evt;\r
+                               setScreenWidth(evt2.getScreenWidth());\r
+                               setScreenHeight(evt2.getScreenWidth());\r
+                               setHeight((evt2.getScreenHeight()-70)+"px");\r
+                               return;\r
+                       }\r
+\r
+                       if(evt instanceof VisibilityChangeEvent) {\r
+                               setVisible(!isVisible());\r
+                               return;\r
+                       }\r
+               }\r
+       };\r
+\r
+       @AfterCompose\r
+       public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
+               Selectors.wireComponents(view, this, false);\r
+               Selectors.wireEventListeners(view, this);       \r
+               SessionUtil.setAttribute(SidewindowModel.class.getCanonicalName(), this);\r
+               SessionUtil.subscribe(eventListener);\r
+       }\r
+\r
+       @Command\r
+       public void onAfterResize() {\r
+               logger.info("onAfterResize()");\r
+       }\r
+       \r
+       @Command\r
+       @NotifyChange({"left", "width", "opened"})\r
+       public void onSelectTab(@ContextParam(ContextType.TRIGGER_EVENT) SelectEvent<Tab, Event> event) {\r
+               logger.info("onSelectTab()");\r
+               setOpened(true);\r
+               setWidth("200px");\r
+               setLeft((getScreenWidth()-200)+"px");\r
+       }\r
+       \r
+       @Command\r
+       public void onClose() {\r
+               SessionUtil.unsubscribe(eventListener);\r
+       }\r
+       \r
+       public boolean isOpened() {\r
+               return opened;\r
+       }\r
+\r
+       public void setOpened(boolean opened) {\r
+               this.opened = opened;\r
+       }\r
+       \r
+       public String getTop() {\r
+               return top;\r
+       }\r
+       \r
+       public void setTop(String top) {\r
+               this.top = top;\r
+       }\r
+       \r
+       public String getWidth() {\r
+               return width;\r
+       }\r
+\r
+       public void setWidth(String width) {\r
+               this.width = width;\r
+       }\r
+\r
+       public String getLeft() {\r
+               return left;\r
+       }\r
+\r
+       public void setLeft(String left) {\r
+               this.left = left;\r
+       }\r
+       \r
+       public int getScreenHeight() {\r
+               return screenHeight;\r
+       }\r
+\r
+       public void setScreenHeight(int screenHeight) {\r
+               this.screenHeight = screenHeight;\r
+       }\r
+       \r
+       public int getScreenWidth() {\r
+               return screenWidth;\r
+       }\r
+\r
+       public void setScreenWidth(int screenWidth) {\r
+               this.screenWidth = screenWidth;\r
+       }\r
+       \r
+       public String getHeight() {\r
+               return height;\r
+       }\r
+\r
+       public void setHeight(String height) {\r
+               this.height = height;\r
+       }\r
+       \r
+       public boolean isVisible() {\r
+               return visible;\r
+       }\r
+\r
+       public void setVisible(boolean visible) {\r
+               this.visible = visible;\r
+       }\r
+}
\ No newline at end of file
index 5c693e19cc079c8feb4372ec1eaec43f8bd1071c..b0828a0c4a9ba528512959383a7406b095f5a8ea 100644 (file)
@@ -17,6 +17,9 @@ import org.apache.logging.log4j.Logger;
 import org.zkoss.zk.ui.Executions;\r
 import org.zkoss.zk.ui.Session;\r
 import org.zkoss.zk.ui.Sessions;\r
+import org.zkoss.zk.ui.event.Event;\r
+import org.zkoss.zk.ui.event.EventListener;\r
+import org.zkoss.zk.ui.event.EventQueues;\r
 \r
 import com.ibm.nosql.json.api.BasicDBList;\r
 import com.ibm.nosql.json.api.BasicDBObject;\r
@@ -28,11 +31,12 @@ import user.jobengine.gui.ComponentBinder;
 import user.jobengine.server.IJobChangedListener;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.JobEngineConfiguration;\r
+import user.jobengine.zk.model.GlobalConstants;\r
 import user.jobengine.zk.model.IndexModel;\r
 import user.jobengine.zk.model.MaestroConfig;\r
 import user.jobengine.zk.model.MediaCubeConfig;\r
 \r
-public class SessionUtil {\r
+public class SessionUtil implements GlobalConstants{\r
        private static Logger logger = LogManager.getLogger();\r
        private static final String MEDIACUBE_CONFIG = "mediaCubeConfig";\r
        private static final String MAESTRO_CONFIG = "maestroConfig";\r
@@ -51,6 +55,7 @@ public class SessionUtil {
        public static final String GUI_STAT_DISABLE = "gui.statistics.disable";\r
        public static final String GUI_HELP_DISABLE = "gui.help.disable";\r
        public static final String GUI_EDITOR_DISABLE = "gui.editor.disable";\r
+       \r
        //      private static MediaCubeConfig mediaCubeConfig;\r
        //\r
        //      static {\r
@@ -398,4 +403,16 @@ public class SessionUtil {
                if (session != null)\r
                        session.setAttribute(name, obj);\r
        }\r
+       \r
+       public static void publish(Event event) {\r
+               EventQueues.lookup(EVENTQUEUE_NAME, EventQueues.SESSION, true).publish(event);\r
+       }\r
+\r
+       public static void subscribe(EventListener<Event> eventListener) {\r
+               EventQueues.lookup(EVENTQUEUE_NAME, EventQueues.SESSION, true).subscribe(eventListener);                \r
+       }\r
+\r
+       public static void unsubscribe(EventListener<Event> eventListener) {\r
+               EventQueues.lookup(EVENTQUEUE_NAME, EventQueues.APPLICATION, false).unsubscribe(eventListener);\r
+       }\r
 }
\ No newline at end of file