KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > armedbear > j > P4ChangelistFormatter


1 /*
2  * P4ChangelistFormatter.java
3  *
4  * Copyright (C) 2002 Peter Graves
5  * $Id: P4ChangelistFormatter.java,v 1.1.1.1 2002/09/24 16:09:02 piso Exp $
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20  */

21
22 package org.armedbear.j;
23
24 public final class P4ChangelistFormatter extends Formatter
25 {
26     private static final byte FORMAT_TEXT = 0;
27     private static final byte FORMAT_COMMENT = 1;
28     private static final byte FORMAT_KEY = 2;
29     private static final byte FORMAT_VALUE = 3;
30
31     public P4ChangelistFormatter(Buffer buffer)
32     {
33         this.buffer = buffer;
34     }
35
36     public LineSegmentList formatLine(Line line)
37     {
38         clearSegmentList();
39         String JavaDoc text = getDetabbedText(line);
40         final String JavaDoc comment;
41         int hash = text.indexOf('#');
42         if (hash >= 0) {
43             comment = text.substring(hash);
44             text = text.substring(0, hash);
45         } else
46             comment = null;
47         int colon = text.indexOf(':');
48         if (colon >= 0) {
49             int space = text.indexOf('\t');
50             if (space < 0)
51                 space = text.indexOf(' ');
52             if (space < 0 || colon < space) {
53                 addSegment(text, 0, colon+1, FORMAT_KEY);
54                 addSegment(text, colon+1, FORMAT_VALUE);
55             } else
56                 addSegment(text, FORMAT_TEXT);
57         } else
58             addSegment(text, FORMAT_TEXT);
59         if (comment != null)
60             addSegment(comment, FORMAT_COMMENT);
61         return segmentList;
62     }
63
64     public FormatTable getFormatTable()
65     {
66         if (formatTable == null) {
67             formatTable = new FormatTable("P4Changelist");
68             formatTable.addEntryFromPrefs(FORMAT_TEXT, "text");
69             formatTable.addEntryFromPrefs(FORMAT_COMMENT, "comment");
70             formatTable.addEntryFromPrefs(FORMAT_KEY, "key", "function");
71             formatTable.addEntryFromPrefs(FORMAT_VALUE, "value", "text");
72         }
73         return formatTable;
74     }
75 }
76
Popular Tags