77  Flex , 
88  Input , 
99  message , 
10-   Modal , 
1110  Popconfirm , 
1211  Space , 
1312  Splitter , 
@@ -44,8 +43,8 @@ import {pythonGenerator} from 'blockly/python';
4443
4544import  BlocklyComponent  from  './Blockly' ; 
4645
47- import  {   NewProjectNameModalProps ,  NewProjectNameModal   }  from  './modal/NewProjectNameModal' ; 
48- import  {   NewModuleNameModalProps ,  NewModuleNameModal   }  from  './modal/NewModuleNameModal' ; 
46+ import  *   as  NewProjectNameModal  from  './modal/NewProjectNameModal' ; 
47+ import  *   as  NewModuleNameModal  from  './modal/NewModuleNameModal' ; 
4948
5049import  *  as  CustomBlocks  from  './blocks/setup_custom_blocks' ; 
5150import  {  initialize  as  initializeGeneratedBlocks  }  from  './blocks/utils/generated/initialize' ; 
@@ -95,10 +94,13 @@ const App: React.FC = () => {
9594  const  [ newProjectNameModalPurpose ,  setNewProjectNameModalPurpose ]  =  useState ( '' ) ; 
9695  const  [ newProjectNameModalInitialValue ,  setNewProjectNameModalInitialValue ]  =  useState ( '' ) ; 
9796  const  [ newProjectNameModalTitle ,  setNewProjectNameModalTitle ]  =  useState ( '' ) ; 
97+   const  [ newProjectNameModalMessage ,  setNewProjectNameModalMessage ]  =  useState ( '' ) ; 
9898  const  [ newProjectNameModalIsOpen ,  setNewProjectNameModalIsOpen ]  =  useState ( false ) ; 
9999  const  [ newModuleNameModalPurpose ,  setNewModuleNameModalPurpose ]  =  useState ( '' ) ; 
100100  const  [ newModuleNameModalInitialValue ,  setNewModuleNameModalInitialValue ]  =  useState ( '' ) ; 
101101  const  [ newModuleNameModalTitle ,  setNewModuleNameModalTitle ]  =  useState ( '' ) ; 
102+   const  [ newModuleNameModalExample ,  setNewModuleNameModalExample ]  =  useState ( '' ) ; 
103+   const  [ newModuleNameModalLabel ,  setNewModuleNameModalLabel ]  =  useState ( '' ) ; 
102104  const  [ newModuleNameModalIsOpen ,  setNewModuleNameModalIsOpen ]  =  useState ( false ) ; 
103105  const  [ toolboxSettingsModalIsOpen ,  setToolboxSettingsModalIsOpen ]  =  useState ( false ) ; 
104106  const  [ popconfirmTitle ,  setPopconfirmTitle ]  =  useState ( '' ) ; 
@@ -192,7 +194,8 @@ const App: React.FC = () => {
192194    if  ( array . length  ===  0 )  { 
193195       setNewProjectNameModalPurpose ( PURPOSE_NEW_PROJECT ) ; 
194196       setNewProjectNameModalInitialValue ( '' ) ; 
195-        setNewProjectNameModalTitle ( 'Welcome to WPILib Blocks!' ) ; 
197+        setNewProjectNameModalTitle ( NewProjectNameModal . TITLE_WELCOME ) ; 
198+        setNewProjectNameModalMessage ( NewProjectNameModal . MESSAGE_WELCOME ) ; 
196199       setNewProjectNameModalIsOpen ( true ) ; 
197200    } 
198201  } ; 
@@ -242,7 +245,7 @@ const App: React.FC = () => {
242245        } 
243246        const  child : TreeDataNode  =  { 
244247          key : mechanism . modulePath , 
245-           title : mechanism . moduleName , 
248+           title : mechanism . className , 
246249          icon : < MechanismOutlined  /> , 
247250        } ; 
248251        children . push ( child ) ; 
@@ -256,7 +259,7 @@ const App: React.FC = () => {
256259        } 
257260        const  child : TreeDataNode  =  { 
258261          key : opMode . modulePath , 
259-           title : opMode . moduleName , 
262+           title : opMode . className , 
260263          icon : < OpModeOutlined  /> , 
261264        } ; 
262265        children . push ( child ) ; 
@@ -432,7 +435,8 @@ const App: React.FC = () => {
432435    checkIfBlocksWereModified ( ( )  =>  { 
433436      setNewProjectNameModalPurpose ( PURPOSE_NEW_PROJECT ) ; 
434437      setNewProjectNameModalInitialValue ( '' ) ; 
435-       setNewProjectNameModalTitle ( 'New Project' ) ; 
438+       setNewProjectNameModalTitle ( NewProjectNameModal . TITLE_NEW_PROJECT ) ; 
439+       setNewProjectNameModalMessage ( '' ) ; 
436440      setNewProjectNameModalIsOpen ( true ) ; 
437441    } ) ; 
438442  } ; 
@@ -457,8 +461,7 @@ const App: React.FC = () => {
457461    const  newProjectName  =  commonStorage . classNameToModuleName ( newProjectClassName ) ; 
458462    const  newProjectPath  =  commonStorage . makeProjectPath ( newProjectName ) ; 
459463    if  ( newProjectNameModalPurpose  ===  PURPOSE_NEW_PROJECT )  { 
460-       const  projectContent  =  commonStorage . newProjectContent ( 
461-           newProjectClassName ,  newProjectName ,  newProjectPath ) ; 
464+       const  projectContent  =  commonStorage . newProjectContent ( newProjectName ) ; 
462465      try  { 
463466        await  storage . createModule ( 
464467            commonStorage . MODULE_TYPE_PROJECT ,  newProjectPath ,  projectContent ) ; 
@@ -503,7 +506,9 @@ const App: React.FC = () => {
503506    checkIfBlocksWereModified ( ( )  =>  { 
504507      setNewModuleNameModalPurpose ( PURPOSE_NEW_MECHANISM ) ; 
505508      setNewModuleNameModalInitialValue ( '' ) ; 
506-       setNewModuleNameModalTitle ( 'New Mechanism' ) ; 
509+       setNewModuleNameModalTitle ( NewModuleNameModal . TITLE_NEW_MECHANISM ) ; 
510+       setNewModuleNameModalExample ( NewModuleNameModal . EXAMPLE_MECHANISM ) ; 
511+       setNewModuleNameModalLabel ( NewModuleNameModal . LABEL_MECHANISM ) ; 
507512      setNewModuleNameModalIsOpen ( true ) ; 
508513    } ) ; 
509514  } ; 
@@ -512,7 +517,9 @@ const App: React.FC = () => {
512517    checkIfBlocksWereModified ( ( )  =>  { 
513518      setNewModuleNameModalPurpose ( PURPOSE_NEW_OPMODE ) ; 
514519      setNewModuleNameModalInitialValue ( '' ) ; 
515-       setNewModuleNameModalTitle ( 'New OpMode' ) ; 
520+       setNewModuleNameModalTitle ( NewModuleNameModal . TITLE_NEW_OPMODE ) ; 
521+       setNewModuleNameModalExample ( NewModuleNameModal . EXAMPLE_OPMODE ) ; 
522+       setNewModuleNameModalLabel ( NewModuleNameModal . LABEL_OPMODE ) ; 
516523      setNewModuleNameModalIsOpen ( true ) ; 
517524    } ) ; 
518525  } ; 
@@ -524,24 +531,25 @@ const App: React.FC = () => {
524531  } ; 
525532
526533  // Provide a callback so the NewModuleNameModal will know what the existing 
527-   // module names are in the current project. 
528-   const  getModuleNames  =  ( projectName : string ) : string [ ]  =>  { 
529-     const  moduleNames : string [ ]  =  [ ] ; 
534+   // module class  names are in the current project. 
535+   const  getModuleClassNames  =  ( projectName : string ) : string [ ]  =>  { 
536+     const  moduleClassNames : string [ ]  =  [ ] ; 
530537    for  ( const  project  of  modules )  { 
531538      if  ( project . projectName  ===  projectName )  { 
532539        project . mechanisms . forEach ( ( mechanism )  =>  { 
533-           moduleNames . push ( mechanism . moduleName ) ; 
540+           moduleClassNames . push ( mechanism . className ) ; 
534541        } ) ; 
535542        project . opModes . forEach ( ( opMode )  =>  { 
536-           moduleNames . push ( opMode . moduleName ) ; 
543+           moduleClassNames . push ( opMode . className ) ; 
537544        } ) ; 
538545        break ; 
539546      } 
540547    } 
541-     return  moduleNames ; 
548+     return  moduleClassNames ; 
542549  } ; 
543550
544-   const  handleNewModuleNameOk  =  async  ( newModuleName : string )  =>  { 
551+   const  handleNewModuleNameOk  =  async  ( newModuleClassName : string )  =>  { 
552+     const  newModuleName  =  commonStorage . classNameToModuleName ( newModuleClassName ) ; 
545553    const  newModulePath  =  commonStorage . makeModulePath ( currentModule . projectName ,  newModuleName ) ; 
546554    if  ( newModuleNameModalPurpose  ===  PURPOSE_NEW_MECHANISM )  { 
547555      const  mechanismContent  =  commonStorage . newMechanismContent ( 
@@ -630,20 +638,25 @@ const App: React.FC = () => {
630638      if  ( currentModule . moduleType  ==  commonStorage . MODULE_TYPE_PROJECT )  { 
631639        // This is a Project. 
632640        setNewProjectNameModalPurpose ( PURPOSE_RENAME_PROJECT ) ; 
633-         setNewProjectNameModalInitialValue ( currentModule . projectName ) ; 
634-         setNewProjectNameModalTitle ( 'Rename Project' ) ; 
641+         setNewProjectNameModalInitialValue ( commonStorage . moduleNameToClassName ( currentModule . projectName ) ) ; 
642+         setNewProjectNameModalTitle ( NewProjectNameModal . TITLE_RENAME_PROJECT ) ; 
643+         setNewProjectNameModalMessage ( '' ) ; 
635644        setNewProjectNameModalIsOpen ( true ) ; 
636645      }  else  if  ( currentModule . moduleType  ==  commonStorage . MODULE_TYPE_MECHANISM )  { 
637646        // This is a Mechanism. 
638647        setNewModuleNameModalPurpose ( PURPOSE_RENAME_MODULE ) ; 
639-         setNewModuleNameModalInitialValue ( currentModule . moduleName ) ; 
640-         setNewModuleNameModalTitle ( 'Rename Mechanism' ) ; 
648+         setNewModuleNameModalInitialValue ( currentModule . className ) ; 
649+         setNewModuleNameModalTitle ( NewModuleNameModal . TITLE_RENAME_MECHANISM ) ; 
650+         setNewModuleNameModalExample ( NewModuleNameModal . EXAMPLE_MECHANISM ) ; 
651+         setNewModuleNameModalLabel ( NewModuleNameModal . LABEL_MECHANISM ) ; 
641652        setNewModuleNameModalIsOpen ( true ) ; 
642653      }  else  if  ( currentModule . moduleType  ==  commonStorage . MODULE_TYPE_OPMODE )  { 
643654        // This is an OpMode. 
644655        setNewModuleNameModalPurpose ( PURPOSE_RENAME_MODULE ) ; 
645-         setNewModuleNameModalInitialValue ( currentModule . moduleName ) ; 
646-         setNewModuleNameModalTitle ( 'Rename OpMode' ) ; 
656+         setNewModuleNameModalInitialValue ( currentModule . className ) ; 
657+         setNewModuleNameModalTitle ( NewModuleNameModal . TITLE_RENAME_OPMODE ) ; 
658+         setNewModuleNameModalExample ( NewModuleNameModal . EXAMPLE_OPMODE ) ; 
659+         setNewModuleNameModalLabel ( NewModuleNameModal . LABEL_OPMODE ) ; 
647660        setNewModuleNameModalIsOpen ( true ) ; 
648661      } 
649662    } ) ; 
@@ -657,20 +670,25 @@ const App: React.FC = () => {
657670      if  ( currentModule . moduleType  ==  commonStorage . MODULE_TYPE_PROJECT )  { 
658671        // This is a Project. 
659672        setNewProjectNameModalPurpose ( PURPOSE_COPY_PROJECT ) ; 
660-         setNewProjectNameModalInitialValue ( currentModule . projectName  +  '_copy' ) ; 
661-         setNewProjectNameModalTitle ( 'Copy Project' ) ; 
673+         setNewProjectNameModalInitialValue ( commonStorage . moduleNameToClassName ( currentModule . projectName )  +  'Copy' ) ; 
674+         setNewProjectNameModalTitle ( NewProjectNameModal . TITLE_COPY_PROJECT ) ; 
675+         setNewProjectNameModalMessage ( '' ) ; 
662676        setNewProjectNameModalIsOpen ( true ) ; 
663677      }  else  if  ( currentModule . moduleType  ==  commonStorage . MODULE_TYPE_MECHANISM )  { 
664678        // This is a Mechanism. 
665679        setNewModuleNameModalPurpose ( PURPOSE_COPY_MODULE ) ; 
666-         setNewModuleNameModalInitialValue ( currentModule . moduleName  +  '_copy' ) ; 
667-         setNewModuleNameModalTitle ( 'Copy Mechanism' ) ; 
680+         setNewModuleNameModalInitialValue ( currentModule . className  +  'Copy' ) ; 
681+         setNewModuleNameModalTitle ( NewModuleNameModal . TITLE_COPY_MECHANISM ) ; 
682+         setNewModuleNameModalExample ( NewModuleNameModal . EXAMPLE_MECHANISM ) ; 
683+         setNewModuleNameModalLabel ( NewModuleNameModal . LABEL_MECHANISM ) ; 
668684        setNewModuleNameModalIsOpen ( true ) ; 
669685      }  else  if  ( currentModule . moduleType  ==  commonStorage . MODULE_TYPE_OPMODE )  { 
670686        // This is an OpMode. 
671687        setNewModuleNameModalPurpose ( PURPOSE_COPY_MODULE ) ; 
672-         setNewModuleNameModalInitialValue ( currentModule . moduleName  +  '_copy' ) ; 
673-         setNewModuleNameModalTitle ( 'Copy OpMode' ) ; 
688+         setNewModuleNameModalInitialValue ( currentModule . className  +  'Copy' ) ; 
689+         setNewModuleNameModalTitle ( NewModuleNameModal . TITLE_COPY_OPMODE ) ; 
690+         setNewModuleNameModalExample ( NewModuleNameModal . EXAMPLE_OPMODE ) ; 
691+         setNewModuleNameModalLabel ( NewModuleNameModal . LABEL_OPMODE ) ; 
674692        setNewModuleNameModalIsOpen ( true ) ; 
675693      } 
676694    } ) ; 
@@ -1084,8 +1102,9 @@ const App: React.FC = () => {
10841102        </ Splitter > 
10851103      </ Flex > 
10861104
1087-       < NewProjectNameModal 
1105+       < NewProjectNameModal . NewProjectNameModal 
10881106        title = { newProjectNameModalTitle } 
1107+         message = { newProjectNameModalMessage } 
10891108        isOpen = { newProjectNameModalIsOpen } 
10901109        initialValue = { newProjectNameModalInitialValue } 
10911110        getProjectClassNames = { getProjectClassNames } 
@@ -1095,12 +1114,14 @@ const App: React.FC = () => {
10951114        } } 
10961115        onCancel = { ( )  =>  setNewProjectNameModalIsOpen ( false ) } 
10971116      /> 
1098-       < NewModuleNameModal 
1117+       < NewModuleNameModal . NewModuleNameModal 
10991118        title = { newModuleNameModalTitle } 
1119+         example = { newModuleNameModalExample } 
1120+         label = { newModuleNameModalLabel } 
11001121        isOpen = { newModuleNameModalIsOpen } 
11011122        initialValue = { newModuleNameModalInitialValue } 
11021123        getCurrentProjectName = { getCurrentProjectName } 
1103-         getModuleNames = { getModuleNames } 
1124+         getModuleClassNames = { getModuleClassNames } 
11041125        onOk = { ( newName )  =>  { 
11051126          setNewModuleNameModalIsOpen ( false ) ; 
11061127          handleNewModuleNameOk ( newName ) ; 
0 commit comments