📄 treekeyhandler.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 + -