📄 taghandler.java
字号:
catch (NullPointerException nullerr1) {} try { int pos = ((Integer) mergepoints.get("/wml")).intValue(); int end = deckData.indexOf(">", pos); footer = "\n" + deckData.substring(pos, deckData.length()); } catch (NullPointerException nullerr2) {} try { int pos = ((Integer) mergepoints.get("template")).intValue(); int pos2 = ((Integer) mergepoints.get("/template")).intValue(); int end = deckData.indexOf(">", pos2); template = " " + deckData.substring(pos, end + 1) + "\n\n"; } catch (NullPointerException nullerr3) {} String data = header + template + cardData + footer; return data; } /** * Get the WML dtd version specified by the DOCTYPE tag. */ public double getWMLVersion() { return keywordFinder.getWMLVersion(); } /** * Gets the cards in the Graphics Designer and converts them to text. * @return String text - the converted cards. */ public String getCards() { // call converter for each tab in CardPane int index = CardPane.getSelectedIndex(); Vector data = new Vector(); data.add(new Integer(GlobalControlCounter)); data.add(gp.getStyledDocument()); data.add(new Boolean(CardTagsCreated)); data.add(cardControls); data.add(CardLevelTags); try { openData.setElementAt(data, index); } catch (ArrayIndexOutOfBoundsException arrerr) {} String txt = ""; for (int x = 0; x < CardPane.getComponentCount(); x++) { // get the data JTextPane p = new JTextPane(); data = (Vector) openData.get(x); GlobalControlCounter = ((Integer) data.get(0)).intValue(); p.setStyledDocument((DefaultStyledDocument) data.get(1)); CardTagsCreated = ((Boolean) data.get(2)).booleanValue(); cardControls = (Vector) data.get(3); CardLevelTags = (CardTags) data.get(4); //convert the data to text Converter conv = new Converter(p); String s = conv.toText((StyledDocument) p.getDocument()); String properties = CardPane.getComponentAt(x).getName(); if (properties.length() > 0) s = "\t<card " + properties + ">\n" + s + "\t</card>\n"; else s = "\t<card>\n" + s + "\t</card>\n"; txt = txt + s; } return txt; } /** * Deletes a card control from the application. This process cannot be undone. */ public void deleteCard() { if (CardPane.getTabCount() > 0) { try { openData.remove(CardPane.getSelectedIndex()); CardPane.remove(CardPane.getSelectedIndex()); Vector data = (Vector) openData.get(CardPane.getSelectedIndex()); GlobalControlCounter = ((Integer) data.get(0)).intValue(); gp.setStyledDocument((DefaultStyledDocument) data.get(1)); CardTagsCreated = ((Boolean) data.get(2)).booleanValue(); cardControls = (Vector) data.get(3); CardLevelTags = (CardTags) data.get(4); gp.setVisible(false); gp.setVisible(true); previndex = CardPane.getSelectedIndex(); } catch (ArrayIndexOutOfBoundsException arrerr) { gp.setStyledDocument(new DefaultStyledDocument()); gp.setEnabled(false); gp.setEditable(false); } } } /** * Sets the properties of a the selected card. Calls up a dialog box * where the user can specify the various properties for a card. */ public void setCardProperties() { GraphicalControlsProperties gcp = new GraphicalControlsProperties(); String properties = CardPane.getSelectedComponent().getName(); String [] props = new String[7]; int start = -1; int end = -1; if (properties.indexOf("newcontext=\"") > -1) { start = properties.indexOf("newcontext=\"") + 12; end = properties.indexOf("\"", start); props[0] = properties.substring(start, end); } else props[0] = "N/A"; if (properties.indexOf("onenterbackward=\"") > -1) { start = properties.indexOf("onenterbackward=\"") + 17; end = properties.indexOf("\"", start); props[1] = properties.substring(start, end); } if (properties.indexOf("onenterforward=\"") > -1) { start = properties.indexOf("onenterforward=\"") + 16; end = properties.indexOf("\"", start); props[2] = properties.substring(start, end); } if (properties.indexOf("ontimer=\"") > -1) { start = properties.indexOf("ontimer=\"") + 9; end = properties.indexOf("\"", start); props[3] = properties.substring(start, end); } if (properties.indexOf("ordered=\"") > -1) { start = properties.indexOf("ordered=\"") + 9; end = properties.indexOf("\"", start); props[4] = properties.substring(start, end); } else props[4] = "N/A"; if (properties.indexOf("title=\"") > -1) { start = properties.indexOf("title=\"") + 7; end = properties.indexOf("\"", start); props[5] = properties.substring(start, end); } String extra = ""; if (properties.indexOf("id=\"") > -1) { start = properties.indexOf("id=\"") + 4; end = properties.indexOf("\"", start); extra = extra + properties.substring(start -4, end + 1); } if (properties.indexOf("class=\"") > -1) { start = properties.indexOf("class=\"") + 7; end = properties.indexOf("\"", start); extra = extra + properties.substring(start - 7, end + 1); } if (properties.indexOf("xml:lang=\"") > -1) { start = properties.indexOf("xml:lang=\"") + 10; end = properties.indexOf("\"", start); extra = extra + properties.substring(start - 10, end + 1); } gcp.showCardPanel(props[0], props[1], props[2], props[3], props[4], props[5], extra); gcp.show(); Vector dialogData = gcp.getData(); properties = ""; try { if (!((String) dialogData.get(0)).equals("N/A")) properties = properties + "newcontext=\"" + (String) dialogData.get(1) + "\" "; if (!((String) dialogData.get(1)).equals("")) properties = properties + "onenterbackward=\"" + (String) dialogData.get(2) + "\" "; if (!((String) dialogData.get(2)).equals("")) properties = properties + "onenterforward=\"" + (String) dialogData.get(3) + "\" "; if (!((String) dialogData.get(3)).equals("")) properties = properties + "ontimer=\"" + (String) dialogData.get(4) + "\" "; if (!((String) dialogData.get(4)).equals("N/A")) properties = properties + "ordered=\"" + (String) dialogData.get(5) + "\" "; if (!((String) dialogData.get(5)).equals("")) properties = properties + "title=\"" + (String) dialogData.get(5) + "\" "; properties = properties + (String) dialogData.get(6); properties = properties.trim(); CardPane.setTitleAt(CardPane.getSelectedIndex(), (String) dialogData.get(5)); CardPane.getSelectedComponent().setName(properties); } catch (NullPointerException nullerr) {// dialog cancelled } } /** * Sets the state of the editor, i.e. what buttons are enabled, based on * the attributes found at the cursor's position. */ public void checkCaretPosition() { // get properties of text at caret position and set toolbar & menu accordingly // also check if text is selcted and if so set buttons and menus according. JTextPane thepane; if (focusControl == null) { thepane = gp; } else thepane = focusControl; int start = -1; int end = -1; try { start = thepane.getSelectionStart(); end = thepane.getSelectionEnd(); } catch (NullPointerException noposerr) {} // now check for paragraph properties AttributeSet pset = thepane.getParagraphAttributes(); AttributeSet attribs; if ((start == -1) && (end == -1)) attribs = thepane.getCharacterAttributes(); else { attribs = (AttributeSet) ((StyledDocument) thepane.getDocument()).getCharacterElement(start); } // need to check for fieldset, anchor, and a tags String match = ""; if (!(attribs.getAttribute("a") == null)) match = "a"; if (!(attribs.getAttribute("anchor") == null)) { AnchorTagFound = true; match = "anchor"; } else AnchorTagFound = false; if (!(attribs.getAttribute("fieldset") == null)) match = "fieldset"; if (!currentDoDesigner.isVisible()) { if (match.equals("")) { Menu.getItem(1).setEnabled(true); Menu.getItem(2).setEnabled(true); Menu.getItem(3).setEnabled(true); JMenu mi = (JMenu) Menu.getItem(2); mi.setEnabled(true); mi.getItem(0).setEnabled(true); mi = (JMenu) Menu.getItem(4); mi.setEnabled(true); for (int x = 0; x < 4; x++) mi.getItem(x).setEnabled(true); Menu.getItem(5).setEnabled(true); Menu.getItem(6).setEnabled(true); Menu.getItem(7).setEnabled(true); for (int x = 0; x < 20; x++) Tools.getComponentAtIndex(x).setEnabled(true); Tools.getComponentAtIndex(1).setEnabled(false); // dividers must stay disabled Tools.getComponentAtIndex(4).setEnabled(false); Tools.getComponentAtIndex(12).setEnabled(false); for (int x = 0; x < 18; x++) AdvancedTools.getComponentAtIndex(x).setEnabled(true); AdvancedTools.getComponentAtIndex(5).setEnabled(false); // dividers AdvancedTools.getComponentAtIndex(10).setEnabled(false); AdvancedTools.getComponentAtIndex(14).setEnabled(false); AdvancedTools.getComponentAtIndex(16).setEnabled(false); } else { // if equals a or anchor disable all tools since no nesting is supported // only img and br, and fieldset are supported, everything else not // if fieldset, all allowed except p tag, and for now, fieldset tags // for all, leave in new card and card level tags. if (match.equals("fieldset")) { // fieldset first because less restrictions Menu.getItem(1).setEnabled(true); Menu.getItem(2).setEnabled(true); Menu.getItem(3).setEnabled(true); JMenu mi = (JMenu) Menu.getItem(2); mi.setEnabled(true); mi.getItem(0).setEnabled(false); mi = (JMenu) Menu.getItem(4); mi.setEnabled(true); for (int x = 2; x < 4; x++) // the 4 should be 3, to be changed mi.getItem(x).setEnabled(false); // when support for nested fieldset // tags is built in Menu.getItem(5).setEnabled(true); Menu.getItem(6).setEnabled(true); Menu.getItem(7).setEnabled(true); for (int x = 0; x < 20; x++) Tools.getComponentAtIndex(x).setEnabled(true); Tools.getComponentAtIndex(1).setEnabled(false); // dividers must stay disabled Tools.getComponentAtIndex(4).setEnabled(false); Tools.getComponentAtIndex(12).setEnabled(false); Tools.getComponentAtIndex(5).setEnabled(false); for (int x = 0; x < 18; x++) AdvancedTools.getComponentAtIndex(x).setEnabled(true); AdvancedTools.getComponentAtIndex(5).setEnabled(false); // dividers AdvancedTools.getComponentAtIndex(10).setEnabled(false); AdvancedTools.getComponentAtIndex(14).setEnabled(false); AdvancedTools.getComponentAtIndex(16).setEnabled(false); AdvancedTools.getComponentAtIndex(0).setEnabled(false); // controls AdvancedTools.getComponentAtIndex(1).setEnabled(false); AdvancedTools.getComponentAtIndex(4).setEnabled(false); } if ((match.equals("a")) || (match.equals("anchor"))) { Menu.getItem(1).setEnabled(false); Menu.getItem(2).setEnabled(false); Menu.getItem(3).setEnabled(true); JMenu mi = (JMenu) Menu.getItem(4); mi.setEnabled(true); for (int x = 2; x < 4; x++) mi.getItem(x).setEnabled(false); Menu.getItem(5).setEnabled(false); Menu.getItem(6).setEnabled(false); Menu.getItem(7).setEnabled(false); for (int x = 1; x < 12; x++) Tools.getComponentAtIndex(x).setEnabled(false); for (int x = 13; x < 20; x++) Tools.getComponentAtIndex(x).setEnabled(true); Tools.getComponentAtIndex(1).setEnabled(false); // dividers must stay disabled Tools.getComponentAtIndex(4).setEnabled(false); Tools.getComponentAtIndex(12).setEnabled(false); for (int x = 0; x < 17; x++) AdvancedTools.getComponentAtIndex(x).setEnabled(false); AdvancedTools.getComponentAtIndex(4).setEnabled(false); // dividers AdvancedTools.getComponentAtIndex(9).setEnabled(false); AdvancedTools.getComponentAtIndex(13).setEnabled(false); AdvancedTools.getComponentAtIndex(15).setEnabled(false); AdvancedTools.getComponentAtIndex(2).setEnabled(true); // controls AdvancedTools.getComponentAtIndex(3).setEnabled(true); AdvancedTools.getComponentAtIndex(4).setEnabled(true); } } if (pset.containsAttribute("pre", "")) { // disable fieldset, img, table controls Menu.getItem(7).setEnabled(false); JMenu mi = (JMenu) Menu.getItem(4); mi.setEnabled(true); mi.getItem(1).setEnabled(false); mi.getItem(3).setEnabled(false); AdvancedTools.getComponentAtIndex(3).setEnabled(false); AdvancedTools.getComponentAtIndex(4).setEnabled(false); AdvancedTools.getComponentAtIndex(11).setEnabled(false); AdvancedTools.getComponentAtIndex(12).setEnabled(false); AdvancedTools.getComponentAtIndex(13).setEnabled(false); } else { // enable fieldset, img, and table controls Menu.getItem(7).setEnabled(true); JMenu mi = (JMenu) Menu.getItem(4); mi.setEnabled(true); mi.getItem(1).setEnabled(true); mi.getItem(3).setEnabled(true); AdvancedTools.getComponentAtIndex(3).setEnabled(true); AdvancedTools.getComponentAtIndex(4).setEnabled(true); AdvancedTools.getComponentAtIndex(11).setEnabled(true); AdvancedTools.getComponentAtIndex(12).setEnabled(true); AdvancedTools.getComponentAtIndex(13).setEnabled(true); } } } /** * Displays the CardLevelTagDesigner dialog.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -