View Javadoc
1   /*
2    * Copyright (c) 2020 bahlef.
3    * All rights reserved. This program and the accompanying materials
4    * are made available under the terms of the Eclipse Public License v2.0
5    * which accompanies this distribution, and is available at
6    * http://www.eclipse.org/legal/epl-v20.html
7    * Contributors:
8    * bahlef - initial API and implementation and/or initial documentation
9    */
10  
11  package de.funfried.netbeans.plugins.external.formatter.java.palantir.ui;
12  
13  import java.awt.event.ActionEvent;
14  import java.awt.event.ActionListener;
15  import java.util.prefs.Preferences;
16  
17  import javax.swing.GroupLayout;
18  import javax.swing.JCheckBox;
19  import javax.swing.LayoutStyle;
20  
21  import org.netbeans.api.project.Project;
22  import org.openide.awt.Mnemonics;
23  import org.openide.util.NbBundle;
24  
25  import de.funfried.netbeans.plugins.external.formatter.java.palantir.PalantirJavaFormatterSettings;
26  import de.funfried.netbeans.plugins.external.formatter.ui.options.AbstractFormatterOptionsPanel;
27  
28  /**
29   *
30   * @author bahlef
31   */
32  public class PalantirJavaFormatterOptionsPanel extends AbstractFormatterOptionsPanel {
33  	/**
34  	 * Creates new form {@link PalantirJavaFormatterOptionsPanel}.
35  	 *
36  	 * @param project the {@link Project} if the panel is used to modify project
37  	 *        specific settings, otherwise {@code null}
38  	 */
39  	public PalantirJavaFormatterOptionsPanel(Project project) {
40  		super(project);
41  
42  		initComponents();
43  	}
44  
45  	/**
46  	 * This method is called from within the constructor to
47  	 * initialize the form.
48  	 * WARNING: Do NOT modify this code. The content of this method is
49  	 * always regenerated by the Form Editor.
50  	 */
51  	@SuppressWarnings("unchecked")
52      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
53      private void initComponents() {
54  
55          organizeImportsAfterFixImportsChkBox = new JCheckBox();
56          organizeImportsChkBox = new JCheckBox();
57  
58          Mnemonics.setLocalizedText(organizeImportsAfterFixImportsChkBox, NbBundle.getMessage(PalantirJavaFormatterOptionsPanel.class, "PalantirJavaFormatterOptionsPanel.organizeImportsAfterFixImportsChkBox.text")); // NOI18N
59          organizeImportsAfterFixImportsChkBox.setEnabled(false);
60          organizeImportsAfterFixImportsChkBox.addActionListener(new ActionListener() {
61              public void actionPerformed(ActionEvent evt) {
62                  organizeImportsAfterFixImportsChkBoxActionPerformed(evt);
63              }
64          });
65  
66          Mnemonics.setLocalizedText(organizeImportsChkBox, NbBundle.getMessage(PalantirJavaFormatterOptionsPanel.class, "PalantirJavaFormatterOptionsPanel.organizeImportsChkBox.text")); // NOI18N
67          organizeImportsChkBox.addActionListener(new ActionListener() {
68              public void actionPerformed(ActionEvent evt) {
69                  organizeImportsChkBoxActionPerformed(evt);
70              }
71          });
72  
73          GroupLayout layout = new GroupLayout(this);
74          this.setLayout(layout);
75          layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
76              .addGroup(layout.createSequentialGroup()
77                  .addContainerGap()
78                  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
79                      .addComponent(organizeImportsChkBox)
80                      .addGroup(layout.createSequentialGroup()
81                          .addGap(21, 21, 21)
82                          .addComponent(organizeImportsAfterFixImportsChkBox)))
83                  .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
84          );
85          layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
86              .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
87                  .addContainerGap()
88                  .addComponent(organizeImportsChkBox)
89                  .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
90                  .addComponent(organizeImportsAfterFixImportsChkBox)
91                  .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
92          );
93      }// </editor-fold>//GEN-END:initComponents
94  
95      private void organizeImportsAfterFixImportsChkBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_organizeImportsAfterFixImportsChkBoxActionPerformed
96          fireChangedListener();
97      }//GEN-LAST:event_organizeImportsAfterFixImportsChkBoxActionPerformed
98  
99      private void organizeImportsChkBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_organizeImportsChkBoxActionPerformed
100         fireChangedListener();
101     }//GEN-LAST:event_organizeImportsChkBoxActionPerformed
102 
103     // Variables declaration - do not modify//GEN-BEGIN:variables
104     private JCheckBox organizeImportsAfterFixImportsChkBox;
105     private JCheckBox organizeImportsChkBox;
106     // End of variables declaration//GEN-END:variables
107 		/**
108 		 * {@inheritDoc}
109 		 */
110 		@Override
111 		public void load(Preferences preferences) {
112 			boolean organizeImports = preferences.getBoolean(PalantirJavaFormatterSettings.ORGANIZE_IMPORTS, false);
113 
114 			organizeImportsChkBox.setSelected(organizeImports);
115 
116 			organizeImportsAfterFixImportsChkBox.setEnabled(organizeImports);
117 			if (!organizeImports) {
118 				organizeImportsAfterFixImportsChkBox.setSelected(false);
119 			} else {
120 				boolean organizeImportsAfterFixImports = preferences.getBoolean(PalantirJavaFormatterSettings.ORGANIZE_IMPORTS_AFTER_FIX_IMPORTS, false);
121 
122 				organizeImportsAfterFixImportsChkBox.setSelected(organizeImportsAfterFixImports);
123 			}
124 		}
125 
126 		/**
127 		 * {@inheritDoc}
128 		 */
129 		@Override
130 		public void store(Preferences preferences) {
131 			boolean organizeImports = organizeImportsChkBox.isSelected();
132 			preferences.putBoolean(PalantirJavaFormatterSettings.ORGANIZE_IMPORTS, organizeImports);
133 			preferences.putBoolean(PalantirJavaFormatterSettings.ORGANIZE_IMPORTS_AFTER_FIX_IMPORTS, organizeImports && organizeImportsAfterFixImportsChkBox.isSelected());
134 		}
135 
136 		/**
137 		 * {@inheritDoc}
138 		 */
139 		@Override
140 		public boolean valid() {
141 			boolean organizeImports = organizeImportsChkBox.isSelected();
142 			organizeImportsAfterFixImportsChkBox.setEnabled(organizeImports);
143 			if (!organizeImports) {
144 				organizeImportsAfterFixImportsChkBox.setEnabled(false);
145 			}
146 
147 			return true;
148 		}
149 	}