//***************************************************************************** // // Beenish Chaudry, Geetika Tewari, Elif Tosun and // Ileana Streinu // // Summer 1999, Fall 1999, Spring 2000 // //***************************************************************************** // // HandlerMousePoint.java // //***************************************************************************** import java.awt.*; import java.awt.event.*; import java.lang.*; import java.io.*; import java.util.*; class HandlerMousePoint extends MouseAdapter{ FramePoint bf; public HandlerMousePoint(FramePoint bff) { super(); bf = bff; } //*************************************** // // MousePressed // //*************************************** public void mousePressed(MouseEvent e) { Point pt = e.getPoint(); // // if mouse click is meant for setting the origin // if (bf.state.stateMouse == StateMouse.originP) { bf.ps.changeOrigin(pt); }//end originP // // else, if mouse click is meant for working with a point object // if (bf.state.stateMouse == StateMouse.insertP) { if (bf.state.stateAppearanceP == StateAppearance.defaultP) bf.crtPt = bf.state.defPoint; else bf.crtPt = bf.state.point; bf.crtPt.setPointCoord(pt); bf.selNode = bf.ps.addPoint(bf.crtPt.Duplicate()); } //end insertP if (bf.state.stateMouse == StateMouse.moveP || bf.state.stateMouse == StateMouse.deleteP || bf.state.stateMouse == StateMouse.selectP || bf.state.stateMouse == StateMouse.elabelP || bf.state.stateMouse == StateMouse.moveLP || bf.state.stateMouse == StateMouse.moveCP ) { if (bf.ps.ptList != Constants.nullCell) { bf.crtPt = bf.state.defPoint; bf.crtPt.setPointCoord(pt); bf.selNode = bf.ps.ptList.LSearch(bf.crtPt); if (bf.selNode == null && bf.state.stateMouse == StateMouse.selectP) // if not clicked on point, use rectangle selection { bf.state.stateMouse = StateMouse.selectR; bf.p1.x = pt.x; bf.p1.y = pt.y; bf.p2.x = pt.x; bf.p2.y = pt.y; } } else bf.selNode = null; if(bf.state.stateMouse == StateMouse.selectP) { if(bf.selNode != null ) { // deselect, if already selected if(bf.selNode.data.selected == StateSelect.yes) { bf.selNode.data.selected = StateSelect.not; bf.selNode = null; } else bf.selNode.data.selected = StateSelect.yes; } } //end selectP else if (bf.state.stateMouse == StateMouse.deleteP) { // if current point is present in ps if (bf.selNode != null) { // one point only, or all selected points? if(bf.selNode.data.selected == StateSelect.yes) // if selected, delete all selected points { bf.ps.DeleteSelected(); } else // if present but not selected, delete only one point bf.ps.DeletePoint(bf.crtPt); } bf.crtPt = null; bf.pc.repaint(); bf.ps.notifyObservers(); }// end deleteP else if(bf.state.stateMouse == StateMouse.elabelP) { /* if(bf.selNode != null ) { // edit label of point } */ if (bf.ps.ptList != Constants.nullCell) {bf.crtPt = bf.state.defPoint; bf.crtPt.setPointCoord(pt); PointObj sNode = bf.ps.LSearch(bf.crtPt); bf.crtPt = null; if (sNode != null) bf.ft.EditLabel(sNode); } bf.pc.repaint(); } //end elabelP }// end if moveP, selectP and labelP bf.pc.repaint(); if (bf.lf != null) bf.lf.lc.repaint(); }// ends mousePressed //***************************************** // // MouseReleased // //***************************************** public void mouseReleased( MouseEvent e) { Point pt = e.getPoint(); bf.displacement.x = bf.displacement.y = 0; if(bf.selNode != null) { bf.displacement.x = pt.x - bf.selNode.data.x; bf.displacement.y = pt.y - bf.selNode.data.y; }; // if the mouse click was for setting the origin, restore state if (bf.state.stateMouse == StateMouse.originP) bf.state.RestoreStateMouse(); // if the point is meant to be inserted else if(bf.state.stateMouse == StateMouse.insertP) { if (bf.selNode != null) bf.selNode.data.setPointCoord(pt); } // if the point was meant to be moved else if(bf.state.stateMouse == StateMouse.moveP) { if (bf.selNode != null) { // one point only, or all selected points? if(bf.selNode.data.selected == StateSelect.not) { bf.selNode.data.setPointCoord(pt); bf.ps.MovePoint(bf.selNode.data); } else { bf.ps.TranslateSelected(bf.displacement); } } } // if the label of the point was meant to be moved else if(bf.state.stateMouse == StateMouse.moveLP) { if (bf.selNode != null) { // one point only, or all selected points? if(bf.selNode.data.selected == StateSelect.not) { bf.selNode.data.MoveLabelPoint(pt); } else { bf.ps.TranslateLPSelected(bf.displacement); } } } // if the coordinates of the point were meant to be moved else if(bf.state.stateMouse == StateMouse.moveCP) { if (bf.selNode != null) { // one point only, or all selected points? if(bf.selNode.data.selected == StateSelect.not) { bf.selNode.data.MoveCoordPoint(pt); } else { bf.ps.TranslateCPSelected(bf.displacement); } } } // if selecting a rectangle of points // ??? else if(bf.state.stateMouse == StateMouse.selectR) { bf.p2.x = pt.x; bf.p2.y = pt.y; // p1 is first corner of rectangle // p2 is second corner of rectangle // look into the set of points, at all points with coordinates // inside rectangle p1, p2 // select them with point.selected = StateSelect.yes bf.state.stateMouse = StateMouse.selectP; bf.ps.RectSelect(); } bf.selNode = null; bf.crtPt = null; bf.pc.repaint(); if(bf.lf != null) bf.lf.lc.repaint(); }// ends mouseReleased }//end class PointDownHandler