0: package net.sf.colorer.editor;
  1: 
  2: import net.sf.colorer.*;
  3: import net.sf.colorer.handlers.*;
  4: 
  5: public interface BaseEditor{
  6: 
  7:   /** LineRegionsSupport object preferences.
  8:       Installs specified RegionStore (basically HRDRegionStore), which
  9:       maps HRC Regions into color data, sets default size (in lines) of
 10:       Regions structure cache.
 11:       @param compact Creates LineRegionsSupport (false) or
 12:       LineRegionsCompactSupport (true) object to store lists of RegionDefine's
 13:   */
 14:   public void setRegionCompact(boolean compact);
 15: 
 16:   /** Changes used file type */ 
 17:   public void setFileType(String typename);
 18:   /** Chooses filetype according to the filename and first line of text */ 
 19:   public String chooseFileType(String fname);
 20:   /** Returns Currently selected file type */ 
 21:   public String getFileType();
 22: 
 23:   /** Specifies number of lines, for which parser
 24:       would be able to run continual processing without
 25:       highlight invalidation.
 26:       @param backParse Number of lines. If <= 0, dropped into default
 27:       value.
 28:   */
 29:   void setBackParse(int backParse);
 30: 
 31:   /** Installs specified RegionMapper. */ 
 32:   public void setRegionMapper(String cls, String name);
 33: 
 34:   /** Adds specified RegionHandler object into the parse process.
 35:    * @param filter If not null, handler would be activated only if
 36:    * passed regions have specified <code>filter</code> parent.
 37:    * This allows to optimize performance and disable unnecesary JNI
 38:    * context switches.
 39:   */
 40:   void addRegionHandler(RegionHandler rh, Region filter);
 41:   /** Removes previously added region handler.
 42:   */
 43:   void removeRegionHandler(RegionHandler rh);
 44: 
 45:   /** Current Background Region (def:Text) */ 
 46:   public RegionDefine getBackground();
 47:   /** Current Vertical Rule (def:VertCross) */ 
 48:   public RegionDefine getVertCross();
 49:   /** Current Horizontal Rule (def:HorzCross) */ 
 50:   public RegionDefine getHorzCross();
 51: 
 52:   /** Searches and creates pair match object.
 53:       Returned object can be used later in the pair search methods.
 54:       This object is valid only until reparse of it's line
 55:       occured. After that event information about line region's
 56:       references in it becomes invalid and, if used, can produce
 57:       faults.
 58:       @param lineNo Line number, where to search paired region.
 59:       @param pos Position in line, where paired region to be searched.
 60:              Paired Region is found, if it includes specified position
 61:              or ends directly at one char before line position.
 62:   */
 63:   public PairMatch getPairMatch(int lineNo, int pos);
 64: 
 65:   /** Searches pair match in currently visible text.
 66:       @param pm Unmatched pair match
 67:   */
 68:   public void searchLocalPair(PairMatch pm);
 69:   
 70:   /** Searches pair match in all available text, possibly,
 71:       making additional processing.
 72:       @param pm Unmatched pair match
 73:   */
 74:   public void searchGlobalPair(PairMatch pm);
 75: 
 76:   /** Return parsed and colored LineRegions of requested line.
 77:       This method validates current cache state
 78:       and, if needed, calls Colorer parser to validate modified block of text.
 79:       Size of reparsed text is choosed according to information
 80:       about visible text range and modification events.
 81:       @todo If number of lines, to be reparsed is more, than backParse parameter,
 82:       then method will return null, until validate() method is called.
 83:   */
 84:   public LineRegion[] getLineRegions(int lno);
 85: 
 86:   /** Validates current state of the editor and runs parser, if needed.
 87:       This method can be called periodically in background thread
 88:       to make possible background parsing process.
 89:       @param lno Line number, for which validation is requested.
 90:              If this number is in the current visible window range,
 91:              the part of text is validated, which is required
 92:              for visual repaint.
 93:              If this number is equals to -1, all the text is validated.
 94:              If this number is not in visible range, optimal partial validation
 95:              is used
 96:   */
 97:   void validate(int lno);
 98: 
 99:   /** Tries to do some parsing job while user is doing nothing.
100:       @param time integer between 0 and 100, shows an abount of time,
101:       available for this job.
102:   */
103:   void idleJob(int time);
104: 
105:   /** Informs BaseEditor object about text modification event.
106:       All the text becomes invalid after the specified line.
107:       @param topLine Topmost modified line of text.
108:   */
109:   public void modifyEvent(int topLine);
110: 
111:   /** Informs about single line modification event.
112:       Generally, this type of event can be processed much faster
113:       because of pre-checking line's changed structure and
114:       cancelling further parsing in case of unmodified text structure.
115:       @param line Modified line of text.
116:       @todo Not used yet! This must include special 'try' parse method.
117:   */
118:   public void modifyLineEvent(int line);
119: 
120:   /** Informs about changes in visible range of text lines.
121:       This information is used to make assumptions about
122:       text structure and to make faster parsing.
123:       @param wStart Topmost visible line of text.
124:       @param wSize  Number of currently visible text lines.
125:                     This number must includes all partially visible lines.
126:   */
127:   public void visibleTextEvent(int wStart, int wSize);
128: 
129:   /** Informs about total lines count change.
130:       This must include initial lines number setting.
131:   */
132:   public void lineCountEvent(int newLineCount);
133: 
134: };
135: /* ***** BEGIN LICENSE BLOCK *****
136:  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
137:  *
138:  * The contents of this file are subject to the Mozilla Public License Version
139:  * 1.1 (the "License"); you may not use this file except in compliance with
140:  * the License. You may obtain a copy of the License at
141:  * http://www.mozilla.org/MPL/
142:  *
143:  * Software distributed under the License is distributed on an "AS IS" basis,
144:  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
145:  * for the specific language governing rights and limitations under the
146:  * License.
147:  *
148:  * The Original Code is the Colorer Library.
149:  *
150:  * The Initial Developer of the Original Code is
151:  * Cail Lomecb <cail@nm.ru>.
152:  * Portions created by the Initial Developer are Copyright (C) 1999-2003
153:  * the Initial Developer. All Rights Reserved.
154:  *
155:  * Contributor(s):
156:  *
157:  * Alternatively, the contents of this file may be used under the terms of
158:  * either the GNU General Public License Version 2 or later (the "GPL"), or
159:  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
160:  * in which case the provisions of the GPL or the LGPL are applicable instead
161:  * of those above. If you wish to allow use of your version of this file only
162:  * under the terms of either the GPL or the LGPL, and not to allow others to
163:  * use your version of this file under the terms of the MPL, indicate your
164:  * decision by deleting the provisions above and replace them with the notice
165:  * and other provisions required by the GPL or the LGPL. If you do not delete
166:  * the provisions above, a recipient may use your version of this file under
167:  * the terms of any one of the MPL, the GPL or the LGPL.
168:  *
169:  * ***** END LICENSE BLOCK ***** */