private boolean isEditEvent(int row, int column, MouseEvent me) {
        if (me.getClickCount() > 1) {
            return true;
        }
        boolean noModifiers = me.getModifiersEx() == MouseEvent.BUTTON1_DOWN_MASK;
        if (lastEditPosition != null && selectedRow == row && noModifiers &&
            lastEditPosition[0] == row && lastEditPosition[1] == column) {

            int handleWidth = DefaultOutlineCellRenderer.getExpansionHandleWidth();
            Insets ins = getInsets();
            TreePath path = getLayoutCache().getPathForRow(convertRowIndexToModel(row));
            int nd = path.getPathCount() - (isRootVisible() ? 1 : 2);
            if (nd < 0) {
                nd = 0;
            }
            int handleStart = ins.left + (nd * DefaultOutlineCellRenderer.getNestingWidth());
            int handleEnd = ins.left + handleStart + handleWidth;
            // Translate 'x' to position of column if non-0:
            int columnStart = getCellRect(row, column, false).x;
            handleStart += columnStart;
            handleEnd += columnStart;
            if (me.getX() >= handleEnd) {
                lastEditPosition = null;
                return true;
            }
        }
        lastEditPosition = new int[] { row, column };
        return false;
    }