This commit is contained in:
Alexey Kudravtsev
2013-04-19 12:43:56 +04:00
parent 1f50732825
commit ec3f48bc93
70 changed files with 521 additions and 242 deletions
@@ -205,15 +205,15 @@ public class PaletteManager implements ProjectComponent {
}
private class MyFileEditorManagerListener implements FileEditorManagerListener {
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
processFileEditorChange(file);
}
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
processFileEditorChange(null);
}
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
processFileEditorChange(event.getNewFile());
}
}
@@ -114,16 +114,7 @@ public abstract class FilteringInspectionTool extends InspectionTool {
@Override
public void cleanup() {
super.cleanup();
final GlobalInspectionContextImpl context = getContext();
if (context != null && context.getUIOptions().SHOW_DIFF_WITH_PREVIOUS_RUN){
if (myOldPackageContents == null){
myOldPackageContents = new HashMap<String, Set<RefEntity>>();
}
myOldPackageContents.clear();
myOldPackageContents.putAll(myPackageContents);
} else {
myOldPackageContents = null;
}
myOldPackageContents = null;
myPackageContents.clear();
myIgnoreElements.clear();
}
@@ -45,7 +45,7 @@ public interface ViewContext extends Disposable {
@Nullable
Tab getTabFor(final Grid grid);
View getStateFor(Content content);
View getStateFor(@NotNull Content content);
void saveUiState();
@@ -61,7 +61,7 @@ public interface ViewContext extends Disposable {
GridCell findCellFor(@NotNull final Content content);
Grid findGridFor(Content content);
Grid findGridFor(@NotNull Content content);
ActionCallback select(Content content, boolean requestFocus);
@@ -297,7 +297,7 @@ public abstract class CompletionPhase implements Disposable {
MessageBusConnection connection = project.getMessageBus().connect(this);
connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
stopAutoPopup();
}
});
@@ -74,7 +74,7 @@ public class EditorTracker extends AbstractProjectComponent {
myIdeFrame = ((WindowManagerEx)myWindowManager).getFrame(myProject);
myProject.getMessageBus().connect(myProject).subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
if (myIdeFrame == null || myIdeFrame.getFocusOwner() == null) return;
setActiveWindow(myIdeFrame);
}
@@ -165,7 +165,7 @@ public class EditorTracker extends AbstractProjectComponent {
List<Editor> editorsList = myWindowToEditorsMap.get(oldWindow);
boolean removed = editorsList.remove(editor);
LOG.assertTrue(removed);
if (editorsList.isEmpty()) {
myWindowToEditorsMap.remove(oldWindow);
final WindowFocusListener listener = myWindowToWindowFocusListenerMap.remove(oldWindow);
@@ -34,6 +34,7 @@ import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.openapi.wm.ex.StatusBarEx;
import com.intellij.util.Alarm;
import org.jetbrains.annotations.NotNull;
public class StatusBarUpdater implements Disposable {
private final Project myProject;
@@ -52,7 +53,7 @@ public class StatusBarUpdater implements Disposable {
project.getMessageBus().connect(this).subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
updateLater();
}
});
@@ -112,7 +112,7 @@ public class BraceHighlighter implements StartupActivity {
fileEditorManager.addFileEditorManagerListener(new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent e) {
public void selectionChanged(@NotNull FileEditorManagerEvent e) {
myAlarm.cancelAllRequests();
}
}, project);
@@ -149,7 +149,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
private final FileEditorManagerListener myFileEditorManagerListener = new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent e) {
public void selectionChanged(@NotNull FileEditorManagerEvent e) {
disposeHighlighter();
myTooltipProvider = null;
}
@@ -270,7 +270,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
}
return new Rectangle(hintComponent.getLocationOnScreen(), hintComponent.getSize());
}
private static BrowseMode getBrowseMode(@JdkConstants.InputEventMask int modifiers) {
if (modifiers != 0) {
final Keymap activeKeymap = KeymapManager.getInstance().getActiveKeymap();
@@ -615,7 +615,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
// There is a possible case that quick doc control width is changed, e.g. it contained text
// like 'public final class String implements java.io.Serializable, java.lang.Comparable<java.lang.String>' and
// new text replaces fully-qualified class names by hyperlinks with short name.
@@ -625,7 +625,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
JComponent component = hint.getComponent();
Dimension oldSize = component.getPreferredSize();
newTextConsumer.consume(newHtml);
final int widthIncrease;
if (component instanceof QuickDocInfoPane) {
int buttonWidth = ((QuickDocInfoPane)component).getButtonWidth();
@@ -638,16 +638,16 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
if (oldSize == null) {
return;
}
Dimension newSize = component.getPreferredSize();
if (newSize.width + widthIncrease == oldSize.width) {
return;
}
component.setPreferredSize(new Dimension(newSize.width + widthIncrease, newSize.height));
// We're assuming here that there are two possible hint representation modes: popup and layered pane.
if (hint.isRealPopup()) {
TooltipProvider tooltipProvider = myTooltipProvider;
if (tooltipProvider != null) {
// There is a possible case that 'raw' control was rather wide but the 'rich' one is narrower. That's why we try to
@@ -674,7 +674,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
topLevelLayeredPaneChild = current;
}
}
if (adjustBounds && topLevelLayeredPaneChild != null) {
Rectangle bounds = topLevelLayeredPaneChild.getBounds();
topLevelLayeredPaneChild.setBounds(bounds.x, bounds.y, bounds.width + newSize.width + widthIncrease - oldSize.width, bounds.height);
@@ -688,7 +688,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
/**
* It's possible that we need to expand quick doc control's width in order to provide better visual representation
* (see http://youtrack.jetbrains.com/issue/IDEA-101425). This method calculates that width expand.
*
*
* @param buttonWidth icon button's width
* @param updatedText text which will be should at the quick doc control
* @return width increase to apply to the target quick doc control (zero if no additional width increase is required)
@@ -802,7 +802,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
if (!info.isValid(myEditor.getDocument())) {
return;
}
myHighlighter = installHighlighterSet(info, myEditor);
DocInfo docInfo = info.getInfo();
@@ -812,7 +812,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
if (myDocumentationManager.hasActiveDockedDocWindow()) {
info.showDocInfo(myDocumentationManager);
}
HyperlinkListener hyperlinkListener = docInfo.docProvider == null
? null
: new QuickDocHyperlinkListener(docInfo.docProvider, info.myElementAtPointer);
@@ -850,7 +850,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
quickDocPane = new QuickDocInfoPane(docInfo.documentationAnchor, info.myElementAtPointer, label, docInfo.text);
quickDocPaneRef.set(quickDocPane);
}
JComponent hintContent = quickDocPane == null ? label : quickDocPane;
final LightweightHint hint = new LightweightHint(hintContent);
@@ -877,7 +877,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
0, false, HintManagerImpl.createHintHint(myEditor, p, hint, HintManager.ABOVE).setContentActive(false));
}
}
private HighlightersSet installHighlighterSet(Info info, Editor editor) {
final JComponent internalComponent = editor.getContentComponent();
internalComponent.addKeyListener(myEditorKeyListener);
@@ -928,7 +928,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
return myStoredInfo;
}
}
private static class DocInfo {
public static final DocInfo EMPTY = new DocInfo(null, null, null);
@@ -1030,7 +1030,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
}
return new Dimension(Math.max(myMinWidth, base.width), Math.max(myMinHeight, base.height));
}
@Override
public void doLayout() {
Rectangle bounds = getBounds();
@@ -1064,7 +1064,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
return;
}
// Skip event triggered when mouse leaves action button area.
// Skip event triggered when mouse leaves action button area.
if (!mouseEntered && new Rectangle(getLocationOnScreen(), getSize()).contains(mouseScreenLocation)) {
return;
}
@@ -51,7 +51,7 @@ public class ImageOrColorPreviewProjectComponent extends AbstractProjectComponen
private static class MyFileEditorManagerListener extends FileEditorManagerAdapter {
@Override
public void fileOpened(final FileEditorManager source, final VirtualFile file) {
public void fileOpened(@NotNull final FileEditorManager source, @NotNull final VirtualFile file) {
if (isSuitable(source.getProject(), file)) {
final FileEditor[] fileEditors = source.getEditors(file);
for (final FileEditor each : fileEditors) {
@@ -65,7 +65,7 @@ public class ImageOrColorPreviewProjectComponent extends AbstractProjectComponen
private static boolean isSuitable(final Project project, final VirtualFile file) {
final FileViewProvider provider = PsiManager.getInstance(project).findViewProvider(file);
if (provider == null) return false;
for (final PsiFile psiFile : provider.getAllFiles()) {
for(PreviewHintProvider hintProvider: Extensions.getExtensions(PreviewHintProvider.EP_NAME)) {
if (hintProvider.isSupportedFile(psiFile)) {
@@ -218,17 +218,7 @@ public abstract class DescriptorProviderInspection extends InspectionTool implem
@Override
public void cleanup() {
super.cleanup();
final GlobalInspectionContextImpl context = getContext();
if (context != null && context.getUIOptions().SHOW_DIFF_WITH_PREVIOUS_RUN){
if (myOldProblemElements == null) {
myOldProblemElements = new HashMap<RefEntity, CommonProblemDescriptor[]>();
}
myOldProblemElements.clear();
myOldProblemElements.putAll(getIgnoredElements());
myOldProblemElements.putAll(getProblemElements());
} else {
myOldProblemElements = null;
}
myOldProblemElements = null;
synchronized (lock) {
myProblemElements = null;
@@ -651,9 +651,7 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel,
if (toolList.isEnabled()) {
for (InspectionProfileEntry tool : toolList.getAllTools()) {
tool.projectClosed(project);
if (((InspectionTool)tool).getContext() != null) {
((InspectionTool)tool).cleanup();
}
((InspectionTool)tool).cleanup();
}
}
}
@@ -620,7 +620,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider {
private void installEditorFactoryListener() {
final FileEditorManagerAdapter fileEditorListener = new FileEditorManagerAdapter() {
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
if (!Comparing.equal(file, myVirtualFile) || myConsoleEditor == null) return;
Editor selectedTextEditor = source.getSelectedTextEditor();
for (FileEditor fileEditor : source.getAllEditors(file)) {
@@ -642,7 +642,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider {
}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
if (!Comparing.equal(file, myVirtualFile)) return;
if (myUiUpdateRunnable != null && !Boolean.TRUE.equals(file.getUserData(FileEditorManagerImpl.CLOSING_TO_REOPEN))) {
if (myCurrentEditor != null && myCurrentEditor.isDisposed()) myCurrentEditor = null;
@@ -587,7 +587,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
}
@Override
public void setManager(final ContentManager manager) {
public void setManager(@NotNull final ContentManager manager) {
assert myManager == null;
myManager = manager;
@@ -661,7 +661,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
}
@Nullable
private GridImpl getGridFor(Content content, boolean createIfMissing) {
private GridImpl getGridFor(@NotNull Content content, boolean createIfMissing) {
GridImpl grid = (GridImpl)findGridFor(content);
if (grid != null || !createIfMissing) return grid;
@@ -1004,7 +1004,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
@Override
@Nullable
public Grid findGridFor(Content content) {
public Grid findGridFor(@NotNull Content content) {
TabImpl tab = (TabImpl)getStateFor(content).getTab();
for (TabInfo each : myTabs.getTabs()) {
TabImpl t = getTabFor(each);
@@ -1058,7 +1058,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
}
@Override
public boolean canChangeSelectionTo(Content content, boolean implicit) {
public boolean canChangeSelectionTo(@NotNull Content content, boolean implicit) {
if (implicit) {
GridImpl grid = getGridFor(content, false);
if (grid != null) {
@@ -1069,21 +1069,25 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
return true;
}
@NotNull
@Override
public String getCloseActionName() {
return UIBundle.message("tabbed.pane.close.tab.action.name");
}
@NotNull
@Override
public String getCloseAllButThisActionName() {
return UIBundle.message("tabbed.pane.close.all.tabs.but.this.action.name");
}
@NotNull
@Override
public String getPreviousContentActionName() {
return "Select Previous Tab";
}
@NotNull
@Override
public String getNextContentActionName() {
return "Select Next Tab";
@@ -1447,7 +1451,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
}
@Override
public View getStateFor(final Content content) {
public View getStateFor(@NotNull final Content content) {
return myLayoutSettings.getStateFor(content);
}
@@ -68,6 +68,7 @@ public class ProjectViewSelectInGroupTarget implements CompositeSelectInTarget,
if (target.canSelect(context)) {
if (requestFocus) {
IdeFocusManager.getInstance(context.getProject()).requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
target.selectIn(context, requestFocus);
@@ -344,7 +344,7 @@ public class NavBarListener extends WolfTheProblemSolver.ProblemListener
}
@Override
public void fileOpened(final FileEditorManager manager, final VirtualFile file) {
public void fileOpened(@NotNull final FileEditorManager manager, @NotNull final VirtualFile file) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
@@ -403,8 +403,8 @@ public class NavBarListener extends WolfTheProblemSolver.ProblemListener
public void childRemoved(@NotNull PsiTreeChangeEvent event) {}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {}
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {}
@Override
public void selectionChanged(FileEditorManagerEvent event) {}
public void selectionChanged(@NotNull FileEditorManagerEvent event) {}
}
@@ -27,6 +27,7 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.ui.content.Content;
import org.jetbrains.annotations.NotNull;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
@@ -78,7 +79,7 @@ abstract class CurrentFileTodosPanel extends TodoPanel{
private final class MyFileEditorManagerListener extends FileEditorManagerAdapter{
@Override
public void selectionChanged(FileEditorManagerEvent e){
public void selectionChanged(@NotNull FileEditorManagerEvent e){
VirtualFile file=e.getNewFile();
final PsiFile psiFile=file != null && file.isValid() ? PsiManager.getInstance(myProject).findFile(file) : null;
// This invokeLater is required. The problem is setFile does a commit to PSI, but setFile is
@@ -97,8 +97,9 @@ import java.util.Map;
return false;
}
@NotNull
@Override
public ActionCallback notifyPublisher(Runnable runnable) {
public ActionCallback notifyPublisher(@NotNull Runnable runnable) {
runnable.run();
return new ActionCallback.Done();
}
@@ -244,6 +245,7 @@ import java.util.Map;
return null;
}
@NotNull
@Override
public AsyncResult<EditorWindow> getActiveWindow() {
return new AsyncResult.Done<EditorWindow>(null);
@@ -259,7 +261,7 @@ import java.util.Map;
}
@Override
public void updateFilePresentation(VirtualFile file) {
public void updateFilePresentation(@NotNull VirtualFile file) {
}
@Override
@@ -305,7 +307,7 @@ import java.util.Map;
@Override
@NotNull
public VirtualFile[] getSiblings(VirtualFile file) {
public VirtualFile[] getSiblings(@NotNull VirtualFile file) {
throw new UnsupportedOperationException();
}
@@ -393,7 +395,7 @@ import java.util.Map;
}
@Override
public Editor openTextEditor(OpenFileDescriptor descriptor, boolean focusEditor) {
public Editor openTextEditor(@NotNull OpenFileDescriptor descriptor, boolean focusEditor) {
final VirtualFile file = descriptor.getFile();
Editor editor = myVirtualFile2Editor.get(file);
@@ -473,6 +475,7 @@ import java.util.Map;
return "TestEditorManager";
}
@NotNull
@Override
public EditorsSplitters getSplitters() {
return null;
@@ -484,6 +487,6 @@ import java.util.Map;
}
@Override
public void setSelectedEditor(VirtualFile file, String fileEditorProviderId) {
public void setSelectedEditor(@NotNull VirtualFile file, String fileEditorProviderId) {
}
}
@@ -30,6 +30,7 @@ import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.psi.util.PsiUtilBase;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.LinkedHashSet;
@@ -41,7 +42,7 @@ import static com.intellij.util.containers.ContainerUtil.addIfNotNull;
public class TextEditorPsiDataProvider implements EditorDataProvider {
@Override
@Nullable
public Object getData(final String dataId, final Editor e, final VirtualFile file) {
public Object getData(@NotNull final String dataId, @NotNull final Editor e, @NotNull final VirtualFile file) {
if (!file.isValid()) return null;
if (dataId.equals(injectedId(EDITOR.getName()))) {
@@ -147,7 +148,7 @@ public class TextEditorPsiDataProvider implements EditorDataProvider {
}
@Nullable
private static PsiElement getPsiElementIn(final Editor editor, VirtualFile file) {
private static PsiElement getPsiElementIn(@NotNull Editor editor, @NotNull VirtualFile file) {
final PsiFile psiFile = getPsiFile(editor, file);
if (psiFile == null) return null;
@@ -160,7 +161,7 @@ public class TextEditorPsiDataProvider implements EditorDataProvider {
}
@Nullable
private static PsiFile getPsiFile(Editor e, VirtualFile file) {
private static PsiFile getPsiFile(@NotNull Editor e, @NotNull VirtualFile file) {
if (!file.isValid()) {
return null; // fix for SCR 40329
}
@@ -172,7 +173,7 @@ public class TextEditorPsiDataProvider implements EditorDataProvider {
return psiFile != null && psiFile.isValid() ? psiFile : null;
}
private Language[] computeLanguages(Editor editor, VirtualFile file) {
private Language[] computeLanguages(@NotNull Editor editor, @NotNull VirtualFile file) {
LinkedHashSet<Language> set = new LinkedHashSet<Language>(4);
Language injectedLanguage = (Language)getData(injectedId(LANGUAGE.getName()), editor, file);
addIfNotNull(injectedLanguage, set);
@@ -57,13 +57,13 @@ public class TogglePopupHintsPanel extends EditorBasedWidget implements StatusBa
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
updateStatus();
}
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
updateStatus();
}
@@ -15,6 +15,7 @@
*/
package com.intellij.openapi.fileEditor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.vfs.VirtualFile;
@@ -23,5 +24,5 @@ import com.intellij.openapi.vfs.VirtualFile;
* @author peter
*/
public interface EditorDataProvider {
@Nullable Object getData(String dataId, Editor e, final VirtualFile file);
@Nullable Object getData(@NotNull String dataId, @NotNull Editor e, @NotNull VirtualFile file);
}
@@ -39,7 +39,8 @@ public abstract class FileEditorManager {
*
* @return array of opened editors
*/
@NotNull public abstract FileEditor[] openFile(@NotNull VirtualFile file, boolean focusEditor);
@NotNull
public abstract FileEditor[] openFile(@NotNull VirtualFile file, boolean focusEditor);
/**
@@ -51,25 +52,26 @@ public abstract class FileEditorManager {
* @param searchForOpen
* @return array of opened editors
*/
@NotNull public FileEditor[] openFile(@NotNull VirtualFile file, boolean focusEditor, boolean searchForOpen) {
@NotNull
public FileEditor[] openFile(@NotNull VirtualFile file, boolean focusEditor, boolean searchForOpen) {
throw new UnsupportedOperationException("Not implemented");
}
/**
* Closes all editors opened for the file.
*
* @param file file to be closed. Cannot be null.
*
* @param file file to be closed. Cannot be null.
*/
public abstract void closeFile(@NotNull VirtualFile file);
/**
* Works as {@link #openFile(VirtualFile, boolean)} but forces opening of text editor.
* Works as {@link #openFile(VirtualFile, boolean)} but forces opening of text editor.
* This method ignores {@link FileEditorPolicy#HIDE_DEFAULT_EDITOR} policy.
*
* @return opened text editor. The method returns <code>null</code> in case if text editor wasn't opened.
*/
@Nullable
public abstract Editor openTextEditor(OpenFileDescriptor descriptor, boolean focusEditor);
public abstract Editor openTextEditor(@NotNull OpenFileDescriptor descriptor, boolean focusEditor);
/**
* @return currently selected text editor. The method returns <code>null</code> in case
@@ -86,22 +88,25 @@ public abstract class FileEditorManager {
/**
* @return all opened files. Order of files in the array corresponds to the order of editor tabs.
*/
@NotNull public abstract VirtualFile[] getOpenFiles();
@NotNull
public abstract VirtualFile[] getOpenFiles();
/**
* @return files currently selected. The method returns empty array if there are no selected files.
* If more than one file is selected (split), the file with most recent focused editor is returned first.
* @return files currently selected. The method returns empty array if there are no selected files.
* If more than one file is selected (split), the file with most recent focused editor is returned first.
*/
@NotNull public abstract VirtualFile[] getSelectedFiles();
@NotNull
public abstract VirtualFile[] getSelectedFiles();
/**
* @return editors currently selected. The method returns empty array if no editors are open.
*/
@NotNull public abstract FileEditor[] getSelectedEditors();
@NotNull
public abstract FileEditor[] getSelectedEditors();
/**
* @param file cannot be null
*
*
* @return editor which is currently selected in the currently selected file.
* The method returns <code>null</code> if <code>file</code> is not opened.
*/
@@ -113,19 +118,22 @@ public abstract class FileEditorManager {
*
* @return current editors for the specified <code>file</code>
*/
@NotNull public abstract FileEditor[] getEditors(@NotNull VirtualFile file);
@NotNull
public abstract FileEditor[] getEditors(@NotNull VirtualFile file);
/**
* @param file cannot be null
*
* @return all editors for the specified <code>file</code>
*/
@NotNull public abstract FileEditor[] getAllEditors(@NotNull VirtualFile file);
@NotNull
public abstract FileEditor[] getAllEditors(@NotNull VirtualFile file);
/**
* @return all open editors
*/
@NotNull public abstract FileEditor[] getAllEditors();
@NotNull
public abstract FileEditor[] getAllEditors();
/**
* @deprecated use addTopComponent
@@ -182,5 +190,5 @@ public abstract class FileEditorManager {
* @param fileEditorProviderId the ID of the file editor to open; matches the return value of
* {@link com.intellij.openapi.fileEditor.FileEditorProvider#getEditorTypeId()}
*/
public abstract void setSelectedEditor(VirtualFile file, String fileEditorProviderId);
public abstract void setSelectedEditor(@NotNull VirtualFile file, String fileEditorProviderId);
}
@@ -16,11 +16,12 @@
package com.intellij.openapi.fileEditor;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
public abstract class FileEditorManagerAdapter implements FileEditorManagerListener{
public void fileOpened(FileEditorManager source, VirtualFile file) {}
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {}
public void fileClosed(FileEditorManager source, VirtualFile file) {}
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {}
public void selectionChanged(FileEditorManagerEvent event) {}
public void selectionChanged(@NotNull FileEditorManagerEvent event) {}
}
@@ -17,6 +17,7 @@ package com.intellij.openapi.fileEditor;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.messages.Topic;
import org.jetbrains.annotations.NotNull;
import java.util.EventListener;
@@ -26,31 +27,31 @@ public interface FileEditorManagerListener extends EventListener{
/**
* TODO[vova] write javadoc
*/
void fileOpened(FileEditorManager source, VirtualFile file);
/**
* TODO[vova] write javadoc
*/
void fileClosed(FileEditorManager source, VirtualFile file);
void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file);
/**
* TODO[vova] write javadoc
*/
void selectionChanged(FileEditorManagerEvent event);
void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file);
/**
* TODO[vova] write javadoc
*/
void selectionChanged(@NotNull FileEditorManagerEvent event);
interface Before extends EventListener {
Topic<Before> FILE_EDITOR_MANAGER = new Topic<Before>("file editor before events", Before.class);
void beforeFileOpened(FileEditorManager source, VirtualFile file);
void beforeFileClosed(FileEditorManager source, VirtualFile file);
void beforeFileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file);
void beforeFileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file);
class Adapter implements Before {
@Override
public void beforeFileOpened(FileEditorManager source, VirtualFile file) {
public void beforeFileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
}
@Override
public void beforeFileClosed(FileEditorManager source, VirtualFile file) {
public void beforeFileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
}
}
@@ -37,8 +37,8 @@ public abstract class DialogWrapperPeerFactory {
return ServiceManager.getService(DialogWrapperPeerFactory.class);
}
public abstract DialogWrapperPeer createPeer(DialogWrapper wrapper, @Nullable Project project, boolean canBeParent);
public abstract DialogWrapperPeer createPeer(DialogWrapper wrapper, boolean canBeParent);
public abstract DialogWrapperPeer createPeer(DialogWrapper wrapper, boolean canBeParent, boolean applicationModalIfPossible);
public abstract DialogWrapperPeer createPeer(DialogWrapper wrapper, @NotNull Component parent, boolean canBeParent);
public abstract DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, @Nullable Project project, boolean canBeParent);
public abstract DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, boolean canBeParent);
public abstract DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, boolean canBeParent, boolean applicationModalIfPossible);
public abstract DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, @NotNull Component parent, boolean canBeParent);
}
@@ -31,5 +31,6 @@ public abstract class ActiveRunnable extends ComparableObject.Impl {
super(objects);
}
@NotNull
public abstract ActionCallback run();
}
@@ -52,6 +52,7 @@ public class AsyncResult<T> extends ActionCallback {
@NotNull
public AsyncResult<T> doWhenDone(@NotNull final Handler<T> handler) {
doWhenDone(new Runnable() {
@Override
public void run() {
handler.run(myResult);
}
@@ -72,6 +73,7 @@ public class AsyncResult<T> extends ActionCallback {
@NotNull
public AsyncResult<T> doWhenRejected(@NotNull final Handler<T> handler) {
doWhenRejected(new Runnable() {
@Override
public void run() {
handler.run(myResult);
}
@@ -79,6 +81,7 @@ public class AsyncResult<T> extends ActionCallback {
return this;
}
@Override
@NotNull
public final AsyncResult<T> notify(@NotNull final ActionCallback child) {
super.notify(child);
@@ -109,14 +109,15 @@ public interface BusyObject {
public static class Simple extends Impl {
private AtomicInteger myBusyCount = new AtomicInteger();
private final AtomicInteger myBusyCount = new AtomicInteger();
@Override
public boolean isReady() {
return myBusyCount.get() == 0;
}
public ActionCallback execute(ActiveRunnable runnable) {
@NotNull
public ActionCallback execute(@NotNull ActiveRunnable runnable) {
myBusyCount.addAndGet(1);
ActionCallback cb = runnable.run();
cb.doWhenProcessed(new Runnable() {
@@ -19,7 +19,7 @@ import com.intellij.openapi.ui.popup.util.PopupUtil;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.ActiveRunnable;
import com.intellij.openapi.util.Expirable;
import com.intellij.openapi.util.registry.Registry;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -146,6 +146,7 @@ public abstract class FocusCommand extends ActiveRunnable implements Expirable {
myToFocus = toFocus;
}
@NotNull
public final ActionCallback run() {
if (myToFocus != null) {
if (!myToFocus.requestFocusInWindow()) {
@@ -76,7 +76,7 @@ public abstract class AutoScrollFromSourceHandler implements Disposable {
final MessageBusConnection connection = myProject.getMessageBus().connect(myProject);
connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
final FileEditor editor = event.getNewEditor();
if (editor != null && myComponent.isShowing() && isAutoScrollEnabled()) {
myAlarm.cancelAllRequests();
@@ -66,7 +66,7 @@ public class EditorNotifications extends AbstractProjectComponent {
myFileEditorManager = fileEditorManager;
project.getMessageBus().connect(project).subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
updateNotifications(file);
}
});
@@ -31,6 +31,7 @@ public interface ContentManager extends Disposable, BusyObject {
boolean canCloseContents();
@NotNull
JComponent getComponent();
void addContent(@NotNull Content content);
@@ -38,29 +39,38 @@ public interface ContentManager extends Disposable, BusyObject {
void addContent(@NotNull Content content, Object constraints);
boolean removeContent(@NotNull Content content, final boolean dispose);
@NotNull
ActionCallback removeContent(@NotNull Content content, final boolean dispose, boolean trackFocus, boolean forcedFocus);
void setSelectedContent(@NotNull Content content);
@NotNull
ActionCallback setSelectedContentCB(@NotNull Content content);
void setSelectedContent(@NotNull Content content, boolean requestFocus);
@NotNull
ActionCallback setSelectedContentCB(@NotNull Content content, boolean requestFocus);
void setSelectedContent(@NotNull Content content, boolean requestFocus, boolean forcedFocus);
@NotNull
ActionCallback setSelectedContentCB(@NotNull Content content, boolean requestFocus, boolean forcedFocus);
@NotNull
ActionCallback setSelectedContent(@NotNull Content content, boolean requestFocus, boolean forcedFocus, boolean implicit);
void addSelectedContent(@NotNull Content content);
@Nullable
Content getSelectedContent();
@NotNull Content[] getSelectedContents();
@NotNull
Content[] getSelectedContents();
void removeAllContents(final boolean dispose);
int getContentCount();
@NotNull Content[] getContents();
@NotNull
Content[] getContents();
//TODO[anton,vova] is this method needed?
Content findContent(String displayName);
@@ -72,6 +82,7 @@ public interface ContentManager extends Disposable, BusyObject {
int getIndexOfContent(Content content);
@NotNull
String getCloseActionName();
boolean canCloseAllContents();
@@ -90,10 +101,13 @@ public interface ContentManager extends Disposable, BusyObject {
* @return the action name.
* @since 5.1
*/
@NotNull
String getCloseAllButThisActionName();
@NotNull
String getPreviousContentActionName();
@NotNull
String getNextContentActionName();
List<AnAction> getAdditionalPopupActions(@NotNull Content content);
@@ -102,11 +116,13 @@ public interface ContentManager extends Disposable, BusyObject {
boolean isSelected(@NotNull Content content);
@NotNull
ActionCallback requestFocus(@Nullable Content content, boolean forced);
void addDataProvider(@NotNull DataProvider provider);
@NotNull ContentFactory getFactory();
@NotNull
ContentFactory getFactory();
boolean isDisposed();
@@ -16,23 +16,28 @@
package com.intellij.ui.content;
import com.intellij.openapi.Disposable;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public interface ContentUI extends Disposable {
JComponent getComponent();
void setManager(ContentManager manager);
void setManager(@NotNull ContentManager manager);
boolean isSingleSelection();
boolean isToSelectAddedContent();
boolean canBeEmptySelection();
void beforeDispose();
boolean canChangeSelectionTo(Content content, boolean implicit);
boolean canChangeSelectionTo(@NotNull Content content, boolean implicit);
@NotNull
String getCloseActionName();
@NotNull
String getCloseAllButThisActionName();
@NotNull
String getPreviousContentActionName();
@NotNull
String getNextContentActionName();
}
@@ -37,12 +37,15 @@ public interface JBTabs extends SwitchProvider {
@NotNull
TabInfo addTab(TabInfo info);
@NotNull
ActionCallback removeTab(@Nullable TabInfo info);
void removeAllTabs();
@NotNull
JBTabs setPopupGroup(@NotNull ActionGroup popupGroup, @NotNull String place, final boolean addNavigationGroup);
@NotNull
ActionCallback select(@NotNull TabInfo info, boolean requestFocus);
@Nullable
@@ -69,6 +72,7 @@ public interface JBTabs extends SwitchProvider {
JBTabs setSelectionChangeHandler(SelectionChangeHandler handler);
@Override
@NotNull
JComponent getComponent();
@@ -94,6 +98,7 @@ public interface JBTabs extends SwitchProvider {
void processDropOver(TabInfo over, RelativePoint point);
interface SelectionChangeHandler {
ActionCallback execute(final TabInfo info, final boolean requestFocus, ActiveRunnable doChangeSelection);
@NotNull
ActionCallback execute(final TabInfo info, final boolean requestFocus, @NotNull ActiveRunnable doChangeSelection);
}
}
@@ -207,19 +207,23 @@ public class JBTabsImpl extends JComponent
myLayout = mySingleRowLayout;
myPopupListener = new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(final PopupMenuEvent e) {
}
@Override
public void popupMenuWillBecomeInvisible(final PopupMenuEvent e) {
disposePopupListener();
}
@Override
public void popupMenuCanceled(final PopupMenuEvent e) {
disposePopupListener();
}
};
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(final MouseEvent e) {
if (mySingleRowLayout.myLastSingRowLayout != null &&
mySingleRowLayout.myLastSingRowLayout.moreRect != null &&
@@ -239,6 +243,7 @@ public class JBTabsImpl extends JComponent
});
myAnimator = new Animator("JBTabs Attractions", 2, 500, true) {
@Override
public void paintNow(final int frame, final int totalFrames, final int cycle) {
repaintAttractions();
}
@@ -246,6 +251,7 @@ public class JBTabsImpl extends JComponent
setFocusCycleRoot(true);
setFocusTraversalPolicy(new LayoutFocusTraversalPolicy() {
@Override
public Component getDefaultComponent(final Container aContainer) {
return getToFocus();
}
@@ -256,6 +262,7 @@ public class JBTabsImpl extends JComponent
new LazyUiDisposable<JBTabsImpl>(parent, this, this) {
@Override
protected void initialize(@NotNull Disposable parent, @NotNull JBTabsImpl child, @Nullable Project project) {
if (project != null) {
myProject = project;
@@ -263,6 +270,7 @@ public class JBTabsImpl extends JComponent
Disposer.register(child, myAnimator);
Disposer.register(child, new Disposable() {
@Override
public void dispose() {
removeTimerUpdate();
}
@@ -276,6 +284,7 @@ public class JBTabsImpl extends JComponent
}
UIUtil.addAwtListener(new AWTEventListener() {
@Override
public void eventDispatched(final AWTEvent event) {
if (mySingleRowLayout.myMorePopup != null) return;
processFocusChange();
@@ -298,6 +307,7 @@ public class JBTabsImpl extends JComponent
}
@Override
public JBTabs setNavigationActionBinding(String prevActionId, String nextActionId) {
if (myNextAction != null) {
myNextAction.reconnect(nextActionId);
@@ -313,15 +323,18 @@ public class JBTabsImpl extends JComponent
return false;
}
@Override
public JBTabs setNavigationActionsEnabled(boolean enabled) {
myNavigationActionsEnabled = enabled;
return this;
}
@Override
public final boolean isDisposed() {
return myDisposed;
}
@Override
public JBTabs setAdditionalSwitchProviderWhenOriginal(SwitchProvider delegate) {
mySwitchDelegate = delegate;
return this;
@@ -344,6 +357,7 @@ public class JBTabsImpl extends JComponent
return img;
}
@Override
public void dispose() {
myDisposed = true;
mySelectedInfo = null;
@@ -389,6 +403,7 @@ public class JBTabsImpl extends JComponent
}
}
@Override
public void addNotify() {
super.addNotify();
addTimerUpdate();
@@ -401,6 +416,7 @@ public class JBTabsImpl extends JComponent
}
}
@Override
public void removeNotify() {
super.removeNotify();
@@ -499,10 +515,12 @@ public class JBTabsImpl extends JComponent
}
@Override
public ModalityState getModalityState() {
return ModalityState.stateForComponent(this);
}
@Override
public void run() {
updateTabActions(false);
}
@@ -511,6 +529,7 @@ public class JBTabsImpl extends JComponent
final Ref<Boolean> changed = new Ref<Boolean>(Boolean.FALSE);
for (final TabInfo eachInfo : myInfo2Label.keySet()) {
updateTab(new Computable<Boolean>() {
@Override
public Boolean compute() {
final boolean changes = myInfo2Label.get(eachInfo).updateTabActions();
changed.set(changed.get().booleanValue() || changes);
@@ -552,6 +571,7 @@ public class JBTabsImpl extends JComponent
mySingleRowLayout.myMorePopup.add(item);
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
select(each, true);
}
@@ -559,13 +579,16 @@ public class JBTabsImpl extends JComponent
}
mySingleRowLayout.myMorePopup.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(final PopupMenuEvent e) {
}
@Override
public void popupMenuWillBecomeInvisible(final PopupMenuEvent e) {
mySingleRowLayout.myMorePopup = null;
}
@Override
public void popupMenuCanceled(final PopupMenuEvent e) {
mySingleRowLayout.myMorePopup = null;
}
@@ -611,6 +634,7 @@ public class JBTabsImpl extends JComponent
return toFocus;
}
@Override
public void requestFocus() {
final JComponent toFocus = getToFocus();
if (toFocus != null) {
@@ -621,6 +645,7 @@ public class JBTabsImpl extends JComponent
}
}
@Override
public boolean requestFocusInWindow() {
final JComponent toFocus = getToFocus();
if (toFocus != null) {
@@ -632,6 +657,7 @@ public class JBTabsImpl extends JComponent
}
@Override
@NotNull
public TabInfo addTab(TabInfo info, int index) {
return addTab(info, index, false, true);
@@ -693,6 +719,7 @@ public class JBTabsImpl extends JComponent
return new TabLabel(this, info);
}
@Override
@NotNull
public TabInfo addTab(TabInfo info) {
return addTab(info, -1);
@@ -707,14 +734,18 @@ public class JBTabsImpl extends JComponent
return myPopupPlace;
}
@Override
@NotNull
public JBTabs setPopupGroup(@NotNull final ActionGroup popupGroup, @NotNull String place, final boolean addNavigationGroup) {
return setPopupGroup(new Getter<ActionGroup>() {
@Override
public ActionGroup get() {
return popupGroup;
}
}, place, addNavigationGroup);
}
@NotNull
public JBTabs setPopupGroup(@NotNull final Getter<ActionGroup> popupGroup,
@NotNull final String place,
final boolean addNavigationGroup) {
@@ -751,13 +782,17 @@ public class JBTabsImpl extends JComponent
return (JComponent)(owner instanceof JComponent ? owner : null);
}
@Override
@NotNull
public ActionCallback select(@NotNull TabInfo info, boolean requestFocus) {
return _setSelected(info, requestFocus);
}
@NotNull
private ActionCallback _setSelected(final TabInfo info, final boolean requestFocus) {
if (mySelectionChangeHandler != null) {
return mySelectionChangeHandler.execute(info, requestFocus, new ActiveRunnable() {
@NotNull
@Override
public ActionCallback run() {
return executeSelectionChange(info, requestFocus);
@@ -769,6 +804,7 @@ public class JBTabsImpl extends JComponent
}
}
@NotNull
private ActionCallback executeSelectionChange(TabInfo info, boolean requestFocus) {
if (mySelectedInfo != null && mySelectedInfo.equals(info)) {
if (!requestFocus) {
@@ -807,6 +843,7 @@ public class JBTabsImpl extends JComponent
if (myProject != null && toFocus != null) {
final ActionCallback result = new ActionCallback();
requestFocus(toFocus).doWhenProcessed(new Runnable() {
@Override
public void run() {
if (myDisposed) {
result.setRejected();
@@ -860,6 +897,7 @@ public class JBTabsImpl extends JComponent
}
}
@NotNull
private ActionCallback requestFocus(final JComponent toFocus) {
if (toFocus == null) return new ActionCallback.Done();
@@ -895,12 +933,14 @@ public class JBTabsImpl extends JComponent
}
}
@NotNull
private ActionCallback removeDeferred() {
final ActionCallback callback = new ActionCallback();
final long executionRequest = ++myRemoveDeferredRequest;
final Runnable onDone = new Runnable() {
@Override
public void run() {
if (myRemoveDeferredRequest == executionRequest) {
removeDeferredNow();
@@ -937,6 +977,7 @@ public class JBTabsImpl extends JComponent
myDeferredToRemove.clear();
}
@Override
public void propertyChange(final PropertyChangeEvent evt) {
final TabInfo tabInfo = (TabInfo)evt.getSource();
if (TabInfo.ACTION_GROUP.equals(evt.getPropertyName())) {
@@ -1041,6 +1082,7 @@ public class JBTabsImpl extends JComponent
private void updateIcon(final TabInfo tabInfo) {
updateTab(new Computable<Boolean>() {
@Override
public Boolean compute() {
myInfo2Label.get(tabInfo).setIcon(tabInfo.getIcon());
return true;
@@ -1052,6 +1094,7 @@ public class JBTabsImpl extends JComponent
myInfo2Label.get(tabInfo).setInactiveStateImage(null);
updateTab(new Computable<Boolean>() {
@Override
public Boolean compute() {
repaint();
return true;
@@ -1119,6 +1162,7 @@ public class JBTabsImpl extends JComponent
private void updateText(final TabInfo tabInfo) {
updateTab(new Computable<Boolean>() {
@Override
public Boolean compute() {
final TabLabel label = myInfo2Label.get(tabInfo);
label.setText(tabInfo.getColoredText());
@@ -1143,6 +1187,7 @@ public class JBTabsImpl extends JComponent
myInfo2Label.get(info).setTabActions(info.getTabLabelActions());
}
@Override
@Nullable
public TabInfo getSelectedInfo() {
if (myOldSelection != null) return myOldSelection;
@@ -1214,6 +1259,7 @@ public class JBTabsImpl extends JComponent
return new Toolbar(this, tabInfo);
}
@Override
@NotNull
public TabInfo getTabAt(final int tabIndex) {
return getTabs().get(tabIndex);
@@ -1235,17 +1281,21 @@ public class JBTabsImpl extends JComponent
return result;
}
@Override
public TabInfo getTargetInfo() {
return myPopupInfo != null ? myPopupInfo : getSelectedInfo();
}
@Override
public void popupMenuWillBecomeVisible(final PopupMenuEvent e) {
}
@Override
public void popupMenuWillBecomeInvisible(final PopupMenuEvent e) {
resetPopup();
}
@Override
public void popupMenuCanceled(final PopupMenuEvent e) {
resetPopup();
}
@@ -1253,12 +1303,14 @@ public class JBTabsImpl extends JComponent
private void resetPopup() {
//todo [kirillk] dirty hack, should rely on ActionManager to understand that menu item was either chosen on or cancelled
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
myPopupInfo = null;
}
});
}
@Override
public void setPaintBlocked(boolean blocked, final boolean takeSnapshot) {
if (blocked && !myPaintBlocked) {
if (takeSnapshot) {
@@ -1294,12 +1346,14 @@ public class JBTabsImpl extends JComponent
return myToDrawBorderIfTabsHidden;
}
@Override
@NotNull
public JBTabsPresentation setToDrawBorderIfTabsHidden(final boolean toDrawBorderIfTabsHidden) {
myToDrawBorderIfTabsHidden = toDrawBorderIfTabsHidden;
return this;
}
@Override
@NotNull
public JBTabs getJBTabs() {
return this;
@@ -1341,6 +1395,7 @@ public class JBTabsImpl extends JComponent
}
@Override
public void doLayout() {
try {
myHeaderFitSize = computeHeaderFitSize();
@@ -1451,6 +1506,7 @@ public class JBTabsImpl extends JComponent
}
@Override
public JBTabsPresentation setInnerInsets(final Insets innerInsets) {
myInnerInsets = innerInsets;
return this;
@@ -1530,6 +1586,7 @@ public class JBTabsImpl extends JComponent
g2d.fill(clip);
}
@Override
protected void paintComponent(final Graphics g) {
super.paintComponent(g);
@@ -2165,6 +2222,7 @@ public class JBTabsImpl extends JComponent
}
@Override
public void paint(final Graphics g) {
Rectangle clip = g.getClipBounds();
if (clip == null) {
@@ -2181,6 +2239,7 @@ public class JBTabsImpl extends JComponent
super.paint(g);
}
@Override
protected void paintChildren(final Graphics g) {
super.paintChildren(g);
@@ -2215,16 +2274,20 @@ public class JBTabsImpl extends JComponent
return max;
}
@Override
public Dimension getMinimumSize() {
return computeSize(new Transform<JComponent, Dimension>() {
@Override
public Dimension transform(JComponent component) {
return component.getMinimumSize();
}
}, 1);
}
@Override
public Dimension getPreferredSize() {
return computeSize(new Transform<JComponent, Dimension>() {
@Override
public Dimension transform(JComponent component) {
return component.getPreferredSize();
}
@@ -2312,23 +2375,29 @@ public class JBTabsImpl extends JComponent
return size;
}
@Override
public int getTabCount() {
return getTabs().size();
}
@Override
@NotNull
public JBTabsPresentation getPresentation() {
return this;
}
@Override
@NotNull
public ActionCallback removeTab(final TabInfo info) {
return removeTab(info, null, true);
}
@NotNull
public ActionCallback removeTab(final TabInfo info, @Nullable TabInfo forcedSelectionTransfer, boolean transferFocus) {
return removeTab(info, forcedSelectionTransfer, transferFocus, false);
}
@NotNull
private ActionCallback removeTab(TabInfo info, @Nullable TabInfo forcedSelectionTransfer, boolean transferFocus, boolean isDropTarget) {
if (!isDropTarget) {
if (info == null || !getTabs().contains(info)) return new ActionCallback.Done();
@@ -2357,6 +2426,7 @@ public class JBTabsImpl extends JComponent
mySelectedInfo = info;
}
_setSelected(toSelect, transferFocus).doWhenProcessed(new Runnable() {
@Override
public void run() {
removeDeferred().notifyWhenDone(result);
}
@@ -2410,6 +2480,7 @@ public class JBTabsImpl extends JComponent
return null;
}
@Override
public TabInfo findInfo(MouseEvent event) {
return findInfo(event, false);
}
@@ -2420,6 +2491,7 @@ public class JBTabsImpl extends JComponent
return _findInfo(point, labelsOnly);
}
@Override
public TabInfo findInfo(final Object object) {
for (int i = 0; i < getTabCount(); i++) {
final TabInfo each = getTabAt(i);
@@ -2448,6 +2520,7 @@ public class JBTabsImpl extends JComponent
return null;
}
@Override
public void removeAllTabs() {
for (TabInfo each : getTabs()) {
removeTab(each);
@@ -2490,6 +2563,7 @@ public class JBTabsImpl extends JComponent
relayout(forced, layoutNow);
}
@Override
protected void addImpl(final Component comp, final Object constraints, final int index) {
unqueueFromRemove(comp);
@@ -2516,6 +2590,7 @@ public class JBTabsImpl extends JComponent
return myBorder;
}
@Override
@NotNull
public JBTabs addTabMouseListener(@NotNull MouseListener listener) {
removeListeners();
@@ -2524,11 +2599,13 @@ public class JBTabsImpl extends JComponent
return this;
}
@Override
@NotNull
public JComponent getComponent() {
return this;
}
@Override
public boolean isCycleRoot() {
return false;
}
@@ -2572,6 +2649,7 @@ public class JBTabsImpl extends JComponent
addListeners();
}
@Override
public JBTabs addListener(@NotNull TabsListener listener) {
myTabListeners.add(listener);
return this;
@@ -2593,14 +2671,17 @@ public class JBTabsImpl extends JComponent
}
}
@Override
public int getIndexOf(@Nullable final TabInfo tabInfo) {
return myVisibleInfos.indexOf(tabInfo);
}
@Override
public boolean isHideTabs() {
return myHideTabs;
}
@Override
public void setHideTabs(final boolean hideTabs) {
if (isHideTabs() == hideTabs) return;
@@ -2609,10 +2690,12 @@ public class JBTabsImpl extends JComponent
relayout(true, false);
}
@Override
public JBTabsPresentation setPaintBorder(int top, int left, int right, int bottom) {
return myBorder.setPaintBorder(top, left, right, bottom);
}
@Override
public JBTabsPresentation setTabSidePaintBorder(int size) {
return myBorder.setTabSidePaintBorder(size);
}
@@ -2625,6 +2708,7 @@ public class JBTabsImpl extends JComponent
return myPaintFocus;
}
@Override
@NotNull
public JBTabsPresentation setActiveTabFillIn(@Nullable final Color color) {
if (!isChanged(myActiveTabFillIn, color)) return this;
@@ -2639,6 +2723,7 @@ public class JBTabsImpl extends JComponent
return oldObject != null && !oldObject.equals(newObject) || newObject != null && !newObject.equals(oldObject);
}
@Override
@NotNull
public JBTabsPresentation setTabLabelActionsAutoHide(final boolean autoHide) {
if (myTabLabelActionsAutoHide != autoHide) {
@@ -2653,12 +2738,14 @@ public class JBTabsImpl extends JComponent
return myActiveTabFillIn;
}
@Override
public JBTabsPresentation setFocusCycle(final boolean root) {
setFocusCycleRoot(root);
return this;
}
@Override
public JBTabsPresentation setPaintFocus(final boolean paintFocus) {
myPaintFocus = paintFocus;
return this;
@@ -2678,6 +2765,7 @@ public class JBTabsImpl extends JComponent
setEnabledInModalContext(true);
}
@Override
public final void update(final AnActionEvent e) {
JBTabsImpl tabs = e.getData(NAVIGATION_ACTIONS_KEY);
e.getPresentation().setVisible(tabs != null);
@@ -2721,6 +2809,7 @@ public class JBTabsImpl extends JComponent
protected abstract void _update(AnActionEvent e, final JBTabsImpl tabs, int selectedIndex);
@Override
public final void actionPerformed(final AnActionEvent e) {
JBTabsImpl tabs = e.getData(NAVIGATION_ACTIONS_KEY);
tabs = findNavigatableTabs(tabs);
@@ -2740,10 +2829,12 @@ public class JBTabsImpl extends JComponent
super(IdeActions.ACTION_NEXT_TAB, tabs, mgr);
}
@Override
protected void _update(final AnActionEvent e, final JBTabsImpl tabs, int selectedIndex) {
e.getPresentation().setEnabled(tabs.findEnabledForward(selectedIndex, true) != null);
}
@Override
protected void _actionPerformed(final AnActionEvent e, final JBTabsImpl tabs, final int selectedIndex) {
tabs.select(tabs.findEnabledForward(selectedIndex, true), true);
}
@@ -2754,10 +2845,12 @@ public class JBTabsImpl extends JComponent
super(IdeActions.ACTION_PREVIOUS_TAB, tabs, mgr);
}
@Override
protected void _update(final AnActionEvent e, final JBTabsImpl tabs, int selectedIndex) {
e.getPresentation().setEnabled(tabs.findEnabledBackward(selectedIndex, true) != null);
}
@Override
protected void _actionPerformed(final AnActionEvent e, final JBTabsImpl tabs, final int selectedIndex) {
tabs.select(tabs.findEnabledBackward(selectedIndex, true), true);
}
@@ -2770,6 +2863,7 @@ public class JBTabsImpl extends JComponent
}
}
@Override
public JBTabsPresentation setStealthTabMode(final boolean stealthTabMode) {
myStealthTabMode = stealthTabMode;
@@ -2782,6 +2876,7 @@ public class JBTabsImpl extends JComponent
return myStealthTabMode;
}
@Override
public JBTabsPresentation setSideComponentVertical(final boolean vertical) {
myHorizontalSide = !vertical;
@@ -2804,6 +2899,7 @@ public class JBTabsImpl extends JComponent
return this;
}
@Override
public JBTabsPresentation setSingleRow(boolean singleRow) {
myLayout = singleRow ? mySingleRowLayout : myTableLayout;
@@ -2812,6 +2908,7 @@ public class JBTabsImpl extends JComponent
return this;
}
@Override
public JBTabsPresentation setGhostsAlwaysVisible(final boolean visible) {
myGhostsAlwaysVisible = visible;
@@ -2836,6 +2933,7 @@ public class JBTabsImpl extends JComponent
return myGhostsAlwaysVisible;
}
@Override
public boolean isSingleRow() {
return getEffectiveLayout() == mySingleRowLayout;
}
@@ -2853,20 +2951,24 @@ public class JBTabsImpl extends JComponent
return mySingleRowLayout;
}
@Override
public JBTabsPresentation setUiDecorator(@Nullable UiDecorator decorator) {
myUiDecorator = decorator == null ? ourDefaultDecorator : decorator;
applyDecoration();
return this;
}
@Override
protected void setUI(final ComponentUI newUI) {
super.setUI(newUI);
applyDecoration();
}
@Override
public void updateUI() {
super.updateUI();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
applyDecoration();
@@ -2907,12 +3009,14 @@ public class JBTabsImpl extends JComponent
return myRequestFocusOnLastFocusedComponent;
}
@Override
public JBTabsPresentation setRequestFocusOnLastFocusedComponent(final boolean requestFocusOnLastFocusedComponent) {
myRequestFocusOnLastFocusedComponent = requestFocusOnLastFocusedComponent;
return this;
}
@Override
@Nullable
public Object getData(@NonNls final String dataId) {
if (myDataProvider != null) {
@@ -2931,6 +3035,7 @@ public class JBTabsImpl extends JComponent
return NAVIGATION_ACTIONS_KEY.is(dataId) ? this : null;
}
@Override
public List<AnAction> getActions(boolean originalProvider) {
ArrayList<AnAction> result = new ArrayList<AnAction>();
@@ -2946,6 +3051,7 @@ public class JBTabsImpl extends JComponent
return result;
}
@Override
public DataProvider getDataProvider() {
return myDataProvider;
}
@@ -2968,6 +3074,7 @@ public class JBTabsImpl extends JComponent
private static class DefaultDecorator implements UiDecorator {
@Override
@NotNull
public UiDecoration getDecoration() {
return new UiDecoration(null, new Insets(0, 4, 0, 5));
@@ -3008,6 +3115,7 @@ public class JBTabsImpl extends JComponent
}
@Override
@NotNull
public JBTabsPresentation setTabLabelActionsMouseDeadzone(final TimedDeadzone.Length length) {
myTabActionsMouseDeadzone = length;
@@ -3019,6 +3127,7 @@ public class JBTabsImpl extends JComponent
return this;
}
@Override
@NotNull
public JBTabsPresentation setTabsPosition(final JBTabsPosition position) {
myPosition = position;
@@ -3026,6 +3135,7 @@ public class JBTabsImpl extends JComponent
return this;
}
@Override
public JBTabsPosition getTabsPosition() {
return myPosition;
}
@@ -3034,6 +3144,7 @@ public class JBTabsImpl extends JComponent
return myTabActionsMouseDeadzone;
}
@Override
public JBTabsPresentation setTabDraggingEnabled(boolean enabled) {
myTabDraggingEnabled = enabled;
return this;
@@ -3043,6 +3154,7 @@ public class JBTabsImpl extends JComponent
return myTabDraggingEnabled;
}
@Override
public JBTabsPresentation setProvideSwitchTargets(boolean provide) {
myOwnSwitchProvider = provide;
return this;
@@ -3064,6 +3176,7 @@ public class JBTabsImpl extends JComponent
return getTabsPosition() == JBTabsPosition.top || getTabsPosition() == JBTabsPosition.bottom;
}
@Override
public void putInfo(@NotNull Map<String, String> info) {
final TabInfo selected = getSelectedInfo();
if (selected != null) {
@@ -3077,6 +3190,7 @@ public class JBTabsImpl extends JComponent
repaint();
}
@Override
public List<SwitchTarget> getTargets(boolean onlyVisible, boolean originalProvider) {
ArrayList<SwitchTarget> result = new ArrayList<SwitchTarget>();
for (TabInfo each : myVisibleInfos) {
@@ -3094,6 +3208,7 @@ public class JBTabsImpl extends JComponent
}
@Override
public SwitchTarget getCurrentTarget() {
if (mySwitchDelegate != null) {
SwitchTarget selection = mySwitchDelegate.getCurrentTarget();
@@ -3111,14 +3226,17 @@ public class JBTabsImpl extends JComponent
myInfo = info;
}
@Override
public ActionCallback switchTo(boolean requestFocus) {
return select(myInfo, requestFocus);
}
@Override
public boolean isVisible() {
return getRectangle() != null;
}
@Override
public RelativeRectangle getRectangle() {
TabLabel label = myInfo2Label.get(myInfo);
if (label.getRootPane() == null) return null;
@@ -3131,6 +3249,7 @@ public class JBTabsImpl extends JComponent
return new RelativeRectangle(label.getParent(), b);
}
@Override
public Component getComponent() {
return myInfo2Label.get(myInfo);
}
@@ -423,7 +423,7 @@ public class HintManagerImpl extends HintManager implements Disposable {
hint.show(layeredPane, p.x, p.y, editor.getContentComponent(), hintInfo);
}
}
public static void updateLocation(final LightweightHint hint, final Editor editor, Point p) {
doShowInGivenLocation(hint, editor, p, createHintHint(editor, p, hint, UNDER), false);
}
@@ -863,7 +863,7 @@ public class HintManagerImpl extends HintManager implements Disposable {
*/
private final class MyEditorManagerListener extends FileEditorManagerAdapter {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
hideHints(0, false, true);
}
}
@@ -123,6 +123,7 @@ public class ProjectUtil {
if (project != null) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
if (!project.isDisposed()) {
final ToolWindow toolWindow = ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.PROJECT_VIEW);
@@ -251,6 +252,7 @@ public class ProjectUtil {
public static void focusProjectWindow(final Project p, boolean executeIfAppInactive) {
FocusCommand cmd = new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
JFrame f = WindowManager.getInstance().getFrame(p);
@@ -65,7 +65,7 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
@Nullable
public abstract VirtualFile getFile(@NotNull FileEditor editor);
public abstract void updateFilePresentation(VirtualFile file);
public abstract void updateFilePresentation(@NotNull VirtualFile file);
/**
*
@@ -73,6 +73,7 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
*/
public abstract EditorWindow getCurrentWindow();
@NotNull
public abstract AsyncResult<EditorWindow> getActiveWindow();
public abstract void setCurrentWindow(EditorWindow window);
@@ -101,7 +102,8 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
* is not open. The returned files have the same order as they have in the
* tabbed container.
*/
@NotNull public abstract VirtualFile[] getSiblings(VirtualFile file);
@NotNull
public abstract VirtualFile[] getSiblings(@NotNull VirtualFile file);
public abstract void createSplitter(int orientation, @Nullable EditorWindow window);
@@ -122,8 +124,10 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
public abstract void closeAllFiles();
@NotNull
public abstract EditorsSplitters getSplitters();
@Override
@NotNull
public FileEditor[] openFile(@NotNull final VirtualFile file, final boolean focusEditor) {
return openFileWithProviders(file, focusEditor, false).getFirst ();
@@ -135,13 +139,15 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
return openFileWithProviders(file, focusEditor, searchForOpen).getFirst();
}
@NotNull public abstract Pair<FileEditor[],FileEditorProvider[]> openFileWithProviders(@NotNull VirtualFile file,
boolean focusEditor,
boolean searchForSplitter);
@NotNull
public abstract Pair<FileEditor[],FileEditorProvider[]> openFileWithProviders(@NotNull VirtualFile file,
boolean focusEditor,
boolean searchForSplitter);
@NotNull public abstract Pair<FileEditor[],FileEditorProvider[]> openFileWithProviders(@NotNull VirtualFile file,
boolean focusEditor,
@NotNull EditorWindow window);
@NotNull
public abstract Pair<FileEditor[],FileEditorProvider[]> openFileWithProviders(@NotNull VirtualFile file,
boolean focusEditor,
@NotNull EditorWindow window);
public abstract boolean isChanged(@NotNull EditorComposite editor);
@@ -152,7 +158,7 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
public abstract boolean isInsideChange();
@Nullable
public final Object getData(String dataId, Editor editor, final VirtualFile file) {
public final Object getData(@NotNull String dataId, @NotNull Editor editor, @NotNull VirtualFile file) {
for (final EditorDataProvider dataProvider : myDataProviders) {
final Object o = dataProvider.getData(dataId, editor, file);
if (o != null) return o;
@@ -160,10 +166,12 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
return null;
}
@Override
public void registerExtraEditorDataProvider(@NotNull final EditorDataProvider provider, Disposable parentDisposable) {
myDataProviders.add(provider);
if (parentDisposable != null) {
Disposer.register(parentDisposable, new Disposable() {
@Override
public void dispose() {
myDataProviders.remove(provider);
}
@@ -186,6 +194,7 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
public abstract EditorsSplitters getSplittersFor(Component c);
public abstract ActionCallback notifyPublisher(Runnable runnable);
@NotNull
public abstract ActionCallback notifyPublisher(@NotNull Runnable runnable);
}
@@ -177,7 +177,7 @@ public abstract class EditorComposite implements Disposable {
myFileEditorManager.addFileEditorManagerListener(new FileEditorManagerAdapter() {
@Override
public void selectionChanged(final FileEditorManagerEvent event) {
public void selectionChanged(@NotNull final FileEditorManagerEvent event) {
final VirtualFile oldFile = event.getOldFile();
final VirtualFile newFile = event.getNewFile();
if (Comparing.equal(oldFile, newFile) && Comparing.equal(getFile(), newFile)) {
@@ -436,7 +436,7 @@ public abstract class EditorComposite implements Disposable {
return result == null ? Color.black : result;
}
});
add(component);
}
}
@@ -109,7 +109,7 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
private void fileOpenedImpl(@NotNull final VirtualFile file) {
fileOpenedImpl(file, null, null);
}
/**
* Makes file most recent one
*/
@@ -161,11 +161,11 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
trimToSize();
}
}
private void updateHistoryEntry(@Nullable final VirtualFile file, final boolean changeEntryOrderOnly) {
updateHistoryEntry(file, null, null, changeEntryOrderOnly);
}
private void updateHistoryEntry(@Nullable final VirtualFile file,
@Nullable final FileEditor fallbackEditor,
@Nullable FileEditorProvider fallbackProvider,
@@ -182,7 +182,7 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
editors = new FileEditor[] {fallbackEditor};
providers = new FileEditorProvider[] {fallbackProvider};
}
if (editors.length == 0) {
// obviously not opened in any editor at the moment,
// makes no sense to put the file in the history
@@ -312,9 +312,9 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
}
public void readExternal(final Element element) {
// we have to delay xml processing because history entries require EditorStates to be created
// which is done via corresponding EditorProviders, those are not accessible before their
// is initComponent() called
// we have to delay xml processing because history entries require EditorStates to be created
// which is done via corresponding EditorProviders, those are not accessible before their
// is initComponent() called
myElement = (Element)element.clone();
}
@@ -337,11 +337,11 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
* Updates history
*/
private final class MyEditorManagerListener extends FileEditorManagerAdapter{
public void fileOpened(final FileEditorManager source, final VirtualFile file){
public void fileOpened(@NotNull final FileEditorManager source, @NotNull final VirtualFile file){
fileOpenedImpl(file);
}
public void selectionChanged(final FileEditorManagerEvent event){
public void selectionChanged(@NotNull final FileEditorManagerEvent event){
updateHistoryEntry(event.getOldFile(), event.getOldEditor(), event.getOldProvider(), false);
updateHistoryEntry(event.getNewFile(), true);
}
@@ -349,7 +349,7 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
private final class MyEditorManagerBeforeListener extends FileEditorManagerListener.Before.Adapter {
@Override
public void beforeFileClosed(FileEditorManager source, VirtualFile file) {
public void beforeFileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
updateHistoryEntry(file, false);
}
}
@@ -84,7 +84,7 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos
myWindow = window;
myProject = project;
final ActionManager actionManager = ActionManager.getInstance();
myTabs = new JBEditorTabs(project, actionManager, IdeFocusManager.getInstance(project), this);
myTabs = new JBEditorTabs(project, actionManager, IdeFocusManager.getInstance(project), this);
myTabs.setDataProvider(new MyDataProvider()).setPopupGroup(new Getter<ActionGroup>() {
public ActionGroup get() {
return (ActionGroup)CustomActionsSchema.getInstance().getCorrectedAction(IdeActions.GROUP_EDITOR_TAB_POPUP);
@@ -112,8 +112,9 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos
}
}).setAdditionalSwitchProviderWhenOriginal(new MySwitchProvider())
.setSelectionChangeHandler(new JBTabs.SelectionChangeHandler() {
@NotNull
@Override
public ActionCallback execute(TabInfo info, boolean requestFocus, final ActiveRunnable doChangeSelection) {
public ActionCallback execute(TabInfo info, boolean requestFocus, @NotNull final ActiveRunnable doChangeSelection) {
final ActionCallback result = new ActionCallback();
CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
@Override
@@ -134,7 +134,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
if (Extensions.getExtensions(FileEditorAssociateFinder.EP_NAME).length > 0) {
myListenerList.add(new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
EditorsSplitters splitters = getSplitters();
openAssociatedFile(event.getNewFile(), splitters.getCurrentWindow(), splitters);
}
@@ -164,6 +164,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return myPanels;
}
@NotNull
public EditorsSplitters getMainSplitters() {
initUI();
@@ -311,7 +312,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return FileUtil.getLocationRelativeToUserHome(file.getPresentableUrl());
}
public void updateFilePresentation(VirtualFile file) {
public void updateFilePresentation(@NotNull VirtualFile file) {
if (!isFileOpen(file)) return;
updateFileColor(file);
@@ -505,10 +506,12 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return getActiveSplitters(true).getResult().getCurrentFile();
}
@NotNull
public AsyncResult<EditorWindow> getActiveWindow() {
return _getActiveWindow(false);
}
@NotNull
private AsyncResult<EditorWindow> _getActiveWindow(boolean now) {
final AsyncResult<EditorWindow> result = new AsyncResult<EditorWindow>();
getActiveSplitters(now).doWhenDone(new AsyncResult.Handler<EditorsSplitters>() {
@@ -926,11 +929,13 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return editorHistoryManager.getSelectedProvider(file);
}
@NotNull
@Override
public ActionCallback notifyPublisher(final Runnable runnable) {
public ActionCallback notifyPublisher(@NotNull final Runnable runnable) {
final IdeFocusManager focusManager = IdeFocusManager.getInstance(myProject);
final ActionCallback done = new ActionCallback();
return myBusyObject.execute(new ActiveRunnable() {
@NotNull
@Override
public ActionCallback run() {
focusManager.doWhenFocusSettlesDown(new ExpirableRunnable.ForProject(myProject) {
@@ -946,7 +951,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
@Override
public void setSelectedEditor(VirtualFile file, String fileEditorProviderId) {
public void setSelectedEditor(@NotNull VirtualFile file, String fileEditorProviderId) {
EditorWithProviderComposite composite = getCurrentEditorWithProviderComposite(file);
if (composite == null) {
final List<EditorWithProviderComposite> composites = getEditorComposites(file);
@@ -1080,7 +1085,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
@Nullable
public Editor openTextEditor(final OpenFileDescriptor descriptor, final boolean focusEditor) {
public Editor openTextEditor(@NotNull final OpenFileDescriptor descriptor, final boolean focusEditor) {
final Collection<FileEditor> fileEditors = openEditor(descriptor, focusEditor);
for (FileEditor fileEditor : fileEditors) {
if (fileEditor instanceof TextEditor) {
@@ -1146,6 +1151,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return selectedEditors.toArray(new FileEditor[selectedEditors.size()]);
}
@NotNull
public EditorsSplitters getSplitters() {
EditorsSplitters active = getActiveSplitters(true).getResult();
return active == null ? getMainSplitters() : active;
@@ -1459,7 +1465,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
});
}
}
@NotNull
private static Trinity<VirtualFile, FileEditor, FileEditorProvider> extract(@Nullable EditorComposite composite) {
final VirtualFile file;
@@ -1478,7 +1484,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
return new Trinity<VirtualFile, FileEditor, FileEditorProvider>(file, editor, provider);
}
public boolean isChanged(@NotNull final EditorComposite editor) {
final FileStatusManager fileStatusManager = FileStatusManager.getInstance(myProject);
if (fileStatusManager != null) {
@@ -1796,7 +1802,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
@NotNull
public VirtualFile[] getSiblings(VirtualFile file) {
public VirtualFile[] getSiblings(@NotNull VirtualFile file) {
return getOpenFiles();
}
@@ -129,7 +129,7 @@ public class IdeDocumentHistoryImpl extends IdeDocumentHistory implements Projec
myProject.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent e) {
public void selectionChanged(@NotNull FileEditorManagerEvent e) {
onSelectionChanged();
}
});
@@ -440,7 +440,7 @@ public class IdeDocumentHistoryImpl extends IdeDocumentHistory implements Projec
removed = true;
}
}
return removed;
}
@@ -630,7 +630,7 @@ public class ProgressWindow extends BlockingProgressIndicator implements Disposa
}
@Override
protected DialogWrapperPeer createPeer(final Component parent, final boolean canBeParent) {
protected DialogWrapperPeer createPeer(@NotNull final Component parent, final boolean canBeParent) {
if (System.getProperty("vintage.progress") == null) {
try {
return new GlassPaneDialogWrapperPeer(this, parent, canBeParent);
@@ -26,22 +26,22 @@ import java.awt.*;
public class DialogWrapperPeerFactoryImpl extends DialogWrapperPeerFactory {
@Override
public DialogWrapperPeer createPeer(DialogWrapper wrapper, @Nullable Project project, boolean canBeParent) {
public DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, @Nullable Project project, boolean canBeParent) {
return new DialogWrapperPeerImpl(wrapper, project, canBeParent);
}
@Override
public DialogWrapperPeer createPeer(DialogWrapper wrapper, boolean canBeParent) {
public DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, boolean canBeParent) {
return new DialogWrapperPeerImpl(wrapper, canBeParent);
}
@Override
public DialogWrapperPeer createPeer(final DialogWrapper wrapper, final boolean canBeParent, final boolean applicationModalIfPossible) {
public DialogWrapperPeer createPeer(@NotNull final DialogWrapper wrapper, final boolean canBeParent, final boolean applicationModalIfPossible) {
return new DialogWrapperPeerImpl(wrapper, canBeParent, applicationModalIfPossible);
}
@Override
public DialogWrapperPeer createPeer(DialogWrapper wrapper, @NotNull Component parent, boolean canBeParent) {
public DialogWrapperPeer createPeer(@NotNull DialogWrapper wrapper, @NotNull Component parent, boolean canBeParent) {
return new DialogWrapperPeerImpl(wrapper, parent, canBeParent);
}
}
@@ -64,7 +64,7 @@ import java.util.Map;
public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTrackbackProvider {
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.ui.DialogWrapper");
private DialogWrapper myWrapper;
private final DialogWrapper myWrapper;
private AbstractDialog myDialog;
private boolean myCanBeParent = true;
private WindowManagerEx myWindowManager;
@@ -84,7 +84,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
* @param canBeParent specifies whether the dialog can be parent for other windows. This parameter is used
* by <code>WindowManager</code>.
*/
protected DialogWrapperPeerImpl(DialogWrapper wrapper, @Nullable Project project, boolean canBeParent) {
protected DialogWrapperPeerImpl(@NotNull DialogWrapper wrapper, @Nullable Project project, boolean canBeParent) {
myWrapper = wrapper;
myTypeAheadCallback = myWrapper.isTypeAheadEnabled() ? new ActionCallback() : null;
myWindowManager = null;
@@ -127,10 +127,11 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
createDialog(owner, canBeParent);
}
protected DialogWrapperPeerImpl(DialogWrapper wrapper, boolean canBeParent) {
protected DialogWrapperPeerImpl(@NotNull DialogWrapper wrapper, boolean canBeParent) {
this(wrapper, (Project)null, canBeParent);
}
@Override
public boolean isHeadless() {
return isHeadlessEnv();
}
@@ -151,7 +152,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
* @param parent parent component which is used to calculate heavy weight window ancestor.
* <code>parent</code> cannot be <code>null</code> and must be showing.
*/
protected DialogWrapperPeerImpl(DialogWrapper wrapper, @NotNull Component parent, boolean canBeParent) {
protected DialogWrapperPeerImpl(@NotNull DialogWrapper wrapper, @NotNull Component parent, boolean canBeParent) {
myWrapper = wrapper;
if (!parent.isShowing() && parent != JOptionPane.getRootFrame()) {
throw new IllegalArgumentException("parent must be showing: " + parent);
@@ -169,7 +170,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
createDialog(owner, canBeParent);
}
public DialogWrapperPeerImpl(final DialogWrapper wrapper, final boolean canBeParent, final boolean applicationModalIfPossible) {
public DialogWrapperPeerImpl(@NotNull DialogWrapper wrapper, final boolean canBeParent, final boolean applicationModalIfPossible) {
myWrapper = wrapper;
myWindowManager = null;
Application application = ApplicationManager.getApplication();
@@ -186,18 +187,22 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
}
}
@Override
public void setUndecorated(boolean undecorated) {
myDialog.setUndecorated(undecorated);
}
@Override
public void addMouseListener(MouseListener listener) {
myDialog.addMouseListener(listener);
}
@Override
public void addMouseListener(MouseMotionListener listener) {
myDialog.addMouseMotionListener(listener);
}
@Override
public void addKeyListener(KeyListener listener) {
myDialog.addKeyListener(listener);
}
@@ -215,14 +220,17 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
myCanBeParent = canBeParent;
}
@Override
public void toFront() {
myDialog.toFront();
}
@Override
public void toBack() {
myDialog.toBack();
}
@Override
@SuppressWarnings("SSBasedInspection")
protected void dispose() {
LOG.assertTrue(EventQueue.isDispatchThread(), "Access is allowed from event dispatch thread only");
@@ -233,11 +241,13 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
final JRootPane root = myDialog.getRootPane();
Runnable disposer = new Runnable() {
@Override
public void run() {
myDialog.dispose();
myProject = null;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (myDialog != null && root != null) {
myDialog.remove(root);
@@ -259,6 +269,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
return myWrapper.isModalProgress();
}
@Override
@Nullable
public Container getContentPane() {
return getRootPane() != null ? myDialog.getContentPane() : null;
@@ -267,6 +278,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
/**
* @see javax.swing.JDialog#validate
*/
@Override
public void validate() {
myDialog.validate();
}
@@ -274,26 +286,32 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
/**
* @see javax.swing.JDialog#repaint
*/
@Override
public void repaint() {
myDialog.repaint();
}
@Override
public Window getOwner() {
return myDialog.getOwner();
}
@Override
public Window getWindow() {
return myDialog.getWindow();
}
@Override
public JRootPane getRootPane() {
return myDialog.getRootPane();
}
@Override
public Dimension getSize() {
return myDialog.getSize();
}
@Override
public String getTitle() {
return myDialog.getTitle();
}
@@ -301,23 +319,28 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
/**
* @see java.awt.Window#pack
*/
@Override
public void pack() {
myDialog.pack();
}
@Override
@SuppressWarnings("UnusedDeclaration")
public void setIconImages(final List<Image> images) {
myDialog.getWindow().setIconImages(images);
}
@Override
public void setAppIcons() {
AppUIUtil.updateWindowIcon(getWindow());
}
@Override
public Dimension getPreferredSize() {
return myDialog.getPreferredSize();
}
@Override
public void setModal(boolean modal) {
myDialog.setModal(modal);
}
@@ -327,42 +350,52 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
return myDialog.isModal();
}
@Override
public boolean isVisible() {
return myDialog.isVisible();
}
@Override
public boolean isShowing() {
return myDialog.isShowing();
}
@Override
public void setSize(int width, int height) {
myDialog.setSize(width, height);
}
@Override
public void setTitle(String title) {
myDialog.setTitle(title);
}
@Override
public void isResizable() {
myDialog.isResizable();
}
@Override
public void setResizable(boolean resizable) {
myDialog.setResizable(resizable);
}
@Override
public Point getLocation() {
return myDialog.getLocation();
}
@Override
public void setLocation(Point p) {
myDialog.setLocation(p);
}
@Override
public void setLocation(int x, int y) {
myDialog.setLocation(x, y);
}
@Override
public ActionCallback show() {
if (myTypeAheadCallback != null) {
IdeFocusManager.getInstance(myProject).typeAheadUntil(myTypeAheadCallback);
@@ -375,6 +408,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
final JRootPane rootPane = getRootPane();
anCancelAction.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)), rootPane);
myDisposeActions.add(new Runnable() {
@Override
public void run() {
anCancelAction.unregisterCustomShortcutSet(rootPane);
}
@@ -422,17 +456,20 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
StackingPopupDispatcher.getInstance().hidePersistentPopups();
myDisposeActions.add(new Runnable() {
@Override
public void run() {
StackingPopupDispatcher.getInstance().restorePersistentPopups();
}
});
}
@Override
public FocusTrackback getFocusTrackback() {
return myDialog.getFocusTrackback();
}
private class AnCancelAction extends AnAction implements DumbAware {
@Override
public void update(AnActionEvent e) {
Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
e.getPresentation().setEnabled(false);
@@ -456,6 +493,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
}
}
@Override
public void actionPerformed(AnActionEvent e) {
myWrapper.doCancelAction(e.getInputEvent());
}
@@ -479,16 +517,16 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
private MyDialog.MyWindowListener myWindowListener;
private final WeakReference<Project> myProject;
private ActionCallback myFocusedCallback;
private ActionCallback myTypeAheadDone;
private ActionCallback myTypeAheadCallback;
private final ActionCallback myFocusedCallback;
private final ActionCallback myTypeAheadDone;
private final ActionCallback myTypeAheadCallback;
private MyComponentListener myComponentListener;
public MyDialog(Window owner,
DialogWrapper dialogWrapper,
Project project,
ActionCallback focused,
ActionCallback typeAheadDone,
@NotNull ActionCallback focused,
@NotNull ActionCallback typeAheadDone,
ActionCallback typeAheadCallback) {
super(owner);
if (Registry.is("ide.mac.modalDialogsOnFullscreen")) {
@@ -497,10 +535,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
}
myDialogWrapper = new WeakReference<DialogWrapper>(dialogWrapper);
myProject = project != null ? new WeakReference<Project>(project) : null;
initDialog(focused, typeAheadDone, typeAheadCallback);
}
private void initDialog(ActionCallback focused, ActionCallback typeAheadDone, ActionCallback typeAheadCallback) {
setFocusTraversalPolicy(new LayoutFocusTraversalPolicyExt() {
@Override
protected boolean accept(Component aComponent) {
@@ -526,26 +561,32 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
addComponentListener(myComponentListener);
}
@Override
public JDialog getWindow() {
return this;
}
@Override
public void putInfo(@NotNull Map<String, String> info) {
info.put("dialog", getTitle());
}
@Override
public FocusTrackback getFocusTrackback() {
return myFocusTrackback;
}
@Override
public DialogWrapper getDialogWrapper() {
return myDialogWrapper.get();
}
@Override
public void centerInParent() {
setLocationRelativeTo(getOwner());
}
@Override
public Object getData(String dataId) {
final DialogWrapper wrapper = myDialogWrapper.get();
if (wrapper instanceof DataProvider) {
@@ -558,6 +599,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
return null;
}
@Override
public void setSize(int width, int height) {
_setSizeForLocation(width, height, null);
}
@@ -573,21 +615,25 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
super.setSize(rect.width, rect.height);
}
@Override
public void setBounds(int x, int y, int width, int height) {
Rectangle rect = new Rectangle(x, y, width, height);
ScreenUtil.fitToScreen(rect);
super.setBounds(rect.x, rect.y, rect.width, rect.height);
}
@Override
public void setBounds(Rectangle r) {
ScreenUtil.fitToScreen(r);
super.setBounds(r);
}
@Override
protected JRootPane createRootPane() {
return new DialogRootPane();
}
@Override
@SuppressWarnings("deprecation")
public void show() {
myFocusTrackback = new FocusTrackback(getDialogWrapper(), getParent(), true);
@@ -643,6 +689,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
if (wrapper != null && myFocusTrackback != null) {
myFocusTrackback.cleanParentWindow();
myFocusTrackback.registerFocusComponent(new FocusTrackback.ComponentQuery() {
@Override
public Component getComponent() {
return wrapper.getPreferredFocusedComponent();
}
@@ -658,6 +705,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
if (project != null && !project.isDisposed()) {
focusManager.set(getFocusManager());
focusManager.get().doWhenFocusSettlesDown(new Runnable() {
@Override
public void run() {
disposeFocusTrackbackIfNoChildWindowFocused(focusManager.get());
}
@@ -755,6 +803,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
myFocusTrackback.setWillBeSheduledForRestore();
IdeFocusManager mgr = getFocusManager();
Runnable r = new Runnable() {
@Override
public void run() {
if (myFocusTrackback != null) myFocusTrackback.restoreFocus();
myFocusTrackback = null;
@@ -845,12 +894,13 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
// inherit graphics so rendering hints won't be applied and trees or lists may render ugly.
UIUtil.applyRenderingHints(g);
}
super.paint(g);
}
@SuppressWarnings("SSBasedInspection")
private class MyWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
DialogWrapper dialogWrapper = getDialogWrapper();
if (dialogWrapper.shouldCloseOnCross()) {
@@ -893,12 +943,13 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
myTypeAheadDone.setRejected();
}
}
});
});
}
@Override
public void windowActivated(final WindowEvent e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final DialogWrapper wrapper = getActiveWrapper();
if (wrapper == null && !myFocusedCallback.isProcessed()) {
@@ -922,6 +973,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
if (toFocus != null) {
final JComponent toRequest = toFocus;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (isShowing() && isActive()) {
getFocusManager().requestFocus(toRequest, true);
@@ -946,11 +998,12 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
final long timeout = wrapper.getTypeAheadTimeoutMs();
if (timeout > 0) {
SimpleTimer.getInstance().setUp(new EdtRunnable() {
@Override
public void runEdt() {
myTypeAheadDone.setDone();
}
}, timeout);
}
}
}
private DialogWrapper getActiveWrapper() {
@@ -981,6 +1034,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
}
private class MyComponentListener extends ComponentAdapter {
@Override
@SuppressWarnings({"RefusedBequest"})
public void componentResized(ComponentEvent e) {
UIUtil.adjustWindowToMinimumSize(getWindow());
@@ -997,6 +1051,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
putClientProperty("DIALOG_ROOT_PANE", true);
}
@Override
protected JLayeredPane createLayeredPane() {
JLayeredPane p = new JBLayeredPane();
p.setName(this.getName()+".layeredPane");
@@ -1013,6 +1068,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
super.setGlassPane(glass);
}
@Override
public Object getData(@NonNls String dataId) {
final DialogWrapper wrapper = myDialogWrapper.get();
return wrapper != null && PlatformDataKeys.UI_DISPOSABLE.is(dataId) ? wrapper.getDisposable() : null;
@@ -1031,6 +1087,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
setToInvalidateRequestors(false);
Disposer.register(wrapper.getDisposable(), new Disposable() {
@Override
public void dispose() {
if (!myTypeAheadDone.isProcessed()) {
myTypeAheadDone.setDone();
@@ -1041,6 +1098,8 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
});
}
@Override
@NotNull
public ActionCallback run() {
return myTypeAheadDone;
}
@@ -1050,6 +1109,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
return this;
}
@Override
public Boolean dispatch(KeyEvent e, Context context) {
if (myWrapper == null || myTypeAheadDone.isProcessed()) return null;
@@ -1065,9 +1125,10 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
}
private boolean isToDispatchToDialogNow(KeyEvent e) {
return e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_ESCAPE || e.getKeyCode() == KeyEvent.VK_TAB;
return e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_ESCAPE || e.getKeyCode() == KeyEvent.VK_TAB;
}
@Override
public void finish(Context context) {
myContextOnFinish = context;
}
@@ -1095,10 +1156,12 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra
}
}
@Override
public void setContentPane(JComponent content) {
myDialog.setContentPane(content);
}
@Override
public void centerInParent() {
myDialog.centerInParent();
}
@@ -315,26 +315,31 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
return Collections.emptyList();
}
@NotNull
@Override
public String getCloseActionName() {
return "close";
}
@NotNull
@Override
public String getCloseAllButThisActionName() {
return "closeallbutthis";
}
@NotNull
@Override
public String getPreviousContentActionName() {
return "previous";
}
@NotNull
@Override
public String getNextContentActionName() {
return "next";
}
@NotNull
@Override
public JComponent getComponent() {
return new JLabel();
@@ -402,6 +407,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
return myContents.remove(content);
}
@NotNull
@Override
public ActionCallback removeContent(@NotNull Content content, boolean dispose, boolean trackFocus, boolean implicitFocus) {
return new ActionCallback.Done();
@@ -430,6 +436,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
mySelected = content;
}
@NotNull
@Override
public ActionCallback setSelectedContentCB(@NotNull Content content) {
return new ActionCallback.Done();
@@ -439,6 +446,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
public void setSelectedContent(@NotNull final Content content, final boolean requestFocus) {
}
@NotNull
@Override
public ActionCallback setSelectedContentCB(@NotNull final Content content, final boolean requestFocus) {
return new ActionCallback.Done();
@@ -448,16 +456,19 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
public void setSelectedContent(@NotNull Content content, boolean requestFocus, boolean forcedFocus) {
}
@NotNull
@Override
public ActionCallback setSelectedContentCB(@NotNull final Content content, final boolean requestFocus, final boolean forcedFocus) {
return new ActionCallback.Done();
}
@NotNull
@Override
public ActionCallback setSelectedContent(@NotNull Content content, boolean requestFocus, boolean forcedFocus, boolean implicit) {
return new ActionCallback.Done();
}
@NotNull
@Override
public ActionCallback requestFocus(@Nullable final Content content, final boolean forced) {
return new ActionCallback.Done();
@@ -200,11 +200,11 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements
project.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
getFocusManagerImpl(myProject).doWhenFocusSettlesDown(new ExpirableRunnable.ForProject(myProject) {
@Override
public void run() {
@@ -216,7 +216,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
}
});
@@ -621,6 +621,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements
@Override
public void run() {
requestor.requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
runnable.run();
@@ -657,6 +658,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements
public void run() {
if (forced) {
getFocusManagerImpl(myProject).requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
final ArrayList<FinalizableCommand> cmds = new ArrayList<FinalizableCommand>();
@@ -2263,6 +2265,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements
public ActionCallback requestDefaultFocus(final boolean forced) {
return getFocusManagerImpl(myProject).requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
return processDefaultFocusRequest(forced);
@@ -28,6 +28,7 @@ import com.intellij.openapi.wm.impl.FloatingDecorator;
import com.intellij.openapi.wm.impl.ToolWindowImpl;
import com.intellij.openapi.wm.impl.WindowManagerImpl;
import com.intellij.openapi.wm.impl.WindowWatcher;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
@@ -157,6 +158,7 @@ public final class RequestFocusInToolWindowCmd extends FinalizableCommand {
final Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner();
if (owner != null && owner == c) {
myManager.getFocusManager().requestFocus(new FocusCommand() {
@NotNull
public ActionCallback run() {
return new ActionCallback.Done();
}
@@ -121,7 +121,7 @@ public class ToolWindowContentUi extends JPanel implements ContentUI, PropertyCh
return this;
}
public void setManager(final ContentManager manager) {
public void setManager(@NotNull final ContentManager manager) {
if (myManager != null) {
getCurrentLayout().reset();
}
@@ -256,25 +256,29 @@ public class ToolWindowContentUi extends JPanel implements ContentUI, PropertyCh
public void beforeDispose() {
}
public boolean canChangeSelectionTo(Content content, boolean implicit) {
public boolean canChangeSelectionTo(@NotNull Content content, boolean implicit) {
return true;
}
@NotNull
@Override
public String getCloseActionName() {
return getCurrentLayout().getCloseActionName();
}
@NotNull
@Override
public String getCloseAllButThisActionName() {
return getCurrentLayout().getCloseAllButThisActionName();
}
@NotNull
@Override
public String getPreviousContentActionName() {
return getCurrentLayout().getPreviousContentActionName();
}
@NotNull
@Override
public String getNextContentActionName() {
return getCurrentLayout().getNextContentActionName();
@@ -104,13 +104,13 @@ public class EncodingPanel extends EditorBasedWidget implements StatusBarWidget.
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
if (ApplicationManager.getApplication().isUnitTestMode()) return;
update();
}
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@@ -255,7 +255,7 @@ public class EncodingPanel extends EditorBasedWidget implements StatusBarWidget.
}
}
});
}
@Override
@@ -151,7 +151,7 @@ public class LineSeparatorPanel extends EditorBasedWidget implements StatusBarWi
if (!(group instanceof ActionGroup)) {
return;
}
ListPopup popup = JBPopupFactory.getInstance().createActionGroupPopup(
"Line separator",
(ActionGroup)group,
@@ -190,7 +190,7 @@ public class LineSeparatorPanel extends EditorBasedWidget implements StatusBarWi
editor == null ? null : editor.getComponent(), parent)
));
}
@Override
public JComponent getComponent() {
return myComponent;
@@ -214,13 +214,13 @@ public class LineSeparatorPanel extends EditorBasedWidget implements StatusBarWi
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
if (ApplicationManager.getApplication().isUnitTestMode()) return;
update();
}
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
}
@@ -42,7 +42,7 @@ public class PositionPanel extends EditorBasedWidget implements StatusBarWidget.
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
updatePosition(getEditor());
}
@@ -533,6 +533,7 @@ public class FocusTrackback {
private class MyFocusCommand extends FocusCommand {
@NotNull
public ActionCallback run() {
return _restoreFocus();
}
@@ -21,6 +21,7 @@ import com.intellij.ui.*;
import com.intellij.ui.content.tabs.PinToolwindowTabAction;
import com.intellij.ui.content.tabs.TabbedContentAction;
import com.intellij.util.IJSwingUtilities;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
@@ -66,7 +67,7 @@ public class TabbedPaneContentUI implements ContentUI, PropertyChangeListener {
return myTabbedPaneWrapper.getComponent();
}
public void setManager(ContentManager manager) {
public void setManager(@NotNull ContentManager manager) {
if (myManager != null) {
throw new IllegalStateException();
}
@@ -317,25 +318,29 @@ public class TabbedPaneContentUI implements ContentUI, PropertyChangeListener {
public void beforeDispose() {
}
public boolean canChangeSelectionTo(Content content, boolean implicit) {
public boolean canChangeSelectionTo(@NotNull Content content, boolean implicit) {
return true;
}
@NotNull
@Override
public String getCloseActionName() {
return UIBundle.message("tabbed.pane.close.tab.action.name");
}
@NotNull
@Override
public String getCloseAllButThisActionName() {
return UIBundle.message("tabbed.pane.close.all.tabs.but.this.action.name");
}
@NotNull
@Override
public String getPreviousContentActionName() {
return "Select Previous Tab";
}
@NotNull
@Override
public String getNextContentActionName() {
return "Select Next Tab";
@@ -91,6 +91,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return myCanCloseContents;
}
@NotNull
@Override
public JComponent getComponent() {
if (myComponent == null) {
@@ -232,6 +233,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return removeContent(content, true, dispose);
}
@NotNull
@Override
public ActionCallback removeContent(@NotNull Content content, boolean dispose, final boolean trackFocus, final boolean forcedFocus) {
final ActionCallback result = new ActionCallback();
@@ -385,21 +387,25 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return myContents.indexOf(content);
}
@NotNull
@Override
public String getCloseActionName() {
return myUI.getCloseActionName();
}
@NotNull
@Override
public String getCloseAllButThisActionName() {
return myUI.getCloseAllButThisActionName();
}
@NotNull
@Override
public String getPreviousContentActionName() {
return myUI.getPreviousContentActionName();
}
@NotNull
@Override
public String getNextContentActionName() {
return myUI.getNextContentActionName();
@@ -476,6 +482,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
setSelectedContentCB(content, requestFocus);
}
@NotNull
@Override
public ActionCallback setSelectedContentCB(@NotNull final Content content, final boolean requestFocus) {
return setSelectedContentCB(content, requestFocus, true);
@@ -486,11 +493,13 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
setSelectedContentCB(content, requestFocus, forcedFocus);
}
@NotNull
@Override
public ActionCallback setSelectedContentCB(@NotNull final Content content, final boolean requestFocus, final boolean forcedFocus) {
return setSelectedContent(content, requestFocus, forcedFocus, false);
}
@NotNull
@Override
public ActionCallback setSelectedContent(@NotNull final Content content, final boolean requestFocus, final boolean forcedFocus, boolean implicit) {
if (isSelected(content) && requestFocus) {
@@ -509,6 +518,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
final Content[] old = getSelectedContents();
final ActiveRunnable selection = new ActiveRunnable() {
@NotNull
@Override
public ActionCallback run() {
if (myDisposed || getIndexOfContent(content) == -1) return new ActionCallback.Rejected();
@@ -558,6 +568,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return focused;
}
@NotNull
@Override
public ActionCallback setSelectedContentCB(@NotNull Content content) {
return setSelectedContentCB(content, false);
@@ -565,7 +576,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
@Override
public void setSelectedContent(@NotNull final Content content) {
setSelectedContentCB(content);
setSelectedContentCB(content);
}
@Override
@@ -643,6 +654,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return true;
}
@NotNull
@Override
public ActionCallback requestFocus(final Content content, final boolean forced) {
final Content toSelect = content == null ? getSelectedContent() : content;
@@ -651,6 +663,7 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return getFocusManager().requestFocus(new FocusCommand(content, toSelect.getPreferredFocusableComponent()) {
@NotNull
@Override
public ActionCallback run() {
return doRequestFocus(toSelect);
@@ -855,6 +855,7 @@ public class AbstractPopup implements JBPopup {
if (myRequestFocus) {
getFocusManager().requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
if (isDisposed()) {
@@ -884,6 +885,7 @@ public class AbstractPopup implements JBPopup {
}
furtherRequestor.requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
if (isDisposed()) {
@@ -1094,6 +1096,7 @@ public class AbstractPopup implements JBPopup {
if (!myFocusable) return false;
getFocusManager().requestFocus(new FocusCommand() {
@NotNull
@Override
public ActionCallback run() {
_requestFocus();
@@ -133,8 +133,9 @@ public class Mock {
return null;
}
@NotNull
@Override
public ActionCallback notifyPublisher(Runnable runnable) {
public ActionCallback notifyPublisher(@NotNull Runnable runnable) {
runnable.run();
return new ActionCallback.Done();
}
@@ -149,7 +150,7 @@ public class Mock {
public Pair<FileEditor[], FileEditorProvider[]> openFileWithProviders(@NotNull VirtualFile file,
boolean focusEditor,
@NotNull EditorWindow window) {
return null; //To change body of implemented methods use File | Settings | File Templates.
throw new RuntimeException("not implemented");
}
@Override
@@ -167,14 +168,16 @@ public class Mock {
return null;
}
@NotNull
@Override
public EditorsSplitters getSplitters() {
return null;
throw new RuntimeException("not implemented");
}
@NotNull
@Override
public AsyncResult<EditorWindow> getActiveWindow() {
return null;
throw new RuntimeException("not implemented");
}
@Override
@@ -223,7 +226,7 @@ public class Mock {
}
@Override
public void updateFilePresentation(VirtualFile file) {
public void updateFilePresentation(@NotNull VirtualFile file) {
}
@Override
@@ -244,7 +247,7 @@ public class Mock {
@Override
@NotNull
public VirtualFile[] getSiblings(VirtualFile file) {
public VirtualFile[] getSiblings(@NotNull VirtualFile file) {
return new VirtualFile[0];
}
@@ -328,7 +331,7 @@ public class Mock {
}
@Override
public Editor openTextEditor(OpenFileDescriptor descriptor, boolean focusEditor) {
public Editor openTextEditor(@NotNull OpenFileDescriptor descriptor, boolean focusEditor) {
return null;
}
@@ -374,7 +377,7 @@ public class Mock {
@NotNull
@Override
public FileEditor[] getAllEditors(@NotNull VirtualFile file) {
return new FileEditor[0];
return new FileEditor[0];
}
@Override
@@ -425,7 +428,7 @@ public class Mock {
}
@Override
public void setSelectedEditor(VirtualFile file, String fileEditorProviderId) {
public void setSelectedEditor(@NotNull VirtualFile file, String fileEditorProviderId) {
}
}
@@ -13,8 +13,9 @@ import org.jetbrains.annotations.NotNull;
* @author peter
*/
public class MockProblemDescriptor extends ProblemDescriptorImpl {
public MockProblemDescriptor(@NotNull final PsiElement psiElement, final String descriptionTemplate,
final ProblemHighlightType highlightType,
public MockProblemDescriptor(@NotNull final PsiElement psiElement,
final String descriptionTemplate,
@NotNull ProblemHighlightType highlightType,
final LocalQuickFix... fixes) {
super(psiElement, psiElement, descriptionTemplate, fixes, highlightType, false, null, true);
}
@@ -160,7 +160,7 @@ public class OutdatedVersionNotifier implements ProjectComponent {
}
private class MyFileEditorManagerListener implements FileEditorManagerListener {
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
if (myCache.getCachedIncomingChanges() == null) {
requestLoadIncomingChanges();
}
@@ -175,10 +175,10 @@ public class OutdatedVersionNotifier implements ProjectComponent {
}
}
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
}
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
}
}
@@ -83,7 +83,7 @@ public class XDebuggerManagerImpl extends XDebuggerManager
myExecutionPointHighlighter = new ExecutionPointHighlighter(project);
messageBus.connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void fileOpened(final FileEditorManager source, final VirtualFile file) {
public void fileOpened(@NotNull final FileEditorManager source, @NotNull final VirtualFile file) {
if (file instanceof HttpVirtualFile && file.equals(myExecutionPointHighlighter.getCurrentFile())) {
myExecutionPointHighlighter.update();
}
@@ -70,17 +70,17 @@ public class GitBranchWidget extends EditorBasedWidget implements StatusBarWidge
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
update();
}
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@@ -57,7 +57,7 @@ public class GroovyCompilerLoader extends AbstractProjectComponent {
myProject.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void fileOpened(FileEditorManager source, final VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull final VirtualFile file) {
if (file.getName().endsWith(".java") && file.getPath().contains(GroovycStubGenerator.GROOVY_STUBS)) {
final PsiClass psiClass = GroovycStubGenerator.findClassByStub(myProject, file);
if (psiClass != null) {
@@ -66,7 +66,7 @@ public class GroovyCompilerLoader extends AbstractProjectComponent {
if (editors.length != 0) {
decorateStubFile(file, fileEditorManager, editors[0]);
}
}
}
}
@@ -282,7 +282,7 @@ public class HgVcs extends AbstractVcs<CommittedChangeList> {
messageBusConnection = myProject.getMessageBus().connect();
messageBusConnection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
Project project = event.getManager().getProject();
project.getMessageBus().syncPublisher(BRANCH_TOPIC).update(project, null);
}
@@ -88,17 +88,17 @@ public class HgIncomingOutgoingWidget extends EditorBasedWidget
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
update();
}
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@@ -76,17 +76,17 @@ public class HgStatusWidget extends EditorBasedWidget implements StatusBarWidget
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
update();
}
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
update();
}
@@ -153,7 +153,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
getSplitter().setAndLoadSplitterProportionKey(getClass() + ".splitter");
project.getMessageBus().connect(project).subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() {
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
onSelectionChanged(event);
}
});
@@ -196,7 +196,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
if (tree == null) {
return;
}
Object root = tree.getModel().getRoot();
if (AbstractTreeUi.isLoadingChildrenFor(root)) {
mySelectionChangeAlarm.cancelAllRequests();
@@ -204,7 +204,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
@Override
public void run() {
mySelectionChangeAlarm.cancelAllRequests();
setStructureViewSelection(propertyName);
setStructureViewSelection(propertyName);
}
}, 500);
return;
@@ -259,7 +259,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
}
}
}
@Nullable
private static String getNodeValue(@NotNull DefaultMutableTreeNode node) {
Object userObject = node.getUserObject();
@@ -391,7 +391,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
}
}
};
virtualFileManager.addVirtualFileListener(myVfsListener, this);
PsiTreeChangeAdapter psiTreeChangeAdapter = new PsiTreeChangeAdapter() {
@Override
@@ -465,7 +465,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
}
else {
String rawValue = property.getValue();
value = rawValue == null ? "" : ResourceBundleUtil.fromPropertyValueToValueEditor(rawValue);
value = rawValue == null ? "" : ResourceBundleUtil.fromPropertyValueToValueEditor(rawValue);
}
final Document document = editor.getDocument();
CommandProcessor.getInstance().executeCommand(null, new Runnable() {
@@ -784,7 +784,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
* Renames target property if the one is available.
* <p/>
* <b>Note:</b> is assumed to be called under {@link WriteAction write action}.
*
*
* @param oldName old property name
* @param newName new property name
*/
@@ -796,7 +796,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit
}
}
}
public static class ResourceBundleEditorState implements FileEditorState {
private final String myPropertyName;
@@ -28,6 +28,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.util.ui.update.MergingUpdateQueue;
import com.intellij.util.ui.update.Update;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
@@ -69,12 +70,12 @@ public abstract class AbstractToolWindowManager implements ProjectComponent {
private void initListeners() {
myProject.getMessageBus().connect(myProject).subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
@Override
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
bindToDesigner(getActiveDesigner());
}
@Override
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
@@ -84,7 +85,7 @@ public abstract class AbstractToolWindowManager implements ProjectComponent {
}
@Override
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
bindToDesigner(getDesigner(event.getNewEditor()));
}
});
@@ -229,11 +229,11 @@ public class UIDesignerToolWindowManager implements ProjectComponent {
}
private class MyFileEditorManagerListener implements FileEditorManagerListener {
public void fileOpened(FileEditorManager source, VirtualFile file) {
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
processFileEditorChange(getActiveFormFileEditor());
}
public void fileClosed(FileEditorManager source, VirtualFile file) {
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
@@ -242,7 +242,7 @@ public class UIDesignerToolWindowManager implements ProjectComponent {
});
}
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
UIFormEditor newEditor = event.getNewEditor() instanceof UIFormEditor ? (UIFormEditor)event.getNewEditor() : null;
processFileEditorChange(newEditor);
}
@@ -67,7 +67,7 @@ abstract public class PerspectiveFileEditor extends UserDataHolderBase implement
myFile = file;
FileEditorManager.getInstance(myProject).addFileEditorManagerListener(new FileEditorManagerAdapter() {
public void selectionChanged(FileEditorManagerEvent event) {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
if (!isValid()) return;
ApplicationManager.getApplication().invokeLater(new Runnable() {
@@ -1,4 +1,3 @@
package com.intellij.xml.breadcrumbs;
import com.intellij.application.options.editor.WebEditorOptions;
@@ -19,7 +18,7 @@ import javax.swing.*;
/**
* @author spleaner
*/
public class BreadcrumbsLoaderComponent extends AbstractProjectComponent {
public class BreadcrumbsLoaderComponent extends AbstractProjectComponent {
public BreadcrumbsLoaderComponent(@NotNull final Project project) {
super(project);
@@ -41,7 +40,7 @@ public class BreadcrumbsLoaderComponent extends AbstractProjectComponent {
}
private static class MyFileEditorManagerListener extends FileEditorManagerAdapter {
public void fileOpened(final FileEditorManager source, final VirtualFile file) {
public void fileOpened(@NotNull final FileEditorManager source, @NotNull final VirtualFile file) {
if (isEnabled() && isSuitable(source.getProject(), file)) {
final FileEditor[] fileEditors = source.getEditors(file);
for (final FileEditor fileEditor : fileEditors) {