package icons;

import com.intellij.openapi.util.IconLoader;

import javax.swing.*;

/**
 * NOTE THIS FILE IS AUTO-GENERATED
 * DO NOT EDIT IT BY HAND, run build/scripts/icons.gant instead
 */
public class AntIcons {
  private static Icon load(String path) {
    return IconLoader.getIcon(path, AntIcons.class);
  }

  public static final Icon AntBuildXml = load("/icons/AntBuildXml.png"); // 16x16
  public static final Icon AntInstallation = load("/icons/antInstallation.png"); // 16x16
  public static final Icon Build = load("/icons/build.png"); // 16x16
  public static final Icon ChangeView = load("/icons/changeView.png"); // 16x16
  public static final Icon Message = load("/icons/message.png"); // 16x16
  public static final Icon MetaTarget = load("/icons/metaTarget.png"); // 16x16
  public static final Icon Properties = load("/icons/properties.png"); // 16x16
  public static final Icon Target = load("/icons/target.png"); // 16x16
  public static final Icon Task = load("/icons/task.png"); // 16x16
  public static final Icon Verbose = load("/icons/verbose.png"); // 16x16
}
