mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
NotNull
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
+2
-2
@@ -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)) {
|
||||
|
||||
+1
-11
@@ -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
|
||||
|
||||
+8
-5
@@ -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) {
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -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);
|
||||
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
|
||||
+4
-3
@@ -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) {}
|
||||
}
|
||||
|
||||
+12
-11
@@ -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);
|
||||
|
||||
+19
-10
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
+14
-8
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
+4
-4
@@ -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);
|
||||
}
|
||||
}
|
||||
+80
-17
@@ -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();
|
||||
}
|
||||
|
||||
+11
@@ -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);
|
||||
|
||||
+2
@@ -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();
|
||||
}
|
||||
|
||||
+6
-2
@@ -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
|
||||
|
||||
+4
-4
@@ -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);
|
||||
}
|
||||
|
||||
+3
-3
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -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()));
|
||||
}
|
||||
});
|
||||
|
||||
+3
-3
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user