Package org.springframework.ide.eclipse.beans.ui.editor.outline.bean

Source Code of org.springframework.ide.eclipse.beans.ui.editor.outline.bean.BeansOutlineLabelProvider

/*******************************************************************************
* Copyright (c) 2006, 2008 Spring IDE Developers
* All rights reserved. This program and the accompanying materials
* are 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:
*     Spring IDE Developers - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.beans.ui.editor.outline.bean;

import org.eclipse.swt.graphics.Image;
import org.eclipse.wst.xml.core.internal.document.CommentImpl;
import org.eclipse.wst.xml.ui.internal.contentoutline.JFaceNodeLabelProvider;
import org.springframework.ide.eclipse.beans.core.BeansTags;
import org.springframework.ide.eclipse.beans.core.BeansTags.Tag;
import org.springframework.ide.eclipse.beans.ui.BeansUIImages;
import org.springframework.ide.eclipse.beans.ui.editor.outline.BeansContentOutlineConfiguration;
import org.springframework.ide.eclipse.beans.ui.model.BeansModelImages;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;


/**
* @author Christian Dupuis
* @author Torsten Juergeleit
*/
@SuppressWarnings("restriction")
public class BeansOutlineLabelProvider extends JFaceNodeLabelProvider {

  @Override
  public Image getImage(Object object) {
    // Create Spring beans label image
    Node node = (Node) object;
    String nodeName = node.getLocalName();
    NamedNodeMap attributes = node.getAttributes();

    // Root elements (alias, import and bean)
    if ("alias".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_ALIAS);
    }
    if ("import".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_IMPORT);
    }
    if ("bean".equals(nodeName)) {
      int flags = 0;
      if (attributes.getNamedItem("parent") != null) {
        flags |= BeansModelImages.FLAG_CHILD;
      }
      else if (attributes.getNamedItem("factory-bean") != null
          || attributes.getNamedItem("factory-method") != null) {
        flags |= BeansModelImages.FLAG_FACTORY;
      }
      Image image = BeansUIImages.getImage(BeansUIImages.IMG_OBJS_BEAN);
      return BeansModelImages.getDecoratedImage(image, flags);
    }
    if ("beans".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_CONFIG);
    }

    // Bean elements
    if ("constructor-arg".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_CONSTRUCTOR);
    }
    if ("property".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_PROPERTY);
    }
    if ("lookup-method".equals(nodeName) || "replaced-method".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_METHOD_OVERRIDE);
    }

    // Misc elements
    if ("list".equals(nodeName) || "set".equals(nodeName)
        || "map".equals(nodeName) || "props".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_COLLECTION);
    }
    if ("ref".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_BEAN_REF);
    }
    if ("description".equals(nodeName)) {
      return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_DESCRIPTION);
    }
    return null;
  }

  @Override
  public String getText(Object o) {
    // Create Spring beans label text
    Node node = (Node) o;
    NamedNodeMap attrs = node.getAttributes();
    Node attr;
    String text = "";

    // Root elements (alias, import and bean)
    Tag tag = BeansTags.getTag(node);
    if (tag == Tag.IMPORT) {
      attr = attrs.getNamedItem("resource");
      if (attr != null) {
        text = attr.getNodeValue();
      }
    }
    else if (tag == Tag.ALIAS) {
      attr = attrs.getNamedItem("name");
      if (attr != null) {
        text = attr.getNodeValue();
      }
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("alias");
        if (attr != null) {
          text += " \"" + attr.getNodeValue() + "\"";
        }
      }
    }
    else if (tag == Tag.BEANS) {
      text = "beans";
    }
    else if (tag == Tag.BEAN) {
      boolean hasParent = false;
      attr = attrs.getNamedItem("id");
      if (attr != null) {
        text = attr.getNodeValue();
      }
      else {
        attr = attrs.getNamedItem("name");
        if (attr != null) {
          text = attr.getNodeValue();
        }
        else {
          attr = attrs.getNamedItem("parent");
          if (attr != null) {
            text = "<" + attr.getNodeValue() + ">";
            hasParent = true;
          }
        }
      }
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("class");
        if (attr != null) {
          if (text.length() > 0) {
            text += ' ';
          }
          text += '[' + attr.getNodeValue() + ']';
        }
        if (!hasParent) {
          attr = attrs.getNamedItem("parent");
          if (attr != null) {
            if (text.length() > 0) {
              text += ' ';
            }
            text += '<' + attr.getNodeValue() + '>';
          }
        }
      }
    }
    else if (tag == Tag.CONSTRUCTOR_ARG) {
      attr = attrs.getNamedItem("index");
      if (attr != null) {
        text += " {" + attr.getNodeValue() + "}";
      }
      attr = attrs.getNamedItem("type");
      if (attr != null) {
        text += " [" + attr.getNodeValue() + "]";
      }
      attr = attrs.getNamedItem("ref");
      if (attr != null) {
        text += " <" + attr.getNodeValue() + ">";
      }
      attr = attrs.getNamedItem("value");
      if (attr != null) {
        text += " \"" + attr.getNodeValue() + "\"";
      }
    }
    else if (tag == Tag.PROPERTY) {
      attr = attrs.getNamedItem("name");
      if (attr != null) {
        text = attr.getNodeValue();
      }
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("ref");
        if (attr != null) {
          text += " <" + attr.getNodeValue() + ">";
        }
        attr = attrs.getNamedItem("value");
        if (attr != null) {
          text += " \"" + attr.getNodeValue() + "\"";
        }
      }
    }
    else if (tag == Tag.LOOKUP_METHOD) {
      attr = attrs.getNamedItem("name");
      if (attr != null) {
        text = attr.getNodeValue();
      }
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("bean");
        if (attr != null) {
          text += " <" + attr.getNodeValue() + ">";
        }
      }
    }
    else if (tag == Tag.REPLACE_METHOD) {
      attr = attrs.getNamedItem("name");
      if (attr != null) {
        text = attr.getNodeValue();
      }
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("replacer");
        if (attr != null) {
          text += " <" + attr.getNodeValue() + ">";
        }
      }
    }
    else if (tag == Tag.REF || tag == Tag.IDREF) {
      attr = attrs.getNamedItem("bean");
      if (attr != null) {
        text += "<" + attr.getNodeValue() + ">";
      }
      attr = attrs.getNamedItem("local");
      if (attr != null) {
        text += "<" + attr.getNodeValue() + ">";
      }
      attr = attrs.getNamedItem("parent");
      if (attr != null) {
        text += "<" + attr.getNodeValue() + ">";
      }
    }
    else if (tag == Tag.VALUE) {
      text = node.getLocalName();
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("type");
        if (attr != null) {
          text += " [" + attr.getNodeValue() + "]";
        }
      }
    }
    else if (tag == Tag.ENTRY) {
      text = node.getLocalName();
      attr = attrs.getNamedItem("key");
      if (attr != null) {
        text += " \"" + attr.getNodeValue() + "\"";
      }
      else {
        attr = attrs.getNamedItem("key-ref");
        if (attr != null) {
          text += " <" + attr.getNodeValue() + ">";
        }
      }
      if (BeansContentOutlineConfiguration.isShowAttributes()) {
        attr = attrs.getNamedItem("value");
        if (attr != null) {
          text += " \"" + attr.getNodeValue() + "\"";
        }
      }
    }
    else if (tag == Tag.PROP) {
      text = node.getLocalName();
      attr = node.getFirstChild();
      if (attr != null && attr.getNodeType() == Node.TEXT_NODE) {
        text += " \"" + attr.getNodeValue() + "\"";
      }
    }
    else if (tag == Tag.COMMENT) {
      text = super.getText(o);
      text += " <";
      text += ((CommentImpl) o).getNodeValue().trim();
      text += '>';
    }
    else if (tag != Tag.UNKNOWN) {
      text = node.getLocalName();
    }
   
    return text;
  }
}
TOP

Related Classes of org.springframework.ide.eclipse.beans.ui.editor.outline.bean.BeansOutlineLabelProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.