157 lines
5.1 KiB
Java
157 lines
5.1 KiB
Java
/*
|
|
* 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$
|
|
}
|
|
|
|
}
|