1889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka/*
28632bff2d5a8e1160989008dea6eff4b94b065ddTadashi G. Takaoka * Copyright (C) 2010 The Android Open Source Project
3889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka *
48aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
58aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * you may not use this file except in compliance with the License.
68aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * You may obtain a copy of the License at
7889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka *
88aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
9889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka *
10889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software
118aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
128aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * See the License for the specific language governing permissions and
148aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * limitations under the License.
15889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka */
16889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka
1772934bd5967d0127f71fd4d66158b18b4e6ceefeTadashi G. Takaokapackage com.android.inputmethod.keyboard.internal;
18889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka
19f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaokaimport android.util.Log;
20f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka
21a28a05e971cc242b338331a3b78276fa95188d19Tadashi G. Takaoka/* package */ final class ShiftKeyState extends ModifierKeyState {
22889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    private static final int PRESSING_ON_SHIFTED = 3; // both temporary shifted & shift locked
23889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    private static final int IGNORING = 4;
24889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka
25f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka    public ShiftKeyState(String name) {
26f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        super(name);
27f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka    }
28f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka
29889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    @Override
30889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    public void onOtherKeyPressed() {
31f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        int oldState = mState;
326769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka        if (oldState == PRESSING) {
3325971b5a14b378c4821fadd078e3cdaf8e07bb2aTadashi G. Takaoka            mState = CHORDING;
346769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka        } else if (oldState == PRESSING_ON_SHIFTED) {
35889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka            mState = IGNORING;
36889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka        }
37f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        if (DEBUG)
38f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka            Log.d(TAG, mName + ".onOtherKeyPressed: " + toString(oldState) + " > " + this);
39889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    }
40889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka
41889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    public void onPressOnShifted() {
42f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        int oldState = mState;
43889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka        mState = PRESSING_ON_SHIFTED;
44f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        if (DEBUG)
45f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka            Log.d(TAG, mName + ".onPressOnShifted: " + toString(oldState) + " > " + this);
46889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    }
47889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka
48889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    public boolean isPressingOnShifted() {
49889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka        return mState == PRESSING_ON_SHIFTED;
50889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    }
51889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka
52889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    public boolean isIgnoring() {
53889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka        return mState == IGNORING;
54889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka    }
55f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka
56f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka    @Override
57f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka    public String toString() {
58f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        return toString(mState);
59f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka    }
60f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka
616769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka    @Override
626769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka    protected String toString(int state) {
63f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        switch (state) {
64f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        case PRESSING_ON_SHIFTED: return "PRESSING_ON_SHIFTED";
65f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        case IGNORING: return "IGNORING";
666769c67987f323008647f5d029c02f8cc95272eeTadashi G. Takaoka        default: return super.toString(state);
67f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka        }
68f27364600c742509b48857e6b8f17312033e0dc7Tadashi G. Takaoka    }
69889691eca1ad991a85fb721deb37ecba6a913762Tadashi G. Takaoka}
70