帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.7 KiB

package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.common.inputevent.InputEventBaseOnOS;
import java.awt.Cursor;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import com.fr.design.designer.beans.events.DesignerEvent;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XCreatorUtils;
import com.fr.design.designer.creator.XLayoutContainer;
import com.fr.design.designer.creator.XWAbsoluteLayout;
public class FormEditorKeyListener extends KeyAdapter{
private static final Cursor ADDCURSOR = Toolkit.getDefaultToolkit().createCustomCursor(
BaseUtils.readImage("/com/fr/design/images/form/designer/cursor/add.png"), new Point(0, 0),
"addCursor");
private FormDesigner designer;
private boolean moved;
public FormEditorKeyListener(FormDesigner formEditor) {
this.designer = formEditor;
}
@Override
public void keyPressed(KeyEvent e) {
boolean shiftSelecting = e.isShiftDown();
boolean ctrlSelecting = InputEventBaseOnOS.isControlDown(e);
int currentCursorType = this.designer.getCursor().getType();
boolean shiftResizing = e.isShiftDown() && ( Cursor.SW_RESIZE_CURSOR <= currentCursorType && currentCursorType <= Cursor.E_RESIZE_CURSOR);
if((shiftSelecting || ctrlSelecting) && !shiftResizing) {
designer.setCursor(ADDCURSOR);
}
int code = e.getKeyCode();
XCreator creator = designer.getSelectionModel().getSelection().getSelectedCreator();
XLayoutContainer container;
if(creator == null || (container =XCreatorUtils.getParentXLayoutContainer(creator)) == null || !(container instanceof XWAbsoluteLayout)) {
return;
}
moved = true;
switch (code) {
case KeyEvent.VK_LEFT:
designer.getSelectionModel().move(-1, 0);
break;
case KeyEvent.VK_RIGHT:
designer.getSelectionModel().move(1, 0);
break;
case KeyEvent.VK_UP:
designer.getSelectionModel().move(0, -1);
break;
case KeyEvent.VK_DOWN:
designer.getSelectionModel().move(0, 1);
break;
default:
moved = false;
}
}
public void keyReleased(KeyEvent e) {
boolean shiftSelecting = e.isShiftDown();
boolean ctrlSelecting = InputEventBaseOnOS.isControlDown(e);
int currentCursorType = this.designer.getCursor().getType();
boolean shiftResizing = e.getKeyCode() == KeyEvent.VK_SHIFT && ( Cursor.SW_RESIZE_CURSOR <= currentCursorType && currentCursorType <= Cursor.E_RESIZE_CURSOR);
if(!(shiftSelecting || ctrlSelecting) && !shiftResizing) {
designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
if (moved) {
designer.getEditListenerTable().fireCreatorModified(
designer.getSelectionModel().getSelection().getSelectedCreator(), DesignerEvent.CREATOR_RESIZED);
moved = false;
}
}
}