4040 * @author airsaid
4141 */
4242public class SelectLanguageDialog extends DialogWrapper {
43+ private JPanel myPanel ;
44+ private JCheckBox overwriteExistingStringCheckBox ;
45+ private JCheckBox selectAllCheckBox ;
46+ private JPanel languagesPanel ;
4347
44- private Project mProject ;
48+ private Project mProject ;
4549 private OnClickListener mOnClickListener ;
46- private List <LANG > mSelectLanguages = new ArrayList <>();
50+ private List <LANG > mSelectLanguages = new ArrayList <>();
4751
4852 public interface OnClickListener {
4953 void onClickListener (List <LANG > selectedLanguage );
@@ -52,56 +56,36 @@ public interface OnClickListener {
5256 public SelectLanguageDialog (@ Nullable Project project ) {
5357 super (project , false );
5458 this .mProject = project ;
59+ doCreateCenterPanel ();
5560 setTitle ("Select Convert Languages" );
5661 setResizable (true );
5762 init ();
5863 }
5964
60- @ Override
61- protected void doOKAction () {
62- if (mSelectLanguages .size () <= 0 ) {
63- Messages .showErrorDialog ("Please select the language you need to translate!" , "Error" );
64- return ;
65- }
66- if (mOnClickListener != null ) {
67- mOnClickListener .onClickListener (mSelectLanguages );
68- }
69- super .doOKAction ();
65+ public void setOnClickListener (OnClickListener listener ) {
66+ mOnClickListener = listener ;
7067 }
7168
7269 @ Nullable
7370 @ Override
7471 protected JComponent createCenterPanel () {
75- return doCreateCenterPanel () ;
72+ return myPanel ;
7673 }
7774
78- private JComponent doCreateCenterPanel () {
79- final JPanel panel = new JPanel (new BorderLayout (16 , 6 ));
80- final Container container = new Container ();
81- // add overwrite existing string
82- final JBCheckBox overwriteExistingString = new JBCheckBox ("Overwrite Existing String" );
83- panel .add (overwriteExistingString , BorderLayout .NORTH );
84- overwriteExistingString .addItemListener (e -> {
85- int state = e .getStateChange ();
86- PropertiesComponent .getInstance (mProject )
87- .setValue (Constants .KEY_IS_OVERWRITE_EXISTING_STRING , state == ItemEvent .SELECTED );
88- });
89- boolean isOverwriteExistingString = PropertiesComponent .getInstance (mProject )
90- .getBoolean (Constants .KEY_IS_OVERWRITE_EXISTING_STRING );
91- overwriteExistingString .setSelected (isOverwriteExistingString );
75+ private void doCreateCenterPanel () {
9276 // add language
9377 mSelectLanguages .clear ();
9478 List <LANG > supportLanguages = new GoogleTranslator ().getSupportLang ();
9579 List <String > selectedLanguageCodes = LanguageHelper .getSelectedLanguageCodes (mProject );
9680 // sort by country code, easy to find
9781 supportLanguages .sort (new CountryCodeComparator ());
98- container .setLayout (new GridLayout (supportLanguages .size () / 4 , 4 ));
82+ languagesPanel .setLayout (new GridLayout (supportLanguages .size () / 4 , 4 ));
9983 for (LANG language : supportLanguages ) {
10084 String code = language .getCode ();
10185 JBCheckBox checkBoxLanguage = new JBCheckBox ();
10286 checkBoxLanguage .setText (language .getEnglishName ()
10387 .concat ("(" ).concat (code ).concat (")" ));
104- container .add (checkBoxLanguage );
88+ languagesPanel .add (checkBoxLanguage );
10589 checkBoxLanguage .addItemListener (e -> {
10690 int state = e .getStateChange ();
10791 if (state == ItemEvent .SELECTED ) {
@@ -114,12 +98,47 @@ private JComponent doCreateCenterPanel() {
11498 checkBoxLanguage .setSelected (true );
11599 }
116100 }
117- panel .add (container , BorderLayout .CENTER );
118- return panel ;
101+
102+ boolean isOverwriteExistingString = PropertiesComponent .getInstance (mProject )
103+ .getBoolean (Constants .KEY_IS_OVERWRITE_EXISTING_STRING );
104+ overwriteExistingStringCheckBox .setSelected (isOverwriteExistingString );
105+ overwriteExistingStringCheckBox .addItemListener (e -> {
106+ int state = e .getStateChange ();
107+ PropertiesComponent .getInstance (mProject )
108+ .setValue (Constants .KEY_IS_OVERWRITE_EXISTING_STRING , state == ItemEvent .SELECTED );
109+ });
110+
111+ boolean isSelectAll = PropertiesComponent .getInstance (mProject )
112+ .getBoolean (Constants .KEY_IS_SELECT_ALL );
113+ selectAllCheckBox .setSelected (isSelectAll );
114+ selectAllCheckBox .addItemListener (e -> {
115+ int state = e .getStateChange ();
116+ selectAll (state == ItemEvent .SELECTED );
117+ PropertiesComponent .getInstance (mProject )
118+ .setValue (Constants .KEY_IS_SELECT_ALL , state == ItemEvent .SELECTED );
119+ });
119120 }
120121
121- public void setOnClickListener (OnClickListener listener ) {
122- mOnClickListener = listener ;
122+ private void selectAll (boolean selectAll ) {
123+ for (Component component : languagesPanel .getComponents ()) {
124+ if (component instanceof JBCheckBox ) {
125+ JBCheckBox checkBox = (JBCheckBox ) component ;
126+ checkBox .setSelected (selectAll );
127+ }
128+ }
129+ }
130+
131+ @ Override
132+ protected void doOKAction () {
133+ LanguageHelper .saveSelectedLanguage (mProject , mSelectLanguages );
134+ if (mSelectLanguages .size () <= 0 ) {
135+ Messages .showErrorDialog ("Please select the language you need to translate!" , "Error" );
136+ return ;
137+ }
138+ if (mOnClickListener != null ) {
139+ mOnClickListener .onClickListener (mSelectLanguages );
140+ }
141+ super .doOKAction ();
123142 }
124143
125144 class CountryCodeComparator implements Comparator <LANG > {
0 commit comments