ShiftKeyState.java revision 8aa9963a895f9dd5bb1bc92ab2e4f461e058f87a
1/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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
17package com.android.inputmethod.keyboard.internal;
18
19import android.util.Log;
20
21/* package */ final class ShiftKeyState extends ModifierKeyState {
22    private static final int PRESSING_ON_SHIFTED = 3; // both temporary shifted & shift locked
23    private static final int IGNORING = 4;
24
25    public ShiftKeyState(String name) {
26        super(name);
27    }
28
29    @Override
30    public void onOtherKeyPressed() {
31        int oldState = mState;
32        if (oldState == PRESSING) {
33            mState = CHORDING;
34        } else if (oldState == PRESSING_ON_SHIFTED) {
35            mState = IGNORING;
36        }
37        if (DEBUG)
38            Log.d(TAG, mName + ".onOtherKeyPressed: " + toString(oldState) + " > " + this);
39    }
40
41    public void onPressOnShifted() {
42        int oldState = mState;
43        mState = PRESSING_ON_SHIFTED;
44        if (DEBUG)
45            Log.d(TAG, mName + ".onPressOnShifted: " + toString(oldState) + " > " + this);
46    }
47
48    public boolean isPressingOnShifted() {
49        return mState == PRESSING_ON_SHIFTED;
50    }
51
52    public boolean isIgnoring() {
53        return mState == IGNORING;
54    }
55
56    @Override
57    public String toString() {
58        return toString(mState);
59    }
60
61    @Override
62    protected String toString(int state) {
63        switch (state) {
64        case PRESSING_ON_SHIFTED: return "PRESSING_ON_SHIFTED";
65        case IGNORING: return "IGNORING";
66        default: return super.toString(state);
67        }
68    }
69}
70