Package org.springframework.ide.eclipse.beans.ui.model

Source Code of org.springframework.ide.eclipse.beans.ui.model.BeansModelLabelProvider

/*******************************************************************************
* 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.model;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.PlatformUI;
import org.springframework.ide.eclipse.beans.core.internal.model.BeanClassReferences;
import org.springframework.ide.eclipse.beans.core.metadata.model.IBeanMetadata;
import org.springframework.ide.eclipse.beans.ui.BeansUIImages;
import org.springframework.ide.eclipse.beans.ui.BeansUIPlugin;
import org.springframework.ide.eclipse.beans.ui.model.metadata.BeanMetadataNode;
import org.springframework.ide.eclipse.beans.ui.model.metadata.BeanMetadataReference;
import org.springframework.ide.eclipse.beans.ui.model.metadata.BeanMetadataUtils;
import org.springframework.ide.eclipse.beans.ui.model.metadata.IBeanMetadataLabelProvider;
import org.springframework.ide.eclipse.beans.ui.namespaces.DefaultNamespaceLabelProvider;
import org.springframework.ide.eclipse.beans.ui.namespaces.INamespaceLabelProvider;
import org.springframework.ide.eclipse.beans.ui.namespaces.NamespaceUtils;
import org.springframework.ide.eclipse.core.io.ZipEntryStorage;
import org.springframework.ide.eclipse.core.model.IModelElement;
import org.springframework.ide.eclipse.core.model.ISourceModelElement;
import org.springframework.ide.eclipse.ui.viewers.DecoratingWorkbenchTreePathLabelProvider;

/**
* This {@link ILabelProvider} knows about the beans core model's {@link IModelElement}s.
* @author Torsten Juergeleit
* @author Christian Dupuis
*/
public class BeansModelLabelProvider extends DecoratingWorkbenchTreePathLabelProvider {

  public static final DefaultNamespaceLabelProvider DEFAULT_NAMESPACE_LABEL_PROVIDER = new DefaultNamespaceLabelProvider();

  public BeansModelLabelProvider() {
    super(false);
  }

  public BeansModelLabelProvider(boolean isDecorating) {
    super(isDecorating);
  }

  @Override
  protected Image getImage(Object element, Object parentElement) {
    Image image = null;
    if (element instanceof IBeanMetadata) {
      IBeanMetadataLabelProvider labelProvider = BeanMetadataUtils.getLabelProvider((IBeanMetadata) element);
      if (labelProvider != null) {
        image = labelProvider.getImage(element);
      }
    }

    if (element instanceof BeanMetadataNode) {
      return ((BeanMetadataNode) element).getImage();
    }
    else if (element instanceof ISourceModelElement) {
      INamespaceLabelProvider provider = NamespaceUtils.getLabelProvider((ISourceModelElement) element);
      IModelElement context = (parentElement instanceof IModelElement ? (IModelElement) parentElement : null);
      if (provider != null) {
        image = provider.getImage((ISourceModelElement) element, context, isDecorating());
      }
      else {
        image = DEFAULT_NAMESPACE_LABEL_PROVIDER.getImage((ISourceModelElement) element, context,
            isDecorating());
      }
    }
    else if (element instanceof IModelElement) {
      if (parentElement instanceof IModelElement) {
        image = BeansModelImages.getImage((IModelElement) element, (IModelElement) parentElement,
            isDecorating());
      }
      else {
        image = BeansModelImages.getImage((IModelElement) element);
      }
    }
    else if (element instanceof ZipEntryStorage) {
      return super.getImage(((ZipEntryStorage) element).getFile(), parentElement);
    }
    else if (element instanceof BeanClassReferences) {
      image = BeansUIImages.getImage(BeansUIImages.IMG_OBJS_REFERENCE);
    }
    else if (element instanceof BeanMetadataReference
        && BeanMetadataUtils.getLabelProvider((BeanMetadataReference) element) != null) {
      image = BeanMetadataUtils.getLabelProvider((BeanMetadataReference) element).getImage(element);
    }
    // Add decorations if required
    if (image != null) {
      if (isDecorating()) {
        image = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator().decorateImage(image,
            element);
      }
      return image;
    }
    return super.getImage(element, parentElement);
  }

  @Override
  protected String getText(Object element, Object parentElement) {
    if (element instanceof IBeanMetadata) {
      IBeanMetadataLabelProvider labelProvider = BeanMetadataUtils.getLabelProvider((IBeanMetadata) element);
      if (labelProvider != null) {
        return labelProvider.getText(element);
      }
    }
    if (element instanceof BeanMetadataNode) {
      return ((BeanMetadataNode) element).getLabel();
    }
    else if (element instanceof ISourceModelElement) {
      INamespaceLabelProvider provider = NamespaceUtils.getLabelProvider((ISourceModelElement) element);
      IModelElement context = (parentElement instanceof IModelElement ? (IModelElement) parentElement : null);
      if (provider != null) {
        return provider.getText((ISourceModelElement) element, context, isDecorating());
      }
      else {
        return DEFAULT_NAMESPACE_LABEL_PROVIDER.getText((ISourceModelElement) element, context, isDecorating());
      }
    }
    else if (element instanceof IModelElement) {
      return BeansModelLabels.getElementLabel((IModelElement) element, 0);
    }
    else if (element instanceof ZipEntryStorage) {
      // create zip entry label right here as it is not a core model
      // element
      ZipEntryStorage storage = (ZipEntryStorage) element;
      StringBuilder builder = new StringBuilder();
      builder.append(storage.getFullPath().lastSegment());
      builder.append(" - ");
      builder.append(storage.getFile().getProjectRelativePath().toString());
      builder.append("!");
      builder.append(storage.getFullPath().removeLastSegments(1).toString());
      return builder.toString();
    }
    else if (element instanceof BeanClassReferences) {
      return BeansUIPlugin.getResourceString("BeanClassReferences.label");
    }
    else if (element instanceof BeanMetadataReference) {
      IBeanMetadataLabelProvider labelProvider = BeanMetadataUtils.getLabelProvider((BeanMetadataReference) element);
      if (labelProvider != null) {
        return labelProvider.getText(element);
      }
    }
    return super.getText(element, parentElement);
  }
}
TOP

Related Classes of org.springframework.ide.eclipse.beans.ui.model.BeansModelLabelProvider

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.