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

Source Code of org.springframework.ide.eclipse.beans.ui.navigator.BeansNavigatorLabelProvider

/*******************************************************************************
* Copyright (c) 2007, 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.navigator;

import org.eclipse.core.resources.IFile;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.ICommonLabelProvider;
import org.eclipse.ui.navigator.IDescriptionProvider;
import org.springframework.ide.eclipse.beans.core.BeansCorePlugin;
import org.springframework.ide.eclipse.beans.core.metadata.model.IBeanMetadata;
import org.springframework.ide.eclipse.beans.core.model.IBeansConfig;
import org.springframework.ide.eclipse.beans.core.model.IBeansProject;
import org.springframework.ide.eclipse.beans.ui.BeansUIImages;
import org.springframework.ide.eclipse.beans.ui.BeansUILabels;
import org.springframework.ide.eclipse.beans.ui.model.BeansModelLabelProvider;
import org.springframework.ide.eclipse.beans.ui.model.BeansModelLabels;
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.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.ILazyInitializedModelElement;
import org.springframework.ide.eclipse.core.model.IModelElement;
import org.springframework.ide.eclipse.core.model.ISourceModelElement;
import org.springframework.ide.eclipse.core.model.ISpringProject;

/**
* {@link ICommonLabelProvider} which knows about the beans core model's {@link IModelElement elements}.
* @author Torsten Juergeleit
* @author Christian Dupuis
*/
public class BeansNavigatorLabelProvider extends BeansModelLabelProvider implements ICommonLabelProvider,
    IFontProvider, IColorProvider {

  private Color grayColor = new Color(Display.getDefault(), 150, 150, 150);

  private String providerID;

  public BeansNavigatorLabelProvider() {
    super(true);
  }

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

  public void init(ICommonContentExtensionSite config) {
    providerID = config.getExtension().getId();
  }

  public void restoreState(IMemento memento) {
  }

  public void saveState(IMemento memento) {
  }

  public String getDescription(Object element) {
    if (element instanceof IBeanMetadata) {
      IBeanMetadataLabelProvider labelProvider = BeanMetadataUtils.getLabelProvider((IBeanMetadata) element);
      if (labelProvider != null) {
        labelProvider.getDescription(element);
      }
    }

    if (element instanceof IBeansProject) {
      return "Beans" // TODO Externalize string
          + " - " + ((IBeansProject) element).getProject().getName();
    }
    else if (element instanceof ISourceModelElement) {
      INamespaceLabelProvider provider = NamespaceUtils.getLabelProvider((ISourceModelElement) element);
      if (provider != null && provider instanceof IDescriptionProvider) {
        return ((IDescriptionProvider) provider).getDescription(element);
      }
      else {
        return DEFAULT_NAMESPACE_LABEL_PROVIDER.getDescription(element);
      }
    }
    else if (element instanceof IModelElement) {
      return BeansModelLabels.getElementLabel((IModelElement) element, BeansUILabels.APPEND_PATH
          | BeansUILabels.DESCRIPTION);
    }
    if (element instanceof IFile) {
      IBeansConfig config = BeansCorePlugin.getModel().getConfig((IFile) element);
      if (config != null) {
        return BeansModelLabels.getElementLabel(config, BeansUILabels.APPEND_PATH | BeansUILabels.DESCRIPTION);
      }
    }
    else if (element instanceof ZipEntryStorage) {
      // Create label of zip entry 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.getFullPath().removeLastSegments(1).toString());
      builder.append(" - ");
      builder.append(storage.getFile().getFullPath().toString());
      return builder.toString();
    }
    else if (element instanceof BeanMetadataReference
        && BeanMetadataUtils.getLabelProvider((BeanMetadataReference) element) != null) {
      return BeanMetadataUtils.getLabelProvider((BeanMetadataReference) element).getDescription(element);
    }
    return null;
  }

  @Override
  public String toString() {
    return providerID;
  }

  protected String getProviderID() {
    return providerID;
  }
 
  @Override
  public void dispose() {
    super.dispose();
    if (grayColor != null) {
      grayColor.dispose();
    }
  }

  @Override
  protected Image getImage(Object element, Object parentElement) {
    if (element instanceof IBeansProject) {
      Image image = BeansUIImages.getImage(BeansUIImages.IMG_OBJS_VIRTUAL_FOLDER);
      return image;
    }
    return super.getImage(element, parentElement);
  }

  @Override
  protected String getText(Object element, Object parentElement) {
    if (element instanceof ILazyInitializedModelElement
        && !((ILazyInitializedModelElement) element).isInitialized()) {
      return "initializing..."; // TODO CD Externalize string
    }
    else if (element instanceof IBeansProject) {
      return "Beans"; // TODO CD Externalize string
    }
    else if (element instanceof IBeansConfig
        && (parentElement instanceof ISpringProject || parentElement instanceof IBeansProject)) {
      return ((IBeansConfig) element).getElementName();
    }
    else if (element instanceof IFile && parentElement instanceof IModelElement) {
      return ((IFile) element).getName() + " - "
          + ((IFile) element).getProjectRelativePath().removeLastSegments(1).toString();
    }
    return super.getText(element, parentElement);
  }

  public Font getFont(Object element) {
    if (element instanceof ILazyInitializedModelElement
        && !((ILazyInitializedModelElement) element).isInitialized()) {
      return JFaceResources.getFontRegistry().getItalic(JFaceResources.DIALOG_FONT);
    }
    return null;
  }

  public Color getBackground(Object element) {
    return null;
  }

  public Color getForeground(Object element) {
    if (element instanceof ILazyInitializedModelElement
        && !((ILazyInitializedModelElement) element).isInitialized()) {
      return grayColor;
    }
    return null;
  }
}
TOP

Related Classes of org.springframework.ide.eclipse.beans.ui.navigator.BeansNavigatorLabelProvider

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.