📄 applettag.java
字号:
// bit bogus anyway. if (currentTag != null) { currentTag.parseArchives(); return currentTag; } return null; } public String toString() { return (" name=" + name + "\n" + " code=" + code + "\n" + " codebase=" + codebase + "\n" + " archive=" + archives + "\n" + " parameters=" + parameters + "\n" + " documentbase=" + documentbase + "\n"); } public static Dimension getSize (AppletTag tag) { NumberFormat numberFormat; Dimension size = new Dimension(320, 200); try { String widthStr = (String) tag.parameters.get("width"); if (widthStr != null) { if (widthStr.charAt(widthStr.length() - 1) == '%') numberFormat = NumberFormat.getPercentInstance(Locale.US); else numberFormat = NumberFormat.getInstance(Locale.US); // FIXME: Handle percentage somehow. size.width = numberFormat.parse(widthStr).intValue(); } } catch (ParseException e) { // Use default. } try { String heightStr = (String) tag.parameters.get("height"); if (heightStr != null) { if (heightStr.charAt(heightStr.length() - 1) == '%') numberFormat = NumberFormat.getPercentInstance(Locale.US); else numberFormat = NumberFormat.getInstance(Locale.US); // FIXME: Handle percentage somehow. size.height = numberFormat.parse(heightStr).intValue(); } } catch (ParseException e) { // Use default. } return size; }}class EmbedTag extends AppletTag{ EmbedTag(StreamTokenizer tagTokenizer, URL documentbase, String encoding) throws IOException { this.documentbase = documentbase; this.encoding = encoding; // In an EMBED tag, a parameter is any non-standard attribute. This // is a problem for applets that take parameters named "code", // "codebase", "archive", "object", or "type". The solution is to // allow the same attributes, prefixed by "java_". The presence of // a "java_" attribute indicates that the non-prefixed attribute // should be interpreted as a parameter. For example if "java_code" // and "code" attributes are present in the EMBED tag then the // "code" attribute is interpreted as a parameter. boolean codeSet = false; boolean codebaseSet = false; boolean archiveSet = false; boolean objectSet = false; boolean javaCodeSet = false; boolean javaCodebaseSet = false; boolean javaArchiveSet = false; boolean javaObjectSet = false; while (tagTokenizer.nextToken() != '>') { if (tagTokenizer.ttype == StreamTokenizer.TT_WORD) { if (tagTokenizer.sval.equals("name")) { name = parseAttributeString(tagTokenizer); parameters.put("name", name); } else if (tagTokenizer.sval.equals("code")) { if (javaCodeSet) { // Interpret non-prefixed attribute as a parameter. String key = new String(tagTokenizer.sval); String value = AppletTag.parseParamValue(tagTokenizer); parameters.put(key, value); } else { code = parseAttributeString(tagTokenizer); codeSet = true; } } else if (tagTokenizer.sval.equals("java_code")) { if (codeSet) parameters.put("code", code); code = parseAttributeString(tagTokenizer); javaCodeSet = true; } else if (tagTokenizer.sval.equals("object")) { if (javaObjectSet) { // Interpret non-prefixed attribute as a parameter. String key = new String(tagTokenizer.sval); String value = AppletTag.parseParamValue(tagTokenizer); parameters.put(key, value); } else { code = parseAttributeString(tagTokenizer); objectSet = true; } } else if (tagTokenizer.sval.equals("java_object")) { if (objectSet) parameters.put("object", code); code = parseAttributeString(tagTokenizer); javaObjectSet = true; } else if (tagTokenizer.sval.equals("codebase")) { if (javaCodebaseSet) { // Interpret non-prefixed attribute as a parameter. String key = new String(tagTokenizer.sval); String value = AppletTag.parseParamValue(tagTokenizer); parameters.put(key, value); } else { codebase = parseAttributeString(tagTokenizer); codebaseSet = true; } } else if (tagTokenizer.sval.equals("java_codebase")) { if (codebaseSet) parameters.put("codebase", codebase); codebase = parseAttributeString(tagTokenizer); javaCodebaseSet = true; } else if (tagTokenizer.sval.equals("archive")) { if (javaArchiveSet) { // Interpret non-prefixed attribute as a parameter. String key = new String(tagTokenizer.sval); String value = AppletTag.parseParamValue(tagTokenizer); parameters.put(key, value); } else { archivesList = parseAttributeString(tagTokenizer); archiveSet = true; } } else if (tagTokenizer.sval.equals("java_archive")) { if (archiveSet) parameters.put("archive", archivesList); archivesList = parseAttributeString(tagTokenizer); javaArchiveSet = true; } else if (tagTokenizer.sval.equals("width")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); if (tagTokenizer.ttype == StreamTokenizer.TT_NUMBER) this.parameters.put("width", Integer.toString((int) tagTokenizer.nval)); else this.parameters.put("width", tagTokenizer.sval); } else if (tagTokenizer.sval.equals("height")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); if (tagTokenizer.ttype == StreamTokenizer.TT_NUMBER) this.parameters.put("height", Integer.toString((int) tagTokenizer.nval)); else this.parameters.put("height", tagTokenizer.sval); } else if (! tagTokenizer.sval.equals("align") && ! tagTokenizer.sval.equals("alt") && ! tagTokenizer.sval.equals("hspace") && ! tagTokenizer.sval.equals("mayscript") && ! tagTokenizer.sval.equals("pluginspage") && ! tagTokenizer.sval.equals("title") && ! tagTokenizer.sval.equals("type") && ! tagTokenizer.sval.equals("java_type") && ! tagTokenizer.sval.equals("vspace")) { // Interpret this unknown attribute as a parameter. String key = new String(tagTokenizer.sval).toLowerCase(); String value = AppletTag.parseParamValue(tagTokenizer); parameters.put(key, value); } } } }}class ObjectTag extends AppletTag{ // See comment in EmbedTag for an explanation of these fields. boolean codeSet; boolean codebaseSet; boolean archiveSet; boolean objectSet; boolean javaCodeSet; boolean javaCodebaseSet; boolean javaArchiveSet; boolean javaObjectSet; ObjectTag(StreamTokenizer tagTokenizer, URL documentbase, String encoding) throws IOException { this.documentbase = documentbase; this.encoding = encoding; while (tagTokenizer.nextToken() != '>') { if (tagTokenizer.ttype == StreamTokenizer.TT_WORD) { if (tagTokenizer.sval.equals("name")) name = parseAttributeString(tagTokenizer); if (tagTokenizer.sval.equals("width")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); if (tagTokenizer.ttype == StreamTokenizer.TT_NUMBER) this.parameters.put("width", Integer.toString((int) tagTokenizer.nval)); else this.parameters.put("width", tagTokenizer.sval); } else if (tagTokenizer.sval.equals("height")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); if (tagTokenizer.ttype == StreamTokenizer.TT_NUMBER) this.parameters.put("height", Integer.toString((int) tagTokenizer.nval)); else this.parameters.put("height", tagTokenizer.sval); } } } } // Parse an applet parameter. void parseParam(StreamTokenizer tagTokenizer) throws IOException { String paramName = null; String value = null; while (tagTokenizer.nextToken() != '>') { if (tagTokenizer.ttype == StreamTokenizer.TT_WORD) { if (tagTokenizer.sval.equals("name")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); paramName = new String(tagTokenizer.sval).toLowerCase(); } else if (tagTokenizer.sval.equals("value")) value = parseParamValue(tagTokenizer); } if (paramName != null && value != null) { if (paramName.equals("code")) { if (javaCodeSet) // Interpret non-prefixed attribute as a parameter. parameters.put(paramName, value); else { code = value; codeSet = true; } } else if (paramName.equals("java_code")) { if (codeSet) parameters.put("code", code); code = value; javaCodeSet = true; } else if (paramName.equals("object")) { if (javaObjectSet) parameters.put(paramName, value); else { code = value; objectSet = true; } } else if (paramName.equals("java_object")) { if (objectSet) parameters.put("object", code); code = value; javaObjectSet = true; } else if (paramName.equals("codebase")) { if (javaCodebaseSet) parameters.put(paramName, value); else { codebase = value; codebaseSet = true; } } else if (paramName.equals("java_codebase")) { if (codebaseSet) parameters.put("codebase", codebase); codebase = value; javaCodebaseSet = true; } else if (paramName.equals("archive")) { if (javaArchiveSet) parameters.put(paramName, value); else { // Save the archive list for later processing. archivesList = value; archiveSet = true; } } else if (paramName.equals("java_archive")) { if (archiveSet) parameters.put("archive", archivesList); archivesList = value; javaArchiveSet = true; } else if (! paramName.equals("type") && ! paramName.equals("java_type") && ! paramName.equals("mayscript") && ! paramName.equals("scriptable")) parameters.put(paramName, value); } } }}class AppTag extends AppletTag{ AppTag(StreamTokenizer tagTokenizer, URL documentbase, String encoding) throws IOException { this.documentbase = documentbase; this.encoding = encoding; while (tagTokenizer.nextToken() != '>') { if (tagTokenizer.ttype == StreamTokenizer.TT_WORD) { if (tagTokenizer.sval.equals("class")) code = parseAttributeString(tagTokenizer); else if (tagTokenizer.sval.equals("src")) codebase = parseAttributeString(tagTokenizer); else if (tagTokenizer.sval.equals("width")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); if (tagTokenizer.ttype == StreamTokenizer.TT_NUMBER) this.parameters.put("width", Integer.toString((int) tagTokenizer.nval)); else this.parameters.put("width", tagTokenizer.sval); } else if (tagTokenizer.sval.equals("height")) { tagTokenizer.nextToken(); tagTokenizer.nextToken(); if (tagTokenizer.ttype == StreamTokenizer.TT_NUMBER) this.parameters.put("height", Integer.toString((int) tagTokenizer.nval)); else this.parameters.put("height", tagTokenizer.sval); } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -