Java Code Examples for javax.swing.text.Element#getAttributes()
The following examples show how to use
javax.swing.text.Element#getAttributes() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: MWPaneFormatter.java From wpcleaner with Apache License 2.0 | 6 votes |
/** * @param pane Text pane. * @param element Element. * @return End of the last element having the same UUID as element. */ public static int getUUIDEndOffet(JTextPane pane, Element element) { if (element == null) { return Integer.MAX_VALUE; } if (pane == null) { return element.getEndOffset(); } Object uuid = element.getAttributes().getAttribute(ATTRIBUTE_UUID); if (uuid == null) { return element.getEndOffset(); } int endOffset = element.getEndOffset(); int length = pane.getText().length(); while (endOffset < length) { Element tmpElement = pane.getStyledDocument().getCharacterElement(endOffset); if ((tmpElement == null) || (tmpElement.getAttributes() == null)) { return endOffset; } if (!uuid.equals(tmpElement.getAttributes().getAttribute(ATTRIBUTE_UUID))) { return endOffset; } endOffset = tmpElement.getEndOffset(); } return length; }
Example 2
Source File: MWPaneFormatter.java From wpcleaner with Apache License 2.0 | 6 votes |
/** * @param pane Text pane. * @param element Element. * @return Start of the first element having the same UUID as element. */ public static int getUUIDStartOffset(JTextPane pane, Element element) { if (element == null) { return Integer.MIN_VALUE; } if (pane == null) { return element.getStartOffset(); } Object uuid = element.getAttributes().getAttribute(ATTRIBUTE_UUID); if (uuid == null) { return element.getStartOffset(); } int startOffset = element.getStartOffset(); while (startOffset > 0) { Element tmpElement = pane.getStyledDocument().getCharacterElement(startOffset - 1); if ((tmpElement == null) || (tmpElement.getAttributes() == null)) { return startOffset; } if (!uuid.equals(tmpElement.getAttributes().getAttribute(ATTRIBUTE_UUID))) { return startOffset; } startOffset = tmpElement.getStartOffset(); } return 0; }
Example 3
Source File: MWPaneSelectionManager.java From wpcleaner with Apache License 2.0 | 6 votes |
/** * Select next occurrence of text. */ public void selectNextOccurrence() { StyledDocument doc = textPane.getStyledDocument(); int length = doc.getLength(); int lastEnd = Integer.MAX_VALUE; for (int pos = textPane.getSelectionEnd() + 1; pos < length; pos = lastEnd) { Element run = doc.getCharacterElement(pos); lastEnd = run.getEndOffset(); if (pos == lastEnd) { // offset + length beyond length of document, bail. break; } MutableAttributeSet attr = (MutableAttributeSet) run.getAttributes(); if ((attr != null) && (attr.getAttribute(MWPaneFormatter.ATTRIBUTE_TYPE) != null) && (attr.getAttribute(MWPaneFormatter.ATTRIBUTE_OCCURRENCE) != Boolean.FALSE)) { select(run); return; } } selectFirstOccurrence(); }
Example 4
Source File: FSwingHtml.java From pra with MIT License | 6 votes |
public static VectorX<Element> matchChild(Element e , Attribute ab, String regex){ VectorX<Element> vE= new VectorX<Element>(Element.class); int count = e.getElementCount(); for (int i = 0; i < count; i++) { Element c = e.getElement(i); AttributeSet mAb = c.getAttributes(); String s = (String) mAb.getAttribute(ab); if (s==null)continue; // System.out.println(name+" "+ab+"="+s); if (s.matches(regex)) vE.add(c); } return vE; }
Example 5
Source File: HyperlinkSupport.java From netbeans with Apache License 2.0 | 6 votes |
@Override public void mouseClicked(MouseEvent e) { try { if (SwingUtilities.isLeftMouseButton(e)) { JTextPane pane = (JTextPane)e.getSource(); StyledDocument doc = pane.getStyledDocument(); Element elem = doc.getCharacterElement(pane.viewToModel(e.getPoint())); AttributeSet as = elem.getAttributes(); Link link = (Link)as.getAttribute(LINK_ATTRIBUTE); if (link != null) { link.onClick(elem.getDocument().getText(elem.getStartOffset(), elem.getEndOffset() - elem.getStartOffset())); } } } catch(Exception ex) { Support.LOG.log(Level.SEVERE, null, ex); } }
Example 6
Source File: HTMLPanel.java From littleluck with Apache License 2.0 | 5 votes |
@Override public View create(Element element) { AttributeSet attrs = element.getAttributes(); Object elementName = attrs.getAttribute(AbstractDocument.ElementNameAttribute); Object o = (elementName != null) ? null : attrs.getAttribute(StyleConstants.NameAttribute); if (o instanceof HTML.Tag) { if (o == HTML.Tag.OBJECT) { return new ComponentView(element); } } return super.create(element); }
Example 7
Source File: MWPaneCheckWikiPopupListener.java From wpcleaner with Apache License 2.0 | 5 votes |
/** * Construct popup menu. * * @param textPane Text pane. * @param position Position in text. * @param pageAnalysis Page analysis. */ @Override protected JPopupMenu createPopup( MWPane textPane, int position, PageAnalysis pageAnalysis) { if ((textPane == null) || (pageAnalysis == null)) { return null; } Element element = textPane.getStyledDocument().getCharacterElement(position); if (element == null) { return null; } // Check if it's for Check Wiki AttributeSet attributes = element.getAttributes(); Object attrInfo = attributes.getAttribute(MWPaneFormatter.ATTRIBUTE_INFO); if (!(attrInfo instanceof CheckErrorResult)) { return null; } CheckErrorResult info = (CheckErrorResult) attrInfo; MWPaneCheckWikiMenuCreator menu = new MWPaneCheckWikiMenuCreator(); JPopupMenu popup = menu.createPopupMenu(null); menu.addInfo(popup, element, textPane, info); menu.addItemCopyPaste(popup, textPane); return popup; }
Example 8
Source File: FormattedTextHelper.java From PolyGlot with MIT License | 5 votes |
/** * Recursing method implementing functionality of storageFormat() * @param e element to be cycled through * @param pane top parent JTextPane * @return string format value of current node and its children * @throws BadLocationException if unable to create string format */ private static String storeFormatRecurse(Element e, JTextPane pane) throws Exception { String ret = ""; int ec = e.getElementCount(); if (ec == 0) { // if more media addable in the future, this is where to process it... // hard coded values because they're hard coded in Java. Eh. if (e.getAttributes().getAttribute("$ename") != null && e.getAttributes().getAttribute("$ename").equals("icon")) { if (e.getAttributes().getAttribute(PGTUtil.IMAGE_ID_ATTRIBUTE) == null) { throw new Exception("ID For image not stored. Unable to store section."); } ret += "<img src=\"" + e.getAttributes().getAttribute(PGTUtil.IMAGE_ID_ATTRIBUTE) + "\">"; } else { int start = e.getStartOffset(); int len = e.getEndOffset() - start; if (start < pane.getDocument().getLength()) { AttributeSet a = e.getAttributes(); String font = StyleConstants.getFontFamily(a); String fontColor = colorToText(StyleConstants.getForeground(a)); int fontSize = StyleConstants.getFontSize(a); ret += "<font face=\"" + font + "\"" + "size=\"" + fontSize + "\"" + "color=\"" + fontColor + "\"" + ">"; ret += pane.getDocument().getText(start, len); ret += "</font>"; } } } else { for (int i = 0; i < ec; i++) { ret += storeFormatRecurse(e.getElement(i), pane); } } return ret; }
Example 9
Source File: KTextEdit.java From stendhal with GNU General Public License v2.0 | 5 votes |
@Override public void mouseClicked(MouseEvent e) { StyledDocument doc = (StyledDocument) textPane.getDocument(); Element ele = doc.getCharacterElement(textPane.viewToModel(e.getPoint())); AttributeSet as = ele.getAttributes(); Object fla = as.getAttribute("linkact"); if (fla instanceof LinkListener) { try { ((LinkListener) fla).linkClicked(doc.getText(ele.getStartOffset(), ele.getEndOffset() - ele.getStartOffset())); } catch (BadLocationException exc) { logger.error("Trying to extract link from invalid range", exc); } } }
Example 10
Source File: MainPanel.java From java-swing-tips with MIT License | 5 votes |
private void setElementColor(Element element, String color) { AttributeSet attrs = element.getAttributes(); Object o = attrs.getAttribute(HTML.Tag.A); if (o instanceof MutableAttributeSet) { MutableAttributeSet a = (MutableAttributeSet) o; a.addAttribute(HTML.Attribute.COLOR, color); } }
Example 11
Source File: SyntaxDocument.java From binnavi with Apache License 2.0 | 5 votes |
private void highlightLinesAfter(final String content, final int line) { final int offset = rootElement.getElement(line).getEndOffset(); // Start/End delimiter not found, nothing to do int startDelimiter = indexOf(content, getStartDelimiter(), offset); int endDelimiter = indexOf(content, getEndDelimiter(), offset); if (startDelimiter < 0) { startDelimiter = content.length(); } if (endDelimiter < 0) { endDelimiter = content.length(); } final int delimiter = Math.min(startDelimiter, endDelimiter); if (delimiter < offset) { return; } // Start/End delimiter found, reapply highlighting final int endLine = rootElement.getElementIndex(delimiter); for (int i = line + 1; i < endLine; i++) { final Element branch = rootElement.getElement(i); final Element leaf = doc.getCharacterElement(branch.getStartOffset()); final AttributeSet as = leaf.getAttributes(); if (as.isEqual(comment)) { applyHighlighting(content, i); } } }
Example 12
Source File: TextEditorGUI.java From trygve with GNU General Public License v2.0 | 5 votes |
public ArrayList<Integer> breakpointByteOffsets() { State state = State.LookingForField; ArrayList<Integer> retval = new ArrayList<Integer>(); final StyledDocument doc = (StyledDocument)editPane.getDocument(); final SimpleAttributeSet breakpointColored = new SimpleAttributeSet(); StyleConstants.setBackground(breakpointColored, Color.cyan); for(int i = 0; i < doc.getLength(); i++) { final Element element = doc.getCharacterElement(i); final AttributeSet set = element.getAttributes(); final Color backgroundColor = StyleConstants.getBackground(set); switch (state) { case LookingForField: if (true == backgroundColor.equals(Color.cyan)) { state = State.InField; retval.add(new Integer(i)); } break; case InField: if (false == backgroundColor.equals(Color.cyan)) { state = State.LookingForField; } else if (element.toString().equals("\n")) { state = State.LookingForField; } break; default: assert (false); break; } } return retval; }
Example 13
Source File: MainPanel.java From java-swing-tips with MIT License | 5 votes |
private Optional<String> getSpanTitleAttribute(HTMLDocument doc, int pos) { // HTMLDocument doc = (HTMLDocument) editor.getDocument(); Element elem = doc.getCharacterElement(pos); // if (!doesElementContainLocation(editor, elem, pos, e.getX(), e.getY())) { // elem = null; // } // if (elem != null) { AttributeSet a = elem.getAttributes(); AttributeSet span = (AttributeSet) a.getAttribute(HTML.Tag.SPAN); return Optional.ofNullable(span).map(s -> Objects.toString(s.getAttribute(HTML.Attribute.TITLE))); }
Example 14
Source File: FSwingHtml.java From pra with MIT License | 5 votes |
public static boolean hasAttribute(Element e, Attribute ab){ AttributeSet mAb=e.getAttributes(); for (Enumeration it = mAb.getAttributeNames() ; it.hasMoreElements() ;) { Object s= it.nextElement(); if (s.equals(ab)) return true; } return false; }
Example 15
Source File: RTFParser.java From birt with Eclipse Public License 1.0 | 5 votes |
private static void parseElement( DefaultStyledDocument document, Element parent, RTFDocumentHandler handler, boolean lostLast ) { for ( int i = 0; i < parent.getElementCount( ); i++ ) { if (lostLast && i==parent.getElementCount( )-1 && parent.getElementCount( ) != 1) { break; } Element element = parent.getElement( i ); AttributeSet attributeset = element.getAttributes( ); handler.startElement( element.getName( ), attributeset ); if ( element.getName( ).equalsIgnoreCase( "content" ) ) { try { int start = element.getStartOffset( ); int end = element.getEndOffset( ); String s = document.getText( start, end - start ); handler.content( s ); } catch ( BadLocationException e ) { } } parseElement( document, element, handler, false ); handler.endElement( element.getName( ) ); } }
Example 16
Source File: ButtonCapture.java From SikuliX1 with MIT License | 4 votes |
private boolean replaceButton(Element src, String imgFullPath) { if (captureCancelled) { if (_codePane.showThumbs && PreferencesUser.get().getPrefMoreImageThumbs() || !_codePane.showThumbs) { return true; } } int start = src.getStartOffset(); int end = src.getEndOffset(); int old_sel_start = _codePane.getSelectionStart(), old_sel_end = _codePane.getSelectionEnd(); try { StyledDocument doc = (StyledDocument) src.getDocument(); String text = doc.getText(start, end - start); Debug.log(3, text); for (int i = start; i < end; i++) { Element elm = doc.getCharacterElement(i); if (elm.getName().equals(StyleConstants.ComponentElementName)) { AttributeSet attr = elm.getAttributes(); Component com = StyleConstants.getComponent(attr); boolean isButton = com instanceof ButtonCapture; boolean isLabel = com instanceof EditorPatternLabel; if (isButton || isLabel && ((EditorPatternLabel) com).isCaptureButton()) { Debug.log(5, "button is at " + i); int oldCaretPos = _codePane.getCaretPosition(); _codePane.select(i, i + 1); if (!_codePane.showThumbs) { _codePane.insertString((new EditorPatternLabel(_codePane, imgFullPath, true)).toString()); } else { if (PreferencesUser.get().getPrefMoreImageThumbs()) { com = new EditorPatternButton(_codePane, imgFullPath); } else { if (captureCancelled) { com = new EditorPatternLabel(_codePane, ""); } else { com = new EditorPatternLabel(_codePane, imgFullPath, true); } } _codePane.insertComponent(com); } _codePane.setCaretPosition(oldCaretPos); break; } } } } catch (BadLocationException ble) { Debug.error(me + "Problem inserting Button!\n%s", ble.getMessage()); } _codePane.select(old_sel_start, old_sel_end); _codePane.requestFocus(); return true; }
Example 17
Source File: ImageView.java From jdk8u_jdk with GNU General Public License v2.0 | 4 votes |
/** * Recreates and reloads the image. This should * only be invoked from <code>refreshImage</code>. */ private void updateImageSize() { int newWidth = 0; int newHeight = 0; int newState = 0; Image newImage = getImage(); if (newImage != null) { Element elem = getElement(); AttributeSet attr = elem.getAttributes(); // Get the width/height and set the state ivar before calling // anything that might cause the image to be loaded, and thus the // ImageHandler to be called. newWidth = getIntAttr(HTML.Attribute.WIDTH, -1); newHeight = getIntAttr(HTML.Attribute.HEIGHT, -1); if (newWidth > 0) { newState |= WIDTH_FLAG; } if (newHeight > 0) { newState |= HEIGHT_FLAG; } /* If synchronous loading flag is set, then make sure that the image is scaled appropriately. Otherwise, the ImageHandler::imageUpdate takes care of scaling the image appropriately. */ if (getLoadsSynchronously()) { Image img; synchronized(this) { img = image; } int w = img.getWidth(imageObserver); int h = img.getHeight(imageObserver); if (w > 0 && h > 0) { Dimension d = adjustWidthHeight(w, h); newWidth = d.width; newHeight = d.height; newState |= (WIDTH_FLAG | HEIGHT_FLAG); } } // Make sure the image starts loading: if ((newState & (WIDTH_FLAG | HEIGHT_FLAG)) != 0) { Toolkit.getDefaultToolkit().prepareImage(newImage, newWidth, newHeight, imageObserver); } else { Toolkit.getDefaultToolkit().prepareImage(newImage, -1, -1, imageObserver); } boolean createText = false; synchronized(this) { // If imageloading failed, other thread may have called // ImageLoader which will null out image, hence we check // for it. if (image != null) { if ((newState & WIDTH_FLAG) == WIDTH_FLAG || width == 0) { width = newWidth; } if ((newState & HEIGHT_FLAG) == HEIGHT_FLAG || height == 0) { height = newHeight; } } else { createText = true; if ((newState & WIDTH_FLAG) == WIDTH_FLAG) { width = newWidth; } if ((newState & HEIGHT_FLAG) == HEIGHT_FLAG) { height = newHeight; } } state = state | newState; state = (state | LOADING_FLAG) ^ LOADING_FLAG; } if (createText) { // Only reset if this thread determined image is null updateAltTextView(); } } else { width = height = DEFAULT_HEIGHT; updateAltTextView(); } }
Example 18
Source File: BackgroundView.java From SwingBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * */ public BackgroundView(Element elem) { super(elem); AttributeSet tmpAttr = elem.getAttributes(); Object obj = tmpAttr.getAttribute(Constants.ATTRIBUTE_BOX_REFERENCE); anchor = (Anchor) tmpAttr.getAttribute(Constants.ATTRIBUTE_ANCHOR_REFERENCE); Integer i = (Integer) tmpAttr.getAttribute(Constants.ATTRIBUTE_DRAWING_ORDER); order = (i == null) ? -1 : i; if (obj instanceof ElementBox) { box = (ElementBox) obj; } else { throw new IllegalArgumentException("Box reference is not an instance of ElementBox"); } if (box.toString().contains("\"btn\"")) System.out.println("jo!"); if (box.getElement() != null) { Map<String, String> elementAttributes = anchor.getProperties(); org.w3c.dom.Element pelem = Anchor.findAnchorElement(box.getElement()); if (pelem != null) { anchor.setActive(true); elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_HREF, pelem.getAttribute("href")); elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_NAME, pelem.getAttribute("name")); elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_TITLE, pelem.getAttribute("title")); String target = pelem.getAttribute("target"); if ("".equals(target)) { target = "_self"; } elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_TARGET, target); } else { anchor.setActive(false); elementAttributes.clear(); } } }
Example 19
Source File: TextBoxView.java From SwingBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * Instantiates a new text based view, able to display rich text. This view * corresponds to TextBox in CSSBox. <br> * <a href="http://www.w3.org/TR/CSS21/box.html">Box Model</a> * * @param elem * the elem * */ public TextBoxView(Element elem) { super(elem); AttributeSet tmpAttr = elem.getAttributes(); Object obj = tmpAttr.getAttribute(Constants.ATTRIBUTE_BOX_REFERENCE); anchor = (Anchor) tmpAttr.getAttribute(Constants.ATTRIBUTE_ANCHOR_REFERENCE); Integer i = (Integer) tmpAttr.getAttribute(Constants.ATTRIBUTE_DRAWING_ORDER); order = (i == null) ? -1 : i; if (obj instanceof TextBox) { box = (TextBox) obj; } else { throw new IllegalArgumentException("Box reference is not an instance of TextBox"); } if (box.getNode() != null && box.getNode().getParentNode() instanceof org.w3c.dom.Element) { org.w3c.dom.Element pelem = Anchor.findAnchorElement((org.w3c.dom.Element) box.getNode().getParentNode()); Map<String, String> elementAttributes = anchor.getProperties(); if (pelem != null) { anchor.setActive(true); elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_HREF, pelem.getAttribute("href")); elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_NAME, pelem.getAttribute("name")); elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_TITLE, pelem.getAttribute("title")); String target = pelem.getAttribute("target"); if ("".equals(target)) { target = "_self"; } elementAttributes.put(Constants.ELEMENT_A_ATTRIBUTE_TARGET, target); // System.err.println("## Anchor at : " + this + " attr: "+ // elementAttributes); } else { anchor.setActive(false); elementAttributes.clear(); } } }
Example 20
Source File: MWPaneReplaceAllAction.java From wpcleaner with Apache License 2.0 | 4 votes |
/** * @param e Event. * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { MWPane textPane = getMWPane(e); if (textPane == null) { return; } StyledDocument doc = textPane.getStyledDocument(); if (doc == null) { return; } int length = doc.getLength(); int lastEnd = Integer.MAX_VALUE; for (int pos = 0; pos < length; pos = lastEnd) { try { Element run = doc.getCharacterElement(pos); lastEnd = run.getEndOffset(); if (pos == lastEnd) { // offset + length beyond length of document, bail. break; } MutableAttributeSet attr = (MutableAttributeSet) run.getAttributes(); if ((attr != null) && (attr.getAttribute(MWPaneFormatter.ATTRIBUTE_TYPE) != null) && (attr.getAttribute(MWPaneFormatter.ATTRIBUTE_INFO) != null)) { Object attrInfo = attr.getAttribute(MWPaneFormatter.ATTRIBUTE_INFO); if (attrInfo instanceof CheckErrorResult) { int startOffset = MWPaneFormatter.getUUIDStartOffset(textPane, run); int endOffset = MWPaneFormatter.getUUIDEndOffet(textPane, run); if (originalText.equals(textPane.getText(startOffset, endOffset - startOffset))) { boolean possible = false; CheckErrorResult info = (CheckErrorResult) attrInfo; List<Actionnable> actionnables = info.getPossibleActions(); if (actionnables != null) { for (Actionnable actionnable : actionnables) { possible |= actionnable.isPossibleReplacement(newText); } } if (possible) { doc.remove(startOffset, endOffset - startOffset); doc.insertString(startOffset, newText, attr); lastEnd = startOffset + newText.length(); } } } } } catch (BadLocationException exception) { // Nothing to do } } }