replicant-frameworks_native/awt/java/awt/event/InputMethodEvent.java
2009-03-03 19:31:44 -08:00

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$
}
}