1 /* 2 * Copyright (C) 2008 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.resources.KeyboardState; 21 import com.android.sdklib.resources.ResourceEnum; 22 23 import org.eclipse.swt.graphics.Image; 24 25 /** 26 * Resource Qualifier for keyboard state. 27 */ 28 public final class KeyboardStateQualifier extends EnumBasedResourceQualifier { 29 30 public static final String NAME = "Keyboard State"; 31 32 private KeyboardState mValue = null; 33 34 public KeyboardStateQualifier() { 35 // pass 36 } 37 38 public KeyboardStateQualifier(KeyboardState value) { 39 mValue = value; 40 } 41 42 public KeyboardState getValue() { 43 return mValue; 44 } 45 46 @Override 47 ResourceEnum getEnumValue() { 48 return mValue; 49 } 50 51 @Override 52 public String getName() { 53 return NAME; 54 } 55 56 @Override 57 public String getShortName() { 58 return "Keyboard"; 59 } 60 61 @Override 62 public Image getIcon() { 63 return IconFactory.getInstance().getIcon("keyboard"); //$NON-NLS-1$ 64 } 65 66 @Override 67 public boolean checkAndSet(String value, FolderConfiguration config) { 68 KeyboardState orientation = KeyboardState.getEnum(value); 69 if (orientation != null) { 70 KeyboardStateQualifier qualifier = new KeyboardStateQualifier(); 71 qualifier.mValue = orientation; 72 config.setKeyboardStateQualifier(qualifier); 73 return true; 74 } 75 76 return false; 77 } 78 79 @Override 80 public boolean isMatchFor(ResourceQualifier qualifier) { 81 if (qualifier instanceof KeyboardStateQualifier) { 82 KeyboardStateQualifier referenceQualifier = (KeyboardStateQualifier)qualifier; 83 84 // special case where EXPOSED can be used for SOFT 85 if (referenceQualifier.mValue == KeyboardState.SOFT && 86 mValue == KeyboardState.EXPOSED) { 87 return true; 88 } 89 90 return referenceQualifier.mValue == mValue; 91 } 92 93 return false; 94 } 95 96 @Override 97 public boolean isBetterMatchThan(ResourceQualifier compareTo, ResourceQualifier reference) { 98 if (compareTo == null) { 99 return true; 100 } 101 102 KeyboardStateQualifier compareQualifier = (KeyboardStateQualifier)compareTo; 103 KeyboardStateQualifier referenceQualifier = (KeyboardStateQualifier)reference; 104 if (referenceQualifier.mValue == KeyboardState.SOFT) { // only case where there could be a 105 // better qualifier 106 // only return true if it's a better value. 107 if (compareQualifier.mValue == KeyboardState.EXPOSED && mValue == KeyboardState.SOFT) { 108 return true; 109 } 110 } 111 112 return false; 113 } 114 } 115