# HG changeset patch # Parent 88019e1b09c30ae75e46e222f16997c451228277 # User Ralph Benjamin Ruijs [no commit message] diff --git a/java.hints/src/org/netbeans/modules/java/hints/suggestions/Bundle.properties b/java.hints/src/org/netbeans/modules/java/hints/suggestions/Bundle.properties --- a/java.hints/src/org/netbeans/modules/java/hints/suggestions/Bundle.properties +++ b/java.hints/src/org/netbeans/modules/java/hints/suggestions/Bundle.properties @@ -86,3 +86,4 @@ FillSwitchCustomizer.generateDefault.text=Generate default clause, if missing FillSwitchCustomizer.jLabel1.text=Template: FillSwitchCustomizer.jLabel1.AccessibleContext.accessibleDescription=Default clause template +FillSwitchCustomizer.generateBreak.text=Generate break statements in missing cases diff --git a/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.form b/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.form --- a/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.form +++ b/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.form @@ -16,13 +16,17 @@ - + + + + + @@ -34,6 +38,9 @@ + + + @@ -68,5 +75,15 @@ + + + + + + + + + + diff --git a/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.java b/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.java --- a/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.java +++ b/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.java @@ -58,6 +58,7 @@ initComponents(); this.p = p; generateDefault.setSelected(p.getBoolean(Tiny.KEY_DEFAULT_ENABLED, Tiny.DEF_DEFAULT_ENABLED)); + generateBreak.setSelected(p.getBoolean(Tiny.KEY_BREAK_ENABLED, Tiny.DEF_BREAK_ENABLED)); defaultTemplate.setText(p.get(Tiny.KEY_DEFAULT_SNIPPET, Tiny.DEF_DEFAULT_SNIPPET)); enableDisable(); defaultTemplate.getDocument().addDocumentListener(new DocumentListener() { @@ -83,6 +84,7 @@ generateDefault = new javax.swing.JCheckBox(); defaultTemplate = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); + generateBreak = new javax.swing.JCheckBox(); org.openide.awt.Mnemonics.setLocalizedText(generateDefault, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.generateDefault.text")); // NOI18N generateDefault.addActionListener(new java.awt.event.ActionListener() { @@ -95,16 +97,26 @@ org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.jLabel1.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(generateBreak, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.generateBreak.text")); // NOI18N + generateBreak.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + generateBreakActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(generateDefault, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) + .addComponent(generateDefault, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGap(21, 21, 21) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(defaultTemplate)) + .addGroup(layout.createSequentialGroup() + .addComponent(generateBreak) + .addGap(0, 0, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -113,7 +125,10 @@ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(defaultTemplate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel1))) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(generateBreak) + .addContainerGap(48, Short.MAX_VALUE)) ); jLabel1.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.jLabel1.AccessibleContext.accessibleDescription")); // NOI18N @@ -124,8 +139,13 @@ enableDisable(); }//GEN-LAST:event_generateDefaultActionPerformed + private void generateBreakActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateBreakActionPerformed + p.putBoolean(Tiny.KEY_BREAK_ENABLED, generateBreak.isSelected()); + }//GEN-LAST:event_generateBreakActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField defaultTemplate; + private javax.swing.JCheckBox generateBreak; private javax.swing.JCheckBox generateDefault; private javax.swing.JLabel jLabel1; // End of variables declaration//GEN-END:variables diff --git a/java.hints/src/org/netbeans/modules/java/hints/suggestions/Tiny.java b/java.hints/src/org/netbeans/modules/java/hints/suggestions/Tiny.java --- a/java.hints/src/org/netbeans/modules/java/hints/suggestions/Tiny.java +++ b/java.hints/src/org/netbeans/modules/java/hints/suggestions/Tiny.java @@ -301,7 +301,9 @@ static final String KEY_DEFAULT_ENABLED = "generateDefault"; static final String KEY_DEFAULT_SNIPPET = "defaultSnippet"; + static final String KEY_BREAK_ENABLED = "generateBreak"; static final boolean DEF_DEFAULT_ENABLED = true; + static final boolean DEF_BREAK_ENABLED = true; static final String DEF_DEFAULT_SNIPPET = "throw new java.lang.AssertionError($expression.name());"; @Hint(displayName = "#DN_org.netbeans.modules.java.hints.suggestions.Tiny.fillSwitch", description = "#DESC_org.netbeans.modules.java.hints.suggestions.Tiny.fillSwitch", category="suggestions", hintKind=Kind.ACTION, severity=Severity.HINT, customizerProvider=CustomizerProviderImpl.class) @@ -342,7 +344,8 @@ String defaultTemplate = generateDefault ? ctx.getPreferences().get(KEY_DEFAULT_SNIPPET, DEF_DEFAULT_SNIPPET) : null; String errMessage = enumConstants.isEmpty() ? "ERR_Tiny.fillSwitchDefault" : !hasDefault && generateDefault ? "ERR_Tiny.fillSwitchCasesAndDefault" : "ERR_Tiny.fillSwitchCases"; String fixMessage = enumConstants.isEmpty() ? "FIX_Tiny.fillSwitchDefault" : !hasDefault && generateDefault ? "FIX_Tiny.fillSwitchCasesAndDefault" : "FIX_Tiny.fillSwitchCases"; - return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), NbBundle.getMessage(Tiny.class, errMessage), new AddSwitchCasesImpl(ctx.getInfo(), ctx.getPath(), fixMessage, names, defaultTemplate).toEditorFix()); + boolean generateBreak = ctx.getPreferences().getBoolean(KEY_BREAK_ENABLED, DEF_BREAK_ENABLED); + return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), NbBundle.getMessage(Tiny.class, errMessage), new AddSwitchCasesImpl(ctx.getInfo(), ctx.getPath(), fixMessage, names, defaultTemplate, generateBreak).toEditorFix()); } private static final class AddSwitchCasesImpl extends JavaFix { @@ -350,12 +353,14 @@ private final String text; private final List names; private final String defaultTemplate; + private final boolean generateBreak; - public AddSwitchCasesImpl(CompilationInfo info, TreePath tp, String text, List names, String defaultTemplate) { + public AddSwitchCasesImpl(CompilationInfo info, TreePath tp, String text, List names, String defaultTemplate, boolean generateBreak) { super(info, tp); this.text = text; this.names = names; this.defaultTemplate = defaultTemplate; + this.generateBreak = generateBreak; } @Override @@ -381,7 +386,9 @@ } for (String name : names) { - st = make.insertSwitchCase(st, insertIndex++, make.Case(make.Identifier(name), Collections.singletonList(make.Break(null)))); + st = make.insertSwitchCase(st, insertIndex++, make.Case(make.Identifier(name), + generateBreak ? Collections.singletonList(make.Break(null)) : + Collections.emptyList())); } if (!hadDefault && defaultTemplate != null) {