Add openProposalPopup(boolean beep) to allow suppressing beep when no proposals exist
Summary
This PR adds a new public API method to ContentProposalAdapter that allows callers to control whether a beep sound is emitted when programmatically opening the proposal popup with no proposals available.
Problem
Currently, ContentProposalAdapter#openProposalPopup() always emits a beep sound when the popup cannot be opened due to no proposals being available. This behavior is hardcoded and cannot be controlled by the caller. In some scenarios, such as programmatically refreshing proposals in response to automated events (e.g., file system changes), this beeping behavior is undesirable.
Solution
As suggested in the issue, this PR makes the existing private openProposalPopup(boolean) method public with a more intuitive parameter name:
// New public API - control beep behavior explicitly
adapter.openProposalPopup(false); // Suppress beep when no proposals
adapter.openProposalPopup(true); // Beep when no proposals (explicit)
// Existing API - unchanged behavior
adapter.openProposalPopup(); // Beeps when no proposals (default, backward compatible)
Changes
-
New public method:
openProposalPopup(boolean beep)- Parameter
beep=true: Beeps if no proposals are available (default behavior) - Parameter
beep=false: Suppresses the beep even when no proposals exist - Documented with Javadoc including
@since 3.23
- Parameter
-
Internal refactoring:
- Renamed private method from
openProposalPopup(boolean autoActivated)toopenProposalPopup0(boolean autoActivated)to distinguish it from the new public API - Updated all internal calls (4 locations) to use the renamed method
- Renamed private method from
-
Testing: Added
testOpenProposalPopupWithBeepParameter()to verify both beep modes work correctly
Backward Compatibility
✅ Fully backward compatible - All existing code continues to work unchanged:
- The parameterless
openProposalPopup()method maintains its original behavior (beeps by default) - All existing callers will see no behavior change
- No breaking changes to the API
Use Cases
Suppress beep for automated actions:
public void refreshProposals(List<String> newProposals) {
proposalProvider.setProposals(newProposals);
adapter.refresh();
// Don't beep when refreshing programmatically
adapter.openProposalPopup(false);
}
Keep beep for user-triggered actions:
button.addListener(SWT.Selection, e -> {
// Beep to provide feedback if no proposals are available
adapter.openProposalPopup(true);
});
Fixes the issue where callers had no control over the beep behavior when programmatically opening the proposal popup.
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
repo.eclipse.org
- Triggering command:
/usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/eclipse.platform.ui/eclipse.platform.ui org.codehaus.plexus.classworlds.launcher.Launcher clean compile -Pbuild-individual-bundles(dns block)- Triggering command:
/usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/eclipse.platform.ui/eclipse.platform.ui org.codehaus.plexus.classworlds.launcher.Launcher clean test -Pbuild-individual-bundles -Dtest=ContentProposalAdapterTest(dns block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
Original prompt
This section details on the original issue you should resolve
<issue_title>ContentProposalAdapter should have a way to prevent the beep when programatically open the popup</issue_title> <issue_description>
ContentProposalAdapter#openProposalPopup()currently has (documented) behavior to emit a "beep sound" if it can not open because there are no proposals.It would be good to let the caller choose to suppress that.
The simplest would be to just make
ContentProposalAdapter.openProposalPopup(boolean)public and rename the parameterautoActivatedtobeep</issue_description>Comments on the Issue (you are @copilot in this section)
Fixes eclipse-platform/eclipse.platform.ui#3393
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.