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

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

/*******************************************************************************
* Copyright (c) 2006, 2010 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;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.wst.xml.ui.views.contentoutline.XMLContentOutlineConfiguration;
import org.springframework.ide.eclipse.beans.core.BeansCorePlugin;
import org.springframework.ide.eclipse.beans.core.model.INamespaceDefinition;
import org.springframework.ide.eclipse.beans.ui.editor.namespaces.NamespaceUtils;
import org.springframework.ide.eclipse.beans.ui.editor.util.BeansEditorUtils;
import org.w3c.dom.Node;

/**
* @author Christian Dupuis
* @author Torsten Juergeleit
*/
public class DelegatingLabelProvider extends LabelProvider {

  private static XMLContentOutlineConfiguration contentOutlineConfiguration = new XMLContentOutlineConfiguration();

  private ILabelProvider xmlProvider;

  private boolean isContentAssist = false;

  public DelegatingLabelProvider(ILabelProvider xmlProvider) {
    this.xmlProvider = xmlProvider;
  }

  public DelegatingLabelProvider() {
    this.isContentAssist = true;
    this.xmlProvider = contentOutlineConfiguration.getLabelProvider(null);
  }

  @Override
  public Image getImage(Object object) {
    if (!BeansEditorUtils.isSpringStyleOutline() && !isContentAssist) {
      return xmlProvider.getImage(object);
    }

    Node node = (Node) object;
    String namespace = node.getNamespaceURI();

    ILabelProvider[] labelProviders = NamespaceUtils.getLabelProvider(namespace);
    for (ILabelProvider labelProvider : labelProviders) {
      Image image = labelProvider.getImage(object);
      if (image != null) {
        return image;
      }
    }

    INamespaceDefinition namespaceDefinition = BeansCorePlugin.getNamespaceDefinitionResolver(null)
        .resolveNamespaceDefinition(namespace);
    if (namespaceDefinition != null) {
      return org.springframework.ide.eclipse.beans.ui.namespaces.NamespaceUtils.getImage(namespaceDefinition);
    }

    return xmlProvider.getImage(object);
  }

  @Override
  public String getText(Object object) {
    if (!BeansEditorUtils.isSpringStyleOutline() && !isContentAssist) {
      return xmlProvider.getText(object);
    }

    Node node = (Node) object;
    String namespace = node.getNamespaceURI();

    ILabelProvider[] labelProviders = NamespaceUtils.getLabelProvider(namespace);
    for (ILabelProvider labelProvider : labelProviders) {
      String text = labelProvider.getText(object);
      if (text != null && !"".equals(text.trim())) {
        return text;
      }
    }
    return xmlProvider.getText(object);
  }
}
TOP

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

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.