KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > percederberg > grammatica > code > visualbasic > VisualBasicImports


1 /*
2  * VisualBasicImports.java
3  *
4  * This work is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published
6  * by the Free Software Foundation; either version 2 of the License,
7  * or (at your option) any later version.
8  *
9  * This work is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
17  * USA
18  *
19  * As a special exception, the copyright holders of this library give
20  * you permission to link this library with independent modules to
21  * produce an executable, regardless of the license terms of these
22  * independent modules, and to copy and distribute the resulting
23  * executable under terms of your choice, provided that you also meet,
24  * for each linked independent module, the terms and conditions of the
25  * license of that module. An independent module is a module which is
26  * not derived from or based on this library. If you modify this
27  * library, you may extend this exception to your version of the
28  * library, but you are not obligated to do so. If you do not wish to
29  * do so, delete this exception statement from your version.
30  *
31  * Copyright (c) 2004 Adrian Moore. All rights reserved.
32  * Copyright (c) 2004 Per Cederberg. All rights reserved.
33  */

34
35 package net.percederberg.grammatica.code.visualbasic;
36
37 import java.io.PrintWriter JavaDoc;
38 import net.percederberg.grammatica.code.CodeElement;
39 import net.percederberg.grammatica.code.CodeStyle;
40
41 /**
42  * A class generating a Visual Basic imports declaration.
43  *
44  * @author Adrian Moore, <adrianrob at hotmail dot com>
45  * @author Per Cederberg, <per at percederberg dot net>
46  * @version 1.5
47  * @since 1.5
48  */

49 public class VisualBasicImports extends CodeElement {
50
51     /**
52      * The namespace being used.
53      */

54     private String JavaDoc namespace;
55
56     /**
57      * Creates a new Visual Basic imports declaration.
58      *
59      * @param namespace the namespace being used
60      */

61     public VisualBasicImports(String JavaDoc namespace) {
62         this.namespace = namespace;
63     }
64
65     /**
66      * Compares this object to another one. The comparison is based
67      * primarily on the code element category, and secondarily on the
68      * namespace.
69      *
70      * @param obj the object to compare to
71      *
72      * @return negative if this object preceeds the other one,
73      * zero (0) if the objects are equal, or
74      * positive if this object succeeds the other one
75      */

76     public int compareTo(Object JavaDoc obj) {
77         int value = super.compareTo(obj);
78
79         if (value == 0) {
80             return namespace.compareTo(obj.toString());
81         } else {
82             return value;
83         }
84     }
85
86     /**
87      * Returns true if this object is equal to another.
88      *
89      * @param obj the object to compare to
90      *
91      * @return true if the objects are equal, or
92      * false otherwise
93      */

94     public boolean equals(Object JavaDoc obj) {
95         return compareTo(obj) == 0;
96     }
97
98     /**
99      * Returns the namespace to use.
100      *
101      * @return the namespace to use
102      */

103     public String JavaDoc toString() {
104         return namespace;
105     }
106
107     /**
108      * Returns a numeric category number for the code element. A lower
109      * category number implies that the code element should be placed
110      * before code elements with a higher category number within a
111      * declaration.
112      *
113      * @return the category number
114      */

115     public int category() {
116         return namespace.startsWith("System") ? 1 : 2;
117     }
118
119     /**
120      * Prints the code element to the specified output stream.
121      *
122      * @param out the output stream
123      * @param style the code style to use
124      * @param indent the indentation level
125      */

126     public void print(PrintWriter JavaDoc out, CodeStyle style, int indent) {
127         out.println(style.getIndent(indent) + "Imports " + namespace);
128     }
129 }
130
Popular Tags