Implementation of roll-over image.

Takes 2 image resource-references: one for initial image, second for
mouseover image.
Automatically adds javascript for preloading these images.
Takes wicket locale and style into consideration.

USAGE:
RollOverImage image = new RollOverImage("wicketId", "imageAltText",
imageOut, imageOver, null);
add(image);

Enjoy ;)
S&S


//  CODE
//==================================================================

package sk.serviceintegra.wisa.component.image.rolloverimage;

import java.util.Locale;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.Session;
import org.apache.wicket.behavior.StringHeaderContributor;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import sk.serviceintegra.random.RandomStringGenerator;
import sk.serviceintegra.wisa.component.image.extended.ExtendedImage;

/**
 * Roll-over image.
 * Takes 2 image resource-references: one for initial image, second for
mouseover image.
 * Takes wicket locale and style into consideration. 
 * 
 * <pre>
 * USAGE:
 *      RollOverImage image = new RollOverImage("wicketId", "imageAltText",
imageOut, imageOver, null);
 *      add(image);
 * </pre>
 * 
 * @author simik
 */
public class RollOverImage extends ExtendedImage {
        private static final long serialVersionUID = -4686703857711636280L;

        /**
         * Roll-over image.
         * 
         * @param wicketId
         * @param altAttributeModel model, that contains value for ALT 
attribute in
&lt;image&gt; tag
         * @param imageOut mouseout image 
         * @param imageOver mouseover image 
         * @param style wicket style. Can be null, if not used.
         */
        public RollOverImage(String wicketId, 
                                                 IModel<String> 
altAttributeModel, 
                                                 ResourceReference imageOut, 
                                                 ResourceReference imageOver,
                                                 String style) {
                super(wicketId, imageOut, altAttributeModel);
                
                //set locale for ResourceReference
                Locale locale = Session.get().getLocale();
                if (locale != null) {
                        imageOut.setLocale(locale);
                        imageOver.setLocale(locale);
                }
                
                //set style for ResourceReference
                if (style != null) {
                        imageOut.setStyle(style);
                        imageOver.setStyle(style);
                }
                
                //generate random string for unique image name
                String uniqueImageName = "Image_" + 
RandomStringGenerator.generate(10);
                
                
                //HEAD CONTRIBUTION FOR PRELOADING IMAGES
                /*
                   <script language="JavaScript">
                  ${IMAGE_IDENTIFIER}_out = new Image();
                  ${IMAGE_IDENTIFIER}_out.src = "${IMAGE_OUT_URL}";
                
                  ${IMAGE_IDENTIFIER}_over = new Image();
                  ${IMAGE_IDENTIFIER}_over.src = "${IMAGE_OVER_URL}";
                   </script> 
                 */
                String imageOutUrl = 
RequestCycle.get().urlFor(imageOut).toString();
                String imageOverUrl = 
RequestCycle.get().urlFor(imageOver).toString();
                
                String javascript = 
                        "<script  type=\"text/javascript\">\n" +
                                uniqueImageName + "_out = new Image();\n" +
                                uniqueImageName + "_out.src = \"" + imageOutUrl 
+ "\";\n" +
                                uniqueImageName + "_over = new Image();\n" +
                                uniqueImageName + "_over.src = \"" + 
imageOverUrl + "\";\n" +
                        "</script>\n";
                
                add(new StringHeaderContributor(javascript));
                                
                
                
                
                // HEAD CONTRIBUTION FOR display() function.
                /*
                        <script language="JavaScript">
                          function display(imgName, imgUrl) {
                            if (document.images && typeof imgUrl != 'undefined')
                              document[imgName].src = imgUrl.src;
                          }
                        </script>
                 */
                String javascript2 = 
                        "<script  type=\"text/javascript\">" +
                        "<!--/*--><![CDATA[/*><!--*/\n" +
                  "function display(imgName, imgUrl) {\n" +
                    "if (document.images && typeof imgUrl != 'undefined')\n" +
                      "document[imgName].src = imgUrl.src;\n" +
                  "}\n" +
                  "/*-->]]>*/"+
                        "</script>\n";
                
                add(new StringHeaderContributor(javascript2));
                
                
                
                
                // ADD 3 ATTRIBUTES TO IMAGE:  name, onmouseover, onmouseout
                /*
                 *  button_off.GIF 
                 */
                AttributeModifier nameAtt = new AttributeModifier("name", true, 
new
Model<String>(uniqueImageName));
                add(nameAtt);
                AttributeModifier onMouseOverAtt = new 
AttributeModifier("onmouseover",
true, new Model<String>("display('"+uniqueImageName+"',
"+uniqueImageName+"_over);"));
                add(onMouseOverAtt);
                AttributeModifier onMouseOutAtt = new 
AttributeModifier("onmouseout",
true, new Model<String>("display('"+uniqueImageName+"',
"+uniqueImageName+"_out);"));
                add(onMouseOutAtt);
        }
        
        
        
}




-- 
View this message in context: 
http://www.nabble.com/onmouseover-image-tp19567984p19905061.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to