Package com.aelitis.azureus.ui.swt.utils

Source Code of com.aelitis.azureus.ui.swt.utils.ContentNetworkUI

/**
* Created on Dec 2, 2008
*
* Copyright 2008 Vuze, Inc.  All rights reserved.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/

package com.aelitis.azureus.ui.swt.utils;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;

import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.ui.swt.Utils;

import com.aelitis.azureus.core.cnetwork.ContentNetwork;
import com.aelitis.azureus.core.cnetwork.ContentNetworkManagerFactory;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
import com.aelitis.azureus.ui.utils.ImageBytesDownloader;
import com.aelitis.azureus.ui.utils.ImageBytesDownloader.ImageDownloaderListener;
import com.aelitis.azureus.util.ContentNetworkUtils;

/**
* @author TuxPaper
* @created Dec 2, 2008
*
*/
public class ContentNetworkUI
{
  // If we ever clear mapImages, don't forget to ImageLoderFactory.releaseImage if needed
  public static Map<Long, Image> mapImages = new HashMap<Long, Image>();

  /**
   * @param cn
   * @param cnImageLoadedListener
   *
   * @since 4.0.0.5
   */
  public static Image loadImage(final long contentNetworkID,
      final ContentNetworkImageLoadedListener cnImageLoadedListener) {
    Image image = mapImages.get(new Long(contentNetworkID));
    if (image != null && cnImageLoadedListener != null) {
      cnImageLoadedListener.contentNetworkImageLoaded(contentNetworkID, image, true);
      return image;
    }

    ContentNetwork cn = ContentNetworkManagerFactory.getSingleton().getContentNetwork(
        contentNetworkID);
    if (cn == null) {
      return image;
    }
    String imgURL = ContentNetworkUtils.getUrl(cn, ContentNetwork.SERVICE_GET_ICON);
    if (imgURL != null) {
      final File cache = new File(SystemProperties.getUserPath(), "cache"
          + File.separator + imgURL.hashCode() + ".ico");
      boolean loadImage = true;
      if (cache.exists()) {
        try {
          FileInputStream fis = new FileInputStream(cache);

          try {
            byte[] imageBytes = FileUtil.readInputStreamAsByteArray(fis);
            InputStream is = new ByteArrayInputStream(imageBytes);
            image = new Image(Display.getCurrent(), is);
            try {
              is.close();
            } catch (IOException e) {
            }
            mapImages.put(new Long(contentNetworkID), image);
            if (cnImageLoadedListener != null) {
              cnImageLoadedListener.contentNetworkImageLoaded(contentNetworkID,
                  image, true);
            }
          } finally {
            fis.close();
          }
          loadImage = false;
        } catch (Throwable e) {
          Debug.printStackTrace(e);
        }

      }
      if (loadImage) {
        ImageBytesDownloader.loadImage(imgURL,
            new ImageBytesDownloader.ImageDownloaderListener() {
              public void imageDownloaded(final byte[] imageBytes) {
                Utils.execSWTThread(new AERunnable() {
                  public void runSupport() {
                    FileUtil.writeBytesAsFile(cache.getAbsolutePath(),
                        imageBytes);
                    InputStream is = new ByteArrayInputStream(imageBytes);
                    Image image = new Image(Display.getCurrent(), is);
                    try {
                      is.close();
                    } catch (IOException e) {
                    }
                    mapImages.put(new Long(contentNetworkID), image);
                    if (cnImageLoadedListener != null) {
                      cnImageLoadedListener.contentNetworkImageLoaded(
                          contentNetworkID, image, false);
                    }
                  }
                });
              }
            });
      }
    } else if (contentNetworkID == ContentNetwork.CONTENT_NETWORK_VUZE
        && cnImageLoadedListener != null) {
      image = ImageLoader.getInstance().getImage("image.sidebar.vuze");
      mapImages.put(new Long(contentNetworkID), image);
      cnImageLoadedListener.contentNetworkImageLoaded(contentNetworkID, image, true);
    }
    return image;
  }
 
 

  public static interface ContentNetworkImageLoadedListener
  {
    public void contentNetworkImageLoaded(Long contentNetworkID, Image image, boolean wasReturned);
  }

}
TOP

Related Classes of com.aelitis.azureus.ui.swt.utils.ContentNetworkUI

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.