8c64ceea020d0aa2e902393aa327eb70b9ddb010
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / corext / template / Template.java
1 /*
2  * (c) Copyright IBM Corp. 2000, 2001.
3  * All Rights Reserved.
4  */
5 package net.sourceforge.phpdt.internal.corext.template;
6
7 /**
8  * A template consiting of a name and a pattern.
9  */
10 public class Template {
11
12         /** The name of this template */
13         private String fName;
14         /** A description of this template */
15         private String fDescription;
16         /** The name of the context type of this template */
17         private String fContextTypeName;
18         /** The template pattern. */
19         private String fPattern;
20         /** A flag indicating if the template is active or not. */
21         private boolean fEnabled= true;
22
23         /**
24          * Creates an empty template.
25          */
26         public Template() {
27                 this("", "", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
28         }
29         
30         /**
31          * Creates a copy of a template.
32          */
33         public Template(Template template) {
34                 this(template.getName(), template.getDescription(), template.getContextTypeName(), template.getPattern());      
35         }
36
37         /**
38          * Creates a template.
39          * 
40          * @param name the name of the template.
41          * @param description the description of the template.
42          * @param contextTypeName the name of the context type in which the template can be applied.
43          * @param pattern the template pattern.
44          */             
45         public Template(String name, String description, String contextTypeName, String pattern) {
46                 fName= name;
47                 fDescription= description;
48                 fContextTypeName= contextTypeName;
49                 fPattern= pattern;
50         }
51         
52         /*
53          * @see Object#equals(Object)
54          */
55         public boolean equals(Object object) {
56                 if (!(object instanceof Template))
57                         return false;
58                         
59                 Template template= (Template) object;
60
61                 if (template == this)
62                         return true;            
63
64                 return
65                         template.fName.equals(fName) &&
66                         template.fPattern.equals(fPattern) &&
67                         template.fContextTypeName.equals(fContextTypeName);
68         }
69         
70         /*
71          * @see Object#hashCode()
72          */
73         public int hashCode() {
74                 return fName.hashCode() ^ fPattern.hashCode() ^ fContextTypeName.hashCode();
75         }
76
77         /**
78          * Sets the description of the template.
79          */
80         public void setDescription(String description) {
81                 fDescription= description;
82         }
83         
84         /**
85          * Returns the description of the template.
86          */
87         public String getDescription() {
88                 return fDescription;
89         }
90         
91         /**
92          * Sets the name of the context type in which the template can be applied.
93          */
94         public void setContext(String contextTypeName) {
95                 fContextTypeName= contextTypeName;
96         }
97         
98         /**
99          * Returns the name of the context type in which the template can be applied.
100          */
101         public String getContextTypeName() {
102                 return fContextTypeName;
103         }
104
105         /**
106          * Sets the name of the template.
107          */
108         public void setName(String name) {
109                 fName= name;
110         }
111                         
112         /**
113          * Returns the name of the template.
114          */
115         public String getName() {
116             if (fName==null) {
117               return "";
118             }
119                 return fName;
120         }
121
122         /**
123          * Sets the pattern of the template.
124          */
125         public void setPattern(String pattern) {
126                 fPattern= pattern;
127         }
128                 
129         /**
130          * Returns the template pattern.
131          */
132         public String getPattern() {
133                 return fPattern;
134         }
135         
136         /**
137          * Sets the enable state of the template.
138          */
139         public void setEnabled(boolean enable) {
140                 fEnabled= enable;       
141         }
142         
143         /**
144          * Returns <code>true</code> if template is enabled, <code>false</code> otherwise.
145          */
146         public boolean isEnabled() {
147                 return fEnabled;        
148         }
149         
150         /**
151          * Returns <code>true</code> if template matches the prefix and context,
152          * <code>false</code> otherwise.
153          */
154         public boolean matches(String prefix, String contextTypeName) {
155                 return 
156                         fEnabled &&
157                         fContextTypeName.equals(contextTypeName) &&
158                         (prefix.length() != 0) &&
159                         fName.toLowerCase().startsWith(prefix.toLowerCase());
160         }
161
162 }