- 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