2828import org .infernus .idea .checkstyle .exception .CheckStylePluginParseException ;
2929import org .infernus .idea .checkstyle .exception .CheckstyleToolException ;
3030import org .infernus .idea .checkstyle .model .ConfigurationLocation ;
31+ import org .infernus .idea .checkstyle .model .ConfigurationType ;
3132import org .infernus .idea .checkstyle .model .ScanResult ;
33+ import org .jetbrains .annotations .NotNull ;
3234import org .jetbrains .annotations .Nullable ;
3335
3436import javax .swing .*;
3941import javax .swing .tree .TreePath ;
4042import java .awt .*;
4143import java .awt .event .*;
44+ import java .io .InputStream ;
4245import java .util .*;
4346import java .util .List ;
4447import java .util .regex .Matcher ;
@@ -61,15 +64,14 @@ public class CheckStyleToolWindowPanel extends JPanel implements ConfigurationLi
6164
6265 private static final String MAIN_ACTION_GROUP = "CheckStylePluginActions" ;
6366 private static final String TREE_ACTION_GROUP = "CheckStylePluginTreeActions" ;
64- private static final String DEFAULT_OVERRIDE = message ("plugin.toolwindow.default-file" );
6567
66- private static final Map <Pattern , String > CHECKSTYLE_ERROR_PATTERNS
67- = new HashMap <>();
68+ private static final Map <Pattern , String > CHECKSTYLE_ERROR_PATTERNS = new HashMap <>();
6869
6970 private final Project project ;
7071 private final ToolWindow toolWindow ;
71- private final ComboBox configurationOverrideCombo = new ComboBox ();
72- private final DefaultComboBoxModel configurationOverrideModel = new DefaultComboBoxModel ();
72+ private final ConfigurationLocation defaultOverride ;
73+ private final ComboBox <ConfigurationLocation > configurationOverrideCombo = new ComboBox <>();
74+ private final DefaultComboBoxModel <ConfigurationLocation > configurationOverrideModel = new DefaultComboBoxModel <>();
7375
7476 private boolean displayingErrors = true ;
7577 private boolean displayingWarnings = true ;
@@ -107,6 +109,8 @@ public CheckStyleToolWindowPanel(final ToolWindow toolWindow, final Project proj
107109 this .toolWindow = toolWindow ;
108110 this .project = project ;
109111
112+ defaultOverride = createDefaultOverride ();
113+
110114 configurationChanged ();
111115 configurationManager ().addConfigurationListener (this );
112116
@@ -135,9 +139,25 @@ public CheckStyleToolWindowPanel(final ToolWindow toolWindow, final Project proj
135139 mainToolbar .getComponent ().setVisible (true );
136140 }
137141
142+ private @ NotNull ConfigurationLocation createDefaultOverride () {
143+ final ConfigurationLocation overrideLocation = new ConfigurationLocation ("default" , ConfigurationType .LOCAL_FILE , project ) {
144+ @ Override
145+ protected @ NotNull InputStream resolveFile (@ NotNull final ClassLoader checkstyleClassLoader ) {
146+ throw new UnsupportedOperationException ("Default override should never be resolved to a file." );
147+ }
148+
149+ @ Override
150+ public Object clone () {
151+ return this ;
152+ }
153+ };
154+ overrideLocation .setDescription (message ("plugin.toolwindow.default-file" ));
155+ return overrideLocation ;
156+ }
157+
138158 public ConfigurationLocation getSelectedOverride () {
139159 final Object selectedItem = configurationOverrideModel .getSelectedItem ();
140- if (DEFAULT_OVERRIDE .equals (selectedItem )) {
160+ if (defaultOverride .equals (selectedItem )) {
141161 return null ;
142162 }
143163 return (ConfigurationLocation ) selectedItem ;
@@ -216,9 +236,9 @@ public static CheckStyleToolWindowPanel panelFor(final Project project) {
216236 public void configurationChanged () {
217237 configurationOverrideModel .removeAllElements ();
218238
219- configurationOverrideModel .addElement (DEFAULT_OVERRIDE );
239+ configurationOverrideModel .addElement (defaultOverride );
220240 configurationManager ().getCurrent ().getLocations ().forEach (configurationOverrideModel ::addElement );
221- configurationOverrideModel .setSelectedItem (DEFAULT_OVERRIDE );
241+ configurationOverrideModel .setSelectedItem (defaultOverride );
222242 }
223243
224244 public void showToolWindow () {
0 commit comments