Skip to content

Commit

Permalink
Merge pull request #190 from SeeSharpSoft/fb_strip_trailing_spaces_fi…
Browse files Browse the repository at this point in the history
…lter_factory

[FEATURE] provide option to keep trailing spaces for CSV files
  • Loading branch information
SeeSharpSoft committed Mar 7, 2020
2 parents 0266222 + a39d1cc commit 4b7ccd9
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public static final class OptionSet {
public boolean FILE_END_LINE_BREAK;
public CsvEscapeCharacter DEFAULT_ESCAPE_CHARACTER = ESCAPE_CHARACTER_DEFAULT;
public CsvValueSeparator DEFAULT_VALUE_SEPARATOR = VALUE_SEPARATOR_DEFAULT;
public boolean KEEP_TRAILING_SPACES = false;

public OptionSet() {
EditorSettingsExternalizable editorSettingsExternalizable = EditorSettingsExternalizable.getInstance();
Expand Down Expand Up @@ -260,4 +261,12 @@ public void setDefaultValueSeparator(CsvValueSeparator defaultValueSeparator) {
public CsvValueSeparator getDefaultValueSeparator() {
return getState().DEFAULT_VALUE_SEPARATOR;
}

public void setKeepTrailingSpaces(boolean keepTrailingSpaces) {
getState().KEEP_TRAILING_SPACES = keepTrailingSpaces;
}

public boolean getKeepTrailingSpaces() {
return getState().KEEP_TRAILING_SPACES;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<properties/>
<border type="line" title="Text Editor"/>
<children>
<grid id="d2422" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="d2422" layout-manager="GridLayoutManager" row-count="4" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="10" left="10" bottom="10" right="10"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
Expand Down Expand Up @@ -51,6 +51,14 @@
</constraints>
<properties/>
</component>
<component id="8ed01" class="javax.swing.JCheckBox" binding="cbKeepTrailingWhitespaces">
<constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Keep trailing white spaces (if unchecked, general editor setting is applied)"/>
</properties>
</component>
</children>
</grid>
<grid id="6ba47" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public class CsvEditorSettingsProvider implements SearchableConfigurable {
private JCheckBox cbAdjustColumnWidthOnOpen;
private JComboBox comboEscapeCharacter;
private JComboBox comboValueSeparator;
private JCheckBox cbKeepTrailingWhitespaces;

@NotNull
@Override
Expand Down Expand Up @@ -90,7 +91,8 @@ public boolean isModified() {
!tfDefaultColumnWidth.getValue().equals(csvEditorSettings.getTableDefaultColumnWidth()) ||
isModified(cbAdjustColumnWidthOnOpen, csvEditorSettings.isTableAutoColumnWidthOnOpen()) ||
!Objects.equals(comboEscapeCharacter.getSelectedItem(), csvEditorSettings.getDefaultEscapeCharacter()) ||
!Objects.equals(comboValueSeparator.getSelectedItem(), csvEditorSettings.getDefaultValueSeparator());
!Objects.equals(comboValueSeparator.getSelectedItem(), csvEditorSettings.getDefaultValueSeparator()) ||
isModified(cbKeepTrailingWhitespaces, csvEditorSettings.getKeepTrailingSpaces());
}

@Override
Expand All @@ -114,6 +116,7 @@ public void reset() {
cbAdjustColumnWidthOnOpen.setSelected(csvEditorSettings.isTableAutoColumnWidthOnOpen());
comboEscapeCharacter.setSelectedItem(csvEditorSettings.getDefaultEscapeCharacter());
comboValueSeparator.setSelectedItem(csvEditorSettings.getDefaultValueSeparator());
cbKeepTrailingWhitespaces.setSelected(csvEditorSettings.getKeepTrailingSpaces());
}

@Override
Expand All @@ -137,6 +140,7 @@ public void apply() throws ConfigurationException {
csvEditorSettings.setTableAutoColumnWidthOnOpen(cbAdjustColumnWidthOnOpen.isSelected());
csvEditorSettings.setDefaultEscapeCharacter((CsvEscapeCharacter)comboEscapeCharacter.getSelectedItem());
csvEditorSettings.setDefaultValueSeparator((CsvValueSeparator)comboValueSeparator.getSelectedItem());
csvEditorSettings.setKeepTrailingSpaces(cbKeepTrailingWhitespaces.isSelected());
}

protected void createUIComponents() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package net.seesharpsoft.intellij.plugins.csv.settings;

import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.StripTrailingSpacesFilter;
import com.intellij.openapi.editor.StripTrailingSpacesFilterFactory;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import net.seesharpsoft.intellij.plugins.csv.CsvLanguage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class CsvStripTrailingSpacesFilterFactory extends StripTrailingSpacesFilterFactory {
@NotNull
@Override
public StripTrailingSpacesFilter createFilter(@Nullable Project project, @NotNull Document document) {
VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document);
if (project != null &&
virtualFile != null &&
virtualFile.getFileType() instanceof LanguageFileType &&
((LanguageFileType) virtualFile.getFileType()).getLanguage().isKindOf(CsvLanguage.INSTANCE) &&
CsvEditorSettings.getInstance().getKeepTrailingSpaces()) {
return StripTrailingSpacesFilter.NOT_ALLOWED;
}
return StripTrailingSpacesFilter.ALL_LINES;
}
}
2 changes: 2 additions & 0 deletions src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,8 @@ FIX: NullPointerException thrown when trying to view CSV as table #185
<category>CSV</category>
<descriptionDirectoryName>UnquoteAll</descriptionDirectoryName>
</intentionAction>

<stripTrailingSpacesFilterFactory implementation="net.seesharpsoft.intellij.plugins.csv.settings.CsvStripTrailingSpacesFilterFactory" />
</extensions>

<actions>
Expand Down

0 comments on commit 4b7ccd9

Please sign in to comment.