/* * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.codeInspection.ui; import com.intellij.codeInspection.ex.InspectionToolWrapper; import com.intellij.codeInspection.reference.RefElement; import com.intellij.codeInspection.reference.RefEntity; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.Navigatable; import com.intellij.psi.NavigatablePsiElement; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.components.JBLabel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; /** * @author Dmitry Batkovich */ public class InspectionResultsViewUtil { static void releaseEditor(@Nullable Editor editor) { if (editor != null && !editor.isDisposed()) { EditorFactory.getInstance().releaseEditor(editor); } } @Nullable static Navigatable getNavigatableForInvalidNode(ProblemDescriptionNode node) { RefEntity element = node.getElement(); while (element != null && !element.isValid()) { element = element.getOwner(); } if (!(element instanceof RefElement)) return null; PsiElement containingElement = ((RefElement)element).getElement(); if (!(containingElement instanceof NavigatablePsiElement) || !containingElement.isValid()) return null; final int lineNumber = node.getLineNumber(); if (lineNumber != -1) { final PsiFile containingFile = containingElement.getContainingFile(); if (containingFile != null) { final VirtualFile file = containingFile.getVirtualFile(); final Document document = FileDocumentManager.getInstance().getDocument(file); if (document != null && document.getLineCount() > lineNumber) { return new OpenFileDescriptor(containingElement.getProject(), file, lineNumber, 0); } } } return (Navigatable)containingElement; } @NotNull static JLabel getNothingToShowTextLabel() { return createLabelForText(InspectionViewNavigationPanel.getTitleText(false)); } @NotNull static JComponent getInvalidEntityLabel(@NotNull RefEntity entity) { final String name = entity.getName(); return createLabelForText("\'" + name + "\' is no longer valid."); } public static JComponent getPreviewIsNotAvailable(@NotNull RefEntity entity) { final String name = entity.getQualifiedName(); return createLabelForText("Preview is not available for \'" + name + "\'."); } @NotNull static JComponent getApplyingFixLabel(@NotNull InspectionToolWrapper wrapper) { return createLabelForText("Applying quick fix for \'" + wrapper.getDisplayName() + "\'..."); } @NotNull static JLabel createLabelForText(String text) { final JLabel multipleSelectionLabel = new JBLabel(text); multipleSelectionLabel.setVerticalAlignment(SwingConstants.TOP); multipleSelectionLabel.setBorder(IdeBorderFactory.createEmptyBorder(16, 12, 0, 0)); return multipleSelectionLabel; } }