> On 23-Mar-2016, at 3:31 pm, Alexander Scherbatiy > <alexandr.scherba...@oracle.com> wrote: > > On 21/03/16 09:19, Avik Niyogi wrote: >> Hi Alexander, >> I agree with what you said regarding the look and feel looking different. >> But this bug arrises due to setting of TabbedPaneScrollLayout only. If >> Scroll Layout is not meant for Aqua look and feel should not the setting of >> this parameter instead throw a helpful error saying this parameter is not >> accepted > According to the JTabbedPane.setTabLayoutPolicy(int tabLayoutPolicy) > javadoc: > "Some look and feels might only support a subset of the possible layout > policies, in which case the value of this property may be ignored." > > Aqua L&F ignores WRAP_TAB_LAYOUT for JTabbedPane tabs layouting and always > use SCROLL_TAB_LAYOUT. No exception should be thrown in this case.
Actually, it is doing the other way around for Aqua L&F. It is defaulting WRAP_TAB_LAYOUT and setting SCROLL_TAB_LAYOUT is still setting a subclass of TabbedPaneLayout and not TabbedPaneScrollLayout. > Thanks, > Alexandr. > >> instead of absorbing this parameter and letting it render itself into a >> dummy node which does not proceed further with this parameter? Maybe we need >> to discuss what the expected behaviour may be. Also, thank you for the >> inputs regarding how to proceed with removing duplicate code. >> >> With Regards, >> Avik Niyogi >>> On 19-Mar-2016, at 1:52 am, Alexander Scherbatiy >>> <alexandr.scherba...@oracle.com <mailto:alexandr.scherba...@oracle.com>> >>> wrote: >>> >>> >>> I would think about something like: >>> ------------- >>> public class TabbedPaneLayout implements LayoutManager { >>> >>> protected int basePreferredTabAreaWidth(final int tabPlacement, >>> final int height) { >>> // TabbedPaneLayout preferredTabAreaWidth implementation >>> } >>> >>> protected int truncatingPreferredTabAreaWidth(final int >>> tabPlacement, final int height) { >>> if (tabPlacement == SwingConstants.LEFT || tabPlacement == >>> SwingConstants.RIGHT) { >>> return basePreferredTabAreaWidth(tabPlacement, height); >>> } >>> >>> return basePreferredTabAreaWidth(tabPlacement, height); >>> } >>> >>> protected int preferredTabAreaWidth(final int tabPlacement, final >>> int height) { >>> return basePreferredTabAreaWidth(tabPlacement, height); >>> } >>> >>> } >>> >>> class TabbedPaneScrollLayout extends TabbedPaneLayout { >>> @Override >>> protected int basePreferredTabAreaWidth(int tabPlacement, int >>> height) { >>> // TabbedPaneScrollLayout preferredTabAreaWidth implementation >>> } >>> } >>> >>> protected class AquaTruncatingTabbedPaneLayout extends >>> AquaTabbedPaneCopyFromBasicUI.TabbedPaneLayout { >>> >>> @Override >>> protected int preferredTabAreaWidth(final int tabPlacement, final >>> int height) { >>> return truncatingPreferredTabAreaWidth(tabPlacement, height); >>> } >>> } >>> >>> protected class AquaTruncatingTabbedScrollPaneLayout extends >>> AquaTabbedPaneCopyFromBasicUI.TabbedPaneScrollLayout { >>> >>> @Override >>> protected int preferredTabAreaWidth(final int tabPlacement, final >>> int height) { >>> return truncatingPreferredTabAreaWidth(tabPlacement, height); >>> } >>> } >>> ------------- >>> >>> I just have one more question. The TabbedPaneScrollLayout is only created >>> in AquaTabbedPaneCopyFromBasicUI. AquaLookAndFeel only use AquaTabbedPaneUI >>> or AquaTabbedPaneContrastUI which do not return TabbedPaneScrollLayout. >>> >>> Are there any real cases when the TabbedPaneScrollLayout is created? >>> >>> When you enabled the AquaTruncatingTabbedScrollPaneLayout in the >>> AquaTabbedPaneUI the JTabbedPane L&F with SCROLL_TAB_LAYOUT does not look >>> similar to Aqua L&F: >>> http://cr.openjdk.java.net/~alexsch/8137169/aqua-scrolled-tabbed-pane.png >>> <http://cr.openjdk.java.net/%7Ealexsch/8137169/aqua-scrolled-tabbed-pane.png> >>> >>> The AquaTruncatingTabbedPaneLayout already contains arrows for hidden tabs >>> navigation. >>> May be the fix should update the AquaTruncatingTabbedPaneLayout only? >>> >>> Thanks, >>> Alexandr. >>> >>> On 18/03/16 14:21, Avik Niyogi wrote: >>>> Hi Alexander, >>>> Thank you for the inputs. I agree with you and did feel the need for >>>> removing duplicate code as well. But as per an earlier review input, >>>> changes to the super call lay outing is not accepted. This was the only >>>> other feasible solution. Created redundant code in this process, but would >>>> be maintaining with requirements with code impact to superclasses. >>>> Please provide any insight to a probable compensate to mitigate this >>>> dichotomy of code expectation. Thank you in advance. >>>> >>>> With Regards, >>>> Avik Niyogi >>>>> On 18-Mar-2016, at 2:42 pm, Alexander Scherbatiy < >>>>> <mailto:alexandr.scherba...@oracle.com>alexandr.scherba...@oracle.com >>>>> <mailto:alexandr.scherba...@oracle.com>> wrote: >>>>> >>>>> >>>>> It is not usually a good idea to have a duplicated code which should be >>>>> updated every time in several places. >>>>> >>>>> Is it possible to move the methods used both in >>>>> AquaTruncatingTabbedPaneLayout and AquaTruncatingTabbedScrollPaneLayout >>>>> to TabbedPaneLayout with different names and then reused? >>>>> >>>>> Thanks, >>>>> Alexandr. >>>>> >>>>> On 17/03/16 17:17, Avik Niyogi wrote: >>>>>> Hi Alexander, >>>>>> The issue only applies for ScrollingTabbedPane and hence this fix. >>>>>> >>>>>> With Regards, >>>>>> Avik Niyogi >>>>>> >>>>>>> On 16-Mar-2016, at 4:51 pm, Alexander Scherbatiy >>>>>>> <alexandr.scherba...@oracle.com >>>>>>> <mailto:alexandr.scherba...@oracle.com>> wrote: >>>>>>> >>>>>>> >>>>>>> Does the same issue affects the AquaTabbedPaneContrastUI? >>>>>>> >>>>>>> Thanks, >>>>>>> Alexandr. >>>>>>> >>>>>>> On 14/03/16 09:04, Avik Niyogi wrote: >>>>>>>> Hi All, >>>>>>>> A gentle reminder, please review code changes. >>>>>>>> >>>>>>>> With Regards, >>>>>>>> Avik Niyogi >>>>>>>>> On 08-Mar-2016, at 9:51 pm, Avik Niyogi < >>>>>>>>> <mailto:avik.niy...@oracle.com>avik.niy...@oracle.com >>>>>>>>> <mailto:avik.niy...@oracle.com>> wrote: >>>>>>>>> >>>>>>>>> Hi All, >>>>>>>>> >>>>>>>>> Please review code changes done as with inputs provided. >>>>>>>>> >>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8137169/webrev.01/>http://cr.openjdk.java.net/~aniyogi/8137169/webrev.01/ >>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8137169/webrev.01/> >>>>>>>>> >>>>>>>>> Also, albeit the title of issue mentioned is as above, the injection >>>>>>>>> of issue occurs because >>>>>>>>> pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); is not >>>>>>>>> honoured. >>>>>>>>> In the new fix as provided, references to base class layout manager >>>>>>>>> is removed in current solution. >>>>>>>>> >>>>>>>>> With Regards, >>>>>>>>> Avik Niyogi >>>>>>>>> >>>>>>>>>> On 02-Mar-2016, at 7:50 pm, Alexander Potochkin < >>>>>>>>>> <mailto:alexander.potoch...@oracle.com>alexander.potoch...@oracle.com >>>>>>>>>> <mailto:alexander.potoch...@oracle.com>> wrote: >>>>>>>>>> >>>>>>>>>> Hello Avik >>>>>>>>>> >>>>>>>>>> Let me make it clear I don't approve the proposed fix >>>>>>>>>> and ask you to do additional evaluation. >>>>>>>>>> >>>>>>>>>> Every LookAndFeel is different and it doesn't make much sense >>>>>>>>>> to compare Metal LaF with AquaLaf. >>>>>>>>>> >>>>>>>>>> The AquaLaf mimics the native MacOS controls and therefore look >>>>>>>>>> quite different from any other Lafs. >>>>>>>>>> >>>>>>>>>> The bug you are fixing has the following subject >>>>>>>>>> "Incorrect minimal heigh of JTabbedPane with more tabs" >>>>>>>>>> >>>>>>>>>> Could you please fix exactly the problem with the minimal heights, >>>>>>>>>> without changing the UI delegate class. >>>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> alexp >>>>>>>>>> >>>>>>>>>>> Gentle reminder. Please review this fix. >>>>>>>>>>> >>>>>>>>>>>> On 26-Feb-2016, at 10:39 am, Avik Niyogi < >>>>>>>>>>>> <mailto:avik.niy...@oracle.com>avik.niy...@oracle.com >>>>>>>>>>>> <mailto:avik.niy...@oracle.com>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> The issue is with setting of TabbedPaneScrollLayout() for the >>>>>>>>>>>> option JTabbedPane.SCROLL_TAB_LAYOUT as is enabled in the test code >>>>>>>>>>>> and not TabbedPaneLayout() as which is the default. >>>>>>>>>>>> >>>>>>>>>>>> The minimum size fixes itself because the ScrollLayout check fails >>>>>>>>>>>> in setTabLayoutPolicy() for the pane. So the issue is with the >>>>>>>>>>>> call to set layout manager. >>>>>>>>>>>> There are only two configurations that the JTabbedPane can exist >>>>>>>>>>>> in of which SCROLL_TAB_LAYOUT is one of them. >>>>>>>>>>>> >>>>>>>>>>>> Fixing the minimum size in AquaTabbedPaneUI will fix it for >>>>>>>>>>>> TabbedPaneLayout() only which is the WRAP_TAB_LAYOUT. >>>>>>>>>>>> >>>>>>>>>>>> Also, I have checked other implementations such as for Metal and >>>>>>>>>>>> Motif and they have similar code for doing this process. >>>>>>>>>>>> Hence, with in-depth analysis, this fix has no other impact apart >>>>>>>>>>>> from this fix. >>>>>>>>>>>> >>>>>>>>>>>> In case the impact caused by this change has caused some >>>>>>>>>>>> definitive regressions, please mention them so they can be >>>>>>>>>>>> addressed. Thank you. >>>>>>>>>>>> >>>>>>>>>>>> With Regards, >>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>> >>>>>>>>>>>>> On 25-Feb-2016, at 6:45 pm, Alexander Potochkin < >>>>>>>>>>>>> <mailto:alexander.potoch...@oracle.com>alexander.potoch...@oracle.com >>>>>>>>>>>>> <mailto:alexander.potoch...@oracle.com>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hello Avik >>>>>>>>>>>>> >>>>>>>>>>>>> AquaTruncatingTabbedPaneLayout has a lot of code which is >>>>>>>>>>>>> specific for the AquaTabbedPaneUI. >>>>>>>>>>>>> I don't think setting the layout manager from the base class is >>>>>>>>>>>>> the right solution here. >>>>>>>>>>>>> >>>>>>>>>>>>> If there is a problem with minimum size it should be fixed inside >>>>>>>>>>>>> the AquaTabbedPaneUI >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks >>>>>>>>>>>>> alexp >>>>>>>>>>>>> >>>>>>>>>>>>> On 2/24/2016 12:07, Avik Niyogi wrote: >>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Kindly review the bug fix for JDK 9. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Bug: >>>>>>>>>>>>>> >>>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8137169>https://bugs.openjdk.java.net/browse/JDK-8137169 >>>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8137169> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Webrev: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8137169/webrev.00/>http://cr.openjdk.java.net/~aniyogi/8137169/webrev.00/ >>>>>>>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8137169/webrev.00/> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Issue: >>>>>>>>>>>>>> For Aqua Look&Feel, multiple calls to >>>>>>>>>>>>>> pane.getMinimumSize().height causes incremental return of values. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Cause: >>>>>>>>>>>>>> The impact was caused by a major broken code within >>>>>>>>>>>>>> AquaTabbedPaneUI.java for createLayoutManager() >>>>>>>>>>>>>> >>>>>>>>>>>>>> Fix: >>>>>>>>>>>>>> Major linking calls to super class fix done within >>>>>>>>>>>>>> createLayoutManager(). >>>>>>>>>>>>>> >>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >