diff --git a/plugins/copyright/resources/messages/CopyrightBundle.properties b/plugins/copyright/resources/messages/CopyrightBundle.properties index 563c5e2c695e..25ee54ee400e 100644 --- a/plugins/copyright/resources/messages/CopyrightBundle.properties +++ b/plugins/copyright/resources/messages/CopyrightBundle.properties @@ -72,4 +72,6 @@ radio.location.in.file.before.package=Before package radio.location.in.file.before.root.tag=Before root tag radio.location.in.file.before.doctype=Before doctype settings.copyright.formatting.add.blank.line.before=Add blank line &before -link.label.configure.copyright.settings=Configure copyright settings \ No newline at end of file +link.label.configure.copyright.settings=Configure... +label.updates.existing.copyrights.e.g.changes.year.or.updated.notice=Updates existing copyrights e.g., changes year or updated notice +label.no.copyright.configured=No copyright is configured \ No newline at end of file diff --git a/plugins/copyright/src/com/maddyhome/idea/copyright/actions/CopyrightOnSaveInfoProvider.java b/plugins/copyright/src/com/maddyhome/idea/copyright/actions/CopyrightOnSaveInfoProvider.java index 8eda401fb385..34de023190dc 100644 --- a/plugins/copyright/src/com/maddyhome/idea/copyright/actions/CopyrightOnSaveInfoProvider.java +++ b/plugins/copyright/src/com/maddyhome/idea/copyright/actions/CopyrightOnSaveInfoProvider.java @@ -3,6 +3,8 @@ package com.maddyhome.idea.copyright.actions; import com.intellij.codeInsight.actions.onSave.ActionOnSaveInfoBase; import com.intellij.copyright.CopyrightBundle; +import com.intellij.copyright.CopyrightManager; +import com.intellij.ide.actionsOnSave.ActionOnSaveComment; import com.intellij.ide.actionsOnSave.ActionOnSaveContext; import com.intellij.ide.actionsOnSave.ActionOnSaveInfo; import com.intellij.ide.actionsOnSave.ActionOnSaveInfoProvider; @@ -13,28 +15,41 @@ import com.maddyhome.idea.copyright.ui.CopyrightProjectConfigurable; import org.jetbrains.annotations.NotNull; import java.util.Collection; -import java.util.Collections; import java.util.List; public final class CopyrightOnSaveInfoProvider extends ActionOnSaveInfoProvider { - public static final String UPDATE_COPYRIGHT_ON_SAVE = "update.copyright.on.save"; - public static final boolean UPDATE_COPYRIGHT_BY_DEFAULT = false; + private static final String UPDATE_COPYRIGHT_ON_SAVE = "update.copyright.on.save"; + private static final boolean UPDATE_COPYRIGHT_BY_DEFAULT = false; public static boolean isUpdateCopyrightOnSaveEnabled(@NotNull Project project) { return PropertiesComponent.getInstance(project).getBoolean(UPDATE_COPYRIGHT_ON_SAVE, UPDATE_COPYRIGHT_BY_DEFAULT); } - @Override protected @NotNull Collection getActionOnSaveInfos(@NotNull ActionOnSaveContext context) { - return Collections.singletonList(new ActionOnSaveInfoBase(context, CopyrightBundle.message("before.checkin.update.copyright"), - UPDATE_COPYRIGHT_ON_SAVE, UPDATE_COPYRIGHT_BY_DEFAULT) { + return List.of(new ActionOnSaveInfoBase(context, CopyrightBundle.message("before.checkin.update.copyright"), UPDATE_COPYRIGHT_ON_SAVE, UPDATE_COPYRIGHT_BY_DEFAULT) { @Override public @NotNull List getActionLinks() { return List.of(createGoToPageInSettingsLink(CopyrightBundle.message("link.label.configure.copyright.settings"), CopyrightProjectConfigurable.ID)); } + + private boolean hasCopyrights() { + return CopyrightManager.getInstance(context.getProject()).hasAnyCopyrights(); + } + + @Override + public boolean isSaveActionApplicable() { + return hasCopyrights(); + } + + @Override + public ActionOnSaveComment getComment() { + return ActionOnSaveComment.info(CopyrightBundle.message(hasCopyrights() + ? "label.updates.existing.copyrights.e.g.changes.year.or.updated.notice" + : "label.no.copyright.configured")); + } }); } } diff --git a/plugins/copyright/src/com/maddyhome/idea/copyright/actions/UpdateCopyrightAction.java b/plugins/copyright/src/com/maddyhome/idea/copyright/actions/UpdateCopyrightAction.java index 472d0b78643c..68bb64860b0f 100644 --- a/plugins/copyright/src/com/maddyhome/idea/copyright/actions/UpdateCopyrightAction.java +++ b/plugins/copyright/src/com/maddyhome/idea/copyright/actions/UpdateCopyrightAction.java @@ -167,15 +167,15 @@ public final class UpdateCopyrightAction extends BaseAnalysisAction { public static class UpdateCopyrightTask extends Task.ConditionalModal { private final Map preparations = new LinkedHashMap<>(); private @NotNull final AnalysisScope myScope; - private boolean mySelected; + private final boolean myAllowReplacement; public UpdateCopyrightTask(@NotNull Project project, @NotNull AnalysisScope scope, - boolean cbSelected, + boolean allowReplacement, @NotNull PerformInBackgroundOption options) { super(project, CopyrightBundle.message("task.title.prepare.copyright"), true, options); myScope = scope; - mySelected = cbSelected; + myAllowReplacement = allowReplacement; } @Override @@ -189,7 +189,7 @@ public final class UpdateCopyrightAction extends BaseAnalysisAction { final Module module = ModuleUtilCore.findModuleForPsiElement(file); final UpdateCopyrightProcessor processor = new UpdateCopyrightProcessor(file.getProject(), module, file); - final Runnable runnable = processor.preprocessFile(file, mySelected); + final Runnable runnable = processor.preprocessFile(file, myAllowReplacement); if (runnable != EmptyRunnable.getInstance()) { preparations.put(file, runnable); }