Hi Sergey and Alexander,

Please review the code changes done.

With Regards,
Avik Niyogi
> On 28-Mar-2016, at 1:45 pm, Avik Niyogi <avik.niy...@oracle.com> wrote:
> 
> A gentle reminder, Please review the code changes as presented below.
> 
> With Regards,
> Avik Niyogi
>> On 24-Mar-2016, at 3:01 pm, Rajeev Chamyal <rajeev.cham...@oracle.com 
>> <mailto:rajeev.cham...@oracle.com>> wrote:
>> 
>> Looks good to me.
>>  
>> Regards,
>> Rajeev Chamyal
>>  
>> From: Avik Niyogi 
>> Sent: 24 March 2016 12:54
>> To: Rajeev Chamyal; Alexander Scherbatiy; Sergey Bylokhov; 
>> swing-dev@openjdk.java.net <mailto:swing-dev@openjdk.java.net>
>> Subject: Re: <Swing Dev> Review Request of 8137169 : [macosx] Incorrect 
>> minimal heigh of JTabbedPane with more tabs
>>  
>> Hi All,
>> Please review code changes as per inputs received. 
>>  
>> http://cr.openjdk.java.net/~aniyogi/8137169/webrev.03 
>> <http://cr.openjdk.java.net/~aniyogi/8137169/webrev.03>
>>  
>> As SCROLL_TAB_LAYOUT is the default layout for Aqua LAF, with implementation 
>> within the derived AquaTruncatedTabbedPaneLayout, extending of 
>> TabbedPaneScrollLayout is not needed and management of row and column height 
>> is done within it itself. Hence preferredTabAreaWidth and 
>> preferredTabAreaHeight need not manage the number of columns and rows 
>> respectively and will remain 1 as tabs can be brought forth to the UI by the 
>> arrow buttons AQUA provides instead of placing them in another row or 
>> column. This is also the expected behaviour for AquaLAF as per javadoc.
>>  
>> With Regards,
>> Avik Niyogi
>>  
>> On 24-Mar-2016, at 12:34 pm, Rajeev Chamyal <rajeev.cham...@oracle.com 
>> <mailto:rajeev.cham...@oracle.com>> wrote:
>>  
>> Hello Avik,
>>  
>> x variable on line 2195 is not used anywhere. Do we need for loop also?
>>  
>> Regards,
>> Rajeev Chamyal
>>  
>> From: Avik Niyogi 
>> Sent: 24 March 2016 12:19
>> To: Alexander Scherbatiy
>> Cc: Sergey Bylokhov; Rajeev Chamyal; swing-dev@openjdk.java.net 
>> <mailto:swing-dev@openjdk.java.net>
>> Subject: Re: <Swing Dev> Review Request of 8137169 : [macosx] Incorrect 
>> minimal heigh of JTabbedPane with more tabs
>>  
>> Hi All,
>>  
>> Please review my code changes below as per the inputs received.
>>  
>> http://cr.openjdk.java.net/~aniyogi/8137169/webrev.02/ 
>> <http://cr.openjdk.java.net/~aniyogi/8137169/webrev.02/>
>>  
>> As SCROLL_TAB_LAYOUT is the default layout for Aqua LAF, with implementation 
>> within the derived AquaTruncatedTabbedPaneLayout, extending of 
>> TabbedPaneScrollLayout is not needed and management of row and column height 
>> is done within it itself. Hence preferredTabAreaWidth and 
>> preferredTabAreaHeight need not manage the number of columns and rows 
>> respectively and will remain 1 as tabs can be brought forth to the UI by the 
>> arrow buttons AQUA provides instead of placing them in another row or 
>> column. This is also the expected behaviour for AquaLAF as per javadoc.
>>  
>> With Regards,
>> Avik Niyogi
>>  
>>  
>> On 23-Mar-2016, at 4:14 pm, Alexander Scherbatiy 
>> <alexandr.scherba...@oracle.com <mailto:alexandr.scherba...@oracle.com>> 
>> wrote:
>>  
>> On 23/03/16 14:07, Avik Niyogi wrote:
>> 
>> 
>>  
>> On 23-Mar-2016, at 3:31 pm, Alexander Scherbatiy 
>> <alexandr.scherba...@oracle.com <mailto: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.
>>    According to the JTabbedPane javadoc:
>>   SCROLL_TAB_LAYOUT: Tab layout policy for providing a subset of available 
>> tabs when all the tabs will not fit within a single run.
>>   WRAP_TAB_LAYOUT The tab layout policy for wrapping tabs in multiple runs 
>> when all tabs will not fit within a single run.
>>  
>>    The Aqua L&F uses only AquaTabbedPaneUI and AquaTabbedPaneContrastUI for 
>> tabbed pane UI and they both returns AquaTruncatingTabbedPaneLayout which 
>> has been designed for to place tabs according to the SCROLL_TAB_LAYOUT.
>> 
>>   Thanks,
>>   Alexandr.
>> 
>> 
>> 
>> 
>> 
>>   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 
>> <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 <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/~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 
>> <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 <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 notTabbedPaneLayout() 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 AquaTabbedPaneUIwill 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 
>> <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>
>>  
>> Webrev:
>>  
>> 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

Reply via email to