OSDN Git Service

android-2.1_r1 snapshot
[android-x86/sdk.git] / eclipse / plugins / com.android.ide.eclipse.adt / src / com / android / ide / eclipse / adt / internal / resources / configurations / TouchScreenQualifier.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 import com.android.sdklib.IAndroidTarget;
21
22 import org.eclipse.swt.graphics.Image;
23
24
25 /**
26  * Resource Qualifier for Touch Screen type.
27  */
28 public final class TouchScreenQualifier extends ResourceQualifier {
29
30     public static final String NAME = "Touch Screen";
31
32     private TouchScreenType mValue;
33
34     /**
35      * Screen Orientation enum.
36      */
37     public static enum TouchScreenType {
38         NOTOUCH("notouch", "No Touch"), //$NON-NLS-1$
39         STYLUS("stylus", "Stylus"), //$NON-NLS-1$
40         FINGER("finger", "Finger"); //$NON-NLS-1$
41
42         private String mValue;
43         private String mDisplayValue;
44
45         private TouchScreenType(String value, String displayValue) {
46             mValue = value;
47             mDisplayValue = displayValue;
48         }
49
50         /**
51          * Returns the enum for matching the provided qualifier value.
52          * @param value The qualifier value.
53          * @return the enum for the qualifier value or null if no matching was found.
54          */
55         public static TouchScreenType getEnum(String value) {
56             for (TouchScreenType orient : values()) {
57                 if (orient.mValue.equals(value)) {
58                     return orient;
59                 }
60             }
61
62             return null;
63         }
64
65         public String getValue() {
66             return mValue;
67         }
68
69         public String getDisplayValue() {
70             return mDisplayValue;
71         }
72
73         public static int getIndex(TouchScreenType touch) {
74             int i = 0;
75             for (TouchScreenType t : values()) {
76                 if (t == touch) {
77                     return i;
78                 }
79
80                 i++;
81             }
82
83             return -1;
84         }
85
86         public static TouchScreenType getByIndex(int index) {
87             int i = 0;
88             for (TouchScreenType value : values()) {
89                 if (i == index) {
90                     return value;
91                 }
92                 i++;
93             }
94
95             return null;
96         }
97     }
98
99     public TouchScreenQualifier() {
100         // pass
101     }
102
103     public TouchScreenQualifier(TouchScreenType touchValue) {
104         mValue = touchValue;
105     }
106
107     public TouchScreenType getValue() {
108         return mValue;
109     }
110
111     @Override
112     public String getName() {
113         return NAME;
114     }
115
116     @Override
117     public String getShortName() {
118         return NAME;
119     }
120
121     @Override
122     public Image getIcon() {
123         return IconFactory.getInstance().getIcon("touch"); //$NON-NLS-1$
124     }
125
126     @Override
127     public boolean isValid() {
128         return mValue != null;
129     }
130
131     @Override
132     public boolean checkAndSet(String value, FolderConfiguration config) {
133         TouchScreenType type = TouchScreenType.getEnum(value);
134         if (type != null) {
135             TouchScreenQualifier qualifier = new TouchScreenQualifier();
136             qualifier.mValue = type;
137             config.setTouchTypeQualifier(qualifier);
138             return true;
139         }
140
141         return false;
142     }
143
144     @Override
145     public boolean equals(Object qualifier) {
146         if (qualifier instanceof TouchScreenQualifier) {
147             return mValue == ((TouchScreenQualifier)qualifier).mValue;
148         }
149         return false;
150     }
151
152     @Override
153     public int hashCode() {
154         if (mValue != null) {
155             return mValue.hashCode();
156         }
157
158         return 0;
159     }
160
161     /**
162      * Returns the string used to represent this qualifier in the folder name.
163      */
164     @Override
165     public String getFolderSegment(IAndroidTarget target) {
166         if (mValue != null) {
167             return mValue.getValue();
168         }
169
170         return ""; //$NON-NLS-1$
171     }
172
173     @Override
174     public String getStringValue() {
175         if (mValue != null) {
176             return mValue.getDisplayValue();
177         }
178
179         return ""; //$NON-NLS-1$
180     }
181 }