⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shortcuthandler.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
字号:
package java.awt;import java.awt.event.KeyEvent;import java.util.Hashtable;/** * ShortcutHandler -  * * Copyright (c) 1998 *    Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  * */class ShortcutHandler{	static MenuShortcut[] codeTable = new MenuShortcut[160];	static Hashtable tgtTable = new Hashtable();static void addShortcut( MenuShortcut ms, Component owner, ShortcutConsumer consumer ) {	ms.consumer = consumer;	ms.next = null;			MenuShortcut msr = (MenuShortcut)tgtTable.get( owner);		if ( msr == null)		tgtTable.put( owner, ms);	else {		for ( ; msr.next != null; msr = msr.next);		msr.next = ms;	}}static void buildCodeTable( Component tgt) {	int i, ctl = codeTable.length;	MenuShortcut me, mt;	for ( i=0; i<ctl; i++)		codeTable[i] = null;	if ( tgt == null )		return;			//collect codes from all window components	for ( Component c = tgt; c != null; c = c.parent) {		for ( me = (MenuShortcut)tgtTable.get( c); me != null; me = me.next) {			me.nextMod = null;			mt = codeTable[ me.keyCode];			if ( mt == null) {				codeTable[me.keyCode] = me;			}			else {				for (; mt.nextMod != null; mt = mt.nextMod);				mt.nextMod = me;			}		}	}}static Component focusNext ( Container w ) {	Component c = null, cur = AWTEvent.keyTgt;	if ( (cur == null) || (cur == w) ) {		c = focusNext( w, null);	}	else {		for ( Component cc=cur; cc.parent != null; cc = cc.parent ) {			if ( (c = focusNext( cc.parent, cc)) != null ){				break;			}		}		if ( c == null )			c = focusNext( w, null);	}	return c;}static Component focusNext( Container co, Component cur ) {	Component c;	int i=-1;	if ( cur != null ){		for ( i=0; (i<co.nChildren) && (co.children[i] != cur); i++ );	}		for ( i++; i < co.nChildren; i++ ){		c = co.children[i];		if ( c instanceof Container ) {			if ( ((c.flags & Component.IS_NATIVE_LIKE) == 0) || (c instanceof Panel) ){				Component cc = focusNext( (Container)c, null);				if ( cc != null )					return cc;			}		}				if ( c.isFocusTraversable() )			return c;	}		return ( co.isFocusTraversable() && (cur == null) ? co : null);}static Component focusPrev ( Container w ) {	Component c = null, cur = AWTEvent.keyTgt;	if ( (cur == null) || (cur == w) ) {		c = focusPrev( w, null);	}	else {		for ( Component cc=cur; cc.parent != null; cc = cc.parent ) {			if ( (c = focusPrev( cc.parent, cc)) != null ){				break;			}		}		if ( c == null )			c = focusPrev( w, null);	}	return c;}static Component focusPrev( Container co, Component cur ) {	Component c;	int i=co.nChildren;	if ( cur != null ){		for ( i=co.nChildren-1; (i>=0) && (co.children[i] != cur); i-- );	}		for ( i--; i >= 0; i-- ){		c = co.children[i];		if ( c instanceof Container ) {			if ( ((c.flags & Component.IS_NATIVE_LIKE) == 0) || (c instanceof Panel) ){				Component cc = focusPrev( (Container)c, null);				if ( cc != null )					return cc;			}		}				if ( c.isFocusTraversable() )			return c;	}		return ( co.isFocusTraversable() && (cur == null) ? co : null);}static boolean handle( KeyEvent e) {	Component c, cNext;	Container co;		int em = e.getModifiers();	int cc = e.getKeyCode();		if ( (em & KeyEvent.CTRL_MASK) > 0 ) {		if ( (cc >= 1) && (cc <= 26) )			cc += 64;	}		if ( cc < 0 || cc >= codeTable.length )		return false;	MenuShortcut ms;			for ( ms = codeTable[cc]; ms != null; ms = ms.nextMod) {		if ( ms.mods == em ) {			ms.process();			return true;		}	}				c = (Component) e.getSource();	co = (Container) c.getToplevel();		// some day, we might add other focus-switch hotkeys (e.g. menubar, 1st, next-in-group etc.)	if ( e.getKeyChar() == '\t' ) {		cNext = e.isShiftDown() ? focusPrev( co) : focusNext( co);		if ( cNext != c )				cNext.requestFocus();		return true;	}	return false;}static void removeFromOwner( Component owner, MenuShortcut msr) {	MenuShortcut ms, msp = null;		ms = (MenuShortcut)tgtTable.get( owner);	for (; ms != null; ms = ms.next) {		if ( msr == ms ) {			if ( msp == null ) {				if (msr.next == null ) {					tgtTable.remove( owner);				}				else {					tgtTable.put( owner, msr.next);				}			}			else {				msp.next = msr.next;			}			return;		}		msp = ms;	}}static void removeFromOwner( Component owner, ShortcutConsumer consumer) {	MenuShortcut ms, msp = null;		ms = (MenuShortcut)tgtTable.get( owner);	for (; ms != null; ms = ms.next) {		if ( ms.consumer == consumer ) {			if ( msp == null ) {				if (ms.next == null ) {					tgtTable.remove( owner);					return;				}				else {					tgtTable.put( owner, ms.next);				}			}			else {				msp.next = ms.next;			}		}		msp = ms;	}}static void removeShortcuts( Component owner) {	tgtTable.remove( owner);}static int size() {	return tgtTable.size();}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -