From 3087918817cc5e63e8ab663abeba1d7c9643e04d Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 22 Jan 2014 23:43:30 +0400 Subject: [PATCH] hide some File-menu actions when appropriate: File|Encoding, Line-separators, change R/O, HTML export --- .../printing/ExportToHTMLAction.java | 1 + .../ToggleReadOnlyAttributeAction.java | 39 ++++++++++--------- .../encoding/ChangeFileEncodingAction.java | 1 + .../src/idea/PlatformActions.xml | 2 +- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLAction.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLAction.java index 12d5fce8d2d8..28a664c62f86 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLAction.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLAction.java @@ -55,6 +55,7 @@ public class ExportToHTMLAction extends AnAction { } PsiFile psiFile = CommonDataKeys.PSI_FILE.getData(dataContext); presentation.setEnabled(psiFile != null && psiFile.getContainingDirectory() != null); + presentation.setVisible(psiFile != null); } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ToggleReadOnlyAttributeAction.java b/platform/platform-impl/src/com/intellij/ide/actions/ToggleReadOnlyAttributeAction.java index f54540defbdd..a09bc3ff0749 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ToggleReadOnlyAttributeAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ToggleReadOnlyAttributeAction.java @@ -20,35 +20,39 @@ package com.intellij.ide.actions; import com.intellij.CommonBundle; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.io.ReadOnlyAttributeUtil; import java.io.IOException; import java.util.ArrayList; public class ToggleReadOnlyAttributeAction extends AnAction implements DumbAware { - static VirtualFile[] getFiles(DataContext dataContext){ - ArrayList filesList = new ArrayList(); + static VirtualFile[] getFiles(DataContext dataContext) { + ArrayList filesList = ContainerUtil.newArrayList(); VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); - for(int i=0;files!=null&&i0); + public void update(AnActionEvent e) { + VirtualFile[] files = getFiles(e.getDataContext()); + e.getPresentation().setEnabledAndVisible(files.length > 0); if (files.length > 0) { boolean allReadOnly = true; boolean allWritable = true; @@ -70,28 +74,27 @@ public class ToggleReadOnlyAttributeAction extends AnAction implements DumbAware e.getPresentation().setText("Toggle Read-only Attribute"); } } - } - public void actionPerformed(final AnActionEvent e){ + public void actionPerformed(final AnActionEvent e) { ApplicationManager.getApplication().runWriteAction( - new Runnable(){ - public void run(){ + new Runnable() { + public void run() { // Save all documents. We won't be able to save changes to the files that became read-only afterwards. FileDocumentManager.getInstance().saveAllDocuments(); try { - VirtualFile[] files=getFiles(e.getDataContext()); + VirtualFile[] files = getFiles(e.getDataContext()); for (VirtualFile file : files) { ReadOnlyAttributeUtil.setReadOnlyAttribute(file, file.isWritable()); } } - catch(IOException exc){ + catch (IOException exc) { Project project = CommonDataKeys.PROJECT.getData(e.getDataContext()); Messages.showMessageDialog( project, exc.getMessage(), - CommonBundle.getErrorTitle(),Messages.getErrorIcon() + CommonBundle.getErrorTitle(), Messages.getErrorIcon() ); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/ChangeFileEncodingAction.java b/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/ChangeFileEncodingAction.java index 9c3704d10c6c..be87a940896d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/ChangeFileEncodingAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/ChangeFileEncodingAction.java @@ -69,6 +69,7 @@ public class ChangeFileEncodingAction extends AnAction implements DumbAware { VirtualFile myFile = e.getData(CommonDataKeys.VIRTUAL_FILE); boolean enabled = myFile != null && checkEnabled(myFile); e.getPresentation().setEnabled(enabled); + e.getPresentation().setVisible(myFile != null); } @Override diff --git a/platform/platform-resources/src/idea/PlatformActions.xml b/platform/platform-resources/src/idea/PlatformActions.xml index 8d7da3cab4a7..c2e5c4aafaac 100644 --- a/platform/platform-resources/src/idea/PlatformActions.xml +++ b/platform/platform-resources/src/idea/PlatformActions.xml @@ -189,7 +189,7 @@ - +