/// <summary>
        /// 画面の表示状態を更新します
        /// </summary>
        private void updateStatus()
        {
            int old_select = listPresets.SelectedIndex;

            listPresets.SelectedIndices.Clear();

            // アイテムの個数に過不足があれば数を整える
            int size  = mHandles.Count;
            int delta = size - listPresets.Items.Count;

#if DEBUG
            sout.println("FormVibratoPreset#updateStatus; delta=" + delta);
#endif
            if (delta > 0)
            {
                for (int i = 0; i < delta; i++)
                {
                    listPresets.Items.Add("");
                }
            }
            else if (delta < 0)
            {
                for (int i = 0; i < -delta; i++)
                {
                    listPresets.Items.RemoveAt(0);
                }
            }

            // アイテムを更新
            for (int i = 0; i < size; i++)
            {
                VibratoHandle handle = mHandles[i];
                listPresets.Items[i] = handle.getCaption();
            }

            // 選択状態を復帰
            if (size <= old_select)
            {
                old_select = size - 1;
            }
#if DEBUG
            sout.println("FormVibratoPreset#updateStatus; A; old_selected=" + old_select);
#endif
            if (old_select >= 0)
            {
#if DEBUG
                sout.println("FormVibratoPreset#updateStatus; B; old_selected=" + old_select);
#endif
                listPresets.SelectedIndex = old_select;
            }
        }
        public void textName_TextChanged(Object sender, EventArgs e)
        {
            if (mSelected == null)
            {
                return;
            }

            mSelected.setCaption(textName.Text);
            int index = listPresets.SelectedIndex;

            if (index >= 0)
            {
                listPresets.Items[index] = mSelected.getCaption();
            }
        }
        public void listPresets_SelectedIndexChanged(Object sender, EventArgs e)
        {
            // インデックスを取得
            int index = listPresets.SelectedIndex;

#if DEBUG
            sout.println("FormVibratoPreset#listPresets_SelectedIndexChanged; index=" + index);
#endif

            // 範囲外ならbailout
            if ((index < 0) || (mHandles.Count <= index))
            {
#if DEBUG
                sout.println("FormVibratoPreset#listPresets_SelectedIndexChanged; bail-out, mSelected -> null; index=" + index);
#endif
                mSelected = null;
                return;
            }

            // イベントハンドラを一時的に取り除く
            textDepth.TextChanged -= new EventHandler(textDepth_TextChanged);
            textRate.TextChanged  -= new EventHandler(textRate_TextChanged);
            textName.TextChanged  -= new EventHandler(textName_TextChanged);

            // テクストボックスに値を反映
            mSelected      = mHandles[index];
            textDepth.Text = mSelected.getStartDepth() + "";
            textRate.Text  = mSelected.getStartRate() + "";
            textName.Text  = mSelected.getCaption();

            // イベントハンドラを再登録
            textDepth.TextChanged += new EventHandler(textDepth_TextChanged);
            textRate.TextChanged  += new EventHandler(textRate_TextChanged);
            textName.TextChanged  += new EventHandler(textName_TextChanged);

            // 再描画
            repaintPictures();
        }