Package org.adamtacy.client.ui

Source Code of org.adamtacy.client.ui.ReflectedImage

/*
* Copyright 2008-2009 Adam Tacy <adam.tacy AT gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.adamtacy.client.ui;

import java.util.Vector;

import org.adamtacy.client.ui.NEffectPanel;
import org.adamtacy.client.ui.effects.NEffect;
import org.adamtacy.client.ui.effects.impl.ReflectImage;
import org.adamtacy.client.ui.effects.impl.Resize;

import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasLoadHandlers;
import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;


/**
* Simple class for creating and handling a Reflected Image for
*
* @author Adam Tacy
* @version 3.0
*
*/
public class ReflectedImage extends Composite implements HasClickHandlers,
    HasLoadHandlers {

  NEffectPanel ep;
  boolean previous = false;
  Image theImage;

  ReflectImage theReflection;

  public ReflectedImage() {
    theImage = new Image();
    NEffectPanel ep = new NEffectPanel();
    ep.add(theImage);
    theReflection = new ReflectImage();
    ep.addEffect(theReflection);
    initWidget(ep);
    setForResizeEffect();
  }

  public ReflectedImage(Image img) {
    ep.add(img);
    theReflection = new ReflectImage();
    ep.addEffect(theReflection);
    initWidget(ep);
    setForResizeEffect();
  }

  public ReflectedImage(String image) {
    this();
    setUrl(image);
    theImage.addLoadHandler(new LoadHandler() {
      public void onLoad(LoadEvent event) {
        theReflection.play();    
      }
    });
    setForResizeEffect();
  }

 
  public HandlerRegistration addLoadHandler(LoadHandler handler){
    return theImage.addLoadHandler(handler);
  }

  public void reapply() {
    theReflection.reset();
  }


  public void removeEffect(NEffect theEffect) {
    ep.removeEffect(theEffect);
  }

  public void setHeight(String height) {
    theReflection.getReflectedImage().setHeight(height);
  }

  public void setReflectionDepth(int d) {
    theReflection.setHeight(d);
    reapply();
  }
 
  /**
   * Add the CANVAS tag to the list of DOM elements that a resize effect
   * will manage.
   */
  public void setForResizeEffect(){
    Vector<String> t = new Vector<String>();
    t.add("CANVAS");
    Resize.addToTriggerDOM(t);
  }

  public void setReflectionOpacity(int d) {
    theReflection.setOpacity(d);
    reapply();
  }

  public void setSize(String width, String height) {
    theReflection.getReflectedImage().setSize(width, height);
    reapply();
  }

  public void setStylePrimaryName(String name) {
    theReflection.getReflectedImage().setStylePrimaryName(name);
  }

  public void setUrl(String url) {
    theImage.setUrl(url);

    if (previous)
      theImage.addLoadHandler(new LoadHandler() {
        public void onLoad(LoadEvent event) {
          reapply();         
        }
      });
    previous = true;
  }

  public void setWidth(String width) {
    theReflection.getReflectedImage().setWidth(width);
    reapply();
  }

  public HandlerRegistration addClickHandler(ClickHandler handler) {
    return theImage.addClickHandler(handler);
  }
}
TOP

Related Classes of org.adamtacy.client.ui.ReflectedImage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.