You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2008/01/29 15:39:16 UTC
svn commit: r616348 - in
/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer:
AppletFrame.java AppletInfo.java HTMLParser.java
Author: apetrenko
Date: Tue Jan 29 06:39:15 2008
New Revision: 616348
URL: http://svn.apache.org/viewvc?rev=616348&view=rev
Log:
Patch for HARMONY-5440 "[jdktools][appletviewer] appletviewer doesn't
"understand" <object> tag"
Modified:
harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletFrame.java
harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletInfo.java
harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/HTMLParser.java
Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletFrame.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletFrame.java?rev=616348&r1=616347&r2=616348&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletFrame.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletFrame.java Tue Jan 29 06:39:15 2008
@@ -24,6 +24,7 @@
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.net.URLClassLoader;
+import java.net.URL;
import java.util.HashSet;
import javax.swing.AbstractAction;
@@ -45,33 +46,45 @@
public AppletFrame(AppletInfo appletInfo) throws Exception {
this.appletInfo = appletInfo;
+ String code = this.appletInfo.getCode();
+ if(code == null || code.equals("")){
+ System.err.println("Warning: <" + appletInfo.getTag() +"> tag requires code attribute.");
+ System.exit(0);
+ }
+
shutdownHandler.addFrame(this);
// Load applet class
+ if(appletInfo.getCodeBase() == null){
+ appletInfo.setCodeBase(new URL(appletInfo.getDocumentBase(), "./"));
+ }
+
URLClassLoader cl = new URLClassLoader(appletInfo.getClassLoaderURLs());
- Class clz = cl.loadClass(this.appletInfo.getCode());
+ Class clz = cl.loadClass(code);
applet = (Applet)clz.newInstance();
applet.setStub(new ViewerAppletStub(applet, appletInfo));
+ applet.setPreferredSize(new Dimension(appletInfo.getWidth(), appletInfo.getHeight()));
+
+ // Create menu bar
+ setJMenuBar(createMenu());
// Create applet pane
setLayout(new BorderLayout());
JPanel appletPanel = new JPanel();
appletPanel.add(applet);
- add(appletPanel, BorderLayout.CENTER);
- applet.setPreferredSize(new Dimension(appletInfo.getWidth(), appletInfo.getHeight()));
-
- // Create menu bar
- setJMenuBar(createMenu());
+ add(appletPanel, BorderLayout.NORTH);
// Create status pane
JPanel panel = new JPanel();
+ panel.setLayout(new BorderLayout());
+ panel.setMinimumSize(new Dimension(100, 15));
+ panel.setPreferredSize(new Dimension(100, 15));
statusLabel = new JLabel();
- panel.add(statusLabel);
+ statusLabel.setMinimumSize(new Dimension(100, 15));
+ statusLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ panel.add(statusLabel, BorderLayout.WEST);
add(panel, BorderLayout.SOUTH);
appletInfo.setStatusLabel(statusLabel);
-
- statusLabel.setMinimumSize(new Dimension(100, 40));
- statusLabel.setHorizontalAlignment(SwingConstants.LEFT);
// Start applet and make frame visible
// Init should be called after pack to make components displayable
@@ -99,44 +112,44 @@
private class StartAction extends AbstractAction {
public StartAction() {
- super("Start");
+ super("Start");
}
- public void actionPerformed(final ActionEvent e) {
- applet.start();
- applet.setEnabled(true);
- }
+ public void actionPerformed(final ActionEvent e) {
+ applet.start();
+ applet.setEnabled(true);
+ }
}
private class StopAction extends AbstractAction {
- public StopAction() {
- super("Stop");
- }
-
- public void actionPerformed(ActionEvent e) {
- applet.stop();
- applet.setEnabled(false);
- }
+ public StopAction() {
+ super("Stop");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ applet.stop();
+ applet.setEnabled(false);
+ }
}
private class CloseAction extends AbstractAction {
- public CloseAction() {
- super("Close");
- }
-
- public void actionPerformed(ActionEvent e) {
- setVisible(false);
- }
+ public CloseAction() {
+ super("Close");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ setVisible(false);
+ }
}
private class ExitAction extends AbstractAction {
- public ExitAction() {
- super("Exit");
- }
-
- public void actionPerformed(ActionEvent e) {
- System.exit(0);
- }
+ public ExitAction() {
+ super("Exit");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ System.exit(0);
+ }
}
private static class ShutdownHandler implements WindowListener {
Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletInfo.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletInfo.java?rev=616348&r1=616347&r2=616348&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletInfo.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/AppletInfo.java Tue Jan 29 06:39:15 2008
@@ -31,6 +31,7 @@
private URL codeBase;
private URL archive;
private String code;
+ private String tagName;
private int width;
private int height;
private HashMap<String, String> params;
@@ -128,5 +129,13 @@
case 1: res[0] = codeBase;
}
return res;
+ }
+
+ public void setTag(String tagName){
+ this.tagName = tagName;
+ }
+
+ public String getTag(){
+ return tagName;
}
}
Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/HTMLParser.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/HTMLParser.java?rev=616348&r1=616347&r2=616348&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/HTMLParser.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/appletviewer/HTMLParser.java Tue Jan 29 06:39:15 2008
@@ -32,7 +32,8 @@
import javax.swing.text.html.parser.TagElement;
class HTMLParser {
- private final ParserImpl parser;
+
+ private final ParserImpl parser;
HTMLParser() throws IOException {
DTD dtd = DTD.getDTD("reader");
@@ -49,14 +50,14 @@
}
private class ParserImpl extends javax.swing.text.html.parser.Parser {
- private URL documentBase;
- private ArrayList<AppletInfo> list;
+ private URL documentBase;
+ private ArrayList<AppletInfo> list;
private AppletInfo appletInfo = null;
private HTML.Tag startElement = null;
public ParserImpl(DTD dtd) {
- super(dtd);
- }
+ super(dtd);
+ }
public void parse(String url, ArrayList<AppletInfo> list) throws IOException {
try {
@@ -72,57 +73,69 @@
parse(isr);
}
- @Override
- protected void handleStartTag(TagElement tag) {
- if (tag == null)
- return;
- HTML.Tag htmlTag = tag.getHTMLTag();
+ @Override
+ protected void handleStartTag(TagElement tag) {
+ if (tag == null)
+ return;
+
+ HTML.Tag htmlTag = tag.getHTMLTag();
+
if (htmlTag == HTML.Tag.APPLET || htmlTag == HTML.Tag.OBJECT) {
+
if (startElement != null) {
throw new RuntimeException(htmlTag+" inside "+startElement);
}
startElement = htmlTag;
appletInfo = new AppletInfo();
+ appletInfo.setTag(htmlTag.toString());
+ list.add(appletInfo);
+
appletInfo.setDocumentBase(documentBase);
+
SimpleAttributeSet attributes = getAttributes();
- appletInfo.setCode((String)attributes.getAttribute(HTML.Attribute.CODE));
- try {
- appletInfo.setCodeBase((String)attributes.getAttribute(HTML.Attribute.CODEBASE));
- } catch (Exception e) {
- appletInfo.setCodeBase((URL)null);
- }
- try {
- appletInfo.setArchive((String)attributes.getAttribute(HTML.Attribute.ARCHIVE));
- } catch (MalformedURLException e) {
- appletInfo.setArchive((URL)null);
- }
appletInfo.setWidth((String)attributes.getAttribute(HTML.Attribute.WIDTH));
appletInfo.setHeight((String)attributes.getAttribute(HTML.Attribute.HEIGHT));
- list.add(appletInfo);
- return;
- }
- if (appletInfo != null && htmlTag == HTML.Tag.PARAM) {
- SimpleAttributeSet attributes = getAttributes();
- appletInfo.setParameter((String)attributes.getAttribute(HTML.Attribute.NAME), (String)attributes.getAttribute(HTML.Attribute.VALUE));
- }
- }
+ try {
+ appletInfo.setArchive((String)attributes.getAttribute(HTML.Attribute.ARCHIVE));
+ } catch (MalformedURLException e) {
+ appletInfo.setArchive((URL)null);
+ }
+
+ try {
+ appletInfo.setCode((String)attributes.getAttribute(HTML.Attribute.CODE));
+ } catch (Exception e) {}
+
+ if (htmlTag == HTML.Tag.APPLET) {
+ try {
+ appletInfo.setCodeBase((String)attributes.getAttribute(HTML.Attribute.CODEBASE));
+ } catch (Exception e) {
+ appletInfo.setCodeBase((URL)null);
+ }
+ }
+ }
+ }
- @Override
- protected void handleEndTag(TagElement tag) {
- if (tag != null && tag.getHTMLTag() == startElement)
+ @Override
+ protected void handleEndTag(TagElement tag) {
+ if (tag != null && tag.getHTMLTag() == startElement)
startElement = null;
- }
+ }
- @Override
- protected void handleEmptyTag(TagElement tag)
- throws ChangedCharSetException {
- HTML.Tag htmlTag = tag.getHTMLTag();
+ @Override
+ protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException {
+
+ HTML.Tag htmlTag = tag.getHTMLTag();
if (appletInfo != null && htmlTag == HTML.Tag.PARAM) {
SimpleAttributeSet attributes = getAttributes();
- appletInfo.setParameter((String)attributes.getAttribute(HTML.Attribute.NAME), (String)attributes.getAttribute(HTML.Attribute.VALUE));
+ String name = (String)attributes.getAttribute(HTML.Attribute.NAME);
+ if(name.equalsIgnoreCase("code")){
+ appletInfo.setCode((String)attributes.getAttribute(HTML.Attribute.VALUE));
+ } else {
+ appletInfo.setParameter(name, (String)attributes.getAttribute(HTML.Attribute.VALUE));
+ }
}
- }
+ }
}
}