- On your SettingsInitializer, you need to add this line:
settingsMap.put(SettingsNames.CODE_FOLDING_ENABLE, Boolean.TRUE);
This is not obvious, but it is the most important step. Without it, you will never activate folding (this was hard to find out - like any other "non-layer.xml" stuff).
- On your EditorKit, you need to implement the SyntaxUpdateTokens class and put it as a document property. Like this:
public class MyEditorKit extends NbEditorKit {
This will tell CustomFold which tokens it must use to find the pseudo-tag.
[ ... ]
protected void initDocument(BaseDocument doc) {
doc.putProperty(SyntaxUpdateTokens.class, new SUT());
}
public class SUT extends SyntaxUpdateTokens {
private List list;
public void syntaxUpdateStart() {
list = new ArrayList();
}
public List syntaxUpdateEnd() {
return list;
}
public void syntaxUpdateToken(TokenID tid, TokenContextPath tcp,
int offset, int len) {
if (tokenID == MyTokenContext.LINE_COMMENT) {
list.add(new TokenInfo(tid, tcp, offset, len));
}
}
}
}
- You need to create a three-line class to add the sidebar to the editor:
public class MyFoldingSideBarFactory implements SideBarFactory {
This is a weird step. I don't know why there's no ready-to-go class to do this job.
public JComponent createSideBar(JTextComponent jTextComponent) {
return new CodeFoldingSideBar(jTextComponent);
}
}
- Now, glue everything in your layer.xml, under "Editor/MIME" folder:
<folder name="SideBar">
FoldManager can be chained, just like the SideBar. Making it easy to add a "real" code fold based on tokens.
<file name="mypkg-MyFoldingSideBarFactory.instance"/>
<attr name="org-netbeans-editor-GlyphGutter.instance
/mypkg-MyFoldingSideBarFactory.instance"
boolvalue="true"/>
</folder>
<folder name="FoldManager">
<file name="org-netbeans-editor-CustomFoldManager$Factory.instance"/>
</folder>
2006-09-11
NetBeans Code Folding
Tired of lose the fight against NetBeans MDR stuff, I decided to check out Code Folding. Pretty easy, indeed. I haven't done a full code fold example, but I was able to use NB 'editor-fold' pseudo-tag. Considering that you have the syntax support (see NBP Tutorials), the steps are:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment