/**
 * <copyright>
 * 
 * Copyright (c) 2009-2010 Thales Corporate Services S.A.S. and other
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-v2.0
 *
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 * Thales Corporate Services S.A.S - initial API and implementation
 * XiaoRu Chen, Soyatec
 * 
 * </copyright>
 */

package org.eclipse.egf.pattern.ui;

/**
 * @author XiaoRu Chen - Soyatec
 */
public interface ImageShop {

    public static final String IMG_COMPARE = "obj16/compare.gif"; //$NON-NLS-1$

    public static final String IMG_PLUGIN_MF_OBJ = "obj16/plugin_mf_obj.gif"; //$NON-NLS-1$

    public static final String IMG_LOCALVARIABLE_OBJ = "obj16/localvariable_obj.gif"; //$NON-NLS-1$

    public static final String IMG_METHPUB_OBJ = "obj16/methpub_obj.gif"; //$NON-NLS-1$

    public static final String IMG_HELP = "obj16/help.gif"; //$NON-NLS-1$

    public static final String IMG_INNERCLASS_PUBLIC_OBJ = "obj16/innerclass_public_obj.gif"; //$NON-NLS-1$

    public static final String IMG_METHOD_OVERRIDE = "obj16/method_override.png"; //$NON-NLS-1$

    public static final String IMG_KIND_METHODCALL = "obj16/kind_methodCall.gif"; //$NON-NLS-1$

    public static final String IMG_KIND_PATTERNCALL = "obj16/kind_patternCall.gif"; //$NON-NLS-1$

    public static final String IMG_KIND_PATTERNINJECTEDCALL = "obj16/kind_patternInjectedCall.gif"; //$NON-NLS-1$

    public static final String IMG_KIND_BACKCALL = "obj16/kind_backCall.gif"; //$NON-NLS-1$

    public static final String IMG_KIND_SUPERPATTERNCALL = "obj16/kind_superPatternCall.gif"; //$NON-NLS-1$

    public static final String IMG_OVER_OBJ = "obj16/over_obj.gif"; //$NON-NLS-1$

    public static final String IMG_CLASS_OBJ = "obj16/class_obj.gif"; //$NON-NLS-1$

    public static final String IMG_ADD_OBJ = "obj16/add.gif"; //$NON-NLS-1$

    public static final String IMG_EDIT_OBJ = "obj16/edit.gif"; //$NON-NLS-1$

    public static final String IMG_DELETE_OBJ = "obj16/delete.gif"; //$NON-NLS-1$

    public static final String IMG_DOWNWARD_OBJ = "obj16/downward.gif"; //$NON-NLS-1$

    public static final String IMG_UPWARD_OBJ = "obj16/upward.gif"; //$NON-NLS-1$

    public static final String IMG_METHOD = "obj16/method.gif"; //$NON-NLS-1$

    public static final String IMG_METHOD_CONTENT_EDIT = "obj16/method_content_edit.gif"; //$NON-NLS-1$

    public static final String IMG_VARIABLE = "obj16/variable.gif"; //$NON-NLS-1$

    public static final String IMG_QUERY_SET = "obj16/query_set.gif"; //$NON-NLS-1$

    public static final String IMG_PARAMETER_OBJ = "obj16/parameter_obj.gif"; //$NON-NLS-1$

    public static final String IMG_VARIABLE_OBJ = "obj16/variable_obj.gif"; //$NON-NLS-1$

    public static final String IMG_COPY_OBJ = "obj16/copy.gif"; //$NON-NLS-1$

}
