/** * Copyright (C) 2011 Brian Ferris <bdferris@onebusaway.org> * * 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.onebusaway.presentation.impl.resources; import java.io.IOException; import java.io.InputStream; import java.net.URL; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeUri; public class ImageResourceImpl extends ResourcePrototypeImpl implements ImageResource, ResourceWithUrl, LocalResource { private String _url; public ImageResourceImpl(ClientBundleContext context, ClientBundleImpl parentBundle, String name, URL localUrl) { super(context, parentBundle, name); _localUrl = localUrl; } public String getUrl() { if (_url == null) refresh(); return _url; } @Override public int getHeight() { // TODO Auto-generated method stub return 0; } @Override public int getLeft() { // TODO Auto-generated method stub return 0; } @Override public int getTop() { // TODO Auto-generated method stub return 0; } @Override public String getURL() { return getUrl(); } @Override public int getWidth() { // TODO Auto-generated method stub return 0; } @Override public boolean isAnimated() { // TODO Auto-generated method stub return false; } @Override public SafeUri getSafeUri() { // TODO Auto-generated method stub return null; } @Override protected void refresh() { super.refresh(); try { InputStream is = _localUrl.openStream(); String key = ResourceSupport.getHash(is); is.close(); String extension = getExtension(); _url = constructURL(key, extension, this); } catch (IOException ex) { throw new IllegalStateException(ex); } } /***************************************************************************** * Private Methods ****************************************************************************/ private String getExtension() { String path = _localUrl.getPath(); int index = path.lastIndexOf('.'); if (index != -1) return path.substring(index + 1); return ""; } }