2ae617c32636df9a72db2bd7ed74fcd784f370bc
[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                 return fName;
117         }
118
119         /**
120          * Sets the pattern of the template.
121          */
122         public void setPattern(String pattern) {
123                 fPattern= pattern;
124         }
125                 
126         /**
127          * Returns the template pattern.
128          */
129         public String getPattern() {
130                 return fPattern;
131         }
132         
133         /**
134          * Sets the enable state of the template.
135          */
136         public void setEnabled(boolean enable) {
137                 fEnabled= enable;       
138         }
139         
140         /**
141          * Returns <code>true</code> if template is enabled, <code>false</code> otherwise.
142          */
143         public boolean isEnabled() {
144                 return fEnabled;        
145         }
146         
147         /**
148          * Returns <code>true</code> if template matches the prefix and context,
149          * <code>false</code> otherwise.
150          */
151         public boolean matches(String prefix, String contextTypeName) {
152                 return 
153                         fEnabled &&
154                         fContextTypeName.equals(contextTypeName) &&
155                         (prefix.length() != 0) &&
156                         fName.toLowerCase().startsWith(prefix.toLowerCase());
157         }
158
159 }