首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

GEF顶用鼠标移动画布

2012-07-27 
GEF中用鼠标移动画布第一步 增加Palette项:moveTool new PanningSelectionTool() {private Point viewLo

GEF中用鼠标移动画布

第一步 增加Palette项:

moveTool = new PanningSelectionTool() {private Point viewLocation;protected Cursor getDefaultCursor() {return new Cursor(PlatformUI.createDisplay(), Activator.getImage("icons/pan.gif").getImageData(), 0, 0);}public boolean handleButtonDown(int which) {if (which == 1&& getCurrentViewer().getControl() instanceof FigureCanvas) {viewLocation = ((FigureCanvas) getCurrentViewer().getControl()).getViewport().getViewLocation();return true;}return super.handleButtonDown(which);}protected boolean handleDrag() {if (getCurrentViewer().getControl() instanceof FigureCanvas) {FigureCanvas canvas = (FigureCanvas) getCurrentViewer().getControl();canvas.scrollTo(viewLocation.x - getDragMoveDelta().width,viewLocation.y - getDragMoveDelta().height);return true;} else {return super.handleDragInProgress();}}};ToolEntry moveToolEntry = new ToolEntry("Panning", "Drag", Activator.getImageDescriptor("icons/pan.gif"), Activator.getImageDescriptor("icons/pan.gif")) {public Tool createTool() {return moveTool;}};

?

?第二步 增加监听:

private void initListeners() {getGraphicalControl().addMouseListener(new MouseListener() {public void mouseDoubleClick(MouseEvent me) {}public void mouseDown(MouseEvent me) {EditPart editPart = getGraphicalViewer().findObjectAt(new Point(me.x, me.y));if (editPart instanceof JavaProjectEditPart) {isMouseDown = true;updateActiveTool(me);}}public void mouseUp(MouseEvent me) {isMouseDown = false;isMouseMoved = false;if (isHandled) {getEditDomain().setActiveTool(getEditDomain().getDefaultTool());}isHandled = false;}});getGraphicalControl().addMouseMoveListener(new MouseMoveListener() {public void mouseMove(MouseEvent me) {if (isMouseDown) {isMouseMoved = true;}}});}private boolean isMouseDown = false;private boolean isMouseMoved = false;private boolean isHandled = false;protected void updateActiveTool(final MouseEvent me) {new Thread() {public void run() {try {sleep(200);} catch (InterruptedException e) {}if (isMouseDown && !isMouseMoved) {isHandled = true;Display.getDefault().asyncExec(new Runnable() {public void run() {moveTool.mouseDown(me, getGraphicalViewer());getEditDomain().setActiveTool(moveTool);moveTool.setViewer(null);};});}}}.start();}

?

?

热点排行