33import net .sourceforge .squirrel_sql .client .Main ;
44import net .sourceforge .squirrel_sql .client .session .ISession ;
55import net .sourceforge .squirrel_sql .fw .gui .GUIUtils ;
6+ import net .sourceforge .squirrel_sql .fw .gui .checkedlistbox .CheckedListBoxHandler ;
7+ import net .sourceforge .squirrel_sql .fw .gui .checkedlistbox .CheckedListBoxListener ;
68import net .sourceforge .squirrel_sql .fw .util .Utilities ;
79import org .apache .commons .lang3 .StringUtils ;
810
9- import javax .swing .*;
10- import java .awt .event .MouseAdapter ;
11- import java .awt .event .MouseEvent ;
11+ import javax .swing .JCheckBox ;
1212import java .sql .SQLException ;
13- import java .util .Collections ;
13+ import java .util .List ;
14+ import java .util .stream .Collectors ;
1415
1516public class AdditionalCatalogsController
1617{
@@ -28,30 +29,27 @@ public AdditionalCatalogsController(ISession session)
2829
2930 AliasCatalogLoadModelJsonBean bean = Main .getApplication ().getCatalogLoadModelManager ().getAliasCatalogLoadModelJsonBean (session .getAlias ());
3031
31- DefaultListModel <CatalogChecked > listModel = new DefaultListModel <>();
32- for (String catalog : catalogs )
33- {
34- listModel .addElement (createCatalogChecked (catalog , bean ));
35- }
32+ CheckedListBoxHandler <CatalogChecked > checkedListBoxHandler =
33+ new CheckedListBoxHandler <>(_dlg .chkLstCatalogs , new CheckedListBoxListener <>()
34+ {
35+ @ Override
36+ public void listBoxItemToInvert (CatalogChecked catClicked )
37+ {
38+ catClicked .setChecked (!catClicked .isChecked ());
39+ }
3640
37- _dlg .chkLstCatalogs .setModel (listModel );
41+ @ Override
42+ public void listBoxItemToRender (CatalogChecked cat , JCheckBox renderer )
43+ {
44+ onRenderCheckBox (cat , renderer );
45+ }
46+ });
3847
39- _dlg . chkLstCatalogs . setCellRenderer ( new CheckListRenderer ( ));
48+ checkedListBoxHandler . setItems ( List . of ( catalogs ). stream (). map ( cat -> createCatalogChecked ( cat , bean )). collect ( Collectors . toList () ));
4049
41- // Add a mouse listener to toggle the checkbox when an item is clicked
42- _dlg .chkLstCatalogs .addMouseListener (new MouseAdapter ()
43- {
44- @ Override
45- public void mouseClicked (MouseEvent event )
46- {
47- onMouseClicked (event );
48- }
49- });
50-
51-
52- _dlg .btnSelectAll .addActionListener (e -> onSelectAll ());
53- _dlg .btnInvertSelection .addActionListener (e -> onInvertSelection ());
54- _dlg .btnOk .addActionListener (e -> onOk (session ));
50+ _dlg .btnSelectAll .addActionListener (e -> onSelectAll (checkedListBoxHandler ));
51+ _dlg .btnInvertSelection .addActionListener (e -> onInvertSelection (checkedListBoxHandler ));
52+ _dlg .btnOk .addActionListener (e -> onOk (session , checkedListBoxHandler ));
5553
5654 GUIUtils .initLocation (_dlg , 400 , 600 );
5755 GUIUtils .enableCloseByEscape (_dlg );
@@ -66,56 +64,39 @@ public void mouseClicked(MouseEvent event)
6664 }
6765 }
6866
69- private void onInvertSelection ( )
67+ private static void onRenderCheckBox ( CatalogChecked cat , JCheckBox renderer )
7068 {
71- for (int i = 0 ; i < _dlg .chkLstCatalogs .getModel ().getSize (); i ++)
72- {
73- CatalogChecked catalogChecked = _dlg .chkLstCatalogs .getModel ().getElementAt (i );
74- catalogChecked .setChecked (!catalogChecked .isChecked ());
75- }
76- _dlg .chkLstCatalogs .repaint ();
69+ renderer .setSelected (cat .isChecked ());
70+ renderer .setText (cat .getCatalog ());
7771 }
7872
79- private void onSelectAll ( )
73+ private void onInvertSelection ( CheckedListBoxHandler < CatalogChecked > checkedListBoxHandler )
8074 {
81- for (int i = 0 ; i < _dlg .chkLstCatalogs .getModel ().getSize (); i ++)
82- {
83- _dlg .chkLstCatalogs .getModel ().getElementAt (i ).setChecked (true );
84- }
85- _dlg .chkLstCatalogs .repaint ();
75+ checkedListBoxHandler .getAllItems ().forEach (i -> i .setChecked (!i .isChecked ()));
76+ checkedListBoxHandler .repaint ();
8677 }
8778
88- private void onMouseClicked ( MouseEvent event )
79+ private void onSelectAll ( CheckedListBoxHandler < CatalogChecked > checkedListBoxHandler )
8980 {
90- int index = _dlg .chkLstCatalogs .locationToIndex (event .getPoint ());
91- if ( index >= 0
92- && index < _dlg .chkLstCatalogs .getModel ().getSize ()
93- && _dlg .chkLstCatalogs .getCellBounds (index , index ).contains (event .getPoint ()))
94- {
95- CatalogChecked catalogChecked = _dlg .chkLstCatalogs .getModel ().getElementAt (index );
96- catalogChecked .setChecked (!catalogChecked .isChecked ());
97- _dlg .chkLstCatalogs .repaint (_dlg .chkLstCatalogs .getCellBounds (index , index ));
98- }
81+ checkedListBoxHandler .getAllItems ().forEach (i -> i .setChecked (true ));
82+ checkedListBoxHandler .repaint ();
9983 }
10084
85+
10186 public boolean isOk ()
10287 {
10388 return _ok ;
10489 }
10590
106- private void onOk (ISession session )
91+ private void onOk (ISession session , CheckedListBoxHandler < CatalogChecked > checkedListBoxHandler )
10792 {
10893 AliasCatalogLoadModelJsonBean bean = Main .getApplication ().getCatalogLoadModelManager ().getAliasCatalogLoadModelJsonBean (session .getAlias ());
10994
11095 bean .getAdditionalUserChosenCatalogs ().clear ();
11196
112- for (CatalogChecked catalogChecked : Collections .list (((DefaultListModel <CatalogChecked >) _dlg .chkLstCatalogs .getModel ()).elements ()))
113- {
114- if (catalogChecked .isChecked ())
115- {
116- bean .getAdditionalUserChosenCatalogs ().add (catalogChecked .getCatalog ());
117- }
118- }
97+ checkedListBoxHandler .getAllItems ()
98+ .stream ().filter (CatalogChecked ::isChecked )
99+ .forEach (i -> bean .getAdditionalUserChosenCatalogs ().add (i .getCatalog ()));
119100
120101 _ok = true ;
121102
0 commit comments