ビューの状態の一時保存機能を追加
@@ -0,0 +1,23 @@ | ||
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Text; | |
4 | +using SCFiler2.Operation; | |
5 | +using SCFiler2.ViewInterface; | |
6 | + | |
7 | +namespace SCFiler2 { | |
8 | + public class RecordFileViewSnapshots : Action { | |
9 | + public override string DisplayString { | |
10 | + get { return "ビューの状態を一時保存"; } | |
11 | + } | |
12 | + | |
13 | + public override ActionType Type { | |
14 | + get { return ActionType.View; } | |
15 | + } | |
16 | + | |
17 | + public override void Execute() { | |
18 | + ViewInterfaces.LeftFileView.RecordSnapshot(); | |
19 | + ViewInterfaces.RightFileView.RecordSnapshot(); | |
20 | + SCFiler2System.ShowHistoryMessage("現在のビューの状態を一時保存しました"); | |
21 | + } | |
22 | + } | |
23 | +} |
@@ -320,7 +320,7 @@ | ||
320 | 320 | } |
321 | 321 | |
322 | 322 | /// <summary> |
323 | - /// ListViewの指定アイテムにフォーカスを当てる | |
323 | + /// ListViewの指定アイテムにフォーカスを当てる。既存の選択アイテムは解除される | |
324 | 324 | /// </summary> |
325 | 325 | /// <param name="itemFullName">フォーカスを当てたいアイテムのFullName</param> |
326 | 326 | private void SetFocusAndSelected(string itemFullName) { |
@@ -828,18 +828,6 @@ | ||
828 | 828 | } |
829 | 829 | |
830 | 830 | |
831 | - //public void ChangeViewController(ListViewController.ControllerType type) { | |
832 | - // currentListViewController.Terminate(); | |
833 | - // switch (type) { | |
834 | - // case ListViewController.ControllerType.Normal: | |
835 | - // currentListViewController = new NormalListViewController(this, this.virtualListView); | |
836 | - // break; | |
837 | - // case ListViewController.ControllerType.EasySelect: | |
838 | - // currentListViewController = new EasySelectListViewController(this, this.virtualListView); | |
839 | - // break; | |
840 | - // } | |
841 | - // currentListViewController.Initialize(); | |
842 | - //} | |
843 | 831 | #endregion ListViewControl関係 |
844 | 832 | |
845 | 833 |
@@ -951,5 +939,56 @@ | ||
951 | 939 | new public void Focus() { |
952 | 940 | base.Focus(); |
953 | 941 | } |
942 | + | |
943 | + private FileViewSnapshot snapshot = null; | |
944 | + | |
945 | + /// <summary> | |
946 | + /// 現在のビューの状態を保存 | |
947 | + /// ・パス | |
948 | + /// ・フォーカスと選択の状態 | |
949 | + /// ・ビューにフォーカスがあるかどうか | |
950 | + /// </summary> | |
951 | + public void RecordSnapshot() { | |
952 | + snapshot = new FileViewSnapshot(); | |
953 | + snapshot.CurrentPath = this.CurrentPath; | |
954 | + foreach (FilerItem item in this.SelectedFilerItems) { | |
955 | + snapshot.SelectedItems.Add(item.FullName); | |
956 | + } | |
957 | + snapshot.FocusedItem = this.virtualListView.FocusedItem.FilerItem.FullName; | |
958 | + snapshot.HaveFocus = this.listView.Focused; | |
959 | + } | |
960 | + | |
961 | + /// <summary> | |
962 | + /// 保存したビューの状態に戻す | |
963 | + /// </summary> | |
964 | + public void RestoreSnapshot() { | |
965 | + this.currentPath = snapshot.CurrentPath; | |
966 | + this.UpdateView(); | |
967 | + | |
968 | + foreach (VirtualListViewItem item in this.virtualListView.Items) { | |
969 | + if (item.FilerItem.FullName == snapshot.FocusedItem) { | |
970 | + item.Focused = true; | |
971 | + break; | |
972 | + } | |
973 | + } | |
974 | + | |
975 | + foreach (string itemName in snapshot.SelectedItems) { | |
976 | + bool itemFound = false; | |
977 | + foreach (VirtualListViewItem item in this.virtualListView.Items) { | |
978 | + if (item.FilerItem.FullName == itemName) { | |
979 | + item.Selected = true; | |
980 | + itemFound = true; | |
981 | + break; | |
982 | + } | |
983 | + } | |
984 | + if (!itemFound) { | |
985 | + SCFiler2System.ShowHistoryMessage("アイテムの状態を復元しようとしましたが、"+itemName+"は見つかりませんでした"); | |
986 | + } | |
987 | + } | |
988 | + | |
989 | + if (snapshot.HaveFocus) { | |
990 | + this.Focus(); | |
991 | + } | |
992 | + } | |
954 | 993 | } |
955 | 994 | } |
@@ -0,0 +1,12 @@ | ||
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Text; | |
4 | + | |
5 | +namespace SCFiler2 { | |
6 | + class FileViewSnapshot { | |
7 | + public bool HaveFocus; | |
8 | + public string CurrentPath; | |
9 | + public List<string> SelectedItems = new List<string>(); | |
10 | + public string FocusedItem; | |
11 | + } | |
12 | +} |
@@ -619,5 +619,15 @@ | ||
619 | 619 | } |
620 | 620 | } |
621 | 621 | } |
622 | + | |
623 | + private void 現在の表示状態を一時保存TToolStripMenuItem_Click(object sender, EventArgs e) { | |
624 | + ActionManager.CreateAction(ActionManager.ActionID.RecordFileViewSnapshots).Execute(); | |
625 | + } | |
626 | + | |
627 | + private void 一時保存した状態を復元RToolStripMenuItem_Click(object sender, EventArgs e) { | |
628 | + ActionManager.CreateAction(ActionManager.ActionID.RestoreFileViewSnapshots).Execute(); | |
629 | + } | |
630 | + | |
631 | + | |
622 | 632 | } |
623 | 633 | } |
\ No newline at end of file |
@@ -35,7 +35,7 @@ | ||
35 | 35 | this.appName.Name = "appName"; |
36 | 36 | this.appName.Size = new System.Drawing.Size(147, 12); |
37 | 37 | this.appName.TabIndex = 0; |
38 | - this.appName.Text = "SCFiler2 Alpha version 0.33"; | |
38 | + this.appName.Text = "SCFiler2 Alpha version 0.34"; | |
39 | 39 | // |
40 | 40 | // okButton |
41 | 41 | // |
@@ -40,6 +40,8 @@ | ||
40 | 40 | setFocusToLeftFileView, |
41 | 41 | setFocusToRightFileView, |
42 | 42 | GoToSameFolderAsAnotherView, |
43 | + RecordFileViewSnapshots, | |
44 | + RestoreFileViewSnapshots, | |
43 | 45 | IncrementalSearch, |
44 | 46 | MigemoSearch, |
45 | 47 | EasySelect, |
@@ -135,6 +137,10 @@ | ||
135 | 137 | return new setFocusToRightFileView(); |
136 | 138 | case ActionID.GoToSameFolderAsAnotherView: |
137 | 139 | return new GoToSameFolderAsAnotherView(); |
140 | + case ActionID.RecordFileViewSnapshots: | |
141 | + return new RecordFileViewSnapshots(); | |
142 | + case ActionID.RestoreFileViewSnapshots: | |
143 | + return new RestoreFileViewSnapshots(); | |
138 | 144 | case ActionID.IncrementalSearch: |
139 | 145 | return new IncrementalSearch(); |
140 | 146 | case ActionID.MigemoSearch: |
@@ -0,0 +1,23 @@ | ||
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Text; | |
4 | +using SCFiler2.Operation; | |
5 | +using SCFiler2.ViewInterface; | |
6 | + | |
7 | +namespace SCFiler2 { | |
8 | + public class RestoreFileViewSnapshots : Action { | |
9 | + public override string DisplayString { | |
10 | + get { return "一時保存したビューの状態に戻す"; } | |
11 | + } | |
12 | + | |
13 | + public override ActionType Type { | |
14 | + get { return ActionType.View; } | |
15 | + } | |
16 | + | |
17 | + public override void Execute() { | |
18 | + ViewInterfaces.LeftFileView.RestoreSnapshot(); | |
19 | + ViewInterfaces.RightFileView.RestoreSnapshot(); | |
20 | + SCFiler2System.ShowHistoryMessage("ビューの状態を一時保存したときの状態に戻しました"); | |
21 | + } | |
22 | + } | |
23 | +} |
@@ -1,7 +1,13 @@ | ||
1 | 1 | 更新履歴 |
2 | 2 | |
3 | +■0.34 | |
4 | +・「ビューの表示状態を保存」「一時保存したビューの状態に戻す」コマンドを追加。メニューにも追加。 | |
5 | + 2つのビューのパスやアイテムの選択状態などをいったん保存して、ほかのパスに移動したりしたあとでも | |
6 | + 保存したときの状態に戻ることができる | |
7 | + | |
3 | 8 | ■0.33 |
4 | 9 | ・「ドライブ一覧に移動」コマンドを追加 |
10 | + ドライブルートでさらにフォルダを一つ上に上がるコマンドを入力してもドライブ一覧を表示 | |
5 | 11 | ・「ドライブツールバーを表示しない」「履歴ビューを表示しない」のオプションを追加 |
6 | 12 | ・「名前の変更」ダイアログの初期状態は、拡張子をのぞいて選択しておくようにした |
7 | 13 | また各ドライブのルートで一つ上のフォルダに移動コマンドを使用してもドライブ一覧を表示 |
@@ -83,6 +83,9 @@ | ||
83 | 83 | this.fileHistory2 = new SCFiler2.HistoryView(); |
84 | 84 | this.driveToolbar = new System.Windows.Forms.ToolStrip(); |
85 | 85 | this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components); |
86 | + this.現在の表示状態を一時保存TToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |
87 | + this.一時保存した状態を復元RToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |
88 | + this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripSeparator(); | |
86 | 89 | this.menuStrip.SuspendLayout(); |
87 | 90 | this.statusStrip.SuspendLayout(); |
88 | 91 | this.Level1_SplitContainer.Panel1.SuspendLayout(); |
@@ -275,7 +278,10 @@ | ||
275 | 278 | this.ジャンプフォルダを開くJToolStripMenuItem, |
276 | 279 | this.toolStripMenuItem4, |
277 | 280 | this.反対のビューと同じパスにSToolStripMenuItem, |
278 | - this.特殊フォルダへ移動MToolStripMenuItem}); | |
281 | + this.特殊フォルダへ移動MToolStripMenuItem, | |
282 | + this.toolStripMenuItem7, | |
283 | + this.現在の表示状態を一時保存TToolStripMenuItem, | |
284 | + this.一時保存した状態を復元RToolStripMenuItem}); | |
279 | 285 | this.フォルダDToolStripMenuItem.Name = "フォルダDToolStripMenuItem"; |
280 | 286 | this.フォルダDToolStripMenuItem.Size = new System.Drawing.Size(68, 20); |
281 | 287 | this.フォルダDToolStripMenuItem.Text = "フォルダ(&D)"; |
@@ -283,7 +289,7 @@ | ||
283 | 289 | // 新規作成NToolStripMenuItem |
284 | 290 | // |
285 | 291 | this.新規作成NToolStripMenuItem.Name = "新規作成NToolStripMenuItem"; |
286 | - this.新規作成NToolStripMenuItem.Size = new System.Drawing.Size(202, 22); | |
292 | + this.新規作成NToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
287 | 293 | this.新規作成NToolStripMenuItem.Text = "新規作成(&N)"; |
288 | 294 | this.新規作成NToolStripMenuItem.Click += new System.EventHandler(this.新規作成NToolStripMenuItem_Click); |
289 | 295 | // |
@@ -290,7 +296,7 @@ | ||
290 | 296 | // エクスプローラで開くOToolStripMenuItem |
291 | 297 | // |
292 | 298 | this.エクスプローラで開くOToolStripMenuItem.Name = "エクスプローラで開くOToolStripMenuItem"; |
293 | - this.エクスプローラで開くOToolStripMenuItem.Size = new System.Drawing.Size(202, 22); | |
299 | + this.エクスプローラで開くOToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
294 | 300 | this.エクスプローラで開くOToolStripMenuItem.Text = "エクスプローラで開く(&O)"; |
295 | 301 | this.エクスプローラで開くOToolStripMenuItem.Click += new System.EventHandler(this.エクスプローラで開くOToolStripMenuItem_Click); |
296 | 302 | // |
@@ -297,12 +303,12 @@ | ||
297 | 303 | // toolStripMenuItem5 |
298 | 304 | // |
299 | 305 | this.toolStripMenuItem5.Name = "toolStripMenuItem5"; |
300 | - this.toolStripMenuItem5.Size = new System.Drawing.Size(199, 6); | |
306 | + this.toolStripMenuItem5.Size = new System.Drawing.Size(221, 6); | |
301 | 307 | // |
302 | 308 | // ジャンプフォルダに追加AToolStripMenuItem |
303 | 309 | // |
304 | 310 | this.ジャンプフォルダに追加AToolStripMenuItem.Name = "ジャンプフォルダに追加AToolStripMenuItem"; |
305 | - this.ジャンプフォルダに追加AToolStripMenuItem.Size = new System.Drawing.Size(202, 22); | |
311 | + this.ジャンプフォルダに追加AToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
306 | 312 | this.ジャンプフォルダに追加AToolStripMenuItem.Text = "ジャンプフォルダに追加(&A)"; |
307 | 313 | this.ジャンプフォルダに追加AToolStripMenuItem.Click += new System.EventHandler(this.ジャンプフォルダに追加AToolStripMenuItem_Click); |
308 | 314 | // |
@@ -309,7 +315,7 @@ | ||
309 | 315 | // ジャンプフォルダを開くJToolStripMenuItem |
310 | 316 | // |
311 | 317 | this.ジャンプフォルダを開くJToolStripMenuItem.Name = "ジャンプフォルダを開くJToolStripMenuItem"; |
312 | - this.ジャンプフォルダを開くJToolStripMenuItem.Size = new System.Drawing.Size(202, 22); | |
318 | + this.ジャンプフォルダを開くJToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
313 | 319 | this.ジャンプフォルダを開くJToolStripMenuItem.Text = "ジャンプフォルダを開く(&J)"; |
314 | 320 | this.ジャンプフォルダを開くJToolStripMenuItem.Click += new System.EventHandler(this.ジャンプフォルダを開くJToolStripMenuItem_Click); |
315 | 321 | // |
@@ -316,12 +322,12 @@ | ||
316 | 322 | // toolStripMenuItem4 |
317 | 323 | // |
318 | 324 | this.toolStripMenuItem4.Name = "toolStripMenuItem4"; |
319 | - this.toolStripMenuItem4.Size = new System.Drawing.Size(199, 6); | |
325 | + this.toolStripMenuItem4.Size = new System.Drawing.Size(221, 6); | |
320 | 326 | // |
321 | 327 | // 反対のビューと同じパスにSToolStripMenuItem |
322 | 328 | // |
323 | 329 | this.反対のビューと同じパスにSToolStripMenuItem.Name = "反対のビューと同じパスにSToolStripMenuItem"; |
324 | - this.反対のビューと同じパスにSToolStripMenuItem.Size = new System.Drawing.Size(202, 22); | |
330 | + this.反対のビューと同じパスにSToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
325 | 331 | this.反対のビューと同じパスにSToolStripMenuItem.Text = "反対のビューと同じパスに(&S)"; |
326 | 332 | this.反対のビューと同じパスにSToolStripMenuItem.Click += new System.EventHandler(this.反対のビューと同じパスにSToolStripMenuItem_Click); |
327 | 333 | // |
@@ -335,7 +341,7 @@ | ||
335 | 341 | this.デスクトップDToolStripMenuItem, |
336 | 342 | this.インターネットキャッシュIToolStripMenuItem}); |
337 | 343 | this.特殊フォルダへ移動MToolStripMenuItem.Name = "特殊フォルダへ移動MToolStripMenuItem"; |
338 | - this.特殊フォルダへ移動MToolStripMenuItem.Size = new System.Drawing.Size(202, 22); | |
344 | + this.特殊フォルダへ移動MToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
339 | 345 | this.特殊フォルダへ移動MToolStripMenuItem.Text = "特殊フォルダへ移動(&M)"; |
340 | 346 | // |
341 | 347 | // myDocumentMToolStripMenuItem |
@@ -428,7 +434,7 @@ | ||
428 | 434 | // statusbarArea1 |
429 | 435 | // |
430 | 436 | this.statusbarArea1.Name = "statusbarArea1"; |
431 | - this.statusbarArea1.Size = new System.Drawing.Size(354, 18); | |
437 | + this.statusbarArea1.Size = new System.Drawing.Size(385, 18); | |
432 | 438 | this.statusbarArea1.Spring = true; |
433 | 439 | this.statusbarArea1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; |
434 | 440 | // |
@@ -627,6 +633,25 @@ | ||
627 | 633 | this.notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseClick); |
628 | 634 | this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick); |
629 | 635 | // |
636 | + // 現在の表示状態を一時保存TToolStripMenuItem | |
637 | + // | |
638 | + this.現在の表示状態を一時保存TToolStripMenuItem.Name = "現在の表示状態を一時保存TToolStripMenuItem"; | |
639 | + this.現在の表示状態を一時保存TToolStripMenuItem.Size = new System.Drawing.Size(224, 22); | |
640 | + this.現在の表示状態を一時保存TToolStripMenuItem.Text = "現在の表示状態を一時保存(&T)"; | |
641 | + this.現在の表示状態を一時保存TToolStripMenuItem.Click += new System.EventHandler(this.現在の表示状態を一時保存TToolStripMenuItem_Click); | |
642 | + // | |
643 | + // 一時保存した状態を復元RToolStripMenuItem | |
644 | + // | |
645 | + this.一時保存した状態を復元RToolStripMenuItem.Name = "一時保存した状態を復元RToolStripMenuItem"; | |
646 | + this.一時保存した状態を復元RToolStripMenuItem.Size = new System.Drawing.Size(233, 22); | |
647 | + this.一時保存した状態を復元RToolStripMenuItem.Text = "一時保存した表示状態を復元(&R)"; | |
648 | + this.一時保存した状態を復元RToolStripMenuItem.Click += new System.EventHandler(this.一時保存した状態を復元RToolStripMenuItem_Click); | |
649 | + // | |
650 | + // toolStripMenuItem7 | |
651 | + // | |
652 | + this.toolStripMenuItem7.Name = "toolStripMenuItem7"; | |
653 | + this.toolStripMenuItem7.Size = new System.Drawing.Size(221, 6); | |
654 | + // | |
630 | 655 | // MainForm |
631 | 656 | // |
632 | 657 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); |
@@ -738,6 +763,9 @@ | ||
738 | 763 | private System.Windows.Forms.ToolStripMenuItem スタートアップUToolStripMenuItem; |
739 | 764 | private System.Windows.Forms.ToolStripMenuItem programFilesPToolStripMenuItem; |
740 | 765 | private System.Windows.Forms.ToolStripStatusLabel statusbarJobInfo; |
766 | + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem7; | |
767 | + private System.Windows.Forms.ToolStripMenuItem 現在の表示状態を一時保存TToolStripMenuItem; | |
768 | + private System.Windows.Forms.ToolStripMenuItem 一時保存した状態を復元RToolStripMenuItem; | |
741 | 769 | } |
742 | 770 | } |
743 | 771 |
@@ -41,5 +41,13 @@ | ||
41 | 41 | void ChangePath(string path, string defaultFocusFile); |
42 | 42 | void ChangePathHistoryBackward(); |
43 | 43 | void ChangePathHistoryForward(); |
44 | + /// <summary> | |
45 | + /// 現在のビューの状態を保存する | |
46 | + /// </summary> | |
47 | + void RecordSnapshot(); | |
48 | + /// <summary> | |
49 | + /// 保存した時のビューの状態に戻す | |
50 | + /// </summary> | |
51 | + void RestoreSnapshot(); | |
44 | 52 | } |
45 | 53 | } |