harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-4662) [classlib][swing][html] CSS is used to specify HTML tag behavior
Date Tue, 21 Aug 2007 16:53:30 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-4662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521528

Vasily Zakharov commented on HARMONY-4662:

Generally, using CSS to specify the tags behavior is right and effective way, and it's better
than hardcoding it in Java - CSS is the standard for specifying elements behavior, and CSS
is already supported by our Swing/HTML engine, so it's reasonable to use this mechanism. However,
replacing default CSS makes our implementation incompatible.

I see two ways to correct this issue (if doing it at all):

1. Describe the behavior for all elements in Java, which may be performance-effective but
rather complex and inflexible in implementation.

2. Create "base", non-replaceable CSS describing the elements behavior. The default CSS may
be merged to this base CSS, and when default CSS is replaced, the replacement may be once
again merged to the base CSS before use. This can decrease performance a bit, but would provide
simple, clear, flexible and conforming implementation.

> [classlib][swing][html] CSS is used to specify HTML tag behavior
> ----------------------------------------------------------------
>                 Key: HARMONY-4662
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4662
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Vasily Zakharov
>         Attachments: Harmony.jpg, RI.jpg
> For now Harmony uses modules/swing/src/main/java/common/javax/swing/text/html/default.css
file to specify behavior for many HTML tags, like <center>, <b>, and some others.
Moreover, it seems that RI does the same for many tags. This is quite comfortable and efficient,
but is not quite compliant to HTML specification because default CSS may be replaced and tags
start to behave incompatibly to the specification.
> The following test shows how the tags operate by default and with default CSS replaced
with empty stylesheet:
> import java.awt.Container;
> import javax.swing.*;
> import javax.swing.border.*;
> import javax.swing.text.html.*;
> public class Test {
>     static final String testHTML =
>             "<h1>Heading 1</h1><h2>Heading 2</h2><h3>Heading
>           + "<h4>Heading 4</h4><h5>Heading 5</h5><h6>Heading
>           + "<p>paragraph</p><pre>  pre\n   pre</pre><center>center</center>"
>           + "<p><b>bold</b> <strong>strong</strong> <i>italic</i>
>           + "<p><small>small</small> normal <big>big</big></p>"
>           + "<a>aaa</a> <a href=\"\">href</a> <code>code</code>
>     public static void main(String argv[]) {
>         try {
>             JFrame frame = new JFrame("Test");
>             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>             Container pane = frame.getContentPane();
>             pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));
>             Border border = new BevelBorder(BevelBorder.LOWERED);
>             JEditorPane defaultPane = new JEditorPane("text/html", testHTML);
>             defaultPane.setBorder(new TitledBorder(border, "Default CSS",
>                     TitledBorder.LEFT, TitledBorder.ABOVE_TOP));
>             JEditorPane replacedPane = new JEditorPane("text/html", "");
>             replacedPane.setBorder(new TitledBorder(border, "Empty CSS",
>                     TitledBorder.LEFT, TitledBorder.ABOVE_TOP));
>             HTMLEditorKit editorKit = new HTMLEditorKit();
>             StyleSheet styleSheet = new StyleSheet();
>             editorKit.setStyleSheet(styleSheet);
>             replacedPane.setEditorKit(editorKit);
>             replacedPane.setText(testHTML);
>             pane.add(defaultPane);
>             pane.add(replacedPane);
>             frame.pack();
>             frame.setVisible(true);
>         } catch (Exception e) {
>             e.printStackTrace(System.out);
>         }
>     }
> }
> The attached screenshots demonstrate the behavior of RI and Harmony.
> As one may see, on both RI and Harmony only <b> and <i> tags operate normally
with empty stylesheet, and also <pre> tag retains part of its functionality (spaces
are not merged).

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message