示例#1
0
  // 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();
    }
  }