private void UndoRemoveTabMenuItem_Click(object sender, EventArgs e)
{
if (_statuses.RemovedTab.Count == 0)
{
MessageBox.Show("There isn't removed tab.", "Undo", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
DetailsListView listView = null;
TabModel tb = _statuses.RemovedTab.Pop();
if (tb.TabType == MyCommon.TabUsageType.Related)
{
var relatedTab = _statuses.GetTabByType(MyCommon.TabUsageType.Related);
if (relatedTab != null)
{
// 関連発言なら既存のタブを置き換える
tb.TabName = relatedTab.TabName;
this.ClearTab(tb.TabName, false);
_statuses.Tabs[tb.TabName] = tb;
for (int i = 0; i < ListTab.TabPages.Count; i++)
{
var tabPage = ListTab.TabPages[i];
if (tb.TabName == tabPage.Text)
{
listView = (DetailsListView)tabPage.Tag;
ListTab.SelectedIndex = i;
break;
}
}
}
else
{
const string TabName = "Related Tweets";
string renamed = TabName;
for (int i = 2; i <= 100; i++)
{
if (!_statuses.ContainsTab(renamed)) break;
renamed = TabName + i;
}
tb.TabName = renamed;
_statuses.AddTab(tb);
AddNewTab(tb, startup: false);
var tabPage = ListTab.TabPages[ListTab.TabPages.Count - 1];
listView = (DetailsListView)tabPage.Tag;
ListTab.SelectedIndex = ListTab.TabPages.Count - 1;
}
}
else
{
string renamed = tb.TabName;
for (int i = 1; i < int.MaxValue; i++)
{
if (!_statuses.ContainsTab(renamed)) break;
renamed = tb.TabName + "(" + i + ")";
}
tb.TabName = renamed;
_statuses.AddTab(tb);
AddNewTab(tb, startup: false);
var tabPage = ListTab.TabPages[ListTab.TabPages.Count - 1];
listView = (DetailsListView)tabPage.Tag;
ListTab.SelectedIndex = ListTab.TabPages.Count - 1;
}
SaveConfigsTabs();
if (listView != null)
{
using (ControlTransaction.Update(listView))
{
listView.VirtualListSize = tb.AllCount;
}
}
}
}