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

📄 treekeyhandler.java

📁 Owing to the applet Gantt chart source yard, already Chinese melt, Gantt chart can demonstrate a Chi
💻 JAVA
字号:
/** *   TreeKeyHandler.java *   Copyright 2005 Carlos Silva A. *  *   Licensed 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. *  */package jgantt.view.tree;import java.awt.Rectangle;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Vector;import jgantt.model.Project;import jgantt.model.Task;import jgantt.view.adapters.ProjectViewModel;/** * TreeKeyHandler *  * <p>$Date: 2005/05/05 08:25:49 $</p>  * @version $Revision: 1.4 $ * @author Carlos Silva */public class TreeKeyHandler implements KeyListener {	TaskTree taskTree;	/**	 * 	 */	public TreeKeyHandler(TaskTree tree) {		super();		taskTree = tree;	}	/**	 * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)	 */	public void keyPressed(KeyEvent ev) {		//		System.out.println("processKeyEvent char:"+ev.getKeyChar()+ " code:"+ ev.getKeyCode()+" text:"+KeyEvent.getKeyText(ev.getKeyCode()));		if (((ev.getModifiers()&(KeyEvent.ALT_MASK|KeyEvent.CTRL_MASK)))>0)			return;		if ((ev.getKeyChar() >= KeyEvent.VK_SPACE)			&& (ev.getKeyChar() < KeyEvent.VK_DELETE)) {			taskTree.initEdit(ev);			return;		}		Project project = taskTree.project;		Task focusTask = taskTree.focusTask;		Column focusColumn = taskTree.focusColumn;		ProjectViewModel pvModel = taskTree.pvModel;		Vector columns = taskTree.columns;				Rectangle bounds = taskTree.getBounds();		int pageSize =			(int) ((bounds.getHeight() - taskTree.treeOptions.headerHeight)				/ taskTree.treeOptions.rowHeight)				- 1;		boolean modifiers =			(ev.getModifiers()				& (KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK | KeyEvent.ALT_MASK))				> 0;		if (!modifiers) {			switch (ev.getKeyCode()) {				case KeyEvent.VK_DOWN :					if (focusTask == null)						taskTree.setFocus(project.getTask(0), focusColumn);					else {						// bajar hasta encontrar uno visible						int next = focusTask.getId() + 1 - 1;						while ((next < project.getTaskCount() - 1)							&& (!project.getTask(next).isVisible())) {							next++;						}						if (next >= project.getTaskCount() - 1)							next = project.getTaskCount() - 1;						taskTree.setFocus(project.getTask(next));					}					break;				case KeyEvent.VK_PAGE_DOWN :					// TODO: Corregir salto con filas invisibles.					if (focusTask == null)						taskTree.setFocus(project.getTask(0));					else {						int newId =							Math.min(								focusTask.getId() - 1 + pageSize,								project.getTaskCount() - 1);						taskTree.setFocus(project.getVisibleTask(project.getVisibleTaskCount()-1));					}					break;				case KeyEvent.VK_PAGE_UP :					// TODO: Corregir salto con filas invisibles.					if (focusTask == null)						taskTree.setFocus(project.getVisibleTask(0), focusColumn);					else {						int prev =							Math.max(focusTask.getId() - 1 - pageSize, 0);						taskTree.setFocus(project.getTask(prev), focusColumn);					}					break;				case KeyEvent.VK_HOME :					taskTree.setFocus(focusTask, (Column) columns.get(0));					break;				case KeyEvent.VK_END :					taskTree.setFocus(						focusTask,						(Column) columns.get(columns.size() - 1));					break;				case KeyEvent.VK_UP :					if (focusTask == null)						taskTree.setFocus(project.getVisibleTask(0), focusColumn);					else {						int prev = focusTask.getId() - 1 - 1;						if (prev < 0)							return;						while ((prev >= 0)							&& (!project.getTask(prev).isVisible())) {							prev--;						}						if (prev < 0)							prev =								Math.max(focusTask.getId() - 1 - pageSize, 0);						taskTree.setFocus(project.getTask(prev), focusColumn);					}					break;				case KeyEvent.VK_LEFT :					if (focusColumn == null)						taskTree.setFocus(focusTask, (Column) columns.get(0));					else {						int newId = columns.indexOf(focusColumn) - 1;						if (newId < 0)							return;						taskTree.setFocus(							focusTask,							(Column) columns.get(newId));					}					break;				case KeyEvent.VK_RIGHT :					if (focusColumn == null)						taskTree.setFocus(							focusTask,							(Column) columns.get(columns.size() - 1));					else {						int newId = columns.indexOf(focusColumn) + 1;						if (newId >= columns.size())							return;						taskTree.setFocus(							focusTask,							(Column) columns.get(newId));					}					break;				case KeyEvent.VK_F2 :					taskTree.initEdit(null);					break;								default :					break;			}		} else if (			(ev.getModifiers()				& (~KeyEvent.CTRL_MASK					| KeyEvent.SHIFT_MASK					| ~KeyEvent.ALT_MASK))				> 0) {			switch (ev.getKeyCode()) {								case KeyEvent.VK_RIGHT :					pvModel.asChildTask();					break;				case KeyEvent.VK_LEFT :					pvModel.deChildTask();					break;				case KeyEvent.VK_UP :					pvModel.goUpTask();					break;				case KeyEvent.VK_DOWN :					pvModel.goDownTask();					break;			}		}	}	/**	 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)	 */	public void keyReleased(KeyEvent arg0) {	}	/**	 * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)	 */	public void keyTyped(KeyEvent arg0) {	}}

⌨️ 快捷键说明

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