package ctagsinterface.main; import java.util.Hashtable; import java.util.Set; import javax.swing.ImageIcon; public class Tag { private String name; private String file; private int line; private String pattern; private String kind; private Hashtable<String, String> extensions; private Hashtable<String, String> attachments; static private String LINE_KEY = String.valueOf("line"); static private String KIND_KEY = String.valueOf("kind"); static private String [] namespaceExtensions = new String [] { "class", "struct", "union", "interface" }; public Tag(String name, String file, String pattern) { this.name = name; this.file = file; this.pattern = pattern; } public void setExtensions(Hashtable<String, String> extensions) { this.extensions = extensions; kind = extensions.containsKey(KIND_KEY) ? extensions.get(KIND_KEY) : ""; line = extensions.containsKey(LINE_KEY) ? Integer.valueOf(extensions.get(LINE_KEY)) : -1; } public void setAttachments(Hashtable<String, String> attachments) { this.attachments = attachments; } public String getName() { return name; } public String getFile() { return file; } public String getPattern() { return pattern; } public int getLine() { return line; } public String getKind() { return kind; } public String getExtension(String name) { return extensions.get(name); } public Set<String> getExtensions() { return extensions.keySet(); } public Set<String> getAttachments() { return attachments.keySet(); } public String getAttachment(String name) { return attachments.get(name); } public ImageIcon getIcon() { return CtagsInterfacePlugin.getIcon(this); } public String getNamespace() { for (int i = 0; i < namespaceExtensions.length; i++) { String ext = getExtension(namespaceExtensions[i]); if (ext != null) return ext; } return null; } public String getQualifiedName() { String ns = getNamespace(); if (ns == null) return getName(); return "(" + ns + ") " + getName(); } public void setFile(String file) { this.file = file; } }