1 package org.antlr.works.ate.folding; 2 3 import org.antlr.works.ate.ATEPanel; 4 5 import java.util.ArrayList ; 6 import java.util.HashSet ; 7 import java.util.List ; 8 import java.util.Set ; 9 39 40 public abstract class ATEFoldingManager { 41 42 protected ATEPanel textEditor; 43 protected Set <Integer > usedEntityLines = new HashSet <Integer >(); 44 protected List <ATEFoldingEntity> entities = new ArrayList <ATEFoldingEntity>(); 45 46 public ATEFoldingManager(ATEPanel textEditor) { 47 this.textEditor = textEditor; 48 } 49 50 public void textPaneWillFold() { 51 52 } 53 54 public void textPaneDidFold() { 55 textEditor.refresh(); 56 } 57 58 public abstract ATEFoldingEntityProxy createEntityProxy(ATEFoldingEntity entity); 59 public abstract ATEFoldingEntity getEntityForKey(Object key, int tag); 60 61 public void addEntity(ATEFoldingEntity entity) { 62 Integer start = entity.foldingEntityGetStartLine(); 63 Integer end = entity.foldingEntityGetEndLine(); 64 if(usedEntityLines.contains(start) || usedEntityLines.contains(end)) 65 return; 66 67 usedEntityLines.add(start); 68 usedEntityLines.add(end); 69 70 entities.add(entity); 71 } 72 73 public List <ATEFoldingEntity> getFoldingEntities() { 74 usedEntityLines.clear(); 75 entities.clear(); 76 provideFoldingEntities(); 77 return entities; 78 } 79 80 public abstract void provideFoldingEntities(); 81 82 public void toggleFolding(ATEFoldingEntity entity) { 83 } 85 86 } 87 | Popular Tags |