Dropped advertisement balloon

This commit is contained in:
Rustam Vishnyakov
2019-03-21 21:25:40 +03:00
parent b6c18fc49a
commit eb838b38f8
6 changed files with 5 additions and 74 deletions
@@ -40,9 +40,13 @@ public interface CodeStyleStatusBarUIContributor {
*
* @param psiFile A PSI file to show the advertisement text for.
* @return The text to be shown or null for no popup.
* @deprecated Dropped. The returned text is ignored.
*/
@Nullable
String getAdvertisementText(@NotNull PsiFile psiFile);
@Deprecated
default String getAdvertisementText(@NotNull PsiFile psiFile) {
return null;
}
/**
* Creates an action which can be used to disable the code style source.
@@ -66,7 +66,6 @@ public class DetectableIndentOptionsProvider extends FileIndentOptionsProvider {
private boolean myIsEnabledInTest;
private final Map<VirtualFile,IndentOptions> myDiscardedOptions = ContainerUtil.createWeakMap();
private boolean hasBeenAdvertised;
@Nullable
@Override
@@ -296,19 +295,6 @@ public class DetectableIndentOptionsProvider extends FileIndentOptionsProvider {
myDiscardedOptions.containsKey(file);
}
@Nullable
@Override
public String getAdvertisementText(@NotNull PsiFile psiFile) {
if (areDetected(getIndentOptions()) && !hasBeenAdvertised) {
String actualOptionsHint = IndentStatusBarUIContributor.getIndentInfo(getIndentOptions());
IndentOptions projectOptions = CodeStyle.getSettings(psiFile.getProject()).getIndentOptions(psiFile.getFileType());
String projectOptionsHint = IndentStatusBarUIContributor.getIndentInfo(projectOptions);
hasBeenAdvertised = true;
return ApplicationBundle.message("code.style.different.indent.size.detected", actualOptionsHint, projectOptionsHint);
}
return null;
}
}
@@ -3,12 +3,9 @@ package com.intellij.psi.codeStyle.statusbar;
import com.intellij.application.options.CodeStyle;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.Balloon;
import com.intellij.openapi.ui.popup.BalloonBuilder;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.ui.popup.ListPopup;
import com.intellij.openapi.vfs.VirtualFile;
@@ -20,12 +17,10 @@ import com.intellij.psi.codeStyle.*;
import com.intellij.psi.codeStyle.modifier.CodeStyleSettingsModifier;
import com.intellij.psi.codeStyle.modifier.CodeStyleStatusBarUIContributor;
import com.intellij.psi.codeStyle.modifier.TransientCodeStyleSettings;
import com.intellij.util.Alarm;
import com.intellij.util.containers.ContainerUtilRt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Arrays;
import java.util.List;
@@ -219,32 +214,4 @@ public class CodeStyleStatusBarWidget extends EditorBasedStatusBarPopup implemen
CodeStyleSettingsManager.removeListener(myProject, this);
super.dispose();
}
@Override
protected void afterVisibleUpdate(@NotNull WidgetState state) {
if (state instanceof MyWidgetState) {
MyWidgetState codeStyleWidgetState = (MyWidgetState)state;
CodeStyleStatusBarUIContributor uiContributor = codeStyleWidgetState.getContributor();
if (uiContributor != null) {
String message = uiContributor.getAdvertisementText(codeStyleWidgetState.getPsiFile());
if (message != null) {
advertise(message);
}
}
}
}
private void advertise(@NotNull String message) {
Alarm alarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD, this);
alarm.addRequest(() -> {
BalloonBuilder builder = JBPopupFactory.getInstance().createBalloonBuilder(new JLabel(message));
JComponent statusBarComponent = getComponent();
Balloon balloon = builder
.setCalloutShift(statusBarComponent.getHeight() / 2)
.setDisposable(this)
.setHideOnClickOutside(true)
.createBalloon();
balloon.showInCenterOf(statusBarComponent);
}, 500, ModalityState.NON_MODAL);
}
}
@@ -2,7 +2,6 @@
package org.editorconfig;
import com.intellij.application.options.CodeStyle;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
@@ -39,7 +38,6 @@ import java.util.Map;
public class Utils {
public static final String FULL_SETTINGS_SUPPORT_REG_KEY = "editor.config.full.settings.support";
private static final String PROJECT_ADVERTISEMENT_FLAG = "editor.config.ad.shown";
private static boolean ourIsFullSettingsSupportEnabledInTest;
@@ -199,11 +197,4 @@ public class Utils {
result.append("\n");
}
public static boolean isShowAdvertisementText(@NotNull Project project) {
final PropertiesComponent projectProperties = PropertiesComponent.getInstance(project);
boolean adFlag = projectProperties.getBoolean(PROJECT_ADVERTISEMENT_FLAG);
if (adFlag) return false;
projectProperties.setValue(PROJECT_ADVERTISEMENT_FLAG, true);
return true;
}
}
@@ -1,15 +1,12 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.editorconfig.configmanagement;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings.IndentOptions;
import com.intellij.psi.codeStyle.IndentStatusBarUIContributor;
import org.editorconfig.Utils;
import org.editorconfig.language.messages.EditorConfigBundle;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -48,13 +45,6 @@ public class EditorConfigIndentStatusBarUIContributor extends IndentStatusBarUIC
return myEditorConfigIndentOptions ? "EditorConfig" : null;
}
@Nullable
@Override
public String getAdvertisementText(@NotNull PsiFile psiFile) {
return Utils.isShowAdvertisementText(psiFile.getProject()) ? EditorConfigBundle.message("advertisement.text") : null;
}
@Override
public boolean isShowFileIndentOptionsEnabled() {
return false;
@@ -5,7 +5,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.modifier.CodeStyleStatusBarUIContributor;
import org.editorconfig.Utils;
import org.editorconfig.configmanagement.EditorConfigActionUtil;
import org.editorconfig.language.messages.EditorConfigBundle;
import org.jetbrains.annotations.NotNull;
@@ -30,12 +29,6 @@ class EditorConfigCodeStyleStatusBarUIContributor implements CodeStyleStatusBarU
return EditorConfigBundle.message("config.code.style.overridden");
}
@Nullable
@Override
public String getAdvertisementText(@NotNull PsiFile psiFile) {
return Utils.isShowAdvertisementText(psiFile.getProject()) ? EditorConfigBundle.message("config.code.style.overridden") : null;
}
@Nullable
@Override
public AnAction createDisableAction(@NotNull Project project) {