//Auto-generated by kalyptus. DO NOT EDIT.
package org.kde.koala;

import org.kde.qt.Qt;
import org.kde.qt.QKeySequence;
import org.kde.qt.QtSupport;
import org.kde.qt.QKeyEvent;

/**

 A KKey object represents a single key with possible modifiers
 (Shift, Ctrl, Alt, Win).  It can represent both keys which are
 understood by Qt as well as those which are additionally supported
 by the underlying system (e.g. X11).
		@short    A KKey object represents a single key with possible modifiers  (Shift, Ctrl, Alt, Win).
		@see KKeyNative
		@see KKeySequence
		@see KShortcut

*/
public class KKey implements QtSupport {
	private long _qt;
	private boolean _allocatedInJavaWorld = true;
	protected KKey(Class dummy){}

	/**	
		 The number of flags.
				@short    The number of flags.
		@see ModFlag
	*/
	public static final int MOD_FLAG_COUNT = 4;

	public static final int QtWIN = (Qt.META);

	/**	
		 Flags to represent the modifiers. You can combine modifiers
		 by ORing them.
			 		@short    Flags to represent the modifiers.
	*/
	public static final int SHIFT = 0x01;
	public static final int CTRL = 0x02;
	public static final int ALT = 0x04;
	public static final int WIN = 0x08;

	/**	
		 Creates a new null KKey.
				@short    Creates a new null KKey.
		@see #clear
		@see #isNull
		@see #null
	*/
	public KKey() {
		newKKey();
	}
	private native void newKKey();
	/**	
		 Creates a new key for the given Qt key code.
			@param keyQt the qt keycode
				@short    Creates a new key for the given Qt key code.
		@see org.kde.qt.Qt#Key
	*/
	public KKey(int keyQt) {
		newKKey(keyQt);
	}
	private native void newKKey(int keyQt);
	/**	
		 Creates a new key from the first key code of the given key sequence.
			@param keySeq the key sequence that contains the key
			 		@short    Creates a new key from the first key code of the given key sequence.
	*/
	public KKey(QKeySequence keySeq) {
		newKKey(keySeq);
	}
	private native void newKKey(QKeySequence keySeq);
	/**	
		 Extracts the key from the given key event.
			@param keyEvent the key event to get the key from
			 		@short    Extracts the key from the given key event.
	*/
	public KKey(QKeyEvent keyEvent) {
		newKKey(keyEvent);
	}
	private native void newKKey(QKeyEvent keyEvent);
	/**	
		 Copy constructor.
			 		@short    Copy constructor.
	*/
	public KKey(KKey key) {
		newKKey(key);
	}
	private native void newKKey(KKey key);
	/**	
		 Creates a new key from the given description. The form of the description
		 is "[modifier+[modifier+]]+key", for example "e", "CTRL+q" or
		 "CTRL+ALT+DEL". Allowed modifiers are "SHIFT", "CTRL", "ALT", "WIN" and
		 "META". "WIN" and "META" are equivalent. Modifiers are not case-sensitive.
			@param key the description of the key
				@short    Creates a new key from the given description.
		@see KKeyServer#Sym#init
	*/
	public KKey(String key) {
		newKKey(key);
	}
	private native void newKKey(String key);
	/**	
				 		@short
	*/
	public KKey(int key, int mod) {
		newKKey(key,mod);
	}
	private native void newKKey(int key, int mod);
	/**	
		 Clears the key. The key is null after calling this function.
				@short    Clears the key.
		@see #isNull
	*/
	public native void clear();
	/**	
		 Initializes the key with the given Qt key code.
			@param keyQt the qt keycode
				@return true if successful, false otherwise

		@short    Initializes the key with the given Qt key code.
		@see org.kde.qt.Qt#Key
	*/
	public native boolean init(int keyQt);
	/**	
		 Initializes the key with the first key code of the given key sequence.
			@param keySeq the key sequence that contains the key
				@return true if successful, false otherwise
	 
		@short    Initializes the key with the first key code of the given key sequence.
	*/
	public native boolean init(QKeySequence keySeq);
	/**	
		 Initializes the key by extracting the code from the given key event.
			@param keyEvent the key event to get the key from
				@return true if successful, false otherwise
	 
		@short    Initializes the key by extracting the code from the given key event.
	*/
	public native boolean init(QKeyEvent keyEvent);
	/**	
		 Copies the given key.
			@param key the key to copy
				@return true if successful, false otherwise
	 
		@short    Copies the given key.
	*/
	public native boolean init(KKey key);
	/**	
		 Initializes the key with the given description. The form of the description
		 is "[modifier+[modifier+]]+key", for example "e", "CTRL+q" or
		 "CTRL+ALT+DEL". Allowed modifiers are "SHIFT", "CTRL", "ALT", "WIN" and
		 "META". "WIN" and "META" are equivalent. Modifiers are not case-sensitive.
			@param key the description of the key
				@return true if successful, false otherwise

		@short    Initializes the key with the given description.
		@see KKeyServer#Sym#init
	*/
	public native boolean init(String key);
	/**	
				 		@short
	*/
	public native boolean init(int key, int mod);
	/**	
		 Returns true if the key is null (after clear() or empty
		 constructor).
				@return true if the key is null

		@short    Returns true if the key is null (after clear() or empty  constructor).
		@see #clear
		@see #null
	*/
	public native boolean isNull();
	/**	
				 		@short
	*/
	public native int sym();
	/**	
				 		@short
	*/
	public native int modFlags();
	/**	
		 Compares this key with the given KKey object. Returns a negative
		 number if the given KKey is larger, 0 if they are equal and
		 a positive number this KKey is larger. The returned value
		 is the difference between the symbol or, if the symbols
		 are equal, the difference between the encoded modifiers.
			@param key the key to compare with this key
				@return a negative number if the given KKey is larger, 0 if
 they are equal and a positive number this KKey is larger
	 
		@short    Compares this key with the given KKey object.
	*/
	public native int compare(KKey key);
	/**	
		 Compares the symbol and modifiers of both keys.
				@short    Compares the symbol and modifiers of both keys.
		@see #compare
	*/
	public native boolean op_equals(KKey key);
	/**	
		 Compares the symbol and modifiers of both keys.
				@short    Compares the symbol and modifiers of both keys.
		@see #compare
	*/
	public native boolean op_not_equals(KKey key);
	/**	
		 Compares the symbol and modifiers of both keys.
				@short    Compares the symbol and modifiers of both keys.
		@see #compare
	*/
	public native boolean op_lt(KKey key);
	/**	
		 Returns the qt key code.
				@return the qt key code or 0 if there is no key set.

		@short    Returns the qt key code.
		@see org.kde.qt.Qt#Key
	*/
	public native int keyCodeQt();
	/**	
		 Returns a human-readable representation of the key in the form
		 "modifier+key". Note that the representation is localised,
		 use toStringInternal() for cases like saving to configuration files.
				@return the string representation of the key

		@short    Returns a human-readable representation of the key in the form  "modifier+key".
		@see #toStringInternal
	*/
	public native String toString();
	/**	
		 Returns an untranslated text representation of the key in the form
		 "modifier+key", suitable e.g. for saving in configuration files.
			 		@short    Returns an untranslated text representation of the key in the form  "modifier+key", suitable e.
	*/
	public native String toStringInternal();
	/**	
				 		@short
	*/
	public native void simplify();
	/**	
		 Returns a null key.
				@return the null key

		@short    Returns a null key.
		@see #isNull
		@see #clear
	*/
	public static native KKey nil();
	/**	
		 Returns a user-readable representation of the given modifiers.
			@param f the modifiers to convert
				@return the string representation of the modifiers
	 
		@short    Returns a user-readable representation of the given modifiers.
	*/
	public static native String modFlagLabel(int f);
	/** Deletes the wrapped C++ instance */
	protected native void finalize() throws InternalError;
	/** Delete the wrapped C++ instance ahead of finalize() */
	public native void dispose();
	/** Has the wrapped C++ instance been deleted? */
	public native boolean isDisposed();
}
