copyright: enable spellchecker and editor actions (IDEA-131586)

This commit is contained in:
Anna Kozlova
2014-10-21 18:26:14 +02:00
parent 9f1811eef6
commit 886393bc9d
3 changed files with 48 additions and 23 deletions
+2 -2
View File
@@ -14,6 +14,6 @@
<orderEntry type="module" module-name="openapi" />
<orderEntry type="library" name="Velocity" level="project" />
<orderEntry type="module" module-name="xml" />
<orderEntry type="module" module-name="spellchecker" />
</component>
</module>
</module>
@@ -16,14 +16,26 @@
package com.maddyhome.idea.copyright.ui;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.EditorFactory;
import com.intellij.openapi.editor.EditorSettings;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.colors.EditorFontType;
import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.fileTypes.FileTypes;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.NamedConfigurable;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vcs.VcsConfiguration;
import com.intellij.spellchecker.ui.SpellCheckingEditorCustomization;
import com.intellij.ui.*;
import com.intellij.util.DocumentUtil;
import com.maddyhome.idea.copyright.CopyrightManager;
import com.maddyhome.idea.copyright.CopyrightProfile;
import com.maddyhome.idea.copyright.pattern.EntityUtil;
@@ -33,8 +45,11 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
@@ -46,16 +61,24 @@ public class CopyrightConfigurable extends NamedConfigurable<CopyrightProfile> {
private boolean myModified;
private String myDisplayName;
private JEditorPane myCopyrightPane;
private EditorTextField myEditor;
private JButton myValidateButton;
private JTextField myKeywordTf;
private JTextField myAllowReplaceTextField;
private JPanel myEditorPanel;
public CopyrightConfigurable(Project project, CopyrightProfile copyrightProfile, Runnable updater) {
super(true, updater);
myProject = project;
myCopyrightProfile = copyrightProfile;
myDisplayName = myCopyrightProfile.getName();
final Set<EditorCustomization> features = new HashSet<EditorCustomization>();
features.add(SpellCheckingEditorCustomization.ENABLED);
features.add(SoftWrapsEditorCustomization.ENABLED);
features.add(AdditionalPageAtBottomEditorCustomization.DISABLED);
EditorTextFieldProvider service = ServiceManager.getService(project, EditorTextFieldProvider.class);
myEditor = service.getEditorField(FileTypes.PLAIN_TEXT.getLanguage(), project, features);
myEditorPanel.add(myEditor.getComponent(), BorderLayout.CENTER);
}
public void setDisplayName(String s) {
@@ -71,11 +94,10 @@ public class CopyrightConfigurable extends NamedConfigurable<CopyrightProfile> {
}
public JComponent createOptionsPanel() {
myCopyrightPane.setFont(EditorColorsManager.getInstance().getGlobalScheme().getFont(EditorFontType.PLAIN));
myValidateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
VelocityHelper.verify(myCopyrightPane.getText());
VelocityHelper.verify(myEditor.getDocument().getText());
Messages.showInfoMessage(myProject, "Velocity template is valid.", "Validation");
}
catch (Exception e1) {
@@ -99,14 +121,14 @@ public class CopyrightConfigurable extends NamedConfigurable<CopyrightProfile> {
public boolean isModified() {
return myModified ||
!Comparing.strEqual(EntityUtil.encode(myCopyrightPane.getText().trim()), myCopyrightProfile.getNotice()) ||
!Comparing.strEqual(EntityUtil.encode(myEditor.getDocument().getText().trim()), myCopyrightProfile.getNotice()) ||
!Comparing.strEqual(myKeywordTf.getText().trim(), myCopyrightProfile.getKeyword()) ||
!Comparing.strEqual(myAllowReplaceTextField.getText().trim(), myCopyrightProfile.getAllowReplaceKeyword()) ||
!Comparing.strEqual(myDisplayName, myCopyrightProfile.getName());
}
public void apply() throws ConfigurationException {
myCopyrightProfile.setNotice(EntityUtil.encode(myCopyrightPane.getText().trim()));
myCopyrightProfile.setNotice(EntityUtil.encode(myEditor.getDocument().getText().trim()));
final String keyword = myKeywordTf.getText().trim();
try {
if (!StringUtil.isEmptyOrSpaces(keyword)) {
@@ -125,7 +147,17 @@ public class CopyrightConfigurable extends NamedConfigurable<CopyrightProfile> {
public void reset() {
myDisplayName = myCopyrightProfile.getName();
myCopyrightPane.setText(EntityUtil.decode(myCopyrightProfile.getNotice()));
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
DocumentUtil.writeInRunUndoTransparentAction(new Runnable() {
@Override
public void run() {
myEditor.getDocument().setText(EntityUtil.decode(myCopyrightProfile.getNotice()));
}
});
}
});
myKeywordTf.setText(myCopyrightProfile.getKeyword());
myAllowReplaceTextField.setText(myCopyrightProfile.getAllowReplaceKeyword());
}
@@ -8,21 +8,6 @@
<properties/>
<border type="none"/>
<children>
<scrollpane id="40313" class="com.intellij.ui.components.JBScrollPane">
<constraints>
<grid row="1" column="0" row-span="1" col-span="2" vsize-policy="0" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false">
<preferred-size width="-1" height="200"/>
</grid>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="e64a9" class="javax.swing.JEditorPane" binding="myCopyrightPane" default-binding="true">
<constraints/>
<properties/>
</component>
</children>
</scrollpane>
<vspacer id="11677">
<constraints>
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
@@ -77,6 +62,14 @@
<text value="Copyright text (may contain Velocity templates):"/>
</properties>
</component>
<grid id="b7e50" binding="myEditorPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<grid row="1" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
</children>
</grid>
</form>