void SelectAll()
    {
        int  col          = patternView.position.dataColumn;
        int  chn          = patternView.position.channel;
        bool hasSelection = boxSelection.hasSelection;
        bool oneChannel   = boxSelection.selection.startCol == boxSelection.selection.endCol;

        if (!hasSelection || oneChannel)
        {
            PatternRow top    = patternView.GetRowAt(chn, 0);
            PatternRow bottom = patternView.GetRowAt(chn, songData.patternLength - 1);

            if (hasSelection)
            {
                boxSelection.SetSelection(top.GetSelectable(0), bottom.GetSelectable(SongData.SONG_DATA_COUNT - 1));
            }
            else
            {
                boxSelection.SetSelection(top.GetSelectable(col), bottom.GetSelectable(col));
            }
        }
        else
        {
            PatternRow top    = patternView.GetRowAt(0, 0);
            PatternRow bottom = patternView.GetRowAt(patternView.channels.Length - 1, songData.patternLength - 1);
            boxSelection.SetSelection(top.GetSelectable(0), bottom.GetSelectable(SongData.SONG_DATA_COUNT - 1));
        }
    }