diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/AnActionEvent.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/AnActionEvent.java index 937c6efb6e52..37035e382e14 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/AnActionEvent.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/AnActionEvent.java @@ -65,9 +65,10 @@ public class AnActionEvent implements PlaceProvider { myModifiers = modifiers; } - public static AnActionEvent createFromInputEvent(AnAction action, InputEvent event, String place) { - DataContext context = event != null ? DataManager.getInstance().getDataContext(event.getComponent()) : DataManager.getInstance().getDataContext(); - int modifiers = event != null ? event.getModifiers() : 0; + @NotNull + public static AnActionEvent createFromInputEvent(@NotNull AnAction action, InputEvent event, @NotNull String place) { + DataContext context = event == null ? DataManager.getInstance().getDataContext() : DataManager.getInstance().getDataContext(event.getComponent()); + int modifiers = event == null ? 0 : event.getModifiers(); return new AnActionEvent( event, context, diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java b/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java index 21ddd3bd36c4..c5bd39e7a905 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java @@ -32,7 +32,10 @@ public abstract class ReadonlyStatusHandler { public static boolean ensureDocumentWritable(@NotNull Project project, @NotNull Document document) { final PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(document); boolean okWritable; - if (psiFile != null) { + if (psiFile == null) { + okWritable = document.isWritable(); + } + else { final VirtualFile virtualFile = psiFile.getVirtualFile(); if (virtualFile != null) { okWritable = ensureFilesWritable(project, virtualFile); @@ -41,9 +44,6 @@ public abstract class ReadonlyStatusHandler { okWritable = psiFile.isWritable(); } } - else { - okWritable = document.isWritable(); - } return okWritable; } @@ -60,7 +60,7 @@ public abstract class ReadonlyStatusHandler { public abstract OperationStatus ensureFilesWritable(@NotNull VirtualFile... files); public OperationStatus ensureFilesWritable(@NotNull Collection files) { - return ensureFilesWritable(VfsUtil.toVirtualFileArray(files)); + return ensureFilesWritable(VfsUtilCore.toVirtualFileArray(files)); } public static ReadonlyStatusHandler getInstance(Project project) { diff --git a/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java index 2bc5f2586219..2848d019acb3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java @@ -26,10 +26,7 @@ import com.intellij.openapi.components.StoragePathMacros; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.MultiValuesMap; -import com.intellij.openapi.vfs.ReadonlyStatusHandler; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.WritingAccessProvider; +import com.intellij.openapi.vfs.*; import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; @@ -59,14 +56,17 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements myAccessProviders = WritingAccessProvider.getProvidersForProject(myProject); } + @Override public State getState() { return myState; } + @Override public void loadState(State state) { myState = state; } + @Override public OperationStatus ensureFilesWritable(@NotNull VirtualFile... files) { if (files.length == 0) { return new OperationStatusImpl(VirtualFile.EMPTY_ARRAY); @@ -80,7 +80,7 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements realFiles.add(file); } } - files = VfsUtil.toVirtualFileArray(realFiles); + files = VfsUtilCore.toVirtualFileArray(realFiles); for (final WritingAccessProvider accessProvider : myAccessProviders) { Collection denied = ContainerUtil.filter(files, new Condition() { @@ -94,7 +94,7 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements denied = accessProvider.requestWriting(files); } if (!denied.isEmpty()) { - return new OperationStatusImpl(VfsUtil.toVirtualFileArray(denied)); + return new OperationStatusImpl(VfsUtilCore.toVirtualFileArray(denied)); } } @@ -131,7 +131,7 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements } } - return new OperationStatusImpl(VfsUtil.toVirtualFileArray(readOnlyFiles)); + return new OperationStatusImpl(VfsUtilCore.toVirtualFileArray(readOnlyFiles)); } private FileInfo[] createFileInfos(VirtualFile[] files) { @@ -170,15 +170,18 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements myReadonlyFiles = readonlyFiles; } + @Override @NotNull public VirtualFile[] getReadonlyFiles() { return myReadonlyFiles; } + @Override public boolean hasReadonlyFiles() { return myReadonlyFiles.length > 0; } + @Override @NotNull public String getReadonlyFilesMessage() { if (hasReadonlyFiles()) { diff --git a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java index 152541c2e95c..34b7e2543dc8 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java @@ -199,9 +199,16 @@ public class PopupFactoryImpl extends JBPopupFactory { private final Runnable myDisposeCallback; private final Component myComponent; - public ActionGroupPopup(final String title, @NotNull ActionGroup actionGroup, @NotNull DataContext dataContext, - boolean showNumbers, boolean useAlphaAsNumbers, boolean showDisabledActions, boolean honorActionMnemonics, - final Runnable disposeCallback, final int maxRowCount, final Condition preselectActionCondition, + public ActionGroupPopup(final String title, + @NotNull ActionGroup actionGroup, + @NotNull DataContext dataContext, + boolean showNumbers, + boolean useAlphaAsNumbers, + boolean showDisabledActions, + boolean honorActionMnemonics, + final Runnable disposeCallback, + final int maxRowCount, + final Condition preselectActionCondition, @Nullable final String actionPlace) { super(createStep(title, actionGroup, dataContext, showNumbers, useAlphaAsNumbers, showDisabledActions, honorActionMnemonics, preselectActionCondition, actionPlace), @@ -226,10 +233,15 @@ public class PopupFactoryImpl extends JBPopupFactory { }); } - private static ListPopupStep createStep(String title, @NotNull ActionGroup actionGroup, @NotNull DataContext dataContext, - boolean showNumbers, boolean useAlphaAsNumbers, boolean showDisabledActions, + private static ListPopupStep createStep(String title, + @NotNull ActionGroup actionGroup, + @NotNull DataContext dataContext, + boolean showNumbers, + boolean useAlphaAsNumbers, + boolean showDisabledActions, boolean honorActionMnemonics, - Condition preselectActionCondition, @Nullable String actionPlace) { + Condition preselectActionCondition, + @Nullable String actionPlace) { final Component component = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext); final ActionStepBuilder builder = @@ -831,8 +843,7 @@ public class PopupFactoryImpl extends JBPopupFactory { } private void calcMaxIconSize(final ActionGroup actionGroup) { - AnAction[] actions = actionGroup.getChildren(new AnActionEvent(null, myDataContext, myActionPlace, - getPresentation(actionGroup), ActionManager.getInstance(), 0)); + AnAction[] actions = actionGroup.getChildren(createActionEvent(actionGroup)); for (AnAction action : actions) { if (action == null) continue; if (action instanceof ActionGroup) { @@ -857,9 +868,13 @@ public class PopupFactoryImpl extends JBPopupFactory { } } + @NotNull + private AnActionEvent createActionEvent(@NotNull AnAction actionGroup) { + return new AnActionEvent(null, myDataContext, myActionPlace, getPresentation(actionGroup), ActionManager.getInstance(), 0); + } + private void appendActionsFromGroup(@NotNull ActionGroup actionGroup) { - AnAction[] actions = actionGroup.getChildren(new AnActionEvent(null, myDataContext, myActionPlace, - getPresentation(actionGroup), ActionManager.getInstance(), 0)); + AnAction[] actions = actionGroup.getChildren(createActionEvent(actionGroup)); for (AnAction action : actions) { if (action == null) { LOG.error("null action in group " + actionGroup); @@ -888,7 +903,7 @@ public class PopupFactoryImpl extends JBPopupFactory { private void appendAction(@NotNull AnAction action) { Presentation presentation = getPresentation(action); - AnActionEvent event = new AnActionEvent(null, myDataContext, myActionPlace, presentation, ActionManager.getInstance(), 0); + AnActionEvent event = createActionEvent(action); ActionUtil.performDumbAwareUpdate(action, event, true); if ((myShowDisabled || presentation.isEnabled()) && presentation.isVisible()) {