22using Common ;
33using Context ;
44using DataDefine ;
5+ using FreesqlGenCode . controls ;
56using Model ;
7+ using System . Windows . Forms ;
8+ using static System . Windows . Forms . VisualStyles . VisualStyleElement ;
69
710namespace FreesqlGenCode
811{
@@ -14,6 +17,7 @@ public Form1()
1417 {
1518 InitializeComponent ( ) ;
1619 InitTreeView ( ) ;
20+ InitTabControl ( ) ;
1721 }
1822 /// <summary>
1923 /// 初始化TreeNode
@@ -42,18 +46,15 @@ private void InitTreeView()
4246 treeView1 . ExpandAll ( ) ;
4347 treeView1 . EndUpdate ( ) ;
4448 #endregion
49+ }
4550
51+ private void InitTabControl ( ) {
4652 #region 初始化tabControl
4753 ImageList tabImageList = new ImageList ( ) ;
4854 tabImageList . Images . Add ( Properties . Resources . close ) ;
4955 tabControl1 . ImageList = tabImageList ;
50- if ( tabControl1 . TabPages . Count > 0 )
51- {
52-
53- }
56+ //tabControl1.TabPages.Clear();
5457 #endregion
55-
56-
5758 }
5859
5960 private void fsPictureBox1_FsClick ( object sender , EventArgs e )
@@ -177,6 +178,8 @@ private void treeView1_DoubleClick(object sender, EventArgs e)
177178 private void rootTreeNodeReToolStripMenuItem_Click ( object sender , EventArgs e )
178179 {
179180 InitTreeView ( ) ;
181+ //暂时
182+ tabControl1 . TabPages . Clear ( ) ;
180183 }
181184 /// <summary>
182185 /// TreeNode 关闭连接
@@ -195,20 +198,12 @@ private void conctCloseToolStripMenuItem_Click(object sender, EventArgs e)
195198 treeView1 . EndUpdate ( ) ;
196199 FsDatabase fsDatabase = ( FsDatabase ) node . Tag ;
197200 Context . ContextUtils . DelDBConnect ( fsDatabase . DBKey ) ;
198- CloseResourceClear ( ) ;
199- }
200-
201- private void CloseResourceClear ( )
202- {
203- dataGridViewTop1 . Rows . Clear ( ) ;
204- tabPage1 . Text = "" ;
205- tabPage1 . ToolTipText = "" ;
206201
207- genCodeRichTextBox1 . Text = "" ;
208- selectTableNode = null ;
209- listFileInfo . Clear ( ) ;
202+ tabControl1 . TabPages . Clear ( ) ;
210203 }
211204
205+
206+
212207 /// <summary>
213208 /// TreeNode 打开节点连接
214209 /// </summary>
@@ -321,15 +316,9 @@ private void dbCloseToolStripMenuItem_Click(object sender, EventArgs e)
321316 treeView1 . BeginUpdate ( ) ;
322317 node . Nodes . Clear ( ) ;
323318 treeView1 . EndUpdate ( ) ;
324- CloseResourceClear ( ) ;
319+ tabControl1 . TabPages . Clear ( ) ;
325320 }
326321
327- private List < FileInfo > listFileInfo = new List < FileInfo > ( ) ;
328- delegate void DelegateMethod ( int a ) ;
329-
330-
331- TreeNode ? selectTableNode ;
332-
333322 /// <summary>
334323 /// 代码生成
335324 /// </summary>
@@ -343,10 +332,6 @@ private void modelGenToolStripMenuItem_Click(object sender, EventArgs e)
343332 {
344333 return ;
345334 }
346- tabPage1 . Select ( ) ;
347- tabControl1 . SelectedTab = tabPage1 ;
348- selectTableNode = null ;
349- listFileInfo . Clear ( ) ;
350335
351336 FormLoading frmLoading = null ;
352337 ThreadPool . QueueUserWorkItem ( new WaitCallback ( a =>
@@ -358,54 +343,68 @@ private void modelGenToolStripMenuItem_Click(object sender, EventArgs e)
358343 } ) ;
359344 } ) ) ;
360345
346+ FileInfo [ ] fileInfos = FileUtil . loadTemplates ( "" ) ;
347+
361348 FsDatabase fsDatabase = ( FsDatabase ) node . Tag ;
362349 DBConnect dBConnect = ContextUtils . GetDBConnect ( fsDatabase . DBKey ) ;
363350 if ( dBConnect . TestConnect ( ) )
364351 {
365- selectTableNode = node ;
366-
367352 TreeNode parentNode = node . Parent ;
368- dataGridViewTop1 . Rows . Clear ( ) ;
369353 string selTable = parentNode . Text + "." + node . Text ;
370354 List < List < string > > listCols = dBConnect . GetColInfos ( selTable ) ;
371- foreach ( List < string > colInfo in listCols )
372- {
373- dataGridViewTop1 . Rows . Add ( colInfo . ToArray ( ) ) ;
374- }
375- //选项卡
376- tabPage1 . Text = "单表代码生成:" + selTable ;
377- tabPage1 . ToolTipText = selTable ;
378-
379- selectTempleteComboBox1 . Items . Clear ( ) ;
380-
381-
382- Task . Run ( ( ) => {
383- FileInfo [ ] fileInfos = FileUtil . loadTemplates ( "" ) ;
384- var deleteMethod1 = new DelegateMethod ( ( a ) => {
385- this . selectTempleteComboBox1 . Items . Insert ( a , fileInfos [ a ] . Name ) ;
386- } ) ;
387- for ( int i = 0 ; i < fileInfos . Length ; i ++ )
388- {
389- this . selectTempleteComboBox1 . Invoke ( deleteMethod1 , i ) ;
390- listFileInfo . Add ( fileInfos [ i ] ) ;
391- }
392- if ( fileInfos . Length > 0 && this . selectTempleteComboBox1 . Items . Count > 0 )
393- {
394- this . selectTempleteComboBox1 . Invoke ( ( ) => {
395- this . selectTempleteComboBox1 . SelectedItem = this . selectTempleteComboBox1 . Items [ 0 ] ;
396- string htmlTemplate = File . ReadAllText ( fileInfos [ 0 ] . FullName ) ;
397- this . genCodeRichTextBox1 . Text = htmlTemplate ;
398- } ) ;
399- }
400-
401- } ) ;
355+ TabPageTag tag = new TabPageTag ( ) ;
356+ tag . DBKey = fsDatabase . DBKey ;
357+ tag . TableName = selTable ;
358+ tag . fsDatabase = fsDatabase ;
359+ tag . treeNodeTableNode = node ;
360+ openSingleTableTabPage ( listCols , tag , fileInfos ) ;
402361 }
403362 else
404363 {
405364 MessageBox . Show ( "数据库连接不可用!" + dBConnect . GetException ( ) ) ;
406365 return ;
407366 }
408- this . Invoke ( ( Action ) delegate ( ) { frmLoading ? . Close ( ) ; } ) ;
367+ this . Invoke ( ( Action ) delegate ( ) {
368+ frmLoading ? . Close ( ) ;
369+ } ) ;
370+ treeView1 . SelectedNode = node ;
371+ }
372+
373+ private void openSingleTableTabPage ( List < List < string > > listCols , TabPageTag tag , FileInfo [ ] fileInfos )
374+ {
375+ int cntPages = tabControl1 . TabPages . Count ;
376+ TabPage ? tabPage = null ;
377+ for ( int i = 0 ; i < cntPages ; i ++ )
378+ {
379+ TabPage next = tabControl1 . TabPages [ i ] ;
380+ TabPageTag nextTag = ( TabPageTag ) next . Tag ;
381+ if ( nextTag . DBKey == tag . DBKey && nextTag . TableName == tag . TableName )
382+ {
383+ tabPage = next ;
384+ break ;
385+ }
386+ }
387+ if ( tabPage == null )
388+ {
389+ tabPage = new TabPage ( ) ;
390+ MySingleControl . listFileInfo = fileInfos . ToList ( ) ;
391+ MySingleControl mySingleControl = new MySingleControl ( ) ;
392+ mySingleControl . Dock = System . Windows . Forms . DockStyle . Fill ;
393+ mySingleControl . Location = new System . Drawing . Point ( 0 , 0 ) ;
394+ mySingleControl . Name = "mySingleControl" ;
395+ mySingleControl . Padding = new System . Windows . Forms . Padding ( 3 ) ;
396+ mySingleControl . TabIndex = 0 ;
397+ tabPage . Controls . Add ( mySingleControl ) ;
398+ tabPage . Text = "单表 " + tag . TableName ;
399+ tabPage . ToolTipText = tabPage . Text ;
400+ foreach ( List < string > colInfo in listCols )
401+ {
402+ mySingleControl . dataGridViewTop1 . Rows . Add ( colInfo . ToArray ( ) ) ;
403+ }
404+ tabPage . Tag = tag ;
405+ tabControl1 . TabPages . Add ( tabPage ) ;
406+ }
407+ tabControl1 . SelectedTab = tabPage ;
409408 }
410409
411410
@@ -416,68 +415,21 @@ private void modelGenToolStripMenuItem_Click(object sender, EventArgs e)
416415 /// <param name="e"></param>
417416 private void mulTableGenToolStripMenuItem_Click ( object sender , EventArgs e )
418417 {
419- tabPage2 . Select ( ) ;
420- tabControl1 . SelectedTab = tabPage2 ;
418+ // tabPage2.Select();
419+ // tabControl1.SelectedTab = tabPage2;
421420 }
422421
423- /// <summary>
424- /// 选择模板
425- /// </summary>
426- /// <param name="sender"></param>
427- /// <param name="e"></param>
428- private void selectTempleteComboBox1_SelectedIndexChanged ( object sender , EventArgs e )
429- {
430- string fileName = selectTempleteComboBox1 . SelectedItem as string ;
431- FileInfo fileInfo = listFileInfo . Where ( a => a . Name == fileName ) . FirstOrDefault ( ) ;
432- if ( fileInfo != null )
433- {
434- string htmlTemplate = File . ReadAllText ( fileInfo . FullName ) ;
435- this . genCodeRichTextBox1 . Text = htmlTemplate ;
436- }
437- }
422+
423+ }
438424
439- /// <summary>
440- /// 生成代码
441- /// </summary>
442- /// <param name="sender"></param>
443- /// <param name="e"></param>
444- private void genCodeButton1_Click ( object sender , EventArgs e )
445- {
446- if ( selectTableNode == null )
447- {
448- MessageBox . Show ( "请选择数据表" ) ;
449- return ;
450- }
451- if ( string . IsNullOrWhiteSpace ( namespaceText . Text ) )
452- {
453- MessageBox . Show ( "请输入命名空间" ) ;
454- return ;
455- }
456- if ( listFileInfo . Count == 0 )
457- {
458- MessageBox . Show ( "请选择模板" ) ;
459- return ;
460- }
461- FsDatabase database = ( FsDatabase ) selectTableNode . Tag ;
462- TaskBuild task = ContextUtils . CreateTaskBuild ( database . DBKey , selectTableNode . Parent . Text ) ;
463- task . tableName = selectTableNode . Text ;
464- task . FileName = selectTempleteComboBox1 . SelectedText ;
465- task . NamespaceName = namespaceText . Text ;
466- task . FilterTableChar = filterTablenameText . Text ;
467- task . FirstUpper = firstCharUpperCheckBox1 . Checked ;
468- task . AllLower = allLowerCheckBox1 . Checked ;
469- task . UnderLineTranser = underLineToCheckBox2 . Checked ;
470- task . Templates = new Template [ ] { new Template ( ) {
471- TemplatePath = selectTempleteComboBox1 . SelectedItem as string ,
472- TemplateText = genCodeRichTextBox1 . Text ,
473- IsChangeText = false ,
474- } } ;
475- FormShowGenCode formShowGenCode = new FormShowGenCode ( listFileInfo , task ) ;
476- DialogResult rs = formShowGenCode . ShowDialog ( ) ;
477- if ( rs == DialogResult . OK )
478- {
425+ class TabPageTag
426+ {
427+ public string DBKey { get ; set ; }
479428
480- }
481- }
429+ public string TableName { get ; set ; }
430+
431+ public FsDatabase fsDatabase { get ; set ; }
432+
433+ public TreeNode treeNodeTableNode { get ; set ; }
482434 }
483435}
0 commit comments