public void propertyChange(PropertyChangeEvent ev) {
            if (!isEditing() || (getClientProperty("terminateEditOnFocusLost") != Boolean.TRUE)) {    //NOI18N 
                return;
            }

            Component c = focusManager.getPermanentFocusOwner();
            while (c != null) {
                if (c == JListMutable.this) {

                    // focus remains inside the table 
                    return;
                }
                else if ((c instanceof Window) || ((c instanceof Applet) && (c.getParent() == null))) {
                    if (c == SwingUtilities.getRoot(JListMutable.this)) {
                        if (!getListCellEditor().stopCellEditing()) {
                            getListCellEditor().cancelCellEditing();
                        }
                    }
                    break;
                }
                c = c.getParent();
            }
        }