/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2000-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

/*
 * @(#)AGraphics.java	1.19 06/27/07
 */ 

package com.sun.messaging.jmq.admin.apps.console;

import java.io.File;
import javax.swing.ImageIcon;

import com.sun.messaging.jmq.admin.util.Globals;
import com.sun.messaging.jmq.Version;


/** 
 * This class initializes all the images used by the iMQ admin
 * console.
 *
 * This class is also used to access the images. Here is an
 * example:
 * <PRE>
 *     JLabel l = new JLabel(AGraphics.adminImages[AGraphics.SPLASH_SCREEN]);
 * </PRE>
 */
public class AGraphics  {

    /*
     * Image file names.
     *
     * File names are relative to
     * IMQ_HOME/lib/images/admin
     * Defaults to openmq splash.
     */
    private static String imageFileNames[] = {
	    "AppIcon48x.gif",		/* DESKTOP_ICON */

	    "splash_openmq.gif",	/* SPLASH_SCREEN */

	    "folder.gif",		/* DEFAULT_FOLDER */
	    "dot.gif",			/* DEFAULT_LEAF */
	    "CollectionOfObjectStores16x.gif",		/* OBJSTORE_LIST */
	    "ObjectStore16x.gif",	/* OBJSTORE */
	    "ObjectStoreCFDestination16xList.gif",		/* OBJSTORE_DEST_LIST */
	    "ObjectStoreCFDestination16xList.gif",		/* OBJSTORE_CONN_FAC_LIST */
	    "CollectionOfBrokers16x.gif",		/* BROKER_LIST */
	    "Broker16X.gif",	/* BROKER */
	    "ServiceList16x.gif",	/* BROKER_SERVICE_LIST */
	    "dot.gif",			/* BROKER_SERVICE */
	    "BrokerDestinationList16x.gif",		/* BROKER_DEST_LIST */
	    "dot.gif",			/* BROKER_TOPIC */
	    "folder.gif",		/* BROKER_QUEUE_LIST */
	    "dot.gif",			/* BROKER_QUEUE */
	    "folder.gif",		/* BROKER_LOG_LIST */
	    "dot.gif",			/* BROKER_LOG */

	    "ObjectStoreX16X.gif",	/* OBJSTORE_DISCONNECTED */
	    "BrokerX16X.gif",	/* BROKER_DISCONNECTED */

	    "Add24.gif",		/* ADD */
	    "Delete24.gif",		/* DELETE */
	    "Preferences24.gif",	/* PREFERENCES */
	    "Pause24.gif",		/* PAUSE */
	    "Play24.gif",		/* RESUME */
	    "Properties24.gif",		/* PROPERTIES */
	    "Refresh24.gif",		/* REFRESH */
	    "Restart24x.gif",	/* RESTART */
	    "Shutdown24x.gif",	/* SHUTDOWN */
	    "ExpandAll24x.gif",	/* EXPAND_ALL */
	    "CollapseAll24x.gif",	/* COLLAPSE_ALL */
	    "AdminConnectToObjectStore24x.gif",	/* CONNECT_TO_OBJSTORE */
	    "AdminConnectBroker24x.gif",	/* CONNECT_TO_BROKER */
	    "AdminDisConnectToObjectStore24x.gif",	/* DISCONNECT_FROM_OBJSTORE */
	    "AdminDisConnectBroker24x.gif",	/* DISCONNECT_FROM_BROKER */
	    "Purge24x.gif",				/* PURGE */
	    "BrokerQuery24X.gif",			/* QUERY_BROKER */
	    "AboutBox48x.gif"				/* ABOUT_BOX */
    };

    /*
     * Indices for images
     */

    /*
     * Desktop icon
     */
    public final static int DESKTOP_ICON		= 0;

    /*
     * Splash screen
     */
    public final static int SPLASH_SCREEN		= 1;

    /*
     * Explorer pane tree icons
     */
    public final static int DEFAULT_FOLDER		= 2;
    public final static int DEFAULT_LEAF		= 3;
    public final static int OBJSTORE_LIST		= 4;
    public final static int OBJSTORE			= 5;
    public final static int OBJSTORE_DEST_LIST		= 6;
    public final static int OBJSTORE_DEST		= DEFAULT_LEAF;
    public final static int OBJSTORE_CONN_FAC_LIST	= 7;
    public final static int OBJSTORE_CONN_FAC		= DEFAULT_LEAF;
    public final static int BROKER_LIST			= 8;
    public final static int BROKER			= 9;
    public final static int BROKER_SERVICE_LIST		= 10;
    public final static int BROKER_SERVICE		= 11;
    public final static int BROKER_DEST_LIST		= 12;
    public final static int BROKER_DEST			= 13;
    public final static int BROKER_LOG_LIST		= 14;
    public final static int BROKER_LOG			= DEFAULT_LEAF;

    /*
     * Disconnected server icons
     */
    public final static int OBJSTORE_DISCONNECTED	= 18;
    public final static int BROKER_DISCONNECTED		= 19;

    /*
     * Toolbar/menu icons
     */
    public final static int ADD				= 20;
    public final static int DELETE			= 21;
    public final static int PREFERENCES			= 22;
    public final static int PAUSE			= 23;
    public final static int RESUME			= 24;
    public final static int PROPERTIES			= 25;
    public final static int REFRESH			= 26;
    public final static int RESTART			= 27;
    public final static int SHUTDOWN			= 28;
    public final static int EXPAND_ALL			= 29;
    public final static int COLLAPSE_ALL		= 30;
    public final static int CONNECT_TO_OBJSTORE		= 31;
    public final static int CONNECT_TO_BROKER		= 32;
    public final static int DISCONNECT_FROM_OBJSTORE	= 33;
    public final static int DISCONNECT_FROM_BROKER	= 34;
    public final static int PURGE			= 35;
    public final static int QUERY_BROKER		= 36;
    public final static int ABOUT_BOX			= 37;




    public static ImageIcon	adminImages[];

    private static boolean	imagesLoaded = false;

    public static void loadImages() {
	int		imgTotal;
	String		imgRoot;
	Version		version;

	if (imagesLoaded)
	    return;

	imgTotal = imageFileNames.length;
	adminImages = new ImageIcon [ imgTotal ];
	version = new Version(false);

	/*
	System.out.println("Loading Images...");
	*/

	/*
         * File names are relative to
         * IMQ_HOME/lib/images/admin
	 */
	imgRoot = Globals.JMQ_LIB_HOME
			+ File.separator 
			+ "images"
			+ File.separator 
			+ "admin";

	/*
	 * When loading splash screen, check if commercial product
	 * and load splash_comm instead of default splash_openmq.
    	 */
	for (int i = 0; i < imgTotal; ++i)  {
	    String fileName;

	    if (i == SPLASH_SCREEN && version.isCommercialProduct()) {
	      fileName = imgRoot
			  + File.separator
			  + "splash_comm.gif";
	    } else {
	      fileName = imgRoot
			  + File.separator
			  + imageFileNames[i];
 	    }

	    /*
            System.err.println("loading: " + fileName);
	     */
	    
	    adminImages[i] = new ImageIcon(fileName);
	}

	/*
	System.out.println("  - Images loaded");
	*/
	imagesLoaded = true;
    }
}
