1 20 21 package org.armedbear.j; 22 23 public abstract class AbstractLine implements Line 24 { 25 private Line prev; 26 private Line next; 27 private int lineNumber = -1; 28 private int originalLineNumber = -1; 29 private int hidden; 30 private Annotation annotation; 31 32 public final synchronized Line previous() 33 { 34 return prev; 35 } 36 37 public final synchronized void setPrevious(Line line) 38 { 39 prev = line; 40 } 41 42 public final synchronized Line next() 43 { 44 return next; 45 } 46 47 public final synchronized void setNext(Line line) 48 { 49 next = line; 50 } 51 52 public final synchronized void insertAfter(Line line) 53 { 54 if (line != null) { 55 Line n = line.next(); 56 setNext(n); 57 if (n != null) 58 n.setPrevious(this); 59 line.setNext(this); 60 setPrevious(line); 61 } else 62 Debug.bug(); 63 } 64 65 public final synchronized int lineNumber() 66 { 67 return lineNumber; 68 } 69 70 public final synchronized void setLineNumber(int n) 71 { 72 lineNumber = n; 73 } 74 75 public final synchronized int originalLineNumber() 76 { 77 return originalLineNumber; 78 } 79 80 public final synchronized void setOriginalLineNumber(int n) 81 { 82 originalLineNumber = n; 83 } 84 85 public int getHeight() 86 { 87 return Display.getCharHeight(); 88 } 89 90 public int getWidth() 91 { 92 return 0; 93 } 94 95 public String getText() 97 { 98 return null; 99 } 100 101 public String getOriginalText() 103 { 104 return null; 105 } 106 107 public void setOriginalText(String s) 109 { 110 } 112 113 public boolean isModified() 115 { 116 return false; 117 } 118 119 public boolean isNew() 121 { 122 return false; 123 } 124 125 public void setNew(boolean b) 127 { 128 } 130 131 public boolean isSaved() 133 { 134 return false; 135 } 136 137 public void setSaved(boolean b) 139 { 140 } 142 143 public void unmodified() 145 { 146 } 148 149 public int getIndentation() 151 { 152 String text = getText(); 153 if (text == null) 154 return 0; 155 int limit = text.length(); 156 for (int i = 0; i < limit; i++) 157 if (!Character.isWhitespace(text.charAt(i))) 158 return i; 159 return limit; 160 } 161 162 public final boolean isHidden() 163 { 164 return hidden > 0; 165 } 166 167 public final void hide() 168 { 169 ++hidden; 170 } 171 172 public final void unhide() 173 { 174 --hidden; 175 if (Editor.isDebugEnabled() && hidden < 0) 176 Debug.bug("hidden < 0"); 177 } 178 179 public final void show() 180 { 181 hidden = 0; 182 } 183 184 public final int getHidden() 185 { 186 return hidden; 187 } 188 189 public final void setHidden(int hidden) 190 { 191 this.hidden = hidden; 192 } 193 194 public final synchronized Line previousVisible() 195 { 196 Line line = previous(); 197 while (line != null && line.isHidden()) 198 line = line.previous(); 199 return line; 200 } 201 202 public final synchronized Line nextVisible() 203 { 204 Line line = next(); 205 while (line != null && line.isHidden()) 206 line = line.next(); 207 return line; 208 } 209 210 public final boolean isBefore(Line line) 211 { 212 return lineNumber < line.lineNumber(); 213 } 214 215 public Line copy() 217 { 218 return null; 219 } 220 221 public void copy(Line line) 223 { 224 } 226 227 public final Annotation getAnnotation() 228 { 229 return annotation; 230 } 231 232 public final void setAnnotation(Annotation annotation) 233 { 234 this.annotation = annotation; 235 } 236 237 public final String toString() 238 { 239 FastStringBuffer sb = new FastStringBuffer(); 240 sb.append("line "); 241 sb.append(lineNumber()+1); 242 String s = getText(); 243 if (s != null) { 244 sb.append(" text = \""); 245 sb.append(s); 246 sb.append('"'); 247 } else 248 sb.append(" text = null"); 249 return sb.toString(); 250 } 251 } 252 | Popular Tags |