|
3 | 3 | import club.bytecode.the.jda.JDA; |
4 | 4 | import club.bytecode.the.jda.api.ExceptionUI; |
5 | 5 | import com.strobel.annotations.Nullable; |
| 6 | +import org.apache.commons.io.FilenameUtils; |
6 | 7 | import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; |
7 | 8 | import org.fife.ui.rsyntaxtextarea.SyntaxConstants; |
8 | 9 | import org.fife.ui.rtextarea.RTextScrollPane; |
|
15 | 16 | import java.io.ByteArrayInputStream; |
16 | 17 | import java.nio.charset.Charset; |
17 | 18 | import java.nio.charset.CharsetEncoder; |
| 19 | +import java.util.HashMap; |
| 20 | +import java.util.Map; |
18 | 21 |
|
19 | 22 | /** |
20 | 23 | * Represents any open non-class file. |
@@ -69,70 +72,14 @@ public void setContents(byte[] contents) { |
69 | 72 | } |
70 | 73 | } |
71 | 74 |
|
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); |
136 | 83 |
|
137 | 84 | panelArea.setCaretPosition(0); |
138 | 85 | scrollPane.setColumnHeaderView(searchPanel); |
@@ -164,4 +111,33 @@ public void refresh(@Nullable JButton src) { |
164 | 111 | src.setEnabled(true); |
165 | 112 | } |
166 | 113 | } |
| 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 | + } |
167 | 143 | } |
0 commit comments