📄 lilymenudisplayer.java
字号:
package com.lily.dap.webapp.strutsmenu;
import java.io.IOException;
import java.text.MessageFormat;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import net.sf.navigator.displayer.MenuDisplayerMapping;
import net.sf.navigator.displayer.MessageResourcesMenuDisplayer;
import net.sf.navigator.menu.MenuComponent;
import org.apache.commons.lang.StringUtils;
public class LilyMenuDisplayer extends MessageResourcesMenuDisplayer {
private static MessageFormat menuMessage = new MessageFormat("''{0}'',''{1}'',''{2}'',''{3}'',''{4}'',''{5}'','''','''','''','''','''','''','''',0,''{6}'',''{7}'',''{8}'',''{9}''");
String tableStart="<TABLE class=Module_Menu cellSpacing=0 cellPadding=0 width=\"99%\" border=0>";
String tableEnd="</TABLE>";
String tbodyStart="<TBODY>";
String tbodyEnd="</TBODY>";
String trStart="<TR class=BG_TR_1>";
String trEnd="</TR>";
String subMenuTdStart="<TD style=\"DISPLAY: none\" width=0>";
String subMenuTdEnd="</TD>";
int menuID=0;
int subMenuID=0;
int level=0;
//~ Methods ================================================================
public void init(PageContext context, MenuDisplayerMapping mapping) {
super.init(context, mapping);
try {
out.print(tableStart+"\n"+tbodyStart+"\n"+trStart);
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
/**
* Prints the appropriate javascript for CoolMenu using \
* <code>menuMessage</code> as the format.
*/
public void display(MenuComponent menu) throws JspException, IOException {
StringBuffer sb = new StringBuffer();
buildMenuLevel1String(menu, sb, isAllowed(menu));
buildMenuLevel2String(menu, sb, isAllowed(menu));
out.print("\n" + sb);
}
/**
* This will output the ending javascript statements defined in
* <code>END_STATEMENT</code> and <code>SCRIPT_END</code>
*/
public void end(PageContext context) {
try {
out.print(trEnd+"\n"+tbodyEnd+"\n"+tableEnd);
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
protected void buildMenuLevel1String(MenuComponent menu, StringBuffer sb,
boolean allowed) {
if (allowed) {
menuID = menuID + 1;
String menuFormat[]=StringUtils.replace(StringUtils.replace(menuMessage.format(getArgs(menu)), "''", ""),"'","").split(",");
String menuString=null;
if("".equals(menuFormat[2])) menuFormat[2]=" ";
if (menuID > 1)
menuString = "<TD align=middle>|</TD>\n";
else
menuString = "";
if((menuFormat[3].equals(""))||(menuFormat[3].equals("#"))){
menuString += "<TD class=\"menualign\"><A style=\"cursor:hand\" onclick=\"showMenu('ID_Menu_"+menuID+"',100);return false;\">"+menuFormat[2]+"</A></TD>\n";
}
if((!menuFormat[3].equals(""))&&(!menuFormat[3].equals("#"))){
menuString += "<TD class=\"menualign\"><A style=\"cursor:hand\" onclick=\"OpenWindow('"+menuFormat[3]+"','"+menuFormat[4]+"',1,1);;return false;\" onclick=''>"+menuFormat[2]+"</A></TD>\n";
}
if(menuFormat.length>15){
if((!menuFormat[15].equals(""))){
menuFormat[15] = StringUtils.replace(StringUtils.replace(menuFormat[15], "^", ","), "*", "'");
menuString += "<TD class=\"menualign\"><A style=\"cursor:hand\" onclick=\""+menuFormat[15]+" \">"+menuFormat[2]+"</A></TD>\n";
}
}
try {
out.print(menuString);
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
protected void buildMenuLevel2String(MenuComponent menu, StringBuffer sb,
boolean allowed) {
try {
subMenuID = subMenuID + 1;
if (allowed) {
String menuString=null;
out.print(subMenuTdStart);
MenuComponent[] subMenus = menu.getMenuComponents();
if (subMenus.length > 0) {
subMenuID = subMenuID + 1;
for (int i = 0; i < subMenus.length; i++) {
String menuFormat[]=StringUtils.replace(StringUtils.replace(menuMessage.format(getArgs(subMenus[i])), "''", ""),"'","").split(",");
if("".equals(menuFormat[2])) menuFormat[2]=" ";
// 以下条件注解:如果menuFormat[3]!=""则表明此菜单有连接,则应该用OpenWindow打开页面
MenuComponent[] subSubMenus = subMenus[i].getMenuComponents();
if (subSubMenus.length > 0) {
if(!"".equals(menuFormat[3])){
menuString="<A id=ID_Menu_"+menuID+" subMenuID=subMenu"+subMenuID+i+" onclick=\"OpenWindow('"+menuFormat[3]+"','"+menuFormat[4]+"',1,1);;return false;\">"+menuFormat[2]+"</A>\n";
}
if("".equals(menuFormat[3])){
menuString="<A id=ID_Menu_"+menuID+" subMenuID=subMenu"+subMenuID+i+">"+menuFormat[2]+"</A>\n";
}
if(menuFormat.length>15){
if(!"".equals(menuFormat[15])){
menuFormat[15] = StringUtils.replace(StringUtils.replace(menuFormat[15], "^", ","), "*", "'");
menuString="<A id=ID_Menu_"+menuID+" subMenuID=subMenu"+subMenuID+i+" onclick=\""+menuFormat[15]+"\">"+menuFormat[2]+"</A>\n";
}
}
for (int j = 0; j < subSubMenus.length; j++) {
buildMenuLevel3String(subSubMenus[j], sb, ""+subMenuID+i);
}
}else{
if(!"".equals(menuFormat[3])){
menuString="<A id=ID_Menu_"+menuID+" onclick=\"OpenWindow('"+menuFormat[3]+"','"+menuFormat[4]+"',1,1);;return false;\">"+menuFormat[2]+"</A>\n";
}
if("".equals(menuFormat[3])){
menuString="<A id=ID_Menu_"+menuID+">"+menuFormat[2]+"</A>\n";
}
if(menuFormat.length>15){
if(!"".equals(menuFormat[15])){
menuFormat[15] = StringUtils.replace(StringUtils.replace(menuFormat[15], "^", ","), "*", "'");
menuString="<A id=ID_Menu_"+menuID+" onclick=\""+menuFormat[15]+" \">"+menuFormat[2]+"</A>\n";
}
}
}
out.print(menuString);
}
}
out.print(subMenuTdEnd);
}
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
protected void buildMenuLevel3String(MenuComponent menu, StringBuffer sb, String menuID) {
try {
String menuString=null;
String menuFormat[]=StringUtils.replace(StringUtils.replace(menuMessage.format(getArgs(menu)), "''", ""),"'","").split(",");
if("".equals(menuFormat[2])) menuFormat[2]=" ";
if(!"".equals(menuFormat[3])){//如果menuFormat[3]!=""则表明此菜单有连接,则应该用OpenWindow打开页面
menuString="<A id=subMenu"+menuID+" onclick=\"OpenWindow('"+menuFormat[3]+"','"+menuFormat[4]+"',1,1);return false;\">"+menuFormat[2]+"</A>\n";
}
if("".equals(menuFormat[3])){
menuString="<A id=subMenu"+menuID+">"+menuFormat[2]+"</A>\n";
}
if(menuFormat.length>15){
if(!"".equals(menuFormat[15])){
menuFormat[15] = StringUtils.replace(StringUtils.replace(menuFormat[15], "^", ","), "*", "'");
menuString="<A id=subMenu"+menuID+" onclick=\""+menuFormat[15]+" \">"+menuFormat[2]+"</A>\n";
}
}
out.print(menuString);
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
protected String[] getArgs(MenuComponent menu) {
String[] args = new String[10];
args[0] = menu.getName();
args[1] = getParentName(menu);
args[2] =
(menu.getImage() != null)
? (displayStrings.getMessage("cm.image", menu.getImage()) + " " +
getMessage(menu.getTitle())) : getMessage(menu.getTitle());
args[3] = (menu.getUrl() == null) ? EMPTY : menu.getUrl();
args[4] = getTarget(menu);
args[5] = (menu.getWidth() == null) ? EMPTY : menu.getWidth();
args[6] = (menu.getAlign() == null) ? EMPTY : menu.getAlign();
args[7] = (menu.getOnclick() == null) ? EMPTY : menu.getOnclick();
args[8] =
(menu.getOnmouseover() == null) ? EMPTY : menu.getOnmouseover();
args[9] = (menu.getOnmouseout() == null) ? EMPTY : menu.getOnmouseout();
// fix image HTML to escape double quotes for JavaScript
args[2] = StringUtils.replace(args[2], "\"", "\\\"");
return args;
}
protected String getParentName(MenuComponent menu) {
String name = null;
if (menu.getParent() == null) {
name = "";
} else {
name = menu.getParent().getName();
}
return name;
}
protected String getTarget(MenuComponent menu) {
String theTarget = super.getTarget(menu);
if (theTarget == null) {
theTarget = EMPTY;
}
return theTarget;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -