//�I������ public void Dispose() { // if (RunMode != RunMode.Service && RunMode != RunMode.Remote) { // //********************************************** // // ��U�t�@�C����폜���Č��ݗL���Ȃ�̂���������߂� // //********************************************** // var iniDb = new IniDb(ProgDir(),"Option"); // iniDb.DeleteIni(); //Ver5.8.6 Java fix if (RunMode == RunMode.Normal) { var iniTmp = new IniDb(ProgDir(), "$tmp");//�o�b�N�A�b�v��쐬����ini�t�@�C����폜���� //��U�A�ʃt�@�C���Ɍ��ݗL���Ȃ�̂���������߂� ListOption.Save(iniTmp); //�㏑������ File.Copy(iniTmp.Path, IniDb.Path, true); iniTmp.Delete(); } else if (RunMode == RunMode.Remote) { IniDb.Delete(); //$Remote.ini�̍폜 } //********************************************** // �j�� //********************************************** ListServer.Dispose(); //�e�T�[�o�͒�~����� ListOption.Dispose(); ListTool.Dispose(); MailBox = null; // } if (RemoteClient != null) { RemoteClient.Dispose(); } View.Dispose(); if (TraceDlg != null) { TraceDlg.Dispose(); } if (Menu != null) { Menu.Dispose(); } if (WindowSize != null) { View.Save(WindowSize); WindowSize.Dispose(); //Dispose���Ȃ���Reg.Dispose(�ۑ�)����Ȃ� } }
//終了処理 public void Dispose() { // if (RunMode != RunMode.Service && RunMode != RunMode.Remote) { // //********************************************** // // 一旦ファイルを削除して現在有効なものだけを書き戻す // //********************************************** // var iniDb = new IniDb(ProgDir(),"Option"); // iniDb.DeleteIni(); //Ver5.8.6 Java fix if (RunMode == RunMode.Normal) { var iniTmp = new IniDb(ProgDir(), "$tmp");//バックアップを作成してiniファイルを削除する //一旦、別ファイルに現在有効なものだけを書き戻す ListOption.Save(iniTmp); //上書きする File.Copy(iniTmp.Path, IniDb.Path, true); iniTmp.Delete(); } else if (RunMode == RunMode.Remote) { IniDb.Delete(); //$Remote.iniの削除 } //********************************************** // 破棄 //********************************************** ListServer.Dispose(); //各サーバは停止される ListOption.Dispose(); ListTool.Dispose(); MailBox = null; // } if (RemoteClient != null) { RemoteClient.Dispose(); } View.Dispose(); if (TraceDlg != null) { TraceDlg.Dispose(); } if (Menu != null) { Menu.Dispose(); } if (WindowSize != null) { View.Save(WindowSize); WindowSize.Dispose(); //DisposeしないとReg.Dispose(保存)されない } }
//���j���[�I����̏��� public void MenuOnClick(String cmd) { if (cmd.IndexOf("Option_") == 0) { if (RunMode == RunMode.Remote) { //Java fix RunMOde==Remote�̏ꍇ�̃��j���[���� RemoteClient.MenuOnClick(cmd); } else { var oneOption = ListOption.Get(cmd.Substring(7)); if (oneOption != null) { var dlg = new OptionDlg(this, oneOption); if (DialogResult.OK == dlg.ShowDialog()) { //Ver5.8.6 Java fix //oneOption.Save(OptionIni.GetInstance()); oneOption.Save(IniDb); MenuOnClick("StartStop_Reload"); } } } } else if (cmd.IndexOf("Tool_") == 0) { if (RunMode == RunMode.Remote) { //Java fix RunMOde==Remote�̏ꍇ�̃��j���[���� RemoteClient.MenuOnClick(cmd); } else { var nameTag = cmd.Substring(5); var oneTool = ListTool.Get(nameTag); if (oneTool == null) { return; } //BJD.EXE�ȊO�̏ꍇ�A�T�[�o�I�u�W�F�N�g�ւ̃|�C���^���K�v�ɂȂ� OneServer oneServer = null; if (nameTag != "BJD") { oneServer = ListServer.Get(nameTag); if (oneServer == null) { return; } } ToolDlg dlg = oneTool.CreateDlg(oneServer); dlg.ShowDialog(); } } else if (cmd.IndexOf("StartStop_") == 0) { if (RunMode == RunMode.Remote) { //Java fix RunMOde==Remote�̏ꍇ�̃��j���[���� RemoteClient.MenuOnClick(cmd); } else { switch (cmd) { case "StartStop_Start": Start(); break; case "StartStop_Stop": Stop(); break; case "StartStop_Restart": Stop(); Thread.Sleep(300); Start(); break; case "StartStop_Reload": Stop(); ListInitialize(); Start(); break; case "StartStop_Service": SetupService(); //�T�[�r�X�̐ݒ� break; default: Util.RuntimeException(string.Format("cmd={0}", cmd)); break; } View.SetColor(); //�E�C���h�̃J���[������ Menu.SetEnable(); //��Ԃɉ������L���E���� } } else { switch (cmd) { case "File_LogClear": LogView.Clear(); break; case "File_LogCopy": LogView.SetClipboard(); break; case "File_Trace": TraceDlg.Open(); break; case "File_Exit": View.MainForm.Close(); break; case "Help_Version": var dlg = new VersionDlg(this); dlg.ShowDialog(); break; case "Help_Homepage": Process.Start(Define.WebHome()); break; case "Help_Document": Process.Start(Define.WebDocument()); break; case "Help_Support": Process.Start(Define.WebSupport()); break; } } }
//�N�����ɁA�R���X�g���N�^����Ăяo����鏉���� private void DefaultInitialize(MainForm mainForm, ListView listViewLog, MenuStrip menuStrip, NotifyIcon notifyIcon) { RunMode = RunMode.Normal; RemoteConnect = null;//�����[�g����Őڑ�����Ă��鎞��������������� //logger�����������܂ł̃��O��ꎞ�I�ɕۊǂ��� //ArrayList<LogTemporary> tmpLogger = new ArrayList<>(); //�v���Z�X�N�����ɏ���������� View = new View(this, mainForm, listViewLog, notifyIcon); //logView = new LogView(listViewLog); LogView = new LogView(this, listViewLog); Menu = new Menu(this, menuStrip); //�����ł́A�I�u�W�F�N�g�̐����̂݁Amenu.Initialize()�́AlistInitialize()�̒��ŌĂяo����� DnsCache = new DnsCache(); Wait = new Wait(); Ver = new Ver(); //�o�[�W�����Ǘ� //Java fix //RunMode�̏����� if (mainForm == null) { RunMode = RunMode.Service; //�T�[�r�X�N�� } else { if (Environment.GetCommandLineArgs().Length > 1) { RunMode = RunMode.Remote; //�����[�g�N���C�A���g } else { //�T�[�r�X�o�^�̏�Ԃ�擾���� var setupService = new SetupService(this); if (setupService.IsRegist) { RunMode = RunMode.NormalRegist; //�T�[�r�X�o�^������� } } } //Ver5.8.6 Java fix //OptionIni.Create(this); //�C���X�^���X�̏����� IniDb = new IniDb(ProgDir(), (RunMode == RunMode.Remote) ? "$remote" : "Option"); MailBox = null; ListInitialize(); //�T�[�o�ċN���ŁA�ēx���s����鏉���� if (_isTest) { return; } //�E�C���h�T�C�Y�̕��� var path = string.Format("{0}\\BJD.ini", ProgDir()); try{ //�E�C���h�E�̊O�ς�ۑ��E����(View���O�ɏ���������) WindowSize = new WindowSize(new Conf(ListOption.Get("Basic")), path); View.Read(WindowSize); } catch (IOException) { WindowSize = null; // �w�肳�ꂽWindow���ۑ��t�@�C��(BJD.ini)��IO�G���[���������Ă��� _logger.Set(LogKind.Error, null, 9000022, path); } //TraceDlg = new TraceDlg(this, (mainForm != null) ? mainForm.getFrame() : null); //�g���[�X�\�� TraceDlg = new TraceDlg(this); //�g���[�X�\�� switch (RunMode) { case RunMode.Normal: MenuOnClick("StartStop_Start"); //���j���[�I��C�x���g break; case RunMode.Remote: RemoteClient = new RemoteClient(this); RemoteClient.Start(); break; //Java fix Ver5.8.3 case RunMode.NormalRegist: case RunMode.Service: break; default: Util.RuntimeException("Kernel.defaultInitialize() not implement (RunMode)"); break; } //Java fix Ver5.8.3 View.SetColor();//�E�C���h�F�̏����� }
//メニュー選択時の処理 public void MenuOnClick(String cmd) { if (cmd.IndexOf("Option_") == 0) { if (RunMode == RunMode.Remote) { //Java fix RunMOde==Remoteの場合のメニュー処理 RemoteClient.MenuOnClick(cmd); } else { var oneOption = ListOption.Get(cmd.Substring(7)); if (oneOption != null) { var dlg = new OptionDlg(this, oneOption); if (DialogResult.OK == dlg.ShowDialog()) { //Ver5.8.6 Java fix //oneOption.Save(OptionIni.GetInstance()); oneOption.Save(IniDb); MenuOnClick("StartStop_Reload"); } } } } else if (cmd.IndexOf("Tool_") == 0) { if (RunMode == RunMode.Remote) { //Java fix RunMOde==Remoteの場合のメニュー処理 RemoteClient.MenuOnClick(cmd); } else { var nameTag = cmd.Substring(5); var oneTool = ListTool.Get(nameTag); if (oneTool == null) { return; } //BJD.EXE以外の場合、サーバオブジェクトへのポインタが必要になる OneServer oneServer = null; if (nameTag != "BJD") { oneServer = ListServer.Get(nameTag); if (oneServer == null) { return; } } ToolDlg dlg = oneTool.CreateDlg(oneServer); dlg.ShowDialog(); } } else if (cmd.IndexOf("StartStop_") == 0) { if (RunMode == RunMode.Remote) { //Java fix RunMOde==Remoteの場合のメニュー処理 RemoteClient.MenuOnClick(cmd); } else { switch (cmd) { case "StartStop_Start": Start(); break; case "StartStop_Stop": Stop(); break; case "StartStop_Restart": Stop(); Thread.Sleep(300); Start(); break; case "StartStop_Reload": Stop(); ListInitialize(); Start(); break; case "StartStop_Service": SetupService(); //サービスの設定 break; default: Util.RuntimeException(string.Format("cmd={0}", cmd)); break; } View.SetColor(); //ウインドのカラー初期化 Menu.SetEnable(); //状態に応じた有効・無効 } } else { switch (cmd) { case "File_LogClear": LogView.Clear(); break; case "File_LogCopy": LogView.SetClipboard(); break; case "File_Trace": TraceDlg.Open(); break; case "File_Exit": View.MainForm.Close(); break; case "Help_Version": var dlg = new VersionDlg(this); dlg.ShowDialog(); break; case "Help_Homepage": Process.Start(Define.WebHome()); break; case "Help_Document": Process.Start(Define.WebDocument()); break; case "Help_Support": Process.Start(Define.WebSupport()); break; } } }
//起動時に、コンストラクタから呼び出される初期化 private void DefaultInitialize(MainForm mainForm, ListView listViewLog, MenuStrip menuStrip, NotifyIcon notifyIcon) { RunMode = RunMode.Normal; RemoteConnect = null;//リモート制御で接続されている時だけ初期化される //loggerが生成されるまでのログを一時的に保管する //ArrayList<LogTemporary> tmpLogger = new ArrayList<>(); //プロセス起動時に初期化される View = new View(this, mainForm, listViewLog, notifyIcon); //logView = new LogView(listViewLog); LogView = new LogView(this, listViewLog); Menu = new Menu(this, menuStrip); //ここでは、オブジェクトの生成のみ、menu.Initialize()は、listInitialize()の中で呼び出される DnsCache = new DnsCache(); Wait = new Wait(); Ver = new Ver(); //バージョン管理 //Java fix //RunModeの初期化 if (mainForm == null) { RunMode = RunMode.Service; //サービス起動 } else { if (Environment.GetCommandLineArgs().Length > 1) { RunMode = RunMode.Remote; //リモートクライアント } else { //サービス登録の状態を取得する var setupService = new SetupService(this); if (setupService.IsRegist) { RunMode = RunMode.NormalRegist; //サービス登録完了状態 } } } //Ver5.8.6 Java fix //OptionIni.Create(this); //インスタンスの初期化 IniDb = new IniDb(ProgDir(), (RunMode == RunMode.Remote) ? "$remote" : "Option"); MailBox = null; ListInitialize(); //サーバ再起動で、再度実行される初期化 if (_isTest) { return; } //ウインドサイズの復元 var path = string.Format("{0}\\BJD.ini", ProgDir()); try { //ウインドウの外観を保存・復元(Viewより前に初期化する) WindowSize = new WindowSize(new Conf(ListOption.Get("Basic")), path); View.Read(WindowSize); } catch (IOException) { WindowSize = null; // 指定されたWindow情報保存ファイル(BJD.ini)にIOエラーが発生している _logger.Set(LogKind.Error, null, 9000022, path); } //TraceDlg = new TraceDlg(this, (mainForm != null) ? mainForm.getFrame() : null); //トレース表示 TraceDlg = new TraceDlg(this); //トレース表示 switch (RunMode) { case RunMode.Normal: MenuOnClick("StartStop_Start"); //メニュー選択イベント break; case RunMode.Remote: RemoteClient = new RemoteClient(this); RemoteClient.Start(); break; //Java fix Ver5.8.3 case RunMode.NormalRegist: case RunMode.Service: break; default: Util.RuntimeException("Kernel.defaultInitialize() not implement (RunMode)"); break; } //Java fix Ver5.8.3 View.SetColor();//ウインド色の初期化 }