abstractconsole.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 233 行
JAVA
233 行
/*
* $Id: AbstractConsole.java,v 1.11 2004/02/21 14:33:06 vchira_2000 Exp $
*/
package org.jnode.driver.console;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Iterator;
import org.jnode.driver.input.KeyboardEvent;
import org.jnode.driver.input.KeyboardListener;
import org.jnode.driver.input.PointerEvent;
import org.jnode.system.event.FocusEvent;
/**
* @author epr
*/
public abstract class AbstractConsole implements Console {
protected Screen screen;
private final ArrayList keyboardListeners = new ArrayList();
private final String consoleName;
private final ConsoleManager mgr;
private int acceleratorKeyCode = 0;
protected int curX = 0;
protected int curY = 0;
protected int scrWidth;
protected int scrHeight;
public AbstractConsole(ConsoleManager mgr, String name) throws ConsoleException {
this.mgr = mgr;
this.consoleName = name;
this.screen = Screen.getInstance();
this.scrWidth = screen.getWidth();
this.scrHeight = screen.getHeight();
}
/**
* Does this console has the focus?
*
* @return True if this console has the focus, false otherwise
*/
public boolean isFocused() {
return (mgr.getFocus() == this);
}
/**
* @param l
* @see org.jnode.driver.console.Console#addKeyboardListener(org.jnode.driver.input.KeyboardListener)
*/
public void addKeyboardListener(KeyboardListener l) {
synchronized (keyboardListeners) {
keyboardListeners.add(l);
}
}
/**
* @param l
* @see org.jnode.driver.console.Console#removeKeyboardListener(org.jnode.driver.input.KeyboardListener)
*/
public void removeKeyboardListener(KeyboardListener l) {
synchronized (keyboardListeners) {
keyboardListeners.remove(l);
}
}
/**
* @param event
* @see org.jnode.driver.input.KeyboardListener#keyPressed(org.jnode.driver.input.KeyboardEvent)
*/
public void keyPressed(KeyboardEvent event) {
if ((event.getModifiers() & InputEvent.ALT_DOWN_MASK) != 0) {
final int keyCode = event.getKeyCode();
// if the fucus must be given to a userconsole
if ((keyCode >= KeyEvent.VK_F1) && (keyCode <= KeyEvent.VK_F6) /*&& (keyCode == (KeyEvent.VK_F1 + consoleIndex))*/)
{
// Focus myself
mgr.focus(mgr.getShellConsole((keyCode - KeyEvent.VK_F1)+1));
}
else
mgr.focus(mgr.getConsoleWithAccelerator(keyCode));
}
if (isFocused()) {
dispatchKeyboardEvent(event);
}
}
/**
* @param event
* @see org.jnode.driver.input.KeyboardListener#keyReleased(org.jnode.driver.input.KeyboardEvent)
*/
public void keyReleased(KeyboardEvent event) {
if (isFocused()) {
dispatchKeyboardEvent(event);
}
}
/**
* @param event
* @see org.jnode.system.event.FocusListener#focusGained(org.jnode.system.event.FocusEvent)
*/
public void focusGained(FocusEvent event) {
}
/**
* @param event
* @see org.jnode.system.event.FocusListener#focusLost(org.jnode.system.event.FocusEvent)
*/
public void focusLost(FocusEvent event) {
}
/**
* Dispatch a given keyboard event to all known listeners.
*
* @param event
*/
protected void dispatchKeyboardEvent(KeyboardEvent event) {
if (event.isConsumed()) {
return;
}
synchronized (keyboardListeners) {
for (Iterator i = keyboardListeners.iterator(); i.hasNext();) {
KeyboardListener l = (KeyboardListener) i.next();
if (event.isKeyPressed()) {
l.keyPressed(event);
} else if (event.isKeyReleased()) {
l.keyReleased(event);
}
if (event.isConsumed()) {
break;
}
}
}
}
/**
* Respond to scroll events from the mouse.
*
* @param event
* @see org.jnode.driver.input.PointerListener#pointerStateChanged(org.jnode.driver.input.PointerEvent)
*/
public void pointerStateChanged(PointerEvent event) {
event.consume();
}
/**
* Close this console.
*
* @see org.jnode.driver.console.Console#close()
*/
public void close() {
mgr.unregisterConsole(this);
}
public void setAcceleratorKeyCode(int keyCode)
{
this.acceleratorKeyCode = keyCode;
}
public boolean isShellConsole()
{
return this.consoleName.startsWith(ConsoleManager.ShellConsoleName);
}
public int getAcceleratorKeyCode()
{
return acceleratorKeyCode;
}
/**
* @return Returns the consoleName.
*/
public String getConsoleName() {
return consoleName;
}
/**
* @param x
* @param y
* @see org.jnode.driver.console.Console#setCursor(int, int)
*/
public void setCursor(int x, int y) {
curX = x;
curY = y;
screen.setCursor(curX, curY);
}
/**
* @see org.jnode.driver.console.Console#getCursorX()
* @return int
*/
public int getCursorX() {
return curX;
}
/**
* @see org.jnode.driver.console.Console#getCursorY()
* @return int
*/
public int getCursorY() {
return curY;
}
public void setChar(char ch, int bgColor)
{
this.setChar(getCursorX(),getCursorY(),ch,bgColor);
}
/**
* @see org.jnode.driver.console.Console#getHeight()
* @return int
*/
public int getHeight() {
return scrHeight;
}
/**
* @see org.jnode.driver.console.Console#getWidth()
* @return int
*/
public int getWidth() {
return scrWidth;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?