Skip to content

Commit 4d7f0f1

Browse files
committed
Refactor giant FileViewer if-else chain into a map
1 parent 45d34f8 commit 4d7f0f1

File tree

1 file changed

+40
-64
lines changed

1 file changed

+40
-64
lines changed

src/main/java/club/bytecode/the/jda/gui/fileviewer/FileViewer.java

Lines changed: 40 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import club.bytecode.the.jda.JDA;
44
import club.bytecode.the.jda.api.ExceptionUI;
55
import com.strobel.annotations.Nullable;
6+
import org.apache.commons.io.FilenameUtils;
67
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
78
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
89
import org.fife.ui.rtextarea.RTextScrollPane;
@@ -15,6 +16,8 @@
1516
import java.io.ByteArrayInputStream;
1617
import java.nio.charset.Charset;
1718
import java.nio.charset.CharsetEncoder;
19+
import java.util.HashMap;
20+
import java.util.Map;
1821

1922
/**
2023
* Represents any open non-class file.
@@ -69,70 +72,14 @@ public void setContents(byte[] contents) {
6972
}
7073
}
7174

72-
if (name.endsWith(".xml") || contentsS.startsWith("<?xml") || contentsS.startsWith(("<xml"))) {
73-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_XML);
74-
panelArea.setText(contentsS);
75-
} else if (name.endsWith(".py") || name.endsWith(".python")) {
76-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON);
77-
panelArea.setText(contentsS);
78-
} else if (name.endsWith(".rb") || name.endsWith(".ruby")) {
79-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_RUBY);
80-
panelArea.setText(contentsS);
81-
} else if (name.endsWith(".java")) {
82-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
83-
panelArea.setText(contentsS);
84-
} else if (name.endsWith(".html")) {
85-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_HTML);
86-
panelArea.setText(contentsS);
87-
} else if (name.endsWith(".css")) {
88-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CSS);
89-
panelArea.setText(contentsS);
90-
} else if (name.endsWith(".properties") || name.endsWith(".mf") || name.endsWith(".sf")) {
91-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE);
92-
panelArea.setText(contentsS);
93-
} else if (name.endsWith(".php") || contentsS.startsWith("<?php")) {
94-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PHP);
95-
panelArea.setText(contentsS);
96-
} else if (name.endsWith(".js")) {
97-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT);
98-
panelArea.setText(contentsS);
99-
} else if (name.endsWith(".bat")) {
100-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_WINDOWS_BATCH);
101-
panelArea.setText(contentsS);
102-
} else if (name.endsWith(".sh")) {
103-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_UNIX_SHELL);
104-
panelArea.setText(contentsS);
105-
} else if (name.endsWith(".c")) {
106-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_C);
107-
panelArea.setText(contentsS);
108-
} else if (name.endsWith(".cpp")) {
109-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CPLUSPLUS);
110-
panelArea.setText(contentsS);
111-
} else if (name.endsWith(".scala")) {
112-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_SCALA);
113-
panelArea.setText(contentsS);
114-
} else if (name.endsWith(".clojure")) {
115-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CLOJURE);
116-
panelArea.setText(contentsS);
117-
} else if (name.endsWith(".groovy")) {
118-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_GROOVY);
119-
panelArea.setText(contentsS);
120-
} else if (name.endsWith(".lua")) {
121-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA);
122-
panelArea.setText(contentsS);
123-
} else if (name.endsWith(".sql")) {
124-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_SQL);
125-
panelArea.setText(contentsS);
126-
} else if (name.endsWith(".json")) {
127-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JSON);
128-
panelArea.setText(contentsS);
129-
} else if (name.endsWith(".jsp")) {
130-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JSP);
131-
panelArea.setText(contentsS);
132-
} else {
133-
panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_NONE);
134-
panelArea.setText(contentsS);
135-
}
75+
String lex = fileExtTypes.getOrDefault(FilenameUtils.getExtension(name), SyntaxConstants.SYNTAX_STYLE_NONE);
76+
if (contentsS.startsWith("<?xml") || contentsS.startsWith("<xml"))
77+
lex = SyntaxConstants.SYNTAX_STYLE_XML;
78+
if (contentsS.startsWith("<?php"))
79+
lex = SyntaxConstants.SYNTAX_STYLE_PHP;
80+
panelArea.setSyntaxEditingStyle(lex);
81+
82+
panelArea.setText(contentsS);
13683

13784
panelArea.setCaretPosition(0);
13885
scrollPane.setColumnHeaderView(searchPanel);
@@ -164,4 +111,33 @@ public void refresh(@Nullable JButton src) {
164111
src.setEnabled(true);
165112
}
166113
}
114+
115+
private static Map<String, String> fileExtTypes = new HashMap<>();
116+
117+
static {
118+
fileExtTypes.put("xml", SyntaxConstants.SYNTAX_STYLE_XML);
119+
fileExtTypes.put("py", SyntaxConstants.SYNTAX_STYLE_PYTHON);
120+
fileExtTypes.put("python", SyntaxConstants.SYNTAX_STYLE_PYTHON);
121+
fileExtTypes.put("rb", SyntaxConstants.SYNTAX_STYLE_RUBY);
122+
fileExtTypes.put("ruby", SyntaxConstants.SYNTAX_STYLE_RUBY);
123+
fileExtTypes.put("java", SyntaxConstants.SYNTAX_STYLE_JAVA);
124+
fileExtTypes.put("html", SyntaxConstants.SYNTAX_STYLE_HTML);
125+
fileExtTypes.put("css", SyntaxConstants.SYNTAX_STYLE_CSS);
126+
fileExtTypes.put("properties", SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE);
127+
fileExtTypes.put("mf", SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE);
128+
fileExtTypes.put("sf", SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE);
129+
fileExtTypes.put("php", SyntaxConstants.SYNTAX_STYLE_PHP);
130+
fileExtTypes.put("js", SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT);
131+
fileExtTypes.put("bat", SyntaxConstants.SYNTAX_STYLE_WINDOWS_BATCH);
132+
fileExtTypes.put("sh", SyntaxConstants.SYNTAX_STYLE_UNIX_SHELL);
133+
fileExtTypes.put("c", SyntaxConstants.SYNTAX_STYLE_C);
134+
fileExtTypes.put("cpp", SyntaxConstants.SYNTAX_STYLE_CPLUSPLUS);
135+
fileExtTypes.put("scala", SyntaxConstants.SYNTAX_STYLE_SCALA);
136+
fileExtTypes.put("clojure", SyntaxConstants.SYNTAX_STYLE_CLOJURE);
137+
fileExtTypes.put("groovy", SyntaxConstants.SYNTAX_STYLE_GROOVY);
138+
fileExtTypes.put("lua", SyntaxConstants.SYNTAX_STYLE_LUA);
139+
fileExtTypes.put("sql", SyntaxConstants.SYNTAX_STYLE_SQL);
140+
fileExtTypes.put("json", SyntaxConstants.SYNTAX_STYLE_JSON);
141+
fileExtTypes.put("jsp", SyntaxConstants.SYNTAX_STYLE_JSP);
142+
}
167143
}

0 commit comments

Comments
 (0)