001    /*
002      Copyright (C) 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, but
010      WITHOUT ANY WARRANTY; without even the implied warranty of
011      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
012      Lesser General Public License for more details.
013    
014      You should have received a copy of the GNU Lesser General Public
015      License along with this program; if not, write to the Free Software
016      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
017      USA */
018    
019    package org.objectweb.jac.aspects.gui.web;
020    
021    import java.io.PrintWriter;
022    import java.util.List;
023    import java.util.Vector;
024    import org.objectweb.jac.core.NameRepository;
025    
026    /**
027     * Selects objects from a collection with check boxes
028     */
029    public class CollectionSelector extends AbstractView 
030        implements JacRequestReader
031    {
032        Vector selection = new Vector();
033        /**
034         * @param name the name for generated HTML <input> elements
035         */
036        public CollectionSelector(String name) {
037            this.label = name;
038        }
039    
040        NameRepository nameRepository = (NameRepository)NameRepository.get();
041    
042        /**
043         * Generate a checkbox for an item of the collection
044         */
045        public void genHTML(PrintWriter out, Object object) {
046            out.print("<input type=\"checkbox\" name=\""+label+"\" "+
047                      "value=\""+nameRepository.getName(object)+"\"");
048            printAttributes(out);
049            out.println(">");
050        }
051    
052        public void readValue(JacRequest request) {
053            selection.clear();
054            String[] names = (String[])request.getParameters(label);
055            if (names!=null) {
056                for (int i=0; i<names.length; i++) {
057                    selection.add(nameRepository.getObject(names[i]));
058                }
059            }
060        }
061    
062        public List getSelection() {
063            return selection;
064        }
065    }
066