[ 
https://issues.apache.org/jira/browse/NETBEANS-1792?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16738766#comment-16738766
 ] 

Thierry Danard commented on NETBEANS-1792:
------------------------------------------

I confirm that changing org.openide.awt.Actions.java to

if (action instanceof BooleanStateAction) {
 b = new BooleanButtonBridge(button, (BooleanStateAction)action);
 } *else if* (action.getValue(Actions.ACTION_VALUE_TOGGLE) != null) {
 b = new BooleanButtonBridge(button, action);
 } else {
 b = new ButtonBridge(button, action);
 }

fixed the issue.

For any developer who encounters the same issue, this is what I did to patch my 
own copy of the NetBeans 10 platform:
 * download the NetBeans 10 source code
 * download the NetBeans 10 binaries
 * make the change above to the org.openide.awt.Actions.java class in the 
source code
 * build (I typed "ant" from the command line and waited about 20 minutes)
 * in the org-openide-awt.jar from the binaries, substitute the Action.class 
with yours
 * calculate the crc of your new org-openide-awt.jar file (I used 
https://emn178.github.io/online-tools/crc32_checksum.html)
 * in the platform\update_tracking\org-openide-awt.xml file, change the crc of 
modules/org-openide-awt.jar to this new value

If you apply these changes to the binaries and NetBeans doesn't start, check 
the logs for errors 
(C:\Users\yourusername\AppData\Roaming\NetBeans\10.0\var\log\messages.log on 
Windows)

 

 

 

> Behavior of BooleanStateAction has changed
> ------------------------------------------
>
>                 Key: NETBEANS-1792
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-1792
>             Project: NetBeans
>          Issue Type: Bug
>          Components: platform - Actions
>    Affects Versions: 10.0
>            Reporter: Thierry Danard
>            Assignee: Svatopluk Dedic
>            Priority: Major
>             Fix For: 10.0
>
>         Attachments: DemoNetBeans1792.zip, image-2018-12-10-19-26-40-055.png, 
> image-2018-12-11-09-23-24-408.png, image-2018-12-11-09-47-54-474.png
>
>
> I used the latest release candidate of NetBeans 10 (vc4), and found that 
> BooleanStateAction fires two "booleanState" events instead of one when a 
> button backed by a BooleanStateAction is pressed, the first event reporting 
> that the state is changing to "true", the second event reporting that the 
> state is changing back to "false" (even though the button is still showing as 
> "pressed")
> In my case, this BooleanStateAction is inside a JToolbar.
> javax.swing.JToolBar toolbar = new JToolBar();
>  toolbar.setFloatable(false);
>  toolbar.setRollover(true);
> Component tp1 = 
> SystemAction.get(MyBooleanStateAction1.class).getToolbarPresenter();
>  Component tp2 = 
> SystemAction.get(MyBooleanStateAction2.class).getToolbarPresenter();
>  Component tp3 = 
> SystemAction.get(MyBooleanStateAction3.class).getToolbarPresenter();
> tp1.setFocusable(false);
>  tp2.setFocusable(false);
>  tp3.setFocusable(false);
> toolbar.add(tp1);
>  toolbar.add(tp2);
>  toolbar.add(tp3);
> JPanel toolbarPanel = new JPanel(new BorderLayout());
>  toolbarPanel.add(toolbar, BorderLayout.WEST);
>  
> This is a breaking change, it was working just fine in NetBeans 9. It breaks 
> a lot of code in my app as I rely on the booleanState event to enable to 
> disable behaviors: right now, when a user clicks a button, it shows as 
> "pressed", but the associated function gets disabled right after it gets 
> enabled.
> I wasn't able to find a root cause after running from NetBeans source.
> I did note that the BooleanStateAction is deprecated.
> I'll try to provide a sample code to reproduce.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to