java.awt.im.spi

Interface InputMethod

public interface InputMethod

This interface supports complex text input, often for situations where the text is more complex than a keyboard will accomodate. For example, this can be used for Chinese, Japanese, and Korean, where multiple keystrokes are necessary to compose text. This could also support things like phonetic English, or reordering Thai.

These contexts can be loaded by the input method framework, using InputContext.selectInputMethod(Locale).

Since:
1.3

Method Summary

void
activate()
Activate this input method for input processing.
void
deactivate(boolean isTemporary)
Deactivate this input method, either temporarily or permanently for the given client.
void
dispatchEvent(AWTEvent event)
Dispatch an event to the input method.
void
dispose()
Disposes the input method and release any resources it is using.
void
endComposition()
End any input composition currently taking place.
Object
getControlObject()
Returns a control object from this input method, or null.
Locale
getLocale()
Returns the current input locale, or null if none is defined.
void
hideWindows()
Close or hide all windows opened by this input method.
boolean
isCompositionEnabled()
Find out if this input method is enabled.
void
notifyClientWindowChange(Rectangle bounds)
Notify this input method of changes in the client window.
void
reconvert()
Starts a reconversion operation.
void
removeNotify()
Notify the input method that a client component has been removed from its hierarchy, or that input method support has been disabled.
void
setCharacterSubsets(Character.Subset[] subsets)
Sets the allowed Unicode subsets that this input method can use.
void
setCompositionEnabled(boolean enable)
Changes the enabled status of this input method.
void
setInputMethodContext(InputMethodContext context)
Set the input method context, which ties the input method to a client component.
boolean
setLocale(Locale locale)
Sets the input locale.

Method Details

activate

public void activate()
Activate this input method for input processing. If the input method provides its own windows, it should make them open and visible at this time. This method is called when a client component receives a FOCUS_GAINED event, or when switching to this input method from another one. It is only called when the input method is inactive, assuming that new instances begin in an inactive state.

deactivate

public void deactivate(boolean isTemporary)
Deactivate this input method, either temporarily or permanently for the given client. If the input method provides its own windows, it should only close those related to the current composition (such as a lookup choice panel), while leaving more persistant windows (like a control panel) open to avoid screen flicker. Before control is given to another input method, hideWindows() will be called on this instance. This method is called when a client component receives a FOCUS_LOST event, when switching to another input method, or before removeNotify() when the client is removed.
Parameters:
isTemporary - true if the focus change is temporary

dispatchEvent

public void dispatchEvent(AWTEvent event)
Dispatch an event to the input method. If input method support is enabled, certain events are dispatched to the input method before the client component or event listeners. The input method must either consume the event or pass it on to the component. Instances of InputEvent, including KeyEvent and MouseEvent, are given to this input method. This method is called by InputContext.dispatchEvent(AWTEvent).
Parameters:
event - the event to dispatch
Throws:
NullPointerException - if event is null

dispose

public void dispose()
Disposes the input method and release any resources it is using. In particular, the input method should dispose windows and close files. This is called by InputContext.dispose(), when the input method is inactive; and nothing will be called on this instance afterwards.

endComposition

public void endComposition()
End any input composition currently taking place. Depending on the platform and user preferences, this may commit or delete uncommitted text, using input method events. This may be called for a variety of reasons, such as when the user moves the insertion point in the client text outside the range of the composed text, or when text is saved to file. This is called by InputContext.endComposition(), when switching to a new input method, or by InputContext.selectInputMethod(Locale).

getControlObject

public Object getControlObject()
Returns a control object from this input method, or null. A control object provides method to control the behavior of this input method, as well as query information about it. The object is implementation dependent, so clients must compare the result against known input method control object types. This is called by InputContext.getInputMethodControlObject().
Returns:
the control object, or null

getLocale

public Locale getLocale()
Returns the current input locale, or null if none is defined. This is called by InputContext.getLocale(), or before switching input methods.
Returns:
the current input locale, or null

hideWindows

public void hideWindows()
Close or hide all windows opened by this input method. This is called before activating a different input method, and before calling dispose() on this instance. It is only called when the input method is inactive.

isCompositionEnabled

public boolean isCompositionEnabled()
Find out if this input method is enabled. This is called by InputContext.isCompositionEnabled(), or when switching input methods via InputContext.selectInputMethod(Locale).
Returns:
true if this input method is enabled
Throws:
UnsupportedOperationException - if enabling/disabling is unsupported

notifyClientWindowChange

public void notifyClientWindowChange(Rectangle bounds)
Notify this input method of changes in the client window. This is called when notifications are enabled (see InputMethodContext.enableClientWindowNotification(InputMethod,boolean), if InputContext.removeNotify(Component) has not been called. The following situations trigger a notification:
  • The client window changes in location, size, visibility, iconification, or is closed.
  • When enabling client notification (or on the first activation after enabling if no client existed at the time).
  • When activating a new client after removeNotify was called on a previous client.
Parameters:
bounds - the client window's current bounds, or null

reconvert

public void reconvert()
Starts a reconversion operation. The input method gets its text from the client, using InputMethodRequests.getSelectedText(AttributedCharacterIterator.Attribute[]). Then the composed and committed text produced by the operation is sent back to the client using a sequence of InputMethodEvents. This is called by InputContext.reconvert().
Throws:
UnsupportedOperationException - if reconversion is unsupported

removeNotify

public void removeNotify()
Notify the input method that a client component has been removed from its hierarchy, or that input method support has been disabled. This is called by InputContext.removeNotify(Component), and only when the input method is inactive.

setCharacterSubsets

public void setCharacterSubsets(Character.Subset[] subsets)
Sets the allowed Unicode subsets that this input method can use. Null indicates that all characters are allowed. This is called after creation, or when switching to this input method, by InputContext.setCharacterSubsets(Character.Subset[]).
Parameters:
subsets - the accepted subsets for this input method, or null for all

setCompositionEnabled

public void setCompositionEnabled(boolean enable)
Changes the enabled status of this input method. An enabled input method accepts incoming events for composition and control purposes, while a disabled input method ignores events (except for control purposes). This is called by InputContext.setCompositionEnabled(boolean) or when switching from an input method if the previous input method returned without exception on isCompositionEnabled().
Parameters:
enable - whether to enable this input method
Throws:
UnsupportedOperationException - if enabling/disabling is unsupported

setInputMethodContext

public void setInputMethodContext(InputMethodContext context)
Set the input method context, which ties the input method to a client component. This is called once automatically when creating the input method.
Parameters:
context - the context for this input method
Throws:
NullPointerException - if context is null

setLocale

public boolean setLocale(Locale locale)
Sets the input locale. If the input method supports that locale, it changes its behavior to be consistent with the locale and returns true. Otherwise, it returns false. This is called by InputContext.selectInputMethod(Locale) when the user specifies a locale, or when the previously selected input method had a locale.
Parameters:
locale - the locale to use for input
Returns:
true if the change is successful
Throws:
NullPointerException - if locale is null

InputMethod.java -- defines an interface for complex text input Copyright (C) 2002, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.