• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.unicode.cldr.draft.keyboard;
2 
3 import static com.google.common.base.Preconditions.checkNotNull;
4 
5 import com.google.common.base.MoreObjects;
6 import com.google.common.base.Objects;
7 
8 /**
9  * Describes various platform dependent settings that are pertinent to the keyboard use.
10  */
11 public final class KeyboardSettings {
12     private final FallbackSetting fallbackSetting;
13     private final TransformFailureSetting transformFailureSetting;
14     private final TransformPartialSetting transformPartialSetting;
15 
KeyboardSettings(FallbackSetting fallbackSetting, TransformFailureSetting transformFailureSetting, TransformPartialSetting transformPartialSetting)16     private KeyboardSettings(FallbackSetting fallbackSetting,
17         TransformFailureSetting transformFailureSetting,
18         TransformPartialSetting transformPartialSetting) {
19         this.fallbackSetting = checkNotNull(fallbackSetting);
20         this.transformFailureSetting = checkNotNull(transformFailureSetting);
21         this.transformPartialSetting = checkNotNull(transformPartialSetting);
22     }
23 
24     /** Creates a keyboard settings object from the given options. */
of(FallbackSetting fallbackSetting, TransformFailureSetting transformFailureSetting, TransformPartialSetting transformPartialSetting)25     public static KeyboardSettings of(FallbackSetting fallbackSetting,
26         TransformFailureSetting transformFailureSetting,
27         TransformPartialSetting transformPartialSetting) {
28         return new KeyboardSettings(fallbackSetting, transformFailureSetting, transformPartialSetting);
29     }
30 
fallbackSetting()31     public FallbackSetting fallbackSetting() {
32         return fallbackSetting;
33     }
34 
transformFailureSetting()35     public TransformFailureSetting transformFailureSetting() {
36         return transformFailureSetting;
37     }
38 
transformPartialSetting()39     public TransformPartialSetting transformPartialSetting() {
40         return transformPartialSetting;
41     }
42 
43     @Override
toString()44     public String toString() {
45         return MoreObjects.toStringHelper(this)
46             .add("fallbackSetting", fallbackSetting)
47             .add("transformFailureSetting", transformFailureSetting)
48             .add("transformPartialSetting", transformPartialSetting)
49             .toString();
50     }
51 
52     @Override
equals(Object o)53     public boolean equals(Object o) {
54         if (o == this) {
55             return true;
56         }
57         if (o instanceof KeyboardSettings) {
58             KeyboardSettings other = (KeyboardSettings) o;
59             return Objects.equal(fallbackSetting, other.fallbackSetting)
60                 && Objects.equal(transformFailureSetting, other.transformFailureSetting)
61                 && Objects.equal(transformPartialSetting, other.transformPartialSetting);
62         }
63         return false;
64     }
65 
66     @Override
hashCode()67     public int hashCode() {
68         return Objects.hashCode(fallbackSetting, transformFailureSetting, transformPartialSetting);
69     }
70 
71     /**
72      * Describes the behavior of the system when a key press fails. It specifies what happens if there
73      * is no mapping for a particular key for the given set of modifier keys. This setting is
74      * completely platform dependent. NONE indicates the setting does not apply to the platform.
75      */
76     public enum FallbackSetting {
77         BASE, OMIT, NONE;
78 
79         @Override
toString()80         public String toString() {
81             return name().toLowerCase();
82         }
83     }
84 
85     /**
86      * Describes the behavior of the system when a transform fails. For example it specifies what
87      * happens if a dead-key is pressed and the following key cannot be combined. This setting is
88      * completely platform dependent. NONE indicates the setting does not apply to the platform.
89      */
90     public enum TransformFailureSetting {
91         EMIT, OMIT, NONE;
92 
93         @Override
toString()94         public String toString() {
95             return name().toLowerCase();
96         }
97     }
98 
99     /**
100      * Describes the behavior of the system while a transform is in progress. It specifies whether the
101      * pressed keys are displayed or not. This setting is completely platform dependent. NONE
102      * indicates the setting does not apply to the platform.
103      */
104     public enum TransformPartialSetting {
105         HIDE, SHOW, NONE;
106 
107         @Override
toString()108         public String toString() {
109             return name().toLowerCase();
110         }
111     }
112 }
113