You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by "brad foster (Jira)" <ji...@apache.org> on 2022/02/23 20:34:00 UTC

[jira] [Updated] (NETBEANS-6471) Border Customizer / border properties and auto-generated code missing

     [ https://issues.apache.org/jira/browse/NETBEANS-6471?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

brad foster updated NETBEANS-6471:
----------------------------------
    Description: 
This might be a combination of several issues, I'm not sure.

Ever since switching from a 'last known working' NB version 5 or 7 to 11.2, opening, editing and compiling some existing UI projects, there are some weird effects.

The project setup is 'unconventional'; the UI is created with NB in a different workspace from the business code (where Eclipse is used) and the compiled project/JAR's are then imported there. In turn, some UI extension code is developed and imported from the Eclipse workspace, e. g. a class 'LabelBorder' (which inherits from class 'TitledBorder', only rendering the upper titled border as a visual divider) and provided to the NB project as a JAR.

_Don't ask why._

One of the detrimental effects is, that border label's title/name values are lost from PanelUI components inside a GridBagLayout on a parent JPanel, in the compiled version from NB.

For some such visual 'LabelBorder' divider sub-components, the '{*}border{*}' attribute in the properties view is printed bold. For those, the {{Border Customizer}} via [...] correctly shows a reall {{[?] LabelBorder}} entry for the imported component and all of its properties.

Here, the auto-generated {{.form}} code from the Parent component using those PanelUI components also shows generated property code for the LabelBorder components:
{code:java}
<Properties>
  <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors3.BorderEditor">
    <PropertyBean type="my.ui.components.LabelBorder">
      <Property name="title" type="java.lang.String" value="Section 3"/>
    </PropertyBean>
  </Property>
</Properties> {code}
For other, obviously completely similar sub-components it does not. The {{Border Customizer}} will show  {{[?] Unknown Border (Label Border)}} instead and {{<no properties>}} (also, in the properties view, the 'border' attribute is not printed bold), even though everything's in the same package hierarchy level.

I cannot spot any difference in the component's properties, that give me any clue why this is.

The {{Code Customizer}} will only show generated code entries for the 'good' examples like this:
{code:java}
my.ui.components.LabelBorder labelBorder1 = new my.ui.components.LabelBorder();
zuzug.setBorder(labelBorder1); {code}
What's obviously missing here, though, is:
{code:java}
labelBorder1.setTitle("Section1"); {code}
This might explain, why the compiled version looses the label texts.

Manually fiddling with {{Customize Code}} and adding correct code for the borked {{LabelBorder}} components, like above, will not show any different results, not even with full clean/build.

Also, custom code can only be added '{{{}pre-init{}}}', not as '{{{}default code{}}}'.

In NB 12.6, another effect shows for the 'borked' {{LabelBorder}} components, where printed the title font size is a little larger in the {{Preview Design}} view, than it is for the 'good' examples - there, the default font size from the super component {{TitledBorder}} is used.

The only workaround to preserve title properties seems to be manually editing:
_properties -> [...] -> border/LabelBorder -> title [...] -> Plain text -> OK_

This step must be done before editing anything else, otherwise, the previous title value is gone and needs to be manually typed in the 'Plain text' field again.

Closing and re-opening the editor will require to repeat this procedure.

The issue(s) probably relate (at least in part) to NETBEANS-4798

  was:
This might be a combination of several issues, I'm not sure.

Ever since switching from a 'last known working' NB version 5 or 7 to 11.2, opening, editing and compiling some existing UI projects, there are some weird effects.

The project setup is 'unconventional'; the UI is created with NB in a different workspace from the business code (where Eclipse is used) and the compiled project/JAR's are then imported there. In turn, some UI extension code is developed and imported from the Eclipse workspace, e. g. a class 'LabelBorder' (which inherits from class 'TitledBorder', only rendering the upper titled border as a visual divider) and provided to the NB project as a JAR.

_Don't ask why._

One of the detrimental effects is, that border label's title/name values are lost from PanelUI components inside a GridBagLayout on a parent JPanel, in the compiled version from NB.

For some such visual 'LabelBorder' divider sub-components, the '{*}border{*}' attribute in the properties view is printed bold. For those, the {{Border Customizer}} via [...] correctly shows a reall {{[?] LabelBorder}} entry for the imported component and all of its properties. 

Here, the auto-generated {{.form}} code from the Parent component using those PanelUI components also shows generated property code for the LabelBorder components:
{code:java}
<Properties>
  <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors3.BorderEditor">
    <PropertyBean type="my.ui.components.LabelBorder">
      <Property name="title" type="java.lang.String" value="Section 3"/>
    </PropertyBean>
  </Property>
</Properties> {code}
For other, obviously completely similar sub-components it does not. The {{Border Customizer}} will show  {{[?] Unknown Border (Label Border)}} instead and {{<no properties>}} (also, in the properties view, the 'border' attribute is not printed bold), even though everything's in the same package hierarchy level. 

I cannot spot any difference in the component's properties, that give me any clue why this is.

The {{Code Customizer}} will only show generated code entries for the 'good' examples like this:
{code:java}
my.ui.components.LabelBorder labelBorder1 = new my.ui.components.LabelBorder();
zuzug.setBorder(labelBorder1); {code}
What's obviously missing here, though, is:
{code:java}
labelBorder1.setTitle("Section1"); {code}
This might explain, why the compiled version looses the label texts.

Manually fiddling with {{Customize Code}} and adding correct code for the borked {{LabelBorder}} components, like above, will not show any different results, not even with full clean/build. 

Also, custom code can only be added '{{{}pre-init{}}}', not as '{{{}default code{}}}'.

In NB 12.6, another effect shows for the 'borked' {{LabelBorder}} components, where printed the title font size is a little larger in the {{Preview Design}} view, than it is for the 'good' examples - there, the default font size from the super component {{TitledBorder}} is used.

The only workaround to preserve title properties seems to be manually editing:
 _properties -> [...] -> border/LabelBorder -> title [...] -> Plain text -> OK_

This step must be done before editing anything else, otherwise, the previous title value is gone and needs to be manually typed in the 'Plain text' field again.

Closing and re-opening the editor will require to repeat this procedure.


> Border Customizer / border properties and auto-generated code missing 
> ----------------------------------------------------------------------
>
>                 Key: NETBEANS-6471
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-6471
>             Project: NetBeans
>          Issue Type: Bug
>          Components: guibuilder - Code, platform - Property Editors
>    Affects Versions: 11.2, 12.6
>            Reporter: brad foster
>            Priority: Major
>
> This might be a combination of several issues, I'm not sure.
> Ever since switching from a 'last known working' NB version 5 or 7 to 11.2, opening, editing and compiling some existing UI projects, there are some weird effects.
> The project setup is 'unconventional'; the UI is created with NB in a different workspace from the business code (where Eclipse is used) and the compiled project/JAR's are then imported there. In turn, some UI extension code is developed and imported from the Eclipse workspace, e. g. a class 'LabelBorder' (which inherits from class 'TitledBorder', only rendering the upper titled border as a visual divider) and provided to the NB project as a JAR.
> _Don't ask why._
> One of the detrimental effects is, that border label's title/name values are lost from PanelUI components inside a GridBagLayout on a parent JPanel, in the compiled version from NB.
> For some such visual 'LabelBorder' divider sub-components, the '{*}border{*}' attribute in the properties view is printed bold. For those, the {{Border Customizer}} via [...] correctly shows a reall {{[?] LabelBorder}} entry for the imported component and all of its properties.
> Here, the auto-generated {{.form}} code from the Parent component using those PanelUI components also shows generated property code for the LabelBorder components:
> {code:java}
> <Properties>
>   <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors3.BorderEditor">
>     <PropertyBean type="my.ui.components.LabelBorder">
>       <Property name="title" type="java.lang.String" value="Section 3"/>
>     </PropertyBean>
>   </Property>
> </Properties> {code}
> For other, obviously completely similar sub-components it does not. The {{Border Customizer}} will show  {{[?] Unknown Border (Label Border)}} instead and {{<no properties>}} (also, in the properties view, the 'border' attribute is not printed bold), even though everything's in the same package hierarchy level.
> I cannot spot any difference in the component's properties, that give me any clue why this is.
> The {{Code Customizer}} will only show generated code entries for the 'good' examples like this:
> {code:java}
> my.ui.components.LabelBorder labelBorder1 = new my.ui.components.LabelBorder();
> zuzug.setBorder(labelBorder1); {code}
> What's obviously missing here, though, is:
> {code:java}
> labelBorder1.setTitle("Section1"); {code}
> This might explain, why the compiled version looses the label texts.
> Manually fiddling with {{Customize Code}} and adding correct code for the borked {{LabelBorder}} components, like above, will not show any different results, not even with full clean/build.
> Also, custom code can only be added '{{{}pre-init{}}}', not as '{{{}default code{}}}'.
> In NB 12.6, another effect shows for the 'borked' {{LabelBorder}} components, where printed the title font size is a little larger in the {{Preview Design}} view, than it is for the 'good' examples - there, the default font size from the super component {{TitledBorder}} is used.
> The only workaround to preserve title properties seems to be manually editing:
> _properties -> [...] -> border/LabelBorder -> title [...] -> Plain text -> OK_
> This step must be done before editing anything else, otherwise, the previous title value is gone and needs to be manually typed in the 'Plain text' field again.
> Closing and re-opening the editor will require to repeat this procedure.
> The issue(s) probably relate (at least in part) to NETBEANS-4798



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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

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