1 package org.antlr.works.syntax.element; 2 3 import org.antlr.works.ate.folding.ATEFoldingEntity; 4 import org.antlr.works.ate.syntax.misc.ATEToken; 5 import org.antlr.works.editor.EditorPersistentObject; 6 import org.antlr.works.syntax.GrammarSyntaxParser; 7 8 import java.util.ArrayList ; 9 import java.util.List ; 10 40 41 public class ElementAction extends ElementScopable implements EditorPersistentObject, ATEFoldingEntity { 42 43 public ElementRule rule; 44 public ATEToken start; 45 public ATEToken end; 46 public int actionNum; 47 private boolean expanded = true; 48 private GrammarSyntaxParser parser; 49 50 public ElementAction(GrammarSyntaxParser parser, ElementRule rule, ATEToken start) { 51 this.parser = parser; 52 this.rule = rule; 53 this.start = start; 54 } 55 56 public boolean containsIndex(int index) { 57 return index >= start.getStartIndex() && index <= end.getEndIndex(); 58 } 59 60 public boolean equals(Object other) { 61 if(other == null) return false; 62 63 if(other instanceof ElementAction) { 64 return getUniqueIdentifier() == ((ElementAction)other).getUniqueIdentifier(); 65 } else { 66 return false; 67 } 68 } 69 70 public List <ATEToken> getTokens() { 71 List <ATEToken> t = new ArrayList <ATEToken>(); 72 for(int index=start.index; index<end.index; index++) { 73 t.add(parser.getTokens().get(index)); 74 } 75 return t; 76 } 77 78 public int getUniqueIdentifier() { 79 String actionText = start.getText().substring(start.start, end.end); 80 return (rule.name+actionText+actionNum).hashCode(); 81 } 82 83 public void foldingEntitySetExpanded(boolean expanded) { 84 this.expanded = expanded; 85 } 86 87 public boolean foldingEntityIsExpanded() { 88 return expanded; 89 } 90 91 public boolean foldingEntityCanBeCollapsed() { 92 return true; 93 } 94 95 public int foldingEntityGetStartParagraphIndex() { 96 return start.getStartIndex(); 97 } 98 99 public int foldingEntityGetStartIndex() { 100 return start.getStartIndex(); 101 } 102 103 public int foldingEntityGetEndIndex() { 104 return end.getEndIndex(); 105 } 106 107 public int foldingEntityGetStartLine() { 108 return start.startLineNumber; 109 } 110 111 public int foldingEntityGetEndLine() { 112 return end.endLineNumber; 113 } 114 115 public String foldingEntityPlaceholderString() { 116 return "{ ... }"; 117 } 118 119 public String foldingEntityID() { 120 return String.valueOf(getUniqueIdentifier()); 121 } 122 123 public int foldingEntityLevel() { 124 return 1; 125 } 126 127 public Object getPersistentID() { 128 return getUniqueIdentifier(); 129 } 130 131 public void persistentAssign(EditorPersistentObject otherObject) { 132 ElementAction otherAction = (ElementAction)otherObject; 133 this.expanded = otherAction.expanded; 134 } 135 } 136 | Popular Tags |