public CacheManagerController()
 {
    cacheService = new CacheService();
    View = new CacheManagerView(this);
    OnAddCacheViewAction(cacheService.Load());
    CacheConfig = cacheService.CacheConfig;
    shellMenu = new ShellContextMenu();
    InitializeUI();
 }
Esempio n. 2
0
        //bool mgstart = false;
        private UserControl1 createView(string path)
        {
            UserControl1 us = new UserControl1();
            us.listView.BackColor = Color.LightGray;
            us.Enter += (s, e) => {
                if (activeUs != null) {
                    activeUs.listView.BackColor = Color.LightGray;
                    if(mg !=null)mg.End();
                    mglog = string.Empty;
                    //mgstart = false;
                }
                activeUs = us;
                activeUs.listView.BackColor = Color.White;
            };

            //us.listView.DoubleClick += (sender, e) => {
            //    if (us.listView.SelectedIndices.Count == 1) {
            //        var items = us.ItemList;
            //        var index = us.listView.SelectedIndices[0];
            //        //var fp = System.IO.Path.Combine(us.Path, items[index].Name);
            //        var fp = getFullPath(us.Dir, items[index].Name);
            //        //if (items[index].IsFile) {
            //        if (File.Exists(fp)) {
            //            HistoryListView.Items.Insert(0, fp);
            //            Process.Start(fp);
            //        }
            //        else if(Directory.Exists(fp)){
            //            us.Dir = fp;
            //        }
            //    }
            //};
            us.listView.DoubleClickEx += (sender, e) => {
                if (us.listView.SelectedIndices.Count == 1) {
                    var items = us.ItemList;
                    var index = us.listView.SelectedIndices[0];
                    //var fp = System.IO.Path.Combine(us.Path, items[index].Name);
                    var fp = getFullPath(us.Dir, items[index].Name);
                    //if (items[index].IsFile) {
                    if (File.Exists(fp)) {
                        HistoryListView.Items.Insert(0, fp);
                        Process.Start(fp);
                    }
                    else if (Directory.Exists(fp)) {
                        us.Dir = fp;
                    }

                }
                else if (us.listView.SelectedIndices.Count == 0) {
                    us.UpDir();
                }
            };

            us.listView.MouseDown += (s, e) => {
                if (e.Button == MouseButtons.Right) {
                    mglog = string.Empty;
                    //if (mg == null) mg = new MouseGesture();

                    //mg.Start(us.listView, e.Location);
                    mg.Start(us.listView, us.listView.PointToScreen(new Point(e.X, e.Y)));
                    activeUs.listView.MultiSelect = false;
                }

                if (popupForm != null && popupForm.Visible) {
                    popupForm.Visible = false;
                }
            };

            us.listView.MouseMove += (s, e) => {
                if (e.Button == MouseButtons.Right) {

                    //Arrow arrow = mg.Test(new Point(e.X, e.Y));
                    Arrow arrow = mg.Test(us.listView.PointToScreen(new Point(e.X, e.Y)));
                    if (arrow != Arrow.none) {
                        switch (arrow) {
                            case Arrow.up:
                                //label1.Text += "↑";
                                mglog += "U";
                                break;
                            case Arrow.right:
                                //label1.Text += "→";
                                mglog += "R";
                                break;
                            case Arrow.down:
                                //label1.Text += "↓";
                                mglog += "D";
                                break;
                            case Arrow.left:
                                mglog += "L";
                                //label1.Text += "←";
                                break;
                        }
                    }
                }
            };
            us.listView.MouseUpEx += (s, e) => {
                if (e.Button == MouseButtons.Right) {
                    //Console.WriteLine("mglog=" + mglog);
                    if (MouseGestureMap.ContainsKey(mglog)) {
                        MouseGestureMap[mglog](this);
                    }
                    else if (mglog == string.Empty) {
                        //UserControl1 u = s as UserControl1;
                        var ctm = new ShellContextMenu();
                        var selfiles = us.SelectedItemList;
                        if (selfiles.Count == 0) {
                            //ctm.CreateFolderMenu(us.listView.PointToScreen(new Point(e.X, e.Y)), us.Dir);
                            DirectoryInfo[] dir = new DirectoryInfo[1];
                            dir[0] = new DirectoryInfo(us.Dir);
                            ctm.ShowContextMenu(dir, us.listView.PointToScreen(new Point(e.X, e.Y)));
                        }
                        else {
                            List<FileInfo> arrFI = new List<FileInfo>();
                            selfiles.ForEach(x => {
                                arrFI.Add(new FileInfo(System.IO.Path.Combine(us.Dir, x.Name)));
                            });
                            ctm.ShowContextMenu(arrFI.ToArray(), us.listView.PointToScreen(new Point(e.X, e.Y)));
                        }
                    }
                    if (mg != null) mg.End();
                    mglog = string.Empty;
                    activeUs.listView.MultiSelect = true;
                }
            };
            us.listView.MouseUp += (s, e) => {
                if (e.Button == MouseButtons.Middle) {
                    if (us.listView.SelectedIndices.Count > 0) {
                        var item = us.ItemList[us.listView.SelectedIndices[0]];
                        if (!item.IsFile) {
                            var p = Path.Combine(us.Dir, item.Name);
                            createView(p);
                        }
                    }
                }
                else if (e.Button == MouseButtons.Right && !activeUs.listView.MultiSelect) {
                    var ctm = new ShellContextMenu();
                    var selfiles = us.SelectedItemList;
                    //if (selfiles.Count == 0) {
                    //    DirectoryInfo[] dir = new DirectoryInfo[1];
                    //    dir[0] = new DirectoryInfo(us.Dir);
                    //    ctm.ShowContextMenu(dir, us.listView.PointToScreen(new Point(e.X, e.Y)));
                    //}
                    //else
                    if (selfiles.Count > 0) {
                        List<FileInfo> arrFI = new List<FileInfo>();
                        selfiles.ForEach(x => {
                            arrFI.Add(new FileInfo(System.IO.Path.Combine(us.Dir, x.Name)));
                        });
                        ctm.ShowContextMenu(arrFI.ToArray(), us.listView.PointToScreen(new Point(e.X, e.Y)));
                    }
                    activeUs.listView.MultiSelect = true;
                }
            };
            us.listView.ItemMouseHover += (s, e) => {
                //e.Item.
                //var kk=0;

            };
            us.ChangePath += (s, e) => {
                HistoryListView.Items.Insert(0, e.path);
            };

            flowLayoutPanel1.Controls.Add(us);
            us.Dir = path;

            ResizeWindow();

            return us;
        }