рд╣реИрдмреЗ рдХреЗ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛
рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред рдпрджреНрдпрдкрд┐ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ, рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ Intellij IDEA рдореЗрдВ рдЕрдкрдиреЗ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рднрд╛рд╖рд╛ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рд╕рдВрдкрд╛рджрдХ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдЗрдП
Apache JMeter рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ (
JMeter рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рддреЛ, рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ рдпрд╛ рдПрдХ рдирдпрд╛ рдмрдирд╛рдПрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ
рд▓реЗрдЦ рдореЗрдВ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирдИ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░
рд╣рдореЗрдВ 16x16 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕реЗ
/resources/icons
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╕реНрд░реЛрдд рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред рдЖрдк рдЖрдЗрдХрди рдХреЛ рд╕реАрдзреЗ
src
рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

IntelliJ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ
com.intellij.openapi.fileTypes.FileType
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ
com.intellij.openapi.fileTypes.FileType
рд╣реИред рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдБ:
public class JMeterFileType implements FileType { public static final JMeterFileType INSTANCE = new JMeterFileType(); @NotNull @Override public String getName() { return "JMeter"; } @NotNull @Override public String getDescription() { return "JMeter file"; } @NotNull @Override public String getDefaultExtension() { return "jmx"; } @Override public boolean isBinary() { return false; } @Override public boolean isReadOnly() { return false; } @Override public Icon getIcon() { return IconLoader.getIcon("/icons/beaker.png"); } @Override public String getCharset(@NotNull VirtualFile file, byte[] bytes) { return CharsetToolkit.UTF8; } }
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ JavaDoc'ah рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ , рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ред
- Intellij IDEA рдХреЛрдб рдореЗрдВ рд╕рд┐рдВрдЧрд▓реЗрдЯреНрд╕ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдЙрдирд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ
INSTANCE
рдлреАрд▓реНрдб рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред - рдпрджрд┐
isReadOnly
рд╕рд╣реА рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдлрд╝рд╛рдЗрд▓> рд╕реЗрдЯрд┐рдВрдЧреНрд╕> рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред isBinary
рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЦреЛрд▓реА рдЬрд╛рдПрдЧреАред JMeter рдлрд╝рд╛рдЗрд▓реЗрдВ XML рдореЗрдВ XStream рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХрд░рдг
рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ
com.intellij.openapi.fileTypes.FileTypeFactory
рд╡рд░реНрдЧ рдХреЗ рд╡рд╛рд░рд┐рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
public class JMeterFileTypeFactory extends FileTypeFactory { @Override public void createFileTypes(@NotNull FileTypeConsumer consumer) { consumer.consume(JMeterFileType.INSTANCE); } }
рдпрд╣
JMeterFileTypeFactory
рдореЗрдВ
plugin.xml
рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ
<idea-plugin version="2"> ... <extensions defaultExtensionNs="com.intellij"> ... <fileTypeFactory implementation="idea.plugin.jmeter.JMeterFileTypeFactory"/> </extensions> </idea-plugin>
рд╣реЛ рдЧрдпрд╛!
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реБрдЖред рдкреНрд▓рдЧрдЗрди рдЪрд▓рд╛рдПрдБ, рдФрд░ Intellij IDEA рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рдлрд╝рд╛рдЗрд▓> рд╕реЗрдЯрд┐рдВрдЧ> рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИ:

рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ JMeter рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рд╣реИ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╕рд╛рджреЗ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдЦреБрд▓рддреА рд╣реИред

рд╕рд┐рдВрдЯреЗрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ
рдЪреВрдВрдХрд┐ JMeter рдлрд╛рдЗрд▓реЗрдВ рд╕рд╛рджреЗ XML рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ plugins.xml рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<idea-plugin version="2"> ... <extensions defaultExtensionNs="com.intellij"> ... <syntaxHighlighter key="JMeter" implementationClass="com.intellij.ide.highlighter.XmlFileHighlighter"/> </extensions> </idea-plugin>
... рдЕрдЪреНрдЫрд╛, рдпрд╛ рд▓рдЧрднрдЧ рдПрдХред рдпрд╣рд╛рдВ:
key
JMeterFileType.getName()
рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╣реИредimplementationClass
SyntaxHighlighter
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХрдИ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд╣реИрдВ: HTML, Java, Regexp, рдЖрджрд┐ред рдЖрдк рдЦреБрдж рд╣реА рдЕрдкрдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕Highlighter рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

рднрд╛рд╖рд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рджреВрдВрдЧрд╛ рдЬрд┐рди рдкрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
- com.intellij.lang.Language
- com.intellij.openapi.fileTypes.LanguageFileType
- com.intellij.openapi.fileTypes.SyntaxHighlighterFactory (рдпрд╛ LanguageFileTypeHighlighterProvider)
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЖрдЗрдХрди рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде Intellij IDEA рдореЗрдВ рдПрдХ рдирдпрд╛ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдкреНрд▓рдЧ-рдЗрди рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ ,
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рд╕реНрд░реЛрдд рдХреЛрдб, рдпрд╛
рдлрд╝реЛрд░рдо рдореЗрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдкреВрд░рд╛ рдкреЛрд╕реНрдЯ рдХреЛрдб
GitHub рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред