2424// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2525// THE SOFTWARE.
2626using System ;
27- using System . Threading ;
28- using System . Threading . Tasks ;
2927using MonoDevelop . Core ;
3028using MonoDevelop . Ide ;
3129using Xwt ;
@@ -36,12 +34,14 @@ namespace MonoDevelop.AspNetCore.Scaffolding
3634 class ScaffolderTemplateSelectPage : ScaffolderWizardPageBase
3735 {
3836 ListBox listBox ;
39- ScaffolderArgs args ;
37+ readonly ScaffolderArgs args ;
38+ ScaffolderBase [ ] scaffolders ;
4039
4140 public event EventHandler ScaffolderSelected ;
41+
4242 public ScaffolderTemplateSelectPage ( ScaffolderArgs args ) : base ( args )
4343 {
44- this . SubSubTitle = GettextCatalog . GetString ( "Select Scaffolder" ) ;
44+ SubSubTitle = GettextCatalog . GetString ( "Select Scaffolder" ) ;
4545 this . args = args ;
4646 }
4747
@@ -67,7 +67,7 @@ protected override Widget GetMainControl ()
6767
6868 var listStore = new ListStore ( icon , name ) ;
6969
70- var scaffolders = GetScaffolders ( ) . Value ;
70+ scaffolders = GetScaffolders ( ) . Value ;
7171
7272 foreach ( var scaffolder in scaffolders ) {
7373 var row = listStore . AddRow ( ) ;
@@ -84,12 +84,31 @@ protected override Widget GetMainControl ()
8484 listBox . DataSource = listStore ;
8585 listBox . HeightRequest = 300 ;
8686 listBox . WidthRequest = 300 ;
87- listBox . SelectionChanged += ( sender , e ) => Args . Scaffolder = scaffolders [ listBox . SelectedRow ] ;
88- listBox . RowActivated += ( sender , e ) => ScaffolderSelected ? . Invoke ( sender , e ) ;
87+ listBox . SelectionChanged += SelectionChanged ;
88+ listBox . RowActivated += RowActivated ;
8989 listBox . SelectRow ( 0 ) ;
9090 listBox . FocusedRow = 0 ;
9191 listBox . SetFocus ( ) ;
9292 return listBox ;
9393 }
94- }
94+
95+ void SelectionChanged ( object sender , EventArgs e )
96+ {
97+ Args . Scaffolder = scaffolders [ listBox . SelectedRow ] ;
98+ }
99+
100+ void RowActivated ( object sender , EventArgs e )
101+ {
102+ ScaffolderSelected ? . Invoke ( sender , e ) ;
103+ }
104+
105+ protected override void Dispose ( bool disposing )
106+ {
107+ if ( listBox != null ) {
108+ listBox . SelectionChanged -= SelectionChanged ;
109+ listBox . RowActivated -= RowActivated ;
110+ }
111+ base . Dispose ( disposing ) ;
112+ }
113+ }
95114}
0 commit comments