Java tutorial
/************************************************************************************ * Copyright (c) 2008 William Chen. * * * * 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 * * * * Use is subject to the terms of Eclipse Public License v1.0. * * * * Contributors: * * William Chen - initial API and implementation. * ************************************************************************************/ package org.dyno.visual.swing.base; import java.awt.Component; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import javax.swing.Icon; import javax.swing.ImageIcon; import org.dyno.visual.swing.VisualSwingPlugin; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaModelException; public class ResourceIcon implements Icon { private String path; private Icon icon; public ResourceIcon(Icon icon, String path) { this.path = path; this.icon = icon; } public ResourceIcon(String p) { this.path = p; IJavaProject prj = VisualSwingPlugin.getCurrentProject(); IProject project = prj.getProject(); IResource resource = project.findMember(new Path(p)); if (resource == null) { IPackageFragmentRoot[] roots; try { roots = prj.getPackageFragmentRoots(); for (IPackageFragmentRoot root : roots) { if (!root.isArchive()) { String src = root.getElementName(); src = "/" + src + p; resource = project.findMember(new Path(src)); if (resource != null) { String ext = resource.getFileExtension(); if (ext.equals("gif") || ext.equals("png") || ext.equals("jpg")) { IPath fullPath = project.getWorkspace().getRoot().getRawLocation() .append(resource.getFullPath()); String fullpath = fullPath.toString(); Image image = Toolkit.getDefaultToolkit().getImage(fullpath); icon = new ImageIcon(image); } else { break; } } } } } catch (JavaModelException e) { VisualSwingPlugin.getLogger().error(e); } } } public int getIconHeight() { return icon == null ? 0 : icon.getIconHeight(); } public int getIconWidth() { return icon == null ? 0 : icon.getIconWidth(); } public void paintIcon(Component c, Graphics g, int x, int y) { if (icon == null) { } else { icon.paintIcon(c, g, x, y); } } public String toString() { return path; } }