001    /*
002      Copyright (C) 2002-2003 Laurent Martelli <laurent@aopsys.com>
003      
004      This program is free software; you can redistribute it and/or modify
005      it under the terms of the GNU Lesser General Public License as
006      published by the Free Software Foundation; either version 2 of the
007      License, or (at your option) any later version.
008    
009      This program is distributed in the hope that it will be useful,
010      but WITHOUT ANY WARRANTY; without even the implied warranty of
011      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012      GNU Lesser General Public License for more details.
013    
014      You should have received a copy of the GNU Lesser General Public License
015      along with this program; if not, write to the Free Software
016      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
017    
018    package org.objectweb.jac.aspects.gui.web;
019    
020    import java.io.IOException;
021    import java.io.PrintWriter;
022    import java.net.URLEncoder;
023    import java.util.Iterator;
024    import org.objectweb.jac.aspects.gui.*;
025    
026    public class Menu extends AbstractMenu
027        implements MenuView, HTMLViewer, MenuListener 
028    {
029    
030        public Menu(ViewFactory factory, DisplayContext context) {
031            super(factory,context);
032            logger.debug("new Menu "+this);
033        }
034       
035        // HTMLViewer interface
036        public void genHTML(PrintWriter out) throws IOException {
037            if (position.equals(org.objectweb.jac.aspects.gui.Menu.TOP)||
038                position.equals(org.objectweb.jac.aspects.gui.Menu.BOTTOM)) {
039                out.println("<div class=\"menuH\">");
040            } else if (position.equals(org.objectweb.jac.aspects.gui.Menu.LEFT)||
041                       position.equals(org.objectweb.jac.aspects.gui.Menu.RIGHT)) {
042                out.println("<div class=\"menuV\">");
043            }
044            Iterator i = keys.iterator();
045            while (i.hasNext()) {
046                String key = (String)i.next();
047                Object item = map.get(key);
048                if (item instanceof Menu) {
049                    out.println(key);
050                    ((HTMLViewer)item).genHTML(out);
051                } else if (item instanceof MenuItem) {
052                    out.print("<div><a href=\""+eventURL("onMenuClick")+
053                              "&item="+URLEncoder.encode(key,GuiAC.getEncoding())+"\">");
054                    if (((MenuItem)item).icon!=null) 
055                        out.print(iconElement(((MenuItem)item).icon,""));
056                    out.println(key+"</a></div>");
057                }
058            }
059            out.println("</div>");
060        }
061    }