public void Reload() { this.ProjectName = MainForm.CurrentProject.Name; try { if (!ModuleHandler.Exists(ProjectName)) ModuleHandler = ModuleHandler.CreateNew(ProjectName, string.Empty, this.Node); else ModuleHandler = new ModuleHandler(this.Node, MainForm.CurrentProject.Name); } catch (Exception ex) { string msg = ex.Message; string err = "檔案管理服務無法使用({0})"; if (!ProjectHandler.ValidName(ProjectName)) this.Node.Text = string.Format(err, "專案名稱含有不合法字元"); else { Regex reg = new Regex("ischool.dsa.exception.DSAServiceException: (.*)\n"); Match m = reg.Match(msg); if (m.Success) this.Node.Text = string.Format(err, m.Groups[1].Value); else this.Node.Text = string.Format(err, "檔案管理服務初始化失敗"); this.Node.ToolTipText = ex.Message; } this.Editors = new List<IEditable>(); return; } //ModuleHandler.StatusChanged += new EventHandler<ModuleStatusEventArgs>(ModuleHandler_StatusChanged); if (this.Editors == null) { this.Editors = new List<IEditable>(); FileEditable edit = new FileEditable(this); Editors.Add(edit); this.CurrentEditor = edit; } else { FileEditable fe = CurrentEditor as FileEditable; FileUIEditor ui = fe.Editor as FileUIEditor; ui.Reload(); } if (Directory.Exists(ModuleHandler.LocalPath)) this.Node.Text = "檔案管理 ( 本機路徑 : " + ModuleHandler.LocalPath + " )"; else this.Node.Text = "檔案管理 ( 本機路徑不存在 : " + ModuleHandler.LocalPath + " )"; ModuleHandler.CheckItemStatus(); }
public void Delete() { if (MessageBox.Show("確定刪除所有檔案?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != System.Windows.Forms.DialogResult.Yes) { return; } try { ModuleHandler.Remove(); } catch (Exception ex) { MessageBox.Show("刪除失敗 : " + ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void Download() { if (!ModuleHandler.LocalPathExists) { return; } string msg = "確定要「下載」差異檔案到本機?這會覆蓋本機的檔案。"; if (MessageBox.Show(msg, "檔案同步", MessageBoxButtons.YesNo) == DialogResult.No) { return; } string moduleName = ModuleHandler.Name; List <DownloadFile> list = ModuleHandler.CheckDownloadFile(); if (list.Count == 0) { return; } ModuleHandler.Watcher.EnableRaisingEvents = false; DownloadForm dlForm = new DownloadForm(list.ToArray()); dlForm.FormClosed += new FormClosedEventHandler(dlForm_FormClosed); dlForm.ShowDialog(); //if (NeedDownloadChanged != null) // NeedDownloadChanged.Invoke(this, new NeedStatusEventArgs(false)); FileEditable fe = CurrentEditor as FileEditable; FileUIEditor ui = fe.Editor as FileUIEditor; ui.Reload(); }
internal FileUIEditor(FileNodeHandler fileNodeHandler) { InitializeComponent(); _fileNodeHandler = fileNodeHandler; _moduleHandler = fileNodeHandler.ModuleHandler; }
internal static string GetServerPath(ModuleHandler handler, XmlElement element) { XmlHelper h = handler.Source; string path = element.GetAttribute("Name"); XmlElement xml = h.GetElement("Directory"); XmlElement currentXml = element.ParentNode as XmlElement; while (xml != currentXml) { path = currentXml.GetAttribute("Name") + "/" + path; currentXml = currentXml.ParentNode as XmlElement; } return path; }
public void Reload() { this.ProjectName = MainForm.CurrentProject.Name; try { if (!ModuleHandler.Exists(ProjectName)) { ModuleHandler = ModuleHandler.CreateNew(ProjectName, string.Empty, this.Node); } else { ModuleHandler = new ModuleHandler(this.Node, MainForm.CurrentProject.Name); } } catch (Exception ex) { string msg = ex.Message; string err = "檔案管理服務無法使用({0})"; if (!ProjectHandler.ValidName(ProjectName)) { this.Node.Text = string.Format(err, "專案名稱含有不合法字元"); } else { Regex reg = new Regex("ischool.dsa.exception.DSAServiceException: (.*)\n"); Match m = reg.Match(msg); if (m.Success) { this.Node.Text = string.Format(err, m.Groups[1].Value); } else { this.Node.Text = string.Format(err, "檔案管理服務初始化失敗"); } this.Node.ToolTipText = ex.Message; } this.Editors = new List <IEditable>(); return; } //ModuleHandler.StatusChanged += new EventHandler<ModuleStatusEventArgs>(ModuleHandler_StatusChanged); if (this.Editors == null) { this.Editors = new List <IEditable>(); FileEditable edit = new FileEditable(this); Editors.Add(edit); this.CurrentEditor = edit; } else { FileEditable fe = CurrentEditor as FileEditable; FileUIEditor ui = fe.Editor as FileUIEditor; ui.Reload(); } if (Directory.Exists(ModuleHandler.LocalPath)) { this.Node.Text = "檔案管理 ( 本機路徑 : " + ModuleHandler.LocalPath + " )"; } else { this.Node.Text = "檔案管理 ( 本機路徑不存在 : " + ModuleHandler.LocalPath + " )"; } ModuleHandler.CheckItemStatus(); }
void dlForm_FormClosed(object sender, FormClosedEventArgs e) { ModuleHandler.Reload(); ModuleHandler.Watcher.EnableRaisingEvents = true; }
public void Upload() { string msg = "確定要「上傳」差異檔案到主機?這會覆蓋主機的檔案。"; if (MessageBox.Show(msg, "檔案同步", MessageBoxButtons.YesNo) == DialogResult.No) { return; } if (!ModuleHandler.LocalPathExists) { return; } string moduleName = ModuleHandler.Name; ModifierCollection list = ModuleHandler.CheckUploadModifier(); List <UploadFile> files = new List <UploadFile>(); XmlHelper req = new XmlHelper(); req.AddElement(".", "ModuleName", moduleName); foreach (Modifier m in list) { if (m.ActionMode == ActionType.SendDelete) { ModuleHandler.DeletePath(m.Path); } else if (m.ActionMode == ActionType.UpdateFile && m.FileMode == FileType.Directory) { req.AddElement(".", "Path", m.Path); } else if (m.ActionMode == ActionType.UpdateFile && m.FileMode == FileType.File) { UploadFile f = new UploadFile(); FileInfo file = new FileInfo(m.Path); f.File = file; f.ServerPath = PathHelper.GetServerPath(ModuleHandler.LocalPath, m.Path); files.Add(f); } } if (req.GetElement("Path") != null) { MainForm.LoginArgs.SendModuleRequest("PrepareDirectory", new Envelope(req)); } if (files.Count > 0) { string ftp = PathHelper.GetFtpPath(MainForm.LoginArgs.FtpURL, MainForm.LoginArgs.GreeningID, moduleName); ProgressForm pf = new ProgressForm(files.ToArray(), ftp, MainForm.LoginArgs.FtpUser, MainForm.LoginArgs.FtpPassword); pf.ShowDialog(); } ModuleHandler.Reload(); //if (NeedUploadChanged != null) // NeedUploadChanged.Invoke(this, new NeedStatusEventArgs(false)); FileEditable fe = CurrentEditor as FileEditable; FileUIEditor ui = fe.Editor as FileUIEditor; ui.Reload(); }