package com.limegroup.gnutella.gui.actions; import java.util.ArrayList; import java.util.Iterator; import javax.swing.Action; import com.limegroup.gnutella.gui.search.NamedMediaType; import com.limegroup.gnutella.gui.xml.XMLUtils; import com.limegroup.gnutella.util.NameValue; import com.limegroup.gnutella.xml.LimeXMLDocument; import com.limegroup.gnutella.xml.LimeXMLSchema; import com.limegroup.gnutella.xml.SchemaFieldInfo; /** * Static action helper class. * */ public class ActionUtils { /** * Creates an array of {@link SearchXMLFieldAction SearchXMLFieldActions} * for an xml doc. * <p> * It takes all fields and creates an action for each field whose value is * not <code>null</code> and longer than 2 characters. * @param doc * @return */ public static Action[] createSearchActions(LimeXMLDocument doc) { LimeXMLSchema schema = doc.getSchema(); ArrayList actions = new ArrayList(); NamedMediaType nm = NamedMediaType.getFromDescription(doc.getSchemaDescription()); for (Iterator i = schema.getCanonicalizedFields().iterator(); i.hasNext();) { SchemaFieldInfo field = (SchemaFieldInfo) i.next(); String name = field.getCanonicalizedFieldName(); String value = doc.getValue(name); if (value == null || value.length() < 3 || field.isHidden()) continue; NameValue displayPair = XMLUtils.getDisplayPair(field, value, schema); actions.add(new SearchXMLFieldAction(displayPair, name, value, nm)); } return (Action[])actions.toArray(new Action[0]); } }