/*
* Copyright 2011 Vancouver Ywebb Consulting Ltd
*
* 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 next.i.view.widgets;
import next.i.XStyle;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Image;
/**
*
* <p>
* <img class='ai' src='../../../../resources/XImage.png' />
* </p>
*
* @deprecated Using Image has locking effect on DOM, thus Image support will be
* dropped. Consider using alternatives such as XImageDiv using
* <div/> with css background-image
*/
@Deprecated
public class XImage extends Image {
/**
* Creates an empty image.
*/
public XImage() {
setStyleName(XStyle.ximage.name());
}
/**
* Creates an image whose size and content are defined by an ImageResource.
*
* @param resource
* the ImageResource to be displayed
*/
public XImage(ImageResource resource) {
super(resource);
}
/**
* Creates an image with a specified URL. The load event will be fired once
* the image at the given URL has been retrieved by the browser.
*
* @param url
* the URL of the image to be displayed
*/
public XImage(String url) {
super(url);
addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
Element element = event.getRelativeElement();
if (element == XImage.this.getElement()) {
int originalHeight = XImage.this.getOffsetHeight();
int originalWidth = XImage.this.getOffsetWidth();
int clientW = Window.getClientWidth();
int clientH = Window.getClientHeight();
// Window.alert("originalHeight=" + originalHeight +
// ", originalWidth=" + originalWidth);
int size = 0;
if (clientH > clientW) {
size = clientW;
} else {
size = clientH;
}
size = size - 20/* padding */;
// FIXME add orientation listener
if (originalHeight > originalWidth) {
XImage.this.setHeight(size + "px");
} else {
XImage.this.setWidth(size + "px");
}
}
}
});
}
private native int orienttionInx()/*-{
if ($wnd.orientation) {
if ($wnd.orientation == 0) {
return 1;
} else {
return 1.6;
}
} else {
return 1;
}
}-*/;
/**
* Creates a clipped image with a specified URL and visibility rectangle. The
* visibility rectangle is declared relative to the the rectangle which
* encompasses the entire image, which has an upper-left vertex of (0,0). The
* load event will be fired immediately after the object has been constructed
* (i.e. potentially before the image has been loaded in the browser). Since
* the width and height are specified explicitly by the user, this behavior
* will not cause problems with retrieving the width and height of a clipped
* image in a load event handler.
*
* @param url
* the URL of the image to be displayed
* @param left
* the horizontal co-ordinate of the upper-left vertex of the
* visibility rectangle
* @param top
* the vertical co-ordinate of the upper-left vertex of the
* visibility rectangle
* @param width
* the width of the visibility rectangle
* @param height
* the height of the visibility rectangle
*/
public XImage(String url, int left, int top, int width, int height) {
super(url, left, top, width, height);
}
}