// Scale to the size of the browser window's client area.
double scaleFactor = photo.getScaleFactor(Window.getClientWidth(),
Window.getClientHeight());
final int width = (int) (photo.getWidth() * scaleFactor);
Image image = new Image(photo.getURL(width));
FocusPanel focusPanel = new FocusPanel(image);
focusPanel.addKeyDownHandler(new KeyDownHandler() {
public void onKeyDown(KeyDownEvent event) {
switch (event.getNativeKeyCode()) {
case KeyCodes.KEY_RIGHT:
showNearbyPhoto(true);
break;
case KeyCodes.KEY_LEFT:
showNearbyPhoto(false);
break;
case KeyCodes.KEY_ESCAPE:
hidePhoto();
break;
}
}
});
imagePopup.setWidget(focusPanel);
image.setPixelSize(width, (int) (photo.getHeight() * scaleFactor));
final Element imageElement = image.getElement();
focusPanel.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
showNearbyPhoto(event.getRelativeX(imageElement) >= width / 2);
}
});
imagePopup.setGlassEnabled(true);
imagePopup.center();
focusPanel.setFocus(true);
}