Fix looks good to me. > > > > On 12/9/2016 8:18 PM, Alexandr Scherbatiy wrote: >> On 12/6/2016 5:52 PM, Prasanta Sadhukhan wrote: >>> On 12/6/2016 8:17 PM, Alexandr Scherbatiy wrote: >>>> On 12/1/2016 9:16 AM, Prasanta Sadhukhan wrote: >>>>> On 11/30/2016 2:53 PM, Prasanta Sadhukhan wrote: >>>>>> >>>>>> Hi All, >>>>>> >>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8170349 >>>>>> <https://bugs.openjdk.java.net/browse/JDK-8170349> >>>>>> >>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8170349/webrev.00/ >>>>>> <http://cr.openjdk.java.net/~psadhukhan/8170349/webrev.00/> >>>>>> >>>>>> Please review a fix for a continuation/regression of JDK-8081491 >>>>>> <https://bugs.openjdk.java.net/browse/JDK-8081491 >>>>>> <https://bugs.openjdk.java.net/browse/JDK-8081491>> in which we >>>>>> made sure that we print only the JTable rows/columns that is >>>>>> visible on console. >>>>>> >>>>>> This bug manifests itself as, despite marking JTable PrintMode to >>>>>> FIT_WIDTH, we are printing only those columns that are visible on >>>>>> console. >>>>>> >>>>>> However, if JTable PrintMode is FIT_WIDTH, then as per spec >>>>>> https://docs.oracle.com/javase/8/docs/api/javax/swing/JTable.PrintMode.html#FIT_WIDTH >>>>>> >>>>>> <https://docs.oracle.com/javase/8/docs/api/javax/swing/JTable.PrintMode.html#FIT_WIDTH> >>>>>> we should print all columns on each page (apparently irrespective >>>>>> of what is visible) >>>>>> >>>>>> The fix takes care of that by making sure the table bounds is >>>>>> adjusted to clipwidth [which is already adjusted to total column >>>>>> width here >>>>>> <http://hg.openjdk.java.net/jdk9/client/jdk/file/f7148ccb86bb/src/java.desktop/share/classes/javax/swing/TablePrintable.java#l504 >>>>>> >>>>>> <http://hg.openjdk.java.net/jdk9/client/jdk/file/f7148ccb86bb/src/java.desktop/share/classes/javax/swing/TablePrintable.java#l504>>] >>>>>> so that all columns are printed and also rectangle border is >>>>>> drawn encompassing all columns. >>>>>> >>>>> The reason of adjusting the table bounds was because table.print() >>>>> calls BasicTableUI.paint() where we compute visibleBounds >>>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/a5e270f2c97d/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableUI.java#l1817 >>>>> >>>>> <http://hg.openjdk.java.net/jdk9/client/jdk/file/a5e270f2c97d/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableUI.java#l1817> >>>>> therefore we need to adjust the visibleBounds to entire columns >>>>> instead of just the visible columns. >>>> Did the test Swing_JTable/Manual/PrintManualTest_FitWidthMultiple >>>> pass before the fix for the JDK-8081491? >> Which logic in the fix JDK-8081491 causes that the printing a >> table with FIT_WIDTH mode stopped to properly work? > We calculate visibleBounds in BasicTableUI for 8081491 so even for > FIT_WIDTH, it was printing the visible portion of table. Since, in > BasicTableUI we cannot access TablePrintable.PrintMode value(since it > is private), we need to make sure the table bounds set to full column > width so that visibleBounds calculated in BasicTableUI is tricked to > believe, that we are printing whole columns. > > Regards > Prasanta >> >> Thanks, >> Alexandr. >>> Yes, it did. >>> >>> Regards >>> Prasanta >>>> It looks like the table bounds never have been changed in the >>>> TablePrintable. >>>> >>>> Thanks, >>>> Alexandr. >>>>> >>>>> Regards >>>>> Prasanta >>>>>> The 8081491 testcases passed with this fix as well. >>>>>> >>>>>> Regards >>>>>> Prasanta >>>>> >>>> >>> >> >