/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @author Michael Danilov * @version $Revision$ */ package java.awt.event; import java.awt.AWTEvent; import java.awt.Component; import java.awt.font.TextHitInfo; import java.text.AttributedCharacterIterator; import org.apache.harmony.awt.internal.nls.Messages; /** * This class is not supported in Android 1.0. It is merely provided to maintain * interface compatibility with desktop Java implementations. * * @since Android 1.0 */ public class InputMethodEvent extends AWTEvent { private static final long serialVersionUID = 4727190874778922661L; public static final int INPUT_METHOD_FIRST = 1100; public static final int INPUT_METHOD_TEXT_CHANGED = 1100; public static final int CARET_POSITION_CHANGED = 1101; public static final int INPUT_METHOD_LAST = 1101; private AttributedCharacterIterator text; private TextHitInfo visiblePosition; private TextHitInfo caret; private int committedCharacterCount; private long when; public InputMethodEvent(Component src, int id, TextHitInfo caret, TextHitInfo visiblePos) { this(src, id, null, 0, caret, visiblePos); } public InputMethodEvent(Component src, int id, AttributedCharacterIterator text, int commitedCharCount, TextHitInfo caret, TextHitInfo visiblePos) { this(src, id, 0l, text, commitedCharCount, caret, visiblePos); } public InputMethodEvent(Component src, int id, long when, AttributedCharacterIterator text, int committedCharacterCount, TextHitInfo caret, TextHitInfo visiblePos) { super(src, id); if ((id < INPUT_METHOD_FIRST) || (id > INPUT_METHOD_LAST)) { // awt.18E=Wrong event id throw new IllegalArgumentException(Messages.getString("awt.18E")); //$NON-NLS-1$ } if ((id == CARET_POSITION_CHANGED) && (text != null)) { // awt.18F=Text must be null for CARET_POSITION_CHANGED throw new IllegalArgumentException(Messages.getString("awt.18F")); //$NON-NLS-1$ } if ((text != null) && ((committedCharacterCount < 0) || (committedCharacterCount > (text.getEndIndex() - text.getBeginIndex())))) { // awt.190=Wrong committedCharacterCount throw new IllegalArgumentException(Messages.getString("awt.190")); //$NON-NLS-1$ } this.when = when; this.text = text; this.caret = caret; this.visiblePosition = visiblePos; this.committedCharacterCount = committedCharacterCount; } public TextHitInfo getCaret() { return caret; } public int getCommittedCharacterCount() { return committedCharacterCount; } public AttributedCharacterIterator getText() { return text; } public TextHitInfo getVisiblePosition() { return visiblePosition; } public long getWhen() { return when; } @Override public void consume() { super.consume(); } @Override public boolean isConsumed() { return super.isConsumed(); } @Override public String paramString() { /* The format is based on 1.5 release behavior * which can be revealed by the following code: * * InputMethodEvent e = new InputMethodEvent(new Component(){}, * InputMethodEvent.INPUT_METHOD_TEXT_CHANGED, * TextHitInfo.leading(1), TextHitInfo.trailing(2)); * System.out.println(e); */ String typeString = null; switch (id) { case INPUT_METHOD_TEXT_CHANGED: typeString = "INPUT_METHOD_TEXT_CHANGED"; //$NON-NLS-1$ break; case CARET_POSITION_CHANGED: typeString = "CARET_POSITION_CHANGED"; //$NON-NLS-1$ break; default: typeString = "unknown type"; //$NON-NLS-1$ } return typeString + ",text=" + text + //$NON-NLS-1$ ",commitedCharCount=" + committedCharacterCount + //$NON-NLS-1$ ",caret=" + caret + ",visiblePosition=" + visiblePosition; //$NON-NLS-1$ //$NON-NLS-2$ } }