[
https://issues.apache.org/jira/browse/NETBEANS-633?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Laszlo Kishalmi reassigned NETBEANS-633:
----------------------------------------
Assignee: Laszlo Kishalmi
> GUI Builder fails to load sub-panel with NLS / Respource bundle
> ---------------------------------------------------------------
>
> Key: NETBEANS-633
> URL: https://issues.apache.org/jira/browse/NETBEANS-633
> Project: NetBeans
> Issue Type: Bug
> Components: guibuilder - Binding, guibuilder - Natural Layout
> Affects Versions: 8.2, 9.0
> Environment: Product Version: Apache NetBeans IDE Dev (Build
> incubator-netbeans-release-205-on-20180202)
> Java: 10; Java HotSpot(TM) 64-Bit Server VM 10+46
> Runtime: Java(TM) SE Runtime Environment 10+46
> System: Windows 10 version 10.0 running on amd64; Cp1252; en_AU (nb)
> User directory: Z:\tmp\.other\user\netbeans\v09.00-beta\FourAbs
> Cache directory: Z:\tmp\.other\cache\netbeans\FourAbs-09
> Reporter: will mason
> Assignee: Laszlo Kishalmi
> Priority: Critical
> Labels: GUI, MissingResourceException, Swing,
> internationalization
> Attachments: image-2018-04-10-10-32-31-818.png, swing_bundles.7z
>
>
> h2. expected
> * To be able to view and edit parent JPanel screen in Netbeans GUI Builder.
> * This should be possible no matter what the sub-panels do
> * If/when a resource is missing or unresolved some kind of place holder can
> be used
> h2. actual
> * We have several GUI JPanel-s which act as containers for a "details"
> screen, sub-panel layouts.
> * In one of the sub-panels we introduced a resource bundle to display
> options for check-boxes..
> * This details screen works as a sub-panel at run-time.
> * This details screen works as in the GUI designer/builder fine.
> * However whenever we load the parent panel, the container it fails with a
> *{{MissingResourceException}}*.
> !image-2018-04-10-10-32-31-818.png!
>
> * This is somewhat of a SHOW STOPPER as far as internationalisation goes for
> reusable GUI components I'm afraid.
> * The situation is quite mysterious as well since the Resource file is
> found, loaded and displayed by the detail JPanel screen which is IN THE SAME
> java Package at runtime and design time.
> * The resource bundle itself is in the {{resources/bundles}} folder of
> common library (Gradle directory layout) and is "fixed" so to speak at design
> time.
> * I believe there is some fundamental flaw here because you must have
> parents able to load sub-components with or without any resource strings.
>
> h2. supporting information
> {noformat}
> --[ *stacktrace* ]--
> java.util.MissingResourceException: Can't find bundle for base name
> bundles/SpaAssurancesText, locale en_AU
> at
> java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055)
> at
> java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689)
> at
> java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593)
> at
> java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1556)
> at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:857)
> at
> au.com.fourtel.fourabs.client.spas.JPanelSpaDetails.initComponents(JPanelSpaDetails.java:1608)
> at
> au.com.fourtel.fourabs.client.spas.JPanelSpaDetails.<init>(JPanelSpaDetails.java:148)
> at
> au.com.fourtel.fourabs.client.spas.JPanelSpaDetails.<init>(JPanelSpaDetails.java:141)
> at
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
> at java.base/java.lang.Class.newInstance(Class.java:560)
> at
> org.netbeans.modules.form.CreationFactory.createDefaultInstance(CreationFactory.java:155)
> at
> org.netbeans.modules.form.RADComponent.createBeanInstance(RADComponent.java:227)
> at
> org.netbeans.modules.form.RADComponent.initInstance(RADComponent.java:166)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:755)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:478)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:258)
> at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327)
> at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268)
> at
> org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:115)
> at
> org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:75)
> at
> org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71)
> at org.openide.util.Mutex.readAccess(Mutex.java:225)
> at
> org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251)
> at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324)
> at
> org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436)
> at
> org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256)
> at
> org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64)
> at
> org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245)
> at
> java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
> at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
> at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97)
> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
> at java.base/java.security.AccessController.doPrivileged(Native Method)
> at
> java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
> at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
> at
> org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
> at
> java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
> at
> java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
> java.io.IOException: Undefined component referenced in layout:
> jPanelSpaDetails
> at
> org.netbeans.modules.form.layoutdesign.LayoutPersistenceManager.correctMissingName(LayoutPersistenceManager.java:712)
> at
> org.netbeans.modules.form.layoutdesign.LayoutPersistenceManager.loadLayout(LayoutPersistenceManager.java:388)
> at
> org.netbeans.modules.form.layoutdesign.LayoutPersistenceManager.loadContainer(LayoutPersistenceManager.java:354)
> at
> org.netbeans.modules.form.layoutdesign.LayoutModel.loadContainerLayout(LayoutModel.java:1206)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:973)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:478)
> at
> org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:258)
> at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327)
> at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268)
> at
> org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:115)
> at
> org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:75)
> at
> org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71)
> at org.openide.util.Mutex.readAccess(Mutex.java:225)
> at
> org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251)
> at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324)
> at
> org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436)
> at
> org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256)
> at
> org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64)
> at
> org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245)
> at
> java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
> at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
> at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97)
> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
> at java.base/java.security.AccessController.doPrivileged(Native Method)
> at
> java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
> at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
> at
> org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
> at
> java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
> at
> java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
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