diff --git a/pom.xml b/pom.xml
index cf0216302..8c6ac773f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
br.com.rjconsultores
ventaboletosadm
- 1.8.8
+ 1.8.9
war
diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/IndexController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/IndexController.java
index d5be5ad2a..e94bde606 100644
--- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/IndexController.java
+++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/IndexController.java
@@ -13,9 +13,13 @@ import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
+import org.zkoss.zk.ui.event.EventListener;
+import org.zkoss.zk.ui.event.Events;
+import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Caption;
import org.zkoss.zul.Menubar;
import org.zkoss.zul.Toolbarbutton;
+import org.zkoss.zul.api.Window;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.service.ConstanteService;
@@ -23,6 +27,7 @@ import com.rjconsultores.ventaboletos.service.FlywayUtilService;
import com.rjconsultores.ventaboletos.service.UsuarioService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
+import com.rjconsultores.ventaboletos.web.utilerias.menu.ItemMenuSistema;
import com.rjconsultores.ventaboletos.web.utilerias.menu.MenuFactory;
import com.rjconsultores.ventaboletos.web.utilerias.menu.MenuFactoryPropertiesImpl;
@@ -46,6 +51,8 @@ public class IndexController extends MyGenericForwardComposer {
private Toolbarbutton toolBarUser;
private Menubar menubar;
private Caption lblNombreAplicacion;
+ private Window win;
+ private HashMap menuItems;
public Toolbarbutton getToolBar() {
return toolBar;
@@ -93,6 +100,15 @@ public class IndexController extends MyGenericForwardComposer {
openWindow("/login.zul", Labels.getLabel("winLogin.title"), arg, MODAL, Boolean.FALSE);
} else {
+
+ win.setCtrlKeys("^q");
+ win.addEventListener(Events.ON_CTRL_KEY, new EventListener() {
+ @Override
+ public void onEvent(Event event) throws Exception {
+ openSearchMenu(event);
+ }
+ });
+
usuario = usuarioService.obtenerID(usuario.getUsuarioId());
toolBarUser.setVisible(Boolean.TRUE);
@@ -103,6 +119,7 @@ public class IndexController extends MyGenericForwardComposer {
}
MenuFactory menuFactory = new MenuFactoryPropertiesImpl(desktop, usuario.getUsuarioPerfilList());
menuFactory.construirMenu(menubar);
+ menuItems = menuFactory.getMenuItems();
}
}
@@ -116,4 +133,19 @@ public class IndexController extends MyGenericForwardComposer {
openWindow("/gui/seguridad/editarUsuario.zul", Labels.getLabel("editarUsuarioController.window.title"), args, MODAL);
}
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public void openSearchMenu(Event ev) {
+ Map args = new HashMap();
+ args.put("menuItems", menuItems);
+ openWindow("/gui/catalogos/searchMenu.zul", Labels.getLabel("lb.btnPesquisa.label"), args, MODAL);
+ }
+
+ public HashMap getMenuItems() {
+ return menuItems;
+ }
+
+ public void setMenuItems(HashMap menuItems) {
+ this.menuItems = menuItems;
+ }
}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/SearchMenuController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/SearchMenuController.java
new file mode 100644
index 000000000..93a50cc71
--- /dev/null
+++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/SearchMenuController.java
@@ -0,0 +1,73 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Controller;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.Executions;
+import org.zkoss.zk.ui.event.ForwardEvent;
+import org.zkoss.zk.ui.event.InputEvent;
+
+import com.rjconsultores.ventaboletos.utilerias.StringHelper;
+import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
+import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
+import com.rjconsultores.ventaboletos.web.utilerias.menu.ItemMenuSistema;
+import com.rjconsultores.ventaboletos.web.utilerias.render.RenderSearchMenu;
+
+@Controller("searchMenuController")
+@Scope("prototype")
+public class SearchMenuController extends MyGenericForwardComposer {
+
+ private static Logger log = Logger.getLogger(SearchMenuController.class);
+ private HashMap menuItems;
+ private MyListbox searchResultList;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ searchResultList.setItemRenderer(new RenderSearchMenu());
+ menuItems = (HashMap) Executions.getCurrent().getArg().get("menuItems");
+ searchResultList.setData(new ArrayList());
+ }
+
+ public void onChanging$bd(InputEvent ie) {
+ List list = new ArrayList();
+ if (ie.getValue().length() > 0) {
+ searchResultList.clear();
+ String searchValue = StringHelper.replaceAcento(ie.getValue().toLowerCase());
+ for (Map.Entry entry : menuItems.entrySet()) {
+ String key = StringHelper.replaceAcento(entry.getKey().toLowerCase());
+ if (key.contains(searchValue)) {
+ ItemMenuSistema value = entry.getValue();
+ list.add(value);
+ }
+ }
+ Collections.sort(list, new Comparator() {
+ @Override
+ public int compare(ItemMenuSistema o1, ItemMenuSistema o2) {
+ return o1.getDescItemMenu().compareTo(o2.getDescItemMenu());
+ }
+ });
+ searchResultList.setData(list);
+ }
+ }
+
+ public void onSelect$searchResultList(ForwardEvent ev) {
+ this.closeWindow();
+ ItemMenuSistema value = (ItemMenuSistema) searchResultList.getSelected();
+ value.ejecutar();
+ }
+
+}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactory.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactory.java
index 6634e7caa..cba1af537 100644
--- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactory.java
+++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactory.java
@@ -1,5 +1,7 @@
package com.rjconsultores.ventaboletos.web.utilerias.menu;
+import java.util.HashMap;
+
import org.zkoss.zul.api.Menubar;
public interface MenuFactory {
@@ -9,4 +11,6 @@ public interface MenuFactory {
*/
public void construirMenu(Menubar menuBar);
+ public HashMap getMenuItems();
+
}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactoryPropertiesImpl.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactoryPropertiesImpl.java
index ed7f60241..6e7d66750 100644
--- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactoryPropertiesImpl.java
+++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/MenuFactoryPropertiesImpl.java
@@ -29,6 +29,7 @@ public class MenuFactoryPropertiesImpl implements MenuFactory {
private Desktop desktop; // Desktop de la aplicacion
private List listUsuarioPerfil;// El perfil del usuario
private HashMap listClavesPermisos;
+ private HashMap itemsMenuSistema = new HashMap();
public MenuFactoryPropertiesImpl() {
@@ -195,11 +196,19 @@ public class MenuFactoryPropertiesImpl implements MenuFactory {
if (item.getClaveMenu() != null) {
j.setVisible(listClavesPermisos.containsKey(item.getClaveMenu()));
item.setIsReadOnly(listClavesPermisos.get(item.getClaveMenu()) != null ? listClavesPermisos.get(item.getClaveMenu()) : Boolean.FALSE );
+ if (j.isVisible()) {
+ itemsMenuSistema.put(item.getDescItemMenu(), item);
+ }
}
return j;
}
return null;
}
+
+ @Override
+ public HashMap getMenuItems() {
+ return itemsMenuSistema;
+ }
/**
* Crea una instancia del menu especificado
diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderSearchMenu.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderSearchMenu.java
new file mode 100644
index 000000000..49659d395
--- /dev/null
+++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderSearchMenu.java
@@ -0,0 +1,19 @@
+package com.rjconsultores.ventaboletos.web.utilerias.render;
+
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+
+import com.rjconsultores.ventaboletos.web.utilerias.menu.ItemMenuSistema;
+
+public class RenderSearchMenu implements ListitemRenderer {
+
+ public void render(Listitem lstm, Object o) throws Exception {
+ ItemMenuSistema itemMenuSistema = (ItemMenuSistema) o;
+
+ Listcell lc = new Listcell(itemMenuSistema.getDescItemMenu());
+ lc.setParent(lstm);
+
+ lstm.setAttribute("data", itemMenuSistema);
+ }
+}
diff --git a/web/gui/catalogos/searchMenu.zul b/web/gui/catalogos/searchMenu.zul
new file mode 100644
index 000000000..133a32a1b
--- /dev/null
+++ b/web/gui/catalogos/searchMenu.zul
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file