@Override
  public boolean setSelectStatus(int x, int y) {

    selectStatus = SelectOptions.NONE;
    xTemp = x;
    yTemp = y;
    // check for text
    if (attrib != null) {
      for (int j = 0; j < attrib.size(); j++) {
        ObjAttribute s = attrib.get(j);
        s.unselect();
      }
      for (int i = 0; i < attrib.size(); i++) {
        ObjAttribute s = attrib.get(i);
        if (s.setSelectStatus(x, y)) {
          selectStatus = SelectOptions.TXT;
          break;
        }
      }
    }
    if (selectStatus != SelectOptions.TXT) {

      // check control points
      if (!stub) {
        if (startCtrlPt.getX() - x <= 3
            && startCtrlPt.getX() - x >= -3
            && startCtrlPt.getY() - y <= 3
            && startCtrlPt.getY() - y >= -3) selectStatus = SelectOptions.STARTCTRL;
        if (endCtrlPt.getX() - x <= 3
            && endCtrlPt.getX() - x >= -3
            && endCtrlPt.getY() - y <= 3
            && endCtrlPt.getY() - y >= -3) selectStatus = SelectOptions.ENDCTRL;
        if (endPt.getX() - x <= 3
            && endPt.getX() - x >= -3
            && endPt.getY() - y <= 3
            && endPt.getY() - y >= -3) selectStatus = SelectOptions.END;
        if (pageSC.getX() - x <= 3
            && pageSC.getX() - x >= -3
            && pageSC.getY() - y <= 3
            && pageSC.getY() - y >= -3) selectStatus = SelectOptions.PAGESC;
        if (pageEC.getX() - x <= 3
            && pageEC.getX() - x >= -3
            && pageEC.getY() - y <= 3
            && pageEC.getY() - y >= -3) selectStatus = SelectOptions.PAGEEC;
        if (pageE.getX() - x <= 3
            && pageE.getX() - x >= -3
            && pageE.getY() - y <= 3
            && pageE.getY() - y >= -3) selectStatus = SelectOptions.PAGEE;
        // check page connecter icon
        if (pageS.getX() - x <= 0
            && pageS.getX() - x >= -40
            && pageS.getY() - y <= 10
            && pageS.getY() - y >= -10) selectStatus = SelectOptions.PAGES;
        if (pageE.getX() - x <= 40
            && pageE.getX() - x >= 0
            && pageE.getY() - y <= 10
            && pageE.getY() - y >= -10) selectStatus = SelectOptions.PAGEE;
      }
      if (startPt.getX() - x <= 3
          && startPt.getX() - x >= -3
          && startPt.getY() - y <= 3
          && startPt.getY() - y >= -3) selectStatus = SelectOptions.START;
      if (pageS.getX() - x <= 3
          && pageS.getX() - x >= -3
          && pageS.getY() - y <= 3
          && pageS.getY() - y >= -3) selectStatus = SelectOptions.PAGES;

      // if not a control point, search around line
      if (selectStatus == SelectOptions.NONE) {
        /*
         * for(int i = -4; i < 5; i++)
         * {
         * for(int j = -4; j < 5; j++)
         * {
         * if(curve.contains(x+i,y+j))
         * {
         * selectStatus = 5;
         * break;
         * }
         * }
         * }
         */

        BasicStroke bs = new BasicStroke(10); // sets width of transition
        // "grab handle" lines
        if (!stub) {
          if (bs.createStrokedShape(curve).contains(new Point2D.Double(x, y)))
            selectStatus = SelectOptions.BR;
        } else {
          if (bs.createStrokedShape(new Line2D.Double(startPt, pageS))
              .contains(new Point2D.Double(x, y))) selectStatus = SelectOptions.BR;
        }
      }
    }
    if (selectStatus == SelectOptions.NONE) return false;
    else return true;
  }