This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 216515
Collapse All | Expand All

(-)a/java.hints/src/org/netbeans/modules/java/hints/suggestions/Bundle.properties (+1 lines)
Lines 86-88 Link Here
86
FillSwitchCustomizer.generateDefault.text=Generate default clause, if missing
86
FillSwitchCustomizer.generateDefault.text=Generate default clause, if missing
87
FillSwitchCustomizer.jLabel1.text=Template:
87
FillSwitchCustomizer.jLabel1.text=Template:
88
FillSwitchCustomizer.jLabel1.AccessibleContext.accessibleDescription=Default clause template
88
FillSwitchCustomizer.jLabel1.AccessibleContext.accessibleDescription=Default clause template
89
FillSwitchCustomizer.generateBreak.text=Generate break statements in missing cases
(-)a/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.form (-1 / +18 lines)
Lines 16-28 Link Here
16
  <Layout>
16
  <Layout>
17
    <DimensionLayout dim="0">
17
    <DimensionLayout dim="0">
18
      <Group type="103" groupAlignment="0" attributes="0">
18
      <Group type="103" groupAlignment="0" attributes="0">
19
          <Component id="generateDefault" pref="400" max="32767" attributes="0"/>
19
          <Component id="generateDefault" max="32767" attributes="0"/>
20
          <Group type="102" attributes="0">
20
          <Group type="102" attributes="0">
21
              <EmptySpace min="21" pref="21" max="-2" attributes="0"/>
21
              <EmptySpace min="21" pref="21" max="-2" attributes="0"/>
22
              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
22
              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
23
              <EmptySpace max="-2" attributes="0"/>
23
              <EmptySpace max="-2" attributes="0"/>
24
              <Component id="defaultTemplate" max="32767" attributes="0"/>
24
              <Component id="defaultTemplate" max="32767" attributes="0"/>
25
          </Group>
25
          </Group>
26
          <Group type="102" alignment="0" attributes="0">
27
              <Component id="generateBreak" min="-2" max="-2" attributes="0"/>
28
              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
29
          </Group>
26
      </Group>
30
      </Group>
27
    </DimensionLayout>
31
    </DimensionLayout>
28
    <DimensionLayout dim="1">
32
    <DimensionLayout dim="1">
Lines 34-39 Link Here
34
                  <Component id="defaultTemplate" alignment="3" min="-2" max="-2" attributes="0"/>
38
                  <Component id="defaultTemplate" alignment="3" min="-2" max="-2" attributes="0"/>
35
                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
39
                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
36
              </Group>
40
              </Group>
41
              <EmptySpace type="unrelated" max="-2" attributes="0"/>
42
              <Component id="generateBreak" min="-2" max="-2" attributes="0"/>
43
              <EmptySpace pref="48" max="32767" attributes="0"/>
37
          </Group>
44
          </Group>
38
      </Group>
45
      </Group>
39
    </DimensionLayout>
46
    </DimensionLayout>
Lines 68-72 Link Here
68
        </Property>
75
        </Property>
69
      </AccessibilityProperties>
76
      </AccessibilityProperties>
70
    </Component>
77
    </Component>
78
    <Component class="javax.swing.JCheckBox" name="generateBreak">
79
      <Properties>
80
        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
81
          <ResourceString bundle="org/netbeans/modules/java/hints/suggestions/Bundle.properties" key="FillSwitchCustomizer.generateBreak.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
82
        </Property>
83
      </Properties>
84
      <Events>
85
        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateBreakActionPerformed"/>
86
      </Events>
87
    </Component>
71
  </SubComponents>
88
  </SubComponents>
72
</Form>
89
</Form>
(-)a/java.hints/src/org/netbeans/modules/java/hints/suggestions/FillSwitchCustomizer.java (-2 / +22 lines)
Lines 58-63 Link Here
58
        initComponents();
58
        initComponents();
59
        this.p = p;
59
        this.p = p;
60
        generateDefault.setSelected(p.getBoolean(Tiny.KEY_DEFAULT_ENABLED, Tiny.DEF_DEFAULT_ENABLED));
60
        generateDefault.setSelected(p.getBoolean(Tiny.KEY_DEFAULT_ENABLED, Tiny.DEF_DEFAULT_ENABLED));
61
        generateBreak.setSelected(p.getBoolean(Tiny.KEY_BREAK_ENABLED, Tiny.DEF_BREAK_ENABLED));
61
        defaultTemplate.setText(p.get(Tiny.KEY_DEFAULT_SNIPPET, Tiny.DEF_DEFAULT_SNIPPET));
62
        defaultTemplate.setText(p.get(Tiny.KEY_DEFAULT_SNIPPET, Tiny.DEF_DEFAULT_SNIPPET));
62
        enableDisable();
63
        enableDisable();
63
        defaultTemplate.getDocument().addDocumentListener(new DocumentListener() {
64
        defaultTemplate.getDocument().addDocumentListener(new DocumentListener() {
Lines 83-88 Link Here
83
        generateDefault = new javax.swing.JCheckBox();
84
        generateDefault = new javax.swing.JCheckBox();
84
        defaultTemplate = new javax.swing.JTextField();
85
        defaultTemplate = new javax.swing.JTextField();
85
        jLabel1 = new javax.swing.JLabel();
86
        jLabel1 = new javax.swing.JLabel();
87
        generateBreak = new javax.swing.JCheckBox();
86
88
87
        org.openide.awt.Mnemonics.setLocalizedText(generateDefault, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.generateDefault.text")); // NOI18N
89
        org.openide.awt.Mnemonics.setLocalizedText(generateDefault, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.generateDefault.text")); // NOI18N
88
        generateDefault.addActionListener(new java.awt.event.ActionListener() {
90
        generateDefault.addActionListener(new java.awt.event.ActionListener() {
Lines 95-110 Link Here
95
97
96
        org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.jLabel1.text")); // NOI18N
98
        org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.jLabel1.text")); // NOI18N
97
99
100
        org.openide.awt.Mnemonics.setLocalizedText(generateBreak, org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.generateBreak.text")); // NOI18N
101
        generateBreak.addActionListener(new java.awt.event.ActionListener() {
102
            public void actionPerformed(java.awt.event.ActionEvent evt) {
103
                generateBreakActionPerformed(evt);
104
            }
105
        });
106
98
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
107
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
99
        this.setLayout(layout);
108
        this.setLayout(layout);
100
        layout.setHorizontalGroup(
109
        layout.setHorizontalGroup(
101
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
110
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
102
            .addComponent(generateDefault, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
111
            .addComponent(generateDefault, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
103
            .addGroup(layout.createSequentialGroup()
112
            .addGroup(layout.createSequentialGroup()
104
                .addGap(21, 21, 21)
113
                .addGap(21, 21, 21)
105
                .addComponent(jLabel1)
114
                .addComponent(jLabel1)
106
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
115
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
107
                .addComponent(defaultTemplate))
116
                .addComponent(defaultTemplate))
117
            .addGroup(layout.createSequentialGroup()
118
                .addComponent(generateBreak)
119
                .addGap(0, 0, Short.MAX_VALUE))
108
        );
120
        );
109
        layout.setVerticalGroup(
121
        layout.setVerticalGroup(
110
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
122
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
Lines 113-119 Link Here
113
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
125
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
114
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
126
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
115
                    .addComponent(defaultTemplate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
127
                    .addComponent(defaultTemplate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
116
                    .addComponent(jLabel1)))
128
                    .addComponent(jLabel1))
129
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
130
                .addComponent(generateBreak)
131
                .addContainerGap(48, Short.MAX_VALUE))
117
        );
132
        );
118
133
119
        jLabel1.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.jLabel1.AccessibleContext.accessibleDescription")); // NOI18N
134
        jLabel1.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(FillSwitchCustomizer.class, "FillSwitchCustomizer.jLabel1.AccessibleContext.accessibleDescription")); // NOI18N
Lines 124-131 Link Here
124
        enableDisable();
139
        enableDisable();
125
    }//GEN-LAST:event_generateDefaultActionPerformed
140
    }//GEN-LAST:event_generateDefaultActionPerformed
126
141
142
    private void generateBreakActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateBreakActionPerformed
143
        p.putBoolean(Tiny.KEY_BREAK_ENABLED, generateBreak.isSelected());
144
    }//GEN-LAST:event_generateBreakActionPerformed
145
127
    // Variables declaration - do not modify//GEN-BEGIN:variables
146
    // Variables declaration - do not modify//GEN-BEGIN:variables
128
    private javax.swing.JTextField defaultTemplate;
147
    private javax.swing.JTextField defaultTemplate;
148
    private javax.swing.JCheckBox generateBreak;
129
    private javax.swing.JCheckBox generateDefault;
149
    private javax.swing.JCheckBox generateDefault;
130
    private javax.swing.JLabel jLabel1;
150
    private javax.swing.JLabel jLabel1;
131
    // End of variables declaration//GEN-END:variables
151
    // End of variables declaration//GEN-END:variables
(-)a/java.hints/src/org/netbeans/modules/java/hints/suggestions/Tiny.java (-3 / +10 lines)
Lines 301-307 Link Here
301
301
302
    static final String KEY_DEFAULT_ENABLED = "generateDefault";
302
    static final String KEY_DEFAULT_ENABLED = "generateDefault";
303
    static final String KEY_DEFAULT_SNIPPET = "defaultSnippet";
303
    static final String KEY_DEFAULT_SNIPPET = "defaultSnippet";
304
    static final String KEY_BREAK_ENABLED = "generateBreak";
304
    static final boolean DEF_DEFAULT_ENABLED = true;
305
    static final boolean DEF_DEFAULT_ENABLED = true;
306
    static final boolean DEF_BREAK_ENABLED = true;
305
    static final String DEF_DEFAULT_SNIPPET = "throw new java.lang.AssertionError($expression.name());";
307
    static final String DEF_DEFAULT_SNIPPET = "throw new java.lang.AssertionError($expression.name());";
306
    
308
    
307
    @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)
309
    @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)
Lines 342-348 Link Here
342
        String defaultTemplate = generateDefault ? ctx.getPreferences().get(KEY_DEFAULT_SNIPPET, DEF_DEFAULT_SNIPPET) : null;
344
        String defaultTemplate = generateDefault ? ctx.getPreferences().get(KEY_DEFAULT_SNIPPET, DEF_DEFAULT_SNIPPET) : null;
343
        String errMessage = enumConstants.isEmpty() ? "ERR_Tiny.fillSwitchDefault" : !hasDefault && generateDefault ? "ERR_Tiny.fillSwitchCasesAndDefault" : "ERR_Tiny.fillSwitchCases";
345
        String errMessage = enumConstants.isEmpty() ? "ERR_Tiny.fillSwitchDefault" : !hasDefault && generateDefault ? "ERR_Tiny.fillSwitchCasesAndDefault" : "ERR_Tiny.fillSwitchCases";
344
        String fixMessage = enumConstants.isEmpty() ? "FIX_Tiny.fillSwitchDefault" : !hasDefault && generateDefault ? "FIX_Tiny.fillSwitchCasesAndDefault" : "FIX_Tiny.fillSwitchCases";
346
        String fixMessage = enumConstants.isEmpty() ? "FIX_Tiny.fillSwitchDefault" : !hasDefault && generateDefault ? "FIX_Tiny.fillSwitchCasesAndDefault" : "FIX_Tiny.fillSwitchCases";
345
        return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), NbBundle.getMessage(Tiny.class, errMessage), new AddSwitchCasesImpl(ctx.getInfo(), ctx.getPath(), fixMessage, names, defaultTemplate).toEditorFix());
347
        boolean generateBreak = ctx.getPreferences().getBoolean(KEY_BREAK_ENABLED, DEF_BREAK_ENABLED);
348
        return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), NbBundle.getMessage(Tiny.class, errMessage), new AddSwitchCasesImpl(ctx.getInfo(), ctx.getPath(), fixMessage, names, defaultTemplate, generateBreak).toEditorFix());
346
    }
349
    }
347
350
348
    private static final class AddSwitchCasesImpl extends JavaFix {
351
    private static final class AddSwitchCasesImpl extends JavaFix {
Lines 350-361 Link Here
350
        private final String text;
353
        private final String text;
351
        private final List<String> names;
354
        private final List<String> names;
352
        private final String defaultTemplate;
355
        private final String defaultTemplate;
356
        private final boolean generateBreak;
353
357
354
        public AddSwitchCasesImpl(CompilationInfo info, TreePath tp, String text, List<String> names, String defaultTemplate) {
358
        public AddSwitchCasesImpl(CompilationInfo info, TreePath tp, String text, List<String> names, String defaultTemplate, boolean generateBreak) {
355
            super(info, tp);
359
            super(info, tp);
356
            this.text = text;
360
            this.text = text;
357
            this.names = names;
361
            this.names = names;
358
            this.defaultTemplate = defaultTemplate;
362
            this.defaultTemplate = defaultTemplate;
363
            this.generateBreak = generateBreak;
359
        }
364
        }
360
365
361
        @Override
366
        @Override
Lines 381-387 Link Here
381
            }
386
            }
382
387
383
            for (String name : names) {
388
            for (String name : names) {
384
                st = make.insertSwitchCase(st, insertIndex++, make.Case(make.Identifier(name), Collections.singletonList(make.Break(null))));
389
                st = make.insertSwitchCase(st, insertIndex++, make.Case(make.Identifier(name),
390
                        generateBreak ? Collections.singletonList(make.Break(null)) :
391
                        Collections.<StatementTree>emptyList()));
385
            }
392
            }
386
393
387
            if (!hadDefault && defaultTemplate != null) {
394
            if (!hadDefault && defaultTemplate != null) {

Return to bug 216515