diff options
Diffstat (limited to 'awt/java/awt/event/InputMethodEvent.java')
-rw-r--r-- | awt/java/awt/event/InputMethodEvent.java | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/awt/java/awt/event/InputMethodEvent.java b/awt/java/awt/event/InputMethodEvent.java new file mode 100644 index 0000000..be001a5 --- /dev/null +++ b/awt/java/awt/event/InputMethodEvent.java @@ -0,0 +1,156 @@ +/* + * 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$ + } + +} |