// will only auto-redraw under certain conditions private void moveEndPts() { startBorderPts = startState.getBorderPts(); endBorderPts = endState.getBorderPts(); sPage = startState.getPage(); ePage = endState.getPage(); if (sPage != ePage && !stub) { int sOffset = drawArea.getOffset(sPage, startState, this, "start"); int eOffset = drawArea.getOffset(ePage, endState, this, "end"); int sBorderOffset = sOffset / 20; if (sBorderOffset < 0) sBorderOffset += 36; if (sBorderOffset > 35) sBorderOffset -= 36; int eBorderOffset = -eOffset / 20; if (eBorderOffset < -18) eBorderOffset += 36; if (eBorderOffset > 17) eBorderOffset -= 36; startPt = startBorderPts.get(0 + sBorderOffset); startCtrlPt = new Point((int) startPt.getX() + 20, (int) startPt.getY()); endPt = endBorderPts.get(18 + eBorderOffset); endCtrlPt = new Point((int) endPt.getX() - 20, (int) endPt.getY()); pageS = new Point(drawArea.getMaxW() - 50, (int) startPt.getY() + sOffset); pageSC = new Point(drawArea.getMaxW() - 70, (int) startPt.getY() + sOffset); pageE = new Point(50, (int) endPt.getY() + eOffset); pageEC = new Point(70, (int) endPt.getY() + eOffset); } else if (stub) { // TODO // System.out.println("in stub loop, moveendpts"); startPt = startBorderPts.get(startStateIndex); pageS.setLocation( new Point( (int) (startPt.getX() + len * Math.cos(angle)), (int) (startPt.getY() - len * Math.sin(angle)))); } else { // or if multiple states selected, dont need to recalculate if ((!recalcCheck() && !drawArea.getRedraw()) || (startState.getSelectStatus() != SelectOptions.NONE && endState.getSelectStatus() != SelectOptions.NONE)) { startStateIndex = tempStartIndex; endStateIndex = tempEndIndex; startPt = startBorderPts.get(startStateIndex); endPt = endBorderPts.get(endStateIndex); // if movement hasnt left the start quadrant, don't recalulate all // points startCtrlPt = new Point((int) startPt.getX() + sdx, (int) startPt.getY() + sdy); endCtrlPt = new Point((int) endPt.getX() + edx, (int) endPt.getY() + edy); } else setEndPts(); } }