SourceInformationProvider.java :  » IDE-Eclipse » Eclipse-plug-in-development » org » eclipse » pde » internal » ui » editor » text » Java Open Source

Java Open Source » IDE Eclipse » Eclipse plug in development 
Eclipse plug in development » org » eclipse » pde » internal » ui » editor » text » SourceInformationProvider.java
/*******************************************************************************
 * Copyright (c) 2000, 2006 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.pde.internal.ui.editor.text;


import org.eclipse.jface.text.IInformationControlCreator;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.information.IInformationProvider;
import org.eclipse.jface.text.information.IInformationProviderExtension2;
import org.eclipse.pde.internal.ui.editor.PDESourcePage;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;


public class SourceInformationProvider implements IInformationProvider, IInformationProviderExtension2, IPartListener {

  public static final int F_NO_IMP = 0;
  public static final int F_XML_IMP = 1;
  public static final int F_MANIFEST_IMP = 2;
  
  protected PDESourcePage fSourcePage;
  protected String fCurrentPerspective;
  protected ITextHover fImplementation;
  protected int fImpType;
  
  public void partOpened(IWorkbenchPart part) {
  }

  public void partDeactivated(IWorkbenchPart part) {
  }

  public void partClosed(IWorkbenchPart part) {
    if (fSourcePage != null && part == fSourcePage.getEditor() && fImpType != F_NO_IMP)
      fSourcePage.getSite().getWorkbenchWindow().getPartService().removePartListener(this);
  }

  public void partActivated(IWorkbenchPart part) {
    update();
  }

  public void partBroughtToTop(IWorkbenchPart part) {
    update();
  }
  

  private IInformationControlCreator fPresenterControlCreator;
  
  public SourceInformationProvider(PDESourcePage editor, IInformationControlCreator creator, int impType) {
    fSourcePage = editor;
    fPresenterControlCreator = creator;
    fImpType = impType;
    if (fSourcePage != null && fImpType != F_NO_IMP) {
      fSourcePage.getSite().getWorkbenchWindow().getPartService().addPartListener(this);
      update();
    }
  }

  protected void update() {
    IWorkbenchPage page = fSourcePage.getSite().getWorkbenchWindow().getActivePage();
    if (page != null) {
      IPerspectiveDescriptor perspective = page.getPerspective();
      if (perspective != null)  {
        String perspectiveId = perspective.getId();
        if (fCurrentPerspective == null || fCurrentPerspective != perspectiveId) {
          fCurrentPerspective = perspectiveId;
          switch (fImpType) {
          case F_MANIFEST_IMP:
            fImplementation = new ManifestTextHover(fSourcePage);
            break;
          case F_XML_IMP:
            fImplementation = new PluginXMLTextHover(fSourcePage);
            break;
          }
        }
      }
    }
  }

  public IRegion getSubject(ITextViewer textViewer, int offset) {
    if (textViewer != null)
      return PDEWordFinder.findWord(textViewer.getDocument(), offset);
    return null;
  }

  public String getInformation(ITextViewer textViewer, IRegion subject) {
    if (fImplementation != null) {
      String s = fImplementation.getHoverInfo(textViewer, subject);
      if (s != null && s.trim().length() > 0)
        return s;
    }
    return null;
  }

  public IInformationControlCreator getInformationPresenterControlCreator() {
    return fPresenterControlCreator;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.