Java 类com.intellij.util.containers.WeakHashMap 实例源码

项目:intellij-ce-playground    文件:ProjectWideFacetListenersRegistryImpl.java   
private void onFacetAdded(final Facet facet) {
  boolean firstFacet = myFacetsByType.isEmpty();
  final FacetTypeId typeId = facet.getTypeId();
  WeakHashMap<Facet, Boolean> facets = myFacetsByType.get(typeId);
  if (facets == null) {
    facets = new WeakHashMap<Facet, Boolean>();
    myFacetsByType.put(typeId, facets);
  }
  boolean firstFacetOfType = facets.isEmpty();
  facets.put(facet, true);

  if (firstFacet) {
    getAllFacetsMulticaster().firstFacetAdded();
  }
  getAllFacetsMulticaster().facetAdded(facet);

  final EventDispatcher<ProjectWideFacetListener> dispatcher = myDispatchers.get(typeId);
  if (dispatcher != null) {
    if (firstFacetOfType) {
      dispatcher.getMulticaster().firstFacetAdded();
    }
    //noinspection unchecked
    dispatcher.getMulticaster().facetAdded(facet);
  }
}
项目:tools-idea    文件:ProjectWideFacetListenersRegistryImpl.java   
private void onFacetAdded(final Facet facet) {
  boolean firstFacet = myFacetsByType.isEmpty();
  final FacetTypeId typeId = facet.getTypeId();
  WeakHashMap<Facet, Boolean> facets = myFacetsByType.get(typeId);
  if (facets == null) {
    facets = new WeakHashMap<Facet, Boolean>();
    myFacetsByType.put(typeId, facets);
  }
  boolean firstFacetOfType = facets.isEmpty();
  facets.put(facet, true);

  if (firstFacet) {
    getAllFacetsMulticaster().firstFacetAdded();
  }
  getAllFacetsMulticaster().facetAdded(facet);

  final EventDispatcher<ProjectWideFacetListener> dispatcher = myDispatchers.get(typeId);
  if (dispatcher != null) {
    if (firstFacetOfType) {
      dispatcher.getMulticaster().firstFacetAdded();
    }
    //noinspection unchecked
    dispatcher.getMulticaster().facetAdded(facet);
  }
}
项目:intellij-ce-playground    文件:ImageOrColorPreviewManager.java   
@NotNull
private static Collection<PsiElement> getPsiElementsAt(Point point, Editor editor) {
  if (editor.isDisposed()) {
    return Collections.emptySet();
  }

  Project project = editor.getProject();
  if (project == null || project.isDisposed()) {
    return Collections.emptySet();
  }

  final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
  final Document document = editor.getDocument();
  PsiFile psiFile = documentManager.getPsiFile(document);
  if (psiFile == null || psiFile instanceof PsiCompiledElement || !psiFile.isValid()) {
    return Collections.emptySet();
  }

  final Set<PsiElement> elements = Collections.newSetFromMap(new WeakHashMap<PsiElement, Boolean>());
  final int offset = editor.logicalPositionToOffset(editor.xyToLogicalPosition(point));
  if (documentManager.isCommitted(document)) {
    ContainerUtil.addIfNotNull(elements, InjectedLanguageUtil.findElementAtNoCommit(psiFile, offset));
  }
  for (PsiFile file : psiFile.getViewProvider().getAllFiles()) {
    ContainerUtil.addIfNotNull(elements, file.findElementAt(offset));
  }

  return elements;
}
项目:intellij-ce-playground    文件:ProjectWideFacetListenersRegistryImpl.java   
private void onFacetRemoved(final Facet facet, final boolean before) {
  final FacetTypeId typeId = facet.getTypeId();
  WeakHashMap<Facet, Boolean> facets = myFacetsByType.get(typeId);
  boolean lastFacet;
  if (facets != null) {
    facets.remove(facet);
    lastFacet = facets.isEmpty();
    if (lastFacet) {
      myFacetsByType.remove(typeId);
    }
  }
  else {
    lastFacet = true;
  }
  final EventDispatcher<ProjectWideFacetListener> dispatcher = myDispatchers.get(typeId);
  if (dispatcher != null) {
    if (before) {
      //noinspection unchecked
      dispatcher.getMulticaster().beforeFacetRemoved(facet);
    }
    else {
      //noinspection unchecked
      dispatcher.getMulticaster().facetRemoved(facet);
      if (lastFacet) {
        dispatcher.getMulticaster().allFacetsRemoved();
      }
    }
  }

  if (before) {
    getAllFacetsMulticaster().beforeFacetRemoved(facet);
  }
  else {
    getAllFacetsMulticaster().facetRemoved(facet);
    if (myFacetsByType.isEmpty()) {
      getAllFacetsMulticaster().allFacetsRemoved();
    }
  }
}
项目:intellij-ce-playground    文件:PythonSdkPathCache.java   
public static PythonSdkPathCache getInstance(@NotNull Project project, @NotNull Sdk sdk) {
  synchronized (KEY) {
    Map<Project, PythonSdkPathCache> cacheMap = sdk.getUserData(KEY);
    if (cacheMap == null) {
      cacheMap = new WeakHashMap<Project, PythonSdkPathCache>();
      sdk.putUserData(KEY, cacheMap);
    }
    PythonSdkPathCache cache = cacheMap.get(project);
    if (cache == null) {
      cache = new PythonSdkPathCache(project, sdk);
      cacheMap.put(project, cache);
    }
    return cache;
  }
}
项目:tools-idea    文件:ProjectWideFacetListenersRegistryImpl.java   
private void onFacetRemoved(final Facet facet, final boolean before) {
  final FacetTypeId typeId = facet.getTypeId();
  WeakHashMap<Facet, Boolean> facets = myFacetsByType.get(typeId);
  boolean lastFacet;
  if (facets != null) {
    facets.remove(facet);
    lastFacet = facets.isEmpty();
    if (lastFacet) {
      myFacetsByType.remove(typeId);
    }
  }
  else {
    lastFacet = true;
  }
  final EventDispatcher<ProjectWideFacetListener> dispatcher = myDispatchers.get(typeId);
  if (dispatcher != null) {
    if (before) {
      //noinspection unchecked
      dispatcher.getMulticaster().beforeFacetRemoved(facet);
    }
    else {
      //noinspection unchecked
      dispatcher.getMulticaster().facetRemoved(facet);
      if (lastFacet) {
        dispatcher.getMulticaster().allFacetsRemoved();
      }
    }
  }

  if (before) {
    getAllFacetsMulticaster().beforeFacetRemoved(facet);
  }
  else {
    getAllFacetsMulticaster().facetRemoved(facet);
    if (myFacetsByType.isEmpty()) {
      getAllFacetsMulticaster().allFacetsRemoved();
    }
  }
}
项目:consulo    文件:ImageOrColorPreviewManager.java   
@Nonnull
private static Collection<PsiElement> getPsiElementsAt(Point point, Editor editor) {
  if (editor.isDisposed()) {
    return Collections.emptySet();
  }

  Project project = editor.getProject();
  if (project == null || project.isDisposed()) {
    return Collections.emptySet();
  }

  final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
  final Document document = editor.getDocument();
  PsiFile psiFile = documentManager.getPsiFile(document);
  if (psiFile == null || psiFile instanceof PsiCompiledElement || !psiFile.isValid()) {
    return Collections.emptySet();
  }

  final Set<PsiElement> elements = Collections.newSetFromMap(new WeakHashMap<PsiElement, Boolean>());
  final int offset = editor.logicalPositionToOffset(editor.xyToLogicalPosition(point));
  if (documentManager.isCommitted(document)) {
    ContainerUtil.addIfNotNull(elements, InjectedLanguageUtil.findElementAtNoCommit(psiFile, offset));
  }
  for (PsiFile file : psiFile.getViewProvider().getAllFiles()) {
    ContainerUtil.addIfNotNull(elements, file.findElementAt(offset));
  }

  return elements;
}