1package com.nwalsh.xalan; 2 3import org.w3c.dom.*; 4 5/** 6 * <p>Utility class for the Verbatim extension (ignore this).</p> 7 * 8 * <p>$Id: Callout.java,v 1.1 2006/05/04 13:23:51 nwalsh Exp $</p> 9 * 10 * <p>Copyright (C) 2000 Norman Walsh.</p> 11 * 12 * <p>This class is just for book keeping in the Verbatim class. 13 * It stores information about the location of callouts.</p> 14 * 15 * <p>Only line/column based callouts are supported. This class 16 * implements the Comparable interface so that callouts can be sorted. 17 * Callouts are sorted so that they occur in left-to-right, 18 * top-to-bottom order based on line/column.</p> 19 * 20 * <p><b>Change Log:</b></p> 21 * <dl> 22 * <dt>1.0</dt> 23 * <dd><p>Initial release.</p></dd> 24 * </dl> 25 * 26 * @author Norman Walsh 27 * <a href="mailto:ndw@nwalsh.com">ndw@nwalsh.com</a> 28 * 29 * @see Verbatim 30 * 31 * @version $Id: Callout.java,v 1.1 2006/05/04 13:23:51 nwalsh Exp $ 32 * */ 33public class Callout implements Comparable { 34 /** The callout number. */ 35 private int callout = 0; 36 /** The area Element item that generated this callout. */ 37 private Element area = null; 38 /** The line on which this callout occurs. */ 39 private int line = 0; 40 /** The column in which this callout appears. */ 41 private int col = 0; 42 /** The type of callout. */ 43 private int type = 0; 44 /** The other type of callout. */ 45 private String otherType = null; 46 47 public static final int CALS_PAIR = 1; 48 public static final int LINE_COLUMN = 2; 49 public static final int LINE_COLUMN_PAIR = 3; 50 public static final int LINE_RANGE = 4; 51 public static final int OTHER = 5; 52 53 /** The constructor; initialize the private data structures. */ 54 public Callout(int callout, Element area, int line, int col, int type) { 55 this.callout = callout; 56 this.area = area; 57 this.line = line; 58 this.col = col; 59 this.type = type; 60 this.otherType = null; 61 } 62 63 /** The constructor; initialize the private data structures. */ 64 public Callout(int callout, Element area, int line, int col, String otherType) { 65 this.callout = callout; 66 this.area = area; 67 this.line = line; 68 this.col = col; 69 this.type = Callout.OTHER; 70 this.otherType = otherType; 71 } 72 73 /** 74 * <p>The compareTo method compares this Callout with another.</p> 75 * 76 * <p>Given two Callouts, A and B, A < B if:</p> 77 * 78 * <ol> 79 * <li>A.line < B.line, or</li> 80 * <li>A.line = B.line && A.col < B.col, or</li> 81 * <li>A.line = B.line && A.col = B.col && A.callout < B.callout</li> 82 * <li>Otherwise, they're equal.</li> 83 * </ol> 84 */ 85 public int compareTo (Object o) { 86 Callout c = (Callout) o; 87 88 if (line == c.getLine()) { 89 if (col > c.getColumn()) { 90 return 1; 91 } else if (col < c.getColumn()) { 92 return -1; 93 } else { 94 if (callout < c.getCallout()) { 95 return -1; 96 } else if (callout > c.getCallout()) { 97 return 1; 98 } else { 99 return 0; 100 } 101 } 102 } else { 103 if (line > c.getLine()) { 104 return 1; 105 } else { 106 return -1; 107 } 108 } 109 } 110 111 /** Access the Callout's area. */ 112 public Element getArea() { 113 return area; 114 } 115 116 /** Access the Callout's line. */ 117 public int getLine() { 118 return line; 119 } 120 121 /** Access the Callout's column. */ 122 public int getColumn() { 123 return col; 124 } 125 126 /** Access the Callout's callout number. */ 127 public int getCallout() { 128 return callout; 129 } 130 131 /** Access the Callout's type. */ 132 public int getType() { 133 return type; 134 } 135 136 /** Access the Callout's otherType. */ 137 public String getOtherType() { 138 return otherType; 139 } 140 141 142} 143 144