Package bndtools.release.ui

Source Code of bndtools.release.ui.BundleTreeImages

/*******************************************************************************
* Copyright (c) 2012 Per Kr. Soreide.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Per Kr. Soreide - initial API and implementation
*******************************************************************************/
package bndtools.release.ui;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;

import bndtools.release.Activator;
import bndtools.release.ui.OverlayImage.Overlay;

public class BundleTreeImages {

  public static final String IMPORT_EXPORT = "importexport16"; //$NON-NLS-1$
  public static final String DELTA = "delta16"; //$NON-NLS-1$
  public static final String TYPES = "types16"; //$NON-NLS-1$
  public static final String MODIFIERS = "modifiers16"; //$NON-NLS-1$

  public static final String BUNDLE_PATH = "icons/bundletree"; //$NON-NLS-1$
 
  // Used for testing outside eclipse
  private static ImageRegistry imageRegistry;
 
  public static Image resolveImage(String type, String delta, String impExp, String modifier) {
    //String tmpType = type;
    String tmpType = TYPES + '_' + type;
    Image imgType = getImageRegistry().get(tmpType);
    if (imgType == null) {
        tmpType = TYPES + "_unknown"; //$NON-NLS-1$
      imgType = getImageRegistry().get(tmpType);
      if (imgType == null) {
        return null;
      }
    }
    List<Overlay> overlays = new ArrayList<Overlay>();
    Image img = getImageRegistry().get(IMPORT_EXPORT + '_' + impExp);
    if (img != null) {
      overlays.add(new Overlay(IMPORT_EXPORT + '_' + impExp));
    }
    img = getImageRegistry().get(DELTA + '_' + delta);
    if (img != null) {
        Overlay overlay = new Overlay(DELTA + '_' + delta);
        overlay.setXValue(1);
            overlay.setYValue(1);
      overlays.add(overlay);
    }
    img = getImageRegistry().get(MODIFIERS + '_' + modifier);
    if (img != null) {
      overlays.add(new Overlay(MODIFIERS + '_' + modifier));
    }
    OverlayImage descr = new OverlayImage(getImageRegistry(), tmpType, overlays);
    return descr.getImage();
  }

  public static synchronized ImageRegistry getImageRegistry() {
    if (Activator.getDefault() == null) {
            if (imageRegistry == null) {
                imageRegistry = new ImageRegistry();
                initImageRegistry(imageRegistry);
            }
            return imageRegistry;
    }
    return Activator.getDefault().getImageRegistry();
  }

  private static void initImageRegistry(ImageRegistry registry) {
    File root = new File("resources/" + BundleTreeImages.BUNDLE_PATH); //$NON-NLS-1$
    try {
      loadImages(root, BundleTreeImages.DELTA, registry);
      loadImages(root, BundleTreeImages.IMPORT_EXPORT, registry);
      loadImages(root, BundleTreeImages.MODIFIERS, registry);
      loadImages(root, BundleTreeImages.TYPES, registry);
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }

  }
  private static void loadImages(File iconRootDirectory, String parent, ImageRegistry registry) throws MalformedURLException {
    File icons = new File(iconRootDirectory, parent);
    File[] files = icons.listFiles();
    for (File file : files) {
      if (file.isFile() && file.getName().endsWith(".gif")) { //$NON-NLS-1$
        URL url = file.toURI().toURL();
        String name = getResourceName(url);
        ImageDescriptor id = ImageDescriptor.createFromURL(url);
        registry.put(parent + "_" + name, id); //$NON-NLS-1$
      }
    }
  }
  private static String getResourceName(URL url) {
      int idx = url.getPath().lastIndexOf('/');
    String name = url.getPath().substring(idx + 1);
    return name.substring(0, name.lastIndexOf('.'));
  }
}
TOP

Related Classes of bndtools.release.ui.BundleTreeImages

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.