<?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
\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
--- /dev/null
+<!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
--- /dev/null
+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
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
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
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
BindUtils.postNotifyChange(null, null, this, "page");\r
logger.info("Page set to {}", getPage());\r
}\r
-\r
}
\ No newline at end of file
--- /dev/null
+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
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
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
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
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