//DataGridView下のボタンをクリックした際の処理 private void buttons_click(object sender, EventArgs e) { Button btn = (Button)sender; DialogResult result; Project pj; DataRow row; int vrow_index; switch (btn.Name) { //新規プロジェクト case "btnAddProject": log.Write("addProjectBEGIN"); log.Write("step1"); ShellBrowseForFolderDialog fbdProject = new ShellBrowseForFolderDialog(); fbdProject.RootType = ShellBrowseForFolderDialog.RootTypeOptions.ByPath; fbdProject.RootPath = env_data.Master.Folder; fbdProject.DetailsFlags = ShellBrowseForFolderDialog.BrowseInfoFlag.BIF_NONEWFOLDERBUTTON; fbdProject.Title = "業務パックフォルダを選択してください"; try { if (!fbdProject.ShowDialog()) return; } catch (Exception ex) { MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } string master = fbdProject.FullName + @"\master.xml"; if (!File.Exists(master)) { string xls = fbdProject.FullName + @"\master.xls"; if (!File.Exists(xls)) { MessageBox.Show("このフォルダは業務パックフォルダではありません"); log.Close(); return; } XMLConverter xml; try { xml = new XMLConverter(XmlType.Master, xls); xml.Convert(); } catch (Exception ex) { MessageBox.Show(ex.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } } log.Write("Step2"); log.Close(); Master env_master = env_data.Master; env_master.SelectedFolder = fbdProject.DisplayName; env_data.Master = env_master; frm_sub = new frmSubWindow(env_data, log, OpenWindowType.CREATE_PROJECT); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; log.Write("addProjectEnd"); log.Close(); break; //プロジェクト詳細、プロジェクト変更、プロジェクト削除 case "btnDetailProject": case "btnChangeProject": case "btnDeleteProject": if (dgvMain.SelectedRows.Count == 0 || dgvMain.SelectedRows[0].Cells[0].Value == null) return; row = GetDataRowByDataGridViewRow("ProjectData", dgvMain.SelectedRows[0]); if (row == null) return; pj = env_data.Project; pj.SelectedFolder = row[2].ToString(); env_data.Project = pj; if (btn.Name == "btnDetailProject") AddTab(row); else if (btn.Name == "btnChangeProject") { frm_sub = new frmSubWindow(env_data, log, OpenWindowType.PROJECT_DATA); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; } else if (btn.Name == "btnDeleteProject") { frm_sub = new frmSubWindow(env_data, log, OpenWindowType.DELETE_PROJECT); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); } break; //プロジェクト取り込み case "btnGetProject": frm_sub = new frmSubWindow(env_data, log, OpenWindowType.GET_PROJECT); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //プロジェクト取り出し case "btnPutProject": if (dgvMain.SelectedRows.Count == 0) return; if (env_data.Project.TortoiseSVN || env_data.Project.DropBox) ExportProjectData(); else MessageBox.Show("この機能は、TortoiseSVNあるいはDropBoxでプロジェクト共有している場合のみ有効です", "確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); break; //フォルダ表示 case "btnViewFolder": if (tabControl.SelectedIndex == 0) { if (dgvMain.SelectedRows.Count == 0 || dgvMain.SelectedRows[0].Cells[0].Value == null) return; string folder = dgvMain.SelectedRows[0].Cells[0].Value.ToString(); if (folder == "") return; if (!Directory.Exists(env_data.Project.Folder + folder)) return; Process.Start("explorer.exe", "/e /select," + env_data.Project.Folder + folder); } else Process.Start("explorer.exe", "/e /select," + env_data.Project.Folder + env_data.Project.SelectedFolder); break; //終了 case "btnQuit": CloseApplication(); break; //タスク追加 case "btnAddTask": frm_sub = new frmSubWindow(env_data, log, OpenWindowType.ADD_TASK); frm_sub.TaskDataSet = ds_main; frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //タスク詳細 case "btnTaskDetail": if (dgvMain.SelectedRows.Count == 0) return; vrow_index = dgvMain.SelectedRows[0].Index; if (vrow_index < 0 || vrow_index >= ds_main.Tables["Task"].Rows.Count) return; log.Write("ShowFileBegin"); log.Write("Step1"); log.Close(); row = GetDataRowByDataGridViewRow("Task", dgvMain.Rows[vrow_index]); if (row == null) return; CallWindow(ds_main.Tables["Task"].Rows.IndexOf(row)); break; //タスク変更 case "btnTaskChange": if (dgvMain.SelectedRows.Count == 0) return; if (dgvMain.SelectedRows[0].Index < 0 || dgvMain.SelectedRows[0].Index >= ds_main.Tables["Task"].Rows.Count) return; frm_sub = new frmSubWindow(env_data, log, OpenWindowType.CHANGE_TASK); frm_sub.TaskDataSet = ds_main; frm_sub.CurrentTask = ds_main.Tables["Task"].Rows[dgvMain.SelectedRows[0].Index]; frm_sub.CurrentTaskRowIndex = dgvMain.SelectedRows[0].Index; frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //タスクコピー case "btnTaskCopy": int row_index=0; List<int> row_indexes = new List<int>(); DataGridViewRow[] rows=new DataGridViewRow[dgvMain.SelectedRows.Count]; dgvMain.SelectedRows.CopyTo(rows,0); Array.Sort(rows,delegate(DataGridViewRow row1, DataGridViewRow row2) { return dgvMain.Rows.IndexOf(row1).CompareTo(dgvMain.Rows.IndexOf(row2)); }); foreach (DataGridViewRow dr in rows) { Console.WriteLine(dr.Cells[0].Value.ToString()); row_index = GetRowIndexByDataViewRow(dr); if (row_index < 0) return; CopyTask(row_index,ref row_indexes); } ShowDetail(); dgvMain.ClearSelection(); foreach (int idx in row_indexes) { dgvMain.Rows[idx].Selected = true; } break; //タスク削除 case "btnTaskDelete": row_index =0; foreach (DataGridViewRow dr in dgvMain.SelectedRows) { row_index = GetRowIndexByDataViewRow(dr); DeleteTask(row_index); } ShowDetail(); break; //閉じる case "btnExit": result = MessageBox.Show("現在のプロジェクトを閉じますが、よろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (result == DialogResult.Yes) { tabs.RemoveAt(tabControl.SelectedIndex); ShowProjectData(); tabControl.SelectedIndex = 0; } break; } }
//初期化 private void frmMain_Load(object sender, EventArgs e) { this.Visible = false; dgvMain.ReadOnly = true; dgvMain.ContextMenuStrip = cmsTabsMenu; current_project = ""; search_flag = false; is_multiple = false; tabs = new TabControl.TabPageCollection(tabControl); log = new LogManager(true); log.Write("dmpn Start--- " + DateTime.Now.ToShortDateString()); log.Write("getEnvData " + DateTime.Now); env_data = new EnvData(new Documents("", ""), new Project("", false, "", false), new Master("", false, ""), this.Left, this.Top, this.Width, this.Height); GetEnvData(); if (env_data.WindowLocation.X == 0 && env_data.WindowLocation.Y == 0) InitLocationAndSize(); this.Location = env_data.WindowLocation; this.Size = env_data.WindowSize; //メニューバーは作成しない //log.Write("CreateUserMenuBar2"); log.Write("OpenIndex " + DateTime.Now); log.Close(); if (env_data.Documents.Path.Length == 0) { Documents doc = env_data.Documents; doc.Path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\docmaker.net2\index.xml"; env_data.Documents = doc; Project pro = env_data.Project; pro.Folder=Path.GetDirectoryName(doc.Path)+@"\"; env_data.Project = pro; env_data.SaveEnvData(); if (!File.Exists(doc.Path)) { next_step = NextStep.SPLASH; MessageBox.Show("最初に環境設定をする必要があります。\n環境設定画面を表示します。\n You should set the environment first.", "警告", MessageBoxButtons.OK); frm_sub = new frmSubWindow(env_data, log, OpenWindowType.ENV_SETTINGS); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; } else StartApplication(); } else { StartApplication(); } }
//メニューバーの「メニュー」下アイテムをクリックした際の処理 private void menuToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) { DialogResult result; switch (e.ClickedItem.Name) { //環境設定 case "tsmiSettings": if (tabs.Count>1) result = MessageBox.Show("環境設定を開く前に開いているプロジェクトを閉じる必要があります。よろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); else result = DialogResult.Yes; if (result == DialogResult.Yes) { ClearTabs(); next_step = NextStep.PROJECT; frm_sub = new frmSubWindow(env_data, log, OpenWindowType.ENV_SETTINGS); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; } break; //事業所マスタを編集 case "tsmiOfficeMaster": try { frm_sub = new frmSubWindow(env_data, log, OpenWindowType.OFFICE_MASTER); } catch (Exception ex) { if (MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK) { break; } } frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //担当者マスタを編集 case "tsmiPersonMaster": try { frm_sub = new frmSubWindow(env_data, log, OpenWindowType.PERSON_MASTER); } catch (Exception ex) { if (MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK) { break; } } frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //処理内容マスタを編集 case "tsmiTaskMaster": try { frm_sub = new frmSubWindow(env_data, log, OpenWindowType.CATEGORY_MASTER); } catch (Exception ex) { if (MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK) { break; } } frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //状態マスタを編集 case "tsmiProgressMaster": try { frm_sub = new frmSubWindow(env_data, log, OpenWindowType.STATUS_MASTER); } catch (Exception ex) { if (MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK) { break; } } frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //画面関係ユーティリティ case "tsmiUtilities": break; //画面解像度 case "tsmiScreenResolution": MessageBox.Show("画面の解像度:" + Screen.PrimaryScreen.Bounds.Width + "×" + Screen.PrimaryScreen.Bounds.Height,"画面の解像度"); break; //リポジトリ case "tsmiRepository": SvnManager svn = new SvnManager(env_data); svn.TortoiseSvn("Project", "repobrowser", env_data.Project.Folder, env_data.Project.URL); break; //質問受付フォーム case "tsmiInquiry": string strMyURL = "http://www.docmaker.net/contact_us.html"; Process.Start(GetDefaultBrowser(), strMyURL); break; //docmaker.net メンバー検索 case "tsmiMember": string strMyURL2 = "http://www.docmaker.net/member/"; Process.Start(GetDefaultBrowser(), strMyURL2); break; //バージョン情報 case "tsmiVersion": frm_sub = new frmSubWindow(env_data, log, OpenWindowType.VERSION); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); frm_sub.Show(); this.Enabled = false; break; //docmaker.netホームページ case "tsmiHomepage": string strMyURL3 = "http://www.docmaker.net/"; Process.Start(GetDefaultBrowser(), strMyURL3); break; } }
//プロジェクト一覧の表示 private void ShowProjectData() { dgvMain.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight; dgvMain.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText; dgvMain.MultiSelect = false; ds_main = new DataSet(); if (Path.GetExtension(env_data.Documents.Path) == ".xml" && File.Exists(env_data.Documents.Path)) { try { ds_main.ReadXml(env_data.Documents.Path); } catch (Exception e) { MessageBox.Show(e.Message); return; } DataView dv=new DataView(ds_main.Tables["ProjectData"].Copy()); if (search_flag) { if (tbx1.Text != "") dv.RowFilter = "案件名 Like '%"+tbx1.Text+"%'"; } search_flag = false; InitDatagridView(dv); dgvMain.DataSource = dv; dgvMain.Columns.RemoveAt(2); int[] widths = { 120, 405, 80, 85, 85, 100, 60 }; for (int i = 0; i < dgvMain.Columns.Count; i++) { dgvMain.Columns[i].Width = widths[i]; } dgvMain.Rows[0].Selected = true; SetTaskRowsColor(); SetButtons(); } else { DialogResult result; result = MessageBox.Show("index.xmlファイルが見つかりません", "警告", MessageBoxButtons.OK,MessageBoxIcon.Error); if (result == DialogResult.OK) { if (frm_sub == null) { frm_sub = new frmSubWindow(env_data, log,OpenWindowType.ENV_SETTINGS); frm_sub.FormClosed += new FormClosedEventHandler(frmSubWindow_Closed); } next_step = NextStep.PROJECT; frm_sub.Show(); this.Enabled = false; } } }