/*******************************************************************************
 * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
 * Distributed under license by Red Hat, Inc. All rights reserved.
 * This program is made available under the terms of the
 * Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Exadel, Inc. and Red Hat, Inc. - initial API and implementation
 ******************************************************************************/ 
package org.jboss.tools.common.meta.impl;

import java.util.*;
import org.w3c.dom.*;
import org.jboss.tools.common.meta.*;
import org.jboss.tools.common.model.*;

public class XEntityRendererImpl extends XMetaElementImpl implements XEntityRenderer{
    protected String[] m_Icons;
    protected Hashtable<String,XIconImpl> icons = new Hashtable<String,XIconImpl>();

    public XEntityRendererImpl() {}

    public String getProperty(String name) {
        return ""; //$NON-NLS-1$
    }
    
    public String[] getIconNames() {
        return m_Icons;
    }

    public String getIconInfo(String iconName) {
        XIconImpl ii = icons.get(iconName);
        return (ii == null) ? null : ii.getInfo();
    }

    public String getTitle(XModelObject object){
        return object.getPresentationString();
    }

    public void load(Element element) {
        loadProperties(element);
        loadIcons(element);
    }

    protected void loadProperties(Element element) {}

    private void loadIcons(Element element) {
        Element ic = XMetaDataLoader.getUniqueChild(element, ICONS);
        if(ic == null) return;
        Element[] cs = XMetaDataLoader.getChildrenElements(ic, ICON);
        ArrayList<String> v = new ArrayList<String>();
        for (int i = 0; i < cs.length; i++) {
            XIconImpl mi = new XIconImpl();
            mi.load(cs[i]);
            String tp = mi.getType();
            if(tp != null && tp.length() > 0) {
                icons.put(mi.getType(), mi);
                v.add(tp);
            }
        }
        m_Icons = v.toArray(new String[0]);
    }

}

class XIconImpl implements XMetaDataConstants {
    protected String type;
    protected String info;

    public XIconImpl() {}

    protected void load(Element element) {
        type = element.getAttribute(ICON_TYPE);
        info = element.getAttribute(ICON_INFO);
    }

    public String getType() {
        return type;
    }

    public String getInfo() {
        return info;
    }

}

