18 package org.turro.zkoss.menu;
20 import java.util.ArrayList;
21 import java.util.Collection;
22 import org.turro.about.AboutTurro;
23 import org.turro.auth.Authentication;
24 import org.turro.command.Command;
25 import org.turro.elephant.context.Application;
26 import org.turro.elephant.util.Images;
27 import org.turro.elephant.zkoss.Modal;
28 import org.turro.elephant.zkoss.RoleMap;
29 import org.turro.i18n.I_;
30 import org.turro.zul.frame.Framework;
31 import org.zkoss.zk.ui.Component;
32 import org.zkoss.zk.ui.Executions;
33 import org.zkoss.zk.ui.event.Event;
34 import org.zkoss.zk.ui.event.EventListener;
35 import org.zkoss.zk.ui.event.Events;
36 import org.zkoss.zk.ui.util.Clients;
37 import org.zkoss.zul.*;
38 import org.zkoss.zul.theme.Themes;
53 this.toolBar = toolBar;
60 this.toolBar = toolBar;
68 public Menu
addMenu(String label, String src) {
69 Menu m = src ==
null ?
new Menu(label) :
new Menu(label, src);
75 public Menu
addMenu(Menupopup mp, String label) {
76 Menu m =
new Menu(label);
83 for(Component m : getChildren()) {
84 if(label.equals(((Menu)m).getLabel())) {
92 Menupopup mp =
new Menupopup();
98 public Menuitem
addMenuitem(Menupopup popup, String label,
final String include) {
102 public Menuitem
addMenuitem(Menupopup popup, String label, EventListener listener) {
106 public Menuitem
addMenuitem(Menupopup popup, String label,
final String include,
boolean toolButton) {
107 return addMenuitem(popup, label,
null, include, toolButton);
110 public Menuitem
addMenuitem(Menupopup popup, String label, EventListener listener,
boolean toolButton) {
111 return addMenuitem(popup, label,
null, listener, toolButton);
114 public Menuitem
addMenuitem(Menupopup popup,
final String label,
final String src,
final String include) {
115 return addMenuitem(popup, label, src, include,
false);
118 public Menuitem
addMenuitem(Menupopup popup,
final String label,
final String src, EventListener listener) {
119 return addMenuitem(popup, label, src, listener,
false);
122 public Menuitem
addMenuitem(Menupopup popup,
final String label,
final String src,
final String include,
boolean toolButton) {
123 EventListener listener =
null;
124 if(include !=
null) {
125 listener =
new EventListener() {
127 public void onEvent(Event event)
throws Exception {
132 return addMenuitem(popup, label, src, listener, toolButton);
135 public Menuitem
addMenuitem(Menupopup popup,
final String label,
final String src, EventListener listener,
boolean toolButton) {
136 if(toolButton && toolBar !=
null) {
137 Toolbarbutton button =
new Toolbarbutton();
139 button.setTooltiptext(label);
141 button.setImage(src);
143 if(listener !=
null) {
144 button.addEventListener(Events.ON_CLICK, listener);
147 Menuitem mi =
new Menuitem(label);
150 popup.appendChild(mi);
151 if(listener !=
null) {
152 mi.addEventListener(Events.ON_CLICK, listener);
158 if(!popup.getChildren().isEmpty() && !(popup.getLastChild() instanceof Menuseparator)) {
159 Menuseparator ms =
new Menuseparator();
161 popup.appendChild(ms);
170 Collection<ElephantMenu> externals =
new ArrayList<>();
175 if(em !=
null) em.addToSessionMenu(
this, mp);
180 addMenuitem(mp,
I_.
get(
"Profile"),
"/_zul/images/contact.png",
new EventListener() {
182 public void onEvent(Event event)
throws Exception {
183 Modal.
doModal(
"/WEB-INF/_zul/www/profile.zul", (Command)
null);
188 addMenuitem(mp,
I_.
get(
"Web home page"),
"/_zul/images/home.png",
new EventListener() {
190 public void onEvent(Event event)
throws Exception {
191 Clients.evalJavaScript(
"exitWanted=true;");
192 Executions.sendRedirect(
"/");
195 addMenuitem(mp,
I_.
get(
"User home page"),
"/_zul/images/user-home.png",
new EventListener() {
197 public void onEvent(Event event)
throws Exception {
198 Clients.evalJavaScript(
"exitWanted=true;");
199 Executions.sendRedirect(
"/user");
203 addMenuitem(mp,
I_.
get(
"Logout"),
"/_zul/images/exit.png",
new EventListener() {
205 public void onEvent(Event event)
throws Exception {
206 Clients.evalJavaScript(
"exitWanted=true;");
217 em.addToToolsMenu(
this, mp);
221 addMenuitem(mp,
I_.
get(
"Reload content"),
"/_zul/images/reload.png",
new EventListener() {
223 public void onEvent(Event event)
throws Exception {
227 addMenuitem(mp,
I_.
get(
"Password generator"),
"/_zul/images/locked.png",
new EventListener() {
229 public void onEvent(Event event)
throws Exception {
230 Modal.
doModal(
"/WEB-INF/_zul/www/passgen.zul", (Command)
null);
235 addMenuitem(mp,
I_.
get(
"About") +
"...",
"/_zul/images/brightside.png",
new EventListener() {
237 public void onEvent(Event event)
throws Exception {
238 new AboutTurro().show(getPage(),
null);
253 private void addThemes(Menupopup mp) {
254 Menu mm =
addMenu(mp,
"Themes");
258 public void onEvent(Event event)
throws Exception {
259 Themes.setTheme(Executions.getCurrent(),
"Breeze");
260 Executions.sendRedirect(
null);
265 public void onEvent(Event event)
throws Exception {
266 Themes.setTheme(Executions.getCurrent(),
"Sapphire");
267 Executions.sendRedirect(
null);
270 addMenuitem(mip,
"Silvertail",
new EventListener() {
272 public void onEvent(Event event)
throws Exception {
273 Themes.setTheme(Executions.getCurrent(),
"Silvertail");
274 Executions.sendRedirect(
null);
static void doLogout(String redir)
static Application getApplication()
static String getImage(String image)
static int doModal(String file)
static String get(String msg)
void addContent(String label, String src)
static Framework getCurrent()
void invalidateSelected()