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> 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
> 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
>