// 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(); } }
@Override public void updateObj() { int oldS = sPage; int oldE = ePage; sPage = startState.getPage(); myPage = sPage; ePage = endState.getPage(); if (oldS != sPage && oldS != oldE) { for (int i = 0; i < attrib.size(); i++) { ObjAttribute obj = attrib.get(i); if (obj.getPage() == oldS) obj.setPage(sPage); } } if (oldE != ePage && oldS != oldE) { for (int i = 0; i < attrib.size(); i++) { ObjAttribute obj = attrib.get(i); if (obj.getPage() == oldE) obj.setPage(ePage); } } if (sPage != ePage && oldS == oldE) { for (int i = 0; i < attrib.size(); i++) { ObjAttribute obj = attrib.get(i); obj.setPage(sPage); } } if ((startState.getSelectStatus() != SelectOptions.TXT && startState.getSelectStatus() != SelectOptions.NONE) || (endState.getSelectStatus() != SelectOptions.TXT && endState.getSelectStatus() != SelectOptions.NONE)) { if (oldS != oldE && sPage == ePage) setEndPts(); else moveEndPts(); curve.setCurve( startPt.getX(), startPt.getY(), startCtrlPt.getX(), startCtrlPt.getY(), endCtrlPt.getX(), endCtrlPt.getY(), endPt.getX(), endPt.getY()); } }