OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / sdk / eclipse / plugins / com.android.ide.eclipse.adt / src / com / android / ide / eclipse / adt / internal / resources / configurations / LanguageQualifier.java
1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Eclipse Public License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.eclipse.org/org/documents/epl-v10.php
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.ide.eclipse.adt.internal.resources.configurations;
18
19 import com.android.ide.eclipse.adt.internal.editors.IconFactory;
20
21 import org.eclipse.swt.graphics.Image;
22
23 import java.util.regex.Pattern;
24
25 /**
26  * Resource Qualifier for Language.
27  */
28 public final class LanguageQualifier extends ResourceQualifier {
29     private final static Pattern sLanguagePattern = Pattern.compile("^[a-z]{2}$"); //$NON-NLS-1$
30
31     public static final String FAKE_LANG_VALUE = "__"; //$NON-NLS-1$
32     public static final String NAME = "Language";
33
34     private String mValue;
35
36     /**
37      * Creates and returns a qualifier from the given folder segment. If the segment is incorrect,
38      * <code>null</code> is returned.
39      * @param segment the folder segment from which to create a qualifier.
40      * @return a new {@link LanguageQualifier} object or <code>null</code>
41      */
42     public static LanguageQualifier getQualifier(String segment) {
43         if (sLanguagePattern.matcher(segment).matches()) {
44             LanguageQualifier qualifier = new LanguageQualifier();
45             qualifier.mValue = segment;
46
47             return qualifier;
48         }
49         return null;
50     }
51
52     /**
53      * Returns the folder name segment for the given value. This is equivalent to calling
54      * {@link #toString()} on a {@link LanguageQualifier} object.
55      * @param value the value of the qualifier, as returned by {@link #getValue()}.
56      */
57     public static String getFolderSegment(String value) {
58         String segment = value.toLowerCase();
59         if (sLanguagePattern.matcher(segment).matches()) {
60             return segment;
61         }
62
63         return null;
64     }
65
66     public LanguageQualifier() {
67
68     }
69
70     public LanguageQualifier(String value) {
71         mValue = value;
72     }
73
74     public String getValue() {
75         if (mValue != null) {
76             return mValue;
77         }
78
79         return ""; //$NON-NLS-1$
80     }
81
82     @Override
83     public String getName() {
84         return NAME;
85     }
86
87     @Override
88     public String getShortName() {
89         return NAME;
90     }
91
92     @Override
93     public Image getIcon() {
94         return IconFactory.getInstance().getIcon("language"); //$NON-NLS-1$
95     }
96
97     @Override
98     public boolean isValid() {
99         return mValue != null;
100     }
101
102     @Override
103     public boolean hasFakeValue() {
104         return FAKE_LANG_VALUE.equals(mValue);
105     }
106
107     @Override
108     public boolean checkAndSet(String value, FolderConfiguration config) {
109         LanguageQualifier qualifier = getQualifier(value);
110         if (qualifier != null) {
111             config.setLanguageQualifier(qualifier);
112             return true;
113         }
114
115         return false;
116     }
117
118     @Override
119     public boolean equals(Object qualifier) {
120         if (qualifier instanceof LanguageQualifier) {
121             if (mValue == null) {
122                 return ((LanguageQualifier)qualifier).mValue == null;
123             }
124             return mValue.equals(((LanguageQualifier)qualifier).mValue);
125         }
126
127         return false;
128     }
129
130     @Override
131     public int hashCode() {
132         if (mValue != null) {
133             return mValue.hashCode();
134         }
135
136         return 0;
137     }
138
139     /**
140      * Returns the string used to represent this qualifier in the folder name.
141      */
142     @Override
143     public String getFolderSegment() {
144         if (mValue != null) {
145             return getFolderSegment(mValue);
146         }
147
148         return ""; //$NON-NLS-1$
149     }
150
151     @Override
152     public String getShortDisplayValue() {
153         if (mValue != null) {
154             return mValue;
155         }
156
157         return ""; //$NON-NLS-1$
158     }
159
160     @Override
161     public String getLongDisplayValue() {
162         if (mValue != null) {
163             return String.format("Language %s", mValue);
164         }
165
166         return ""; //$NON-NLS-1$
167     }
168 }