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
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> 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> 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> wrote:
Hi All,
Please review code changes done as with inputs provided.
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> 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> wrote:
The issue is with setting of TabbedPane*Scroll*Layout()
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
<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
*Webrev:*
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