/*******************************************************************************
* 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.aop;
import org.eclipse.swt.graphics.Image;
import org.eclipse.wst.xml.ui.internal.contentoutline.JFaceNodeLabelProvider;
import org.springframework.ide.eclipse.beans.ui.BeansUIImages;
import org.springframework.ide.eclipse.beans.ui.editor.outline.BeansContentOutlineConfiguration;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
/**
* @author Christian Dupuis
* @author Torsten Juergeleit
*/
@SuppressWarnings("restriction")
public class AopOutlineLabelProvider extends JFaceNodeLabelProvider {
@Override
public Image getImage(Object object) {
Node node = (Node) object;
String nodeName = node.getLocalName();
if ("config".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AOP_CONFIG);
}
if ("aspect".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_ASPECT);
}
if ("before".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_BEFORE_ADVICE);
}
if ("after".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AFTER_ADVICE);
}
if ("around".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AROUND_ADVICE);
}
if ("after-returning".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AFTER_ADVICE);
}
if ("after-throwing".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AFTER_ADVICE);
}
if ("pointcut".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_POINTCUT);
}
if ("advisor".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_ADVICE);
}
if ("aspectj-autoproxy".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AOP_CONFIG);
}
if ("include".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AOP_CONFIG);
}
if ("declare-parents".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_INTRODUCTION);
}
if ("scoped-proxy".equals(nodeName)) {
return BeansUIImages.getImage(BeansUIImages.IMG_OBJS_AOP_CONFIG);
}
return null;
}
@Override
public String getText(Object o) {
// Create Spring beans label text
Node node = (Node) o;
NamedNodeMap attrs = node.getAttributes();
Node attr;
String shortNodeName = node.getLocalName();
String text = shortNodeName;
if ("config".equals(shortNodeName)) {
text += " ";
if (BeansContentOutlineConfiguration.isShowAttributes()) {
attr = attrs.getNamedItem("proxy-target-class");
if (attr != null) {
text += attr.getNodeValue();
}
}
}
else if ("aspect".equals(shortNodeName)) {
text += " ";
if (BeansContentOutlineConfiguration.isShowAttributes()) {
attr = attrs.getNamedItem("id");
if (attr != null) {
text += attr.getNodeValue() + " ";
}
attr = attrs.getNamedItem("ref");
if (attr != null) {
text += "<" + attr.getNodeValue() + "> ";
}
}
}
else if ("advisor".equals(shortNodeName)) {
text += " ";
if (BeansContentOutlineConfiguration.isShowAttributes()) {
attr = attrs.getNamedItem("id");
if (attr != null) {
text += attr.getNodeValue() + " ";
}
attr = attrs.getNamedItem("advice-ref");
if (attr != null) {
text += "<" + attr.getNodeValue() + "> ";
}
attr = attrs.getNamedItem("pointcut-ref");
if (attr != null) {
text += "<" + attr.getNodeValue() + "> ";
}
}
}
else if ("before".equals(shortNodeName)
|| "after".equals(shortNodeName)
|| "after-returning".equals(shortNodeName)
|| "after-throwing".equals(shortNodeName)
|| "around".equals(shortNodeName)) {
text += " ";
if (BeansContentOutlineConfiguration.isShowAttributes()) {
attr = attrs.getNamedItem("method");
if (attr != null) {
text += attr.getNodeValue() + " ";
}
attr = attrs.getNamedItem("pointcut");
if (attr != null) {
text += "{" + attr.getNodeValue() + "} ";
}
}
}
else if ("pointcut".equals(shortNodeName)) {
text += " ";
if (BeansContentOutlineConfiguration.isShowAttributes()) {
attr = attrs.getNamedItem("id");
if (attr != null) {
text += attr.getNodeValue() + " ";
}
}
}
else if ("include".equals(shortNodeName)) {
text += " ";
if (BeansContentOutlineConfiguration.isShowAttributes()) {
attr = attrs.getNamedItem("name");
if (attr != null) {
text += "[" + attr.getNodeValue() + "]";
}
}
}
return text;
}
}