public void release() {
   super.release();
   handleDisconnect(startFigure(), endFigure());
   if (getStartConnector() != null) {
     startFigure().removeFigureChangeListener(this);
   }
   if (getEndConnector() != null) {
     endFigure().removeFigureChangeListener(this);
   }
 }
 public void read(StorableInput dr) throws IOException {
   super.read(dr);
   Connector start = (Connector) dr.readStorable();
   if (start != null) {
     connectStart(start);
   }
   Connector end = (Connector) dr.readStorable();
   if (end != null) {
     connectEnd(end);
   }
   if (start != null && end != null) {
     updateConnection();
   }
 }
 public void write(StorableOutput dw) {
   super.write(dw);
   dw.writeStorable(getStartConnector());
   dw.writeStorable(getEndConnector());
 }
 /** Removes the point and updates the connection. */
 public void removePointAt(int i) {
   super.removePointAt(i);
   layoutConnection();
 }
 /** Inserts the point and updates the connection. */
 public void insertPointAt(Point p, int i) {
   super.insertPointAt(p, i);
   layoutConnection();
 }
 /** Sets the point and updates the connection. */
 public void setPointAt(Point p, int i) {
   super.setPointAt(p, i);
   layoutConnection();
 }