mbien commented on PR #6150:
URL: https://github.com/apache/netbeans/pull/6150#issuecomment-1627479850
played with it a bit and it seems to be working. However, I believe it would
be better to incorporate the checkbox into the main combo box which controls
the listener styles.
It has the following advantages:
- it makes a bit more sense since the lambda checkbox does only apply to
the anonymous classes mode anyway
- it will appear in the global options under `tools -> options -> java ->
guy builder -> listener generaiton style` and we don't have to add another
checkbox there too
```diff
diff --git a/java/form/src/org/netbeans/modules/form/Bundle.properties
b/java/form/src/org/netbeans/modules/form/Bundle.properties
index d876bd9..7dca6e0 100644
--- a/java/form/src/org/netbeans/modules/form/Bundle.properties
+++ b/java/form/src/org/netbeans/modules/form/Bundle.properties
@@ -39,8 +39,6 @@
# Control Panel -> Form Objects Property Names
PROP_LISTENER_GENERATION_STYLE=Listener Generation Style
HINT_LISTENER_GENERATION_STYLE=The style of generating code of event
listeners
-PROP_GENERATE_LAMBDA_LISTENERS=Create lambda listener if possible
-HINT_GENERATE_LAMBDA_LISTENERS=When it's possible listener will be
generated as lambda
PROP_LAYOUT_CODE_TARGET=Layout Generation Style
HINT_LAYOUT_CODE_TARGET=The type of code generated for advanced layout
features (requiring Java 6 or a special library).
PROP_AUTO_RESOURCE=Automatic Resource Management
@@ -460,6 +458,7 @@
# PARTIAL do not translate TODO
MSG_EventHandlerBody=// TODO add your handling code here:\n
+CTL_LISTENER_LAMBDAS=Lambdas or Anonymous Inner Classes
CTL_LISTENER_ANONYMOUS_CLASSES=Anonymous Inner Classes
CTL_LISTENER_CEDL_INNERCLASS=One Inner Class
CTL_LISTENER_CEDL_MAINCLASS=Main Class
@@ -733,6 +732,7 @@
Default_Modifier=<default>
Protected_Modifier=protected
Private_Modifier=private
+Lambdas=Lambdas or Anonymous Inner Classes
Anonymous=Anonymous Inner Classes
InnerClass=One Inner Class
MainClass=Main Class
diff --git
a/java/form/src/org/netbeans/modules/form/FormEditorCustomizer.java
b/java/form/src/org/netbeans/modules/form/FormEditorCustomizer.java
index 1c48e45..b655a22 100644
--- a/java/form/src/org/netbeans/modules/form/FormEditorCustomizer.java
+++ b/java/form/src/org/netbeans/modules/form/FormEditorCustomizer.java
@@ -27,7 +27,6 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.util.HashSet;
-import java.util.MissingResourceException;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -94,6 +93,7 @@
cbListenerStyle.addItem(loc("Anonymous")); // NOI18N
cbListenerStyle.addItem(loc("InnerClass")); // NOI18N
cbListenerStyle.addItem(loc("MainClass")); // NOI18N
+ cbListenerStyle.addItem(loc("Lambdas")); // NOI18N
cbAutoI18n.addItem(loc("CTL_AUTO_RESOURCE_DEFAULT")); // NOI18N
cbAutoI18n.addItem(loc("CTL_AUTO_RESOURCE_ON")); // NOI18N
cbAutoI18n.addItem(loc("CTL_AUTO_RESOURCE_OFF")); // NOI18N
diff --git a/java/form/src/org/netbeans/modules/form/FormLoaderSettings.java
b/java/form/src/org/netbeans/modules/form/FormLoaderSettings.java
index aa52e56..0650b75 100644
--- a/java/form/src/org/netbeans/modules/form/FormLoaderSettings.java
+++ b/java/form/src/org/netbeans/modules/form/FormLoaderSettings.java
@@ -34,8 +34,6 @@
public static final String PROP_USE_INDENT_ENGINE = "useIndentEngine";
// NOI18N
/** Property name of the event listener code generation style option. */
public static final String PROP_LISTENER_GENERATION_STYLE =
"listenerGenerationStyle"; // NOI18N
- /** Property name of the event create listeners as lambda. */
- public static final String PROP_GENERATE_LAMBDA_LISTENERS =
"generateLambdaListeners"; // NOI18N
/** Property name of the selectionBorderSize property */
public static final String PROP_SELECTION_BORDER_SIZE =
"selectionBorderSize"; // NOI18N
/** Property name of the selectionBorderColor property */
@@ -152,24 +150,6 @@
}
/**
- * Getter for the event generate listeners as lambda in code.
- *
- * @return listener generation style.
- */
- public boolean getGenerateListenersAsLambda() {
- return getPreferences().getBoolean(PROP_GENERATE_LAMBDA_LISTENERS,
false);
- }
-
- /**
- * Setter for the event generate listeners as lambda in code.
- *
- * @param style listener generation style.
- */
- public void setGenerateListenersAsLambda(boolean asLambda) {
- getPreferences().putBoolean(PROP_GENERATE_LAMBDA_LISTENERS,
asLambda);
- }
-
- /**
* Getter for the selectionBorderSize option.
*
* @return selection border size.
diff --git a/java/form/src/org/netbeans/modules/form/FormSettings.java
b/java/form/src/org/netbeans/modules/form/FormSettings.java
index 28dcdd0..dfea048 100644
--- a/java/form/src/org/netbeans/modules/form/FormSettings.java
+++ b/java/form/src/org/netbeans/modules/form/FormSettings.java
@@ -55,10 +55,6 @@
int listenerGenerationStyle =
FormLoaderSettings.getInstance().getListenerGenerationStyle();
settings.put(FormLoaderSettings.PROP_LISTENER_GENERATION_STYLE,
Integer.valueOf(listenerGenerationStyle));
- // Listener Generation Style
- boolean generateListenersAsLambda =
FormLoaderSettings.getInstance().getGenerateListenersAsLambda();
- settings.put(FormLoaderSettings.PROP_GENERATE_LAMBDA_LISTENERS,
Boolean.valueOf(generateListenersAsLambda));
-
// Generate FQN
boolean generateFQN =
FormLoaderSettings.getInstance().getGenerateFQN();
settings.put(FormLoaderSettings.PROP_GENERATE_FQN, generateFQN);
@@ -132,15 +128,6 @@
settings.put(FormLoaderSettings.PROP_LISTENER_GENERATION_STYLE,
Integer.valueOf(value));
}
- public boolean getGenerateListenersAsLambda() {
- boolean listenerGenerationStyle =
(boolean)settings.get(FormLoaderSettings.PROP_GENERATE_LAMBDA_LISTENERS);
- return listenerGenerationStyle;
- }
-
- public void setGenerateListenersAsLambda(boolean value) {
- settings.put(FormLoaderSettings.PROP_GENERATE_LAMBDA_LISTENERS,
value);
- }
-
public int getLayoutCodeTarget() {
return checkLayoutCodeTarget();
}
diff --git a/java/form/src/org/netbeans/modules/form/JavaCodeGenerator.java
b/java/form/src/org/netbeans/modules/form/JavaCodeGenerator.java
index e41bfb8..e36afba 100644
--- a/java/form/src/org/netbeans/modules/form/JavaCodeGenerator.java
+++ b/java/form/src/org/netbeans/modules/form/JavaCodeGenerator.java
@@ -131,6 +131,7 @@
static final int ANONYMOUS_INNERCLASSES = 0;
static final int CEDL_INNERCLASS = 1;
static final int CEDL_MAINCLASS = 2;
+ static final int LAMBDAS = 3;
// types of code generation of layout code
static final int LAYOUT_CODE_AUTO = 0;
@@ -263,7 +264,6 @@
propList.add(new LocalVariablesProperty());
propList.add(new GenerateFQNProperty());
propList.add(new GenerateMnemonicsCodeProperty());
- propList.add(new GenerateLambdaListenersCodeProperty());
propList.add(new ListenerGenerationStyleProperty());
FormServices services =
Lookup.getDefault().lookup(FormServices.class);
if (services.isLayoutExtensionsLibrarySupported()) {
@@ -2434,15 +2434,16 @@
lastEventSetDesc = eventSetDesc;
}
- if (defaultMode != ANONYMOUS_INNERCLASSES)
+ if (defaultMode != ANONYMOUS_INNERCLASSES && defaultMode !=
LAMBDAS) {
if (mode == defaultMode) {
if (!event.isInCEDL())
mode = ANONYMOUS_INNERCLASSES;
- }
- else if (event.isInCEDL())
+ } else if (event.isInCEDL()) {
mixedMode = true;
+ }
+ }
- if (defaultMode == ANONYMOUS_INNERCLASSES || !event.isInCEDL())
{
+ if (defaultMode == ANONYMOUS_INNERCLASSES || defaultMode ==
LAMBDAS || !event.isInCEDL()) {
if (listenerEvents == null)
listenerEvents = new ArrayList<Event>();
listenerEvents.add(event);
@@ -2499,7 +2500,8 @@
switch (mode) {
case ANONYMOUS_INNERCLASSES:
- generateInnerClasses(codeWriter, eventSetDesc, eventList);
+ case LAMBDAS:
+ generateInnerClasses(codeWriter, eventSetDesc, eventList,
mode == LAMBDAS);
break;
case CEDL_INNERCLASS:
@@ -2517,9 +2519,9 @@
generateCatchCode(exceptions, codeWriter);
}
- private void generateInnerClasses(Writer codeWriter, EventSetDescriptor
eventSetDesc,List<Event> eventList) throws IOException {
+ private void generateInnerClasses(Writer codeWriter, EventSetDescriptor
eventSetDesc, List<Event> eventList, boolean useLambdas) throws IOException {
- if (formModel.getSettings().getGenerateListenersAsLambda() &&
eventSetDesc.getListenerMethods().length == 1) {
+ if (useLambdas && eventSetDesc.getListenerMethods().length == 1) {
generateWithReferenceOrLambda(codeWriter, eventList);
} else {
codeWriter.write("new "); // NOI18N
@@ -4465,45 +4467,6 @@
}
}
- private class GenerateLambdaListenersCodeProperty extends
PropertySupport.ReadWrite {
-
- private GenerateLambdaListenersCodeProperty() {
- super(PROP_GENERATE_LAMBDA_LISTENERS,
- Boolean.TYPE,
-
FormUtils.getBundleString("PROP_GENERATE_LAMBDA_LISTENERS"), // NOI18N
-
FormUtils.getBundleString("HINT_GENERATE_LAMBDA_LISTENERS")); // NOI18N
- }
-
- @Override
- public void setValue(Object value) {
- if (!(value instanceof Boolean))
- throw new IllegalArgumentException();
-
- Boolean oldValue = (Boolean) getValue();
- Boolean newValue = (Boolean) value;
-
formModel.getSettings().setGenerateListenersAsLambda(newValue.booleanValue());
- formModel.fireSyntheticPropertyChanged(null,
PROP_GENERATE_LAMBDA_LISTENERS, oldValue, newValue);
- FormEditor formEditor = FormEditor.getFormEditor(formModel);
- formEditor.getFormRootNode().firePropertyChangeHelper(
- PROP_GENERATE_LAMBDA_LISTENERS, oldValue, newValue);
- }
-
- @Override
- public Object getValue() {
- return
Boolean.valueOf(formModel.getSettings().getGenerateListenersAsLambda());
- }
-
- @Override
- public boolean canWrite() {
- return JavaCodeGenerator.this.canGenerate &&
!JavaCodeGenerator.this.formModel.isReadOnly() && (ANONYMOUS_INNERCLASSES ==
formModel.getSettings().getListenerGenerationStyle());
- }
-
- @Override
- public boolean supportsDefaultValue() {
- return false;
- }
- }
-
private class ListenerGenerationStyleProperty extends
PropertySupport.ReadWrite {
private ListenerGenerationStyleProperty() {
@@ -4702,6 +4665,9 @@
{
public ListenerGenerationStyleEditor() {
super(new Object[] {
+ FormUtils.getBundleString("CTL_LISTENER_LAMBDAS"), // NOI18N
+ Integer.valueOf(JavaCodeGenerator.LAMBDAS),
+ "" ,// NOI18N
FormUtils.getBundleString("CTL_LISTENER_ANONYMOUS_CLASSES"), // NOI18N
Integer.valueOf(JavaCodeGenerator.ANONYMOUS_INNERCLASSES),
"", // NOI18N
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists