org.fife.rsta.ac.java.IconFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of languagesupport Show documentation
Show all versions of languagesupport Show documentation
A library adding code completion and other advanced features for Java, JavaScript, Perl, and other languages to RSyntaxTextArea.
/*
* 03/21/2010
*
* Copyright (C) 2010 Robert Futrell
* robert_futrell at users.sourceforge.net
* http://fifesoft.com/rsyntaxtextarea
*
* This library is distributed under a modified BSD license. See the included
* RSTALanguageSupport.License.txt file for details.
*/
package org.fife.rsta.ac.java;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.swing.Icon;
import javax.swing.ImageIcon;
/**
* Holds icons used by Java auto-completion.
*
* @author Robert Futrell
* @version 1.0
*/
public class IconFactory {
public static final String SOURCE_FILE_ICON = "sourceFileIcon";
public static final String PACKAGE_ICON = "packageIcon";
public static final String IMPORT_ROOT_ICON = "importRootIcon";
public static final String IMPORT_ICON = "importIcon";
public static final String DEFAULT_CLASS_ICON = "defaultClassIcon";
public static final String DEFAULT_INTERFACE_ICON = "defaultInterfaceIcon";
public static final String CLASS_ICON = "classIcon";
public static final String ENUM_ICON = "enumIcon";
public static final String ENUM_PROTECTED_ICON = "enumProtectedIcon";
public static final String ENUM_PRIVATE_ICON = "enumPrivateIcon";
public static final String ENUM_DEFAULT_ICON = "enumDefaultIcon";
public static final String INNER_CLASS_PUBLIC_ICON = "innerClassPublicIcon";
public static final String INNER_CLASS_PROTECTED_ICON = "innerClassProtectedIcon";
public static final String INNER_CLASS_PRIVATE_ICON = "innerClassPrivateIcon";
public static final String INNER_CLASS_DEFAULT_ICON = "innerClassDefaultIcon";
public static final String INTERFACE_ICON = "interfaceIcon";
public static final String JAVADOC_ITEM_ICON = "javadocItemIcon";
public static final String LOCAL_VARIABLE_ICON = "localVariableIcon";
public static final String METHOD_PUBLIC_ICON = "methodPublicIcon";
public static final String METHOD_PROTECTED_ICON = "methodProtectedIcon";
public static final String METHOD_PRIVATE_ICON = "methodPrivateIcon";
public static final String METHOD_DEFAULT_ICON = "methodDefaultIcon";
public static final String TEMPLATE_ICON = "templateIcon";
public static final String FIELD_PUBLIC_ICON = "fieldPublicIcon";
public static final String FIELD_PROTECTED_ICON = "fieldProtectedIcon";
public static final String FIELD_PRIVATE_ICON = "fieldPrivateIcon";
public static final String FIELD_DEFAULT_ICON = "fieldDefaultIcon";
public static final String CONSTRUCTOR_ICON = "constructorIcon";
public static final String DEPRECATED_ICON = "deprecatedIcon";
public static final String ABSTRACT_ICON = "abstractIcon";
public static final String FINAL_ICON = "finalIcon";
public static final String STATIC_ICON = "staticIcon";
private Map iconMap;
private static final IconFactory INSTANCE = new IconFactory();
private IconFactory() {
iconMap = new HashMap();
iconMap.put(SOURCE_FILE_ICON, loadIcon("jcu_obj.gif"));
iconMap.put(PACKAGE_ICON, loadIcon("package_obj.gif"));
iconMap.put(IMPORT_ROOT_ICON, loadIcon("impc_obj.gif"));
iconMap.put(IMPORT_ICON, loadIcon("imp_obj.gif"));
iconMap.put(DEFAULT_CLASS_ICON, loadIcon("class_default_obj.gif"));
iconMap.put(DEFAULT_INTERFACE_ICON, loadIcon("int_default_obj.gif"));
iconMap.put(CLASS_ICON, loadIcon("class_obj.gif"));
iconMap.put(ENUM_ICON, loadIcon("enum_obj.gif"));
iconMap.put(ENUM_PROTECTED_ICON, loadIcon("enum_protected_obj.gif"));
iconMap.put(ENUM_PRIVATE_ICON, loadIcon("enum_private_obj.gif"));
iconMap.put(ENUM_DEFAULT_ICON, loadIcon("enum_default_obj.gif"));
iconMap.put(INNER_CLASS_PUBLIC_ICON, loadIcon("innerclass_public_obj.gif"));
iconMap.put(INNER_CLASS_PROTECTED_ICON, loadIcon("innerclass_protected_obj.gif"));
iconMap.put(INNER_CLASS_PRIVATE_ICON, loadIcon("innerclass_private_obj.gif"));
iconMap.put(INNER_CLASS_DEFAULT_ICON, loadIcon("innerclass_default_obj.gif"));
iconMap.put(INTERFACE_ICON, loadIcon("int_obj.gif"));
iconMap.put(JAVADOC_ITEM_ICON, loadIcon("jdoc_tag_obj.gif"));
iconMap.put(LOCAL_VARIABLE_ICON, loadIcon("localvariable_obj.gif"));
iconMap.put(METHOD_PUBLIC_ICON, loadIcon("methpub_obj.gif"));
iconMap.put(METHOD_PROTECTED_ICON, loadIcon("methpro_obj.gif"));
iconMap.put(METHOD_PRIVATE_ICON, loadIcon("methpri_obj.gif"));
iconMap.put(METHOD_DEFAULT_ICON, loadIcon("methdef_obj.gif"));
iconMap.put(TEMPLATE_ICON, loadIcon("template_obj.gif"));
iconMap.put(FIELD_PUBLIC_ICON, loadIcon("field_public_obj.gif"));
iconMap.put(FIELD_PROTECTED_ICON, loadIcon("field_protected_obj.gif"));
iconMap.put(FIELD_PRIVATE_ICON, loadIcon("field_private_obj.gif"));
iconMap.put(FIELD_DEFAULT_ICON, loadIcon("field_default_obj.gif"));
iconMap.put(CONSTRUCTOR_ICON, loadIcon("constr_ovr.gif"));
iconMap.put(DEPRECATED_ICON, loadIcon("deprecated.gif"));
iconMap.put(ABSTRACT_ICON, loadIcon("abstract_co.gif"));
iconMap.put(FINAL_ICON, loadIcon("final_co.gif"));
iconMap.put(STATIC_ICON, loadIcon("static_co.gif"));
}
public Icon getIcon(String key) {
return getIcon(key, false);
}
public Icon getIcon(String key, boolean deprecated) {
Icon icon = (Icon)iconMap.get(key);
if (deprecated) { // TODO: Optimize me
DecoratableIcon di = new DecoratableIcon(16, icon);
di.setDeprecated(deprecated);
icon = di;
}
return icon;
}
public Icon getIcon(IconData data) {
// TODO: Optimize me
DecoratableIcon icon = new DecoratableIcon(16, getIcon(data.getIcon()));
icon.setDeprecated(data.isDeprecated());
if (data.isAbstract()) {
icon.addDecorationIcon(getIcon(ABSTRACT_ICON));
}
if (data.isStatic()) {
icon.addDecorationIcon(getIcon(STATIC_ICON));
}
if (data.isFinal()) {
icon.addDecorationIcon(getIcon(FINAL_ICON));
}
return icon;
}
public static IconFactory get() {
return INSTANCE;
}
private Icon loadIcon(String name) {
URL res = getClass().getResource("img/" + name);
if (res==null) {
// IllegalArgumentException is what would be thrown if res
// was null anyway, we're just giving the actual arg name to
// make the message more descriptive
throw new IllegalArgumentException("icon not found: img/" + name);
}
return new ImageIcon(res);
}
public static interface IconData {
/**
* Returns the main icon to use when rendering this member's completion.
* This icon will be decorated appropriately based on whether it is
* abstract, deprecated, final, static, or any of the above.
*
* @return The icon to use.
*/
public String getIcon();
public boolean isAbstract();
public boolean isDeprecated();
public boolean isFinal();
public boolean isStatic();
}
}