List of usage examples for javax.swing.text View createFragment
public View createFragment(int p0, int p1)
From source file:tufts.vue.RichTextBox.java
public Dimension getPreferredSize() { Dimension s = null;//from w w w. j a v a 2s.c o m // Dimension s = super.getPreferredSize(); Dimension minS = getMinimumSize(); //System.out.println(javax.swing.SwingUtilities.getLocalBounds(this)); //if (TestDebug||DEBUG.TEXT) out("getPrefer", s); // System.out.println("GetPrefSize : " + mBounds.width + " "+ s.width); // System.out.println("Required Lines : " + s.width/mBounds.width); Caret c = this.getCaret(); Point position = c.getMagicCaretPosition(); // if (position != null) // System.out.println("magic caret : " + position.getX()); //HTMLDocument builds a hierarchical Element structure where each Element //represents a structural block of HTML, and not just a line of text. so I'm not sure //how to figure out what line you're on. Dimension min = new Dimension(); final Dimension text = getMinimumSize(); min.width = text.width; int EdgePadY = 0; // Was 3 in VUE 1.5 int LabelPadLeft = 8; // Was 6 in VUE 1.5; fixed //System.out.println("Text.height : " + text.height); // *** set icon Y position in all cases to a centered vertical // position, but never such that baseline is below bottom of // first icon -- this is tricky tho, as first icon can move // down a bit to be centered with the label! min.width += LabelPadLeft; min.width = Math.max(min.width, minS.width); /* System.out.println("Min.Width =" + min.width); System.out.println("MinS.Width =" + minS.width); System.out.println("S.Width =" + s.width); System.out.println("MBounds.Width = " + mBounds.width); System.out.println("GetSize.Width = " + getSize().width); System.out.println("Bounds : " + this.getBounds().width); System.out.println("LWC width : " + lwc.width); System.out.println("LWC bounds : " + lwc.getBounds().width); System.out.println("LWC layoutbounds : " + lwc.getLayoutBounds().width); System.out.println("LWC min size : " + lwc.getMinimumSize().width); System.out.println("Get super width : " + super.getWidth()); System.out.println("Selection Eend : " + this.getSelectionEnd()); System.out.println("Selection Start : " + this.getSelectionStart()); System.out.println("Bounds Box Width : " +this.getBoxBounds().getBounds().width); System.out.println("Visible Rect : " +this.getVisibleRect().width);*/ //** Rectangle p2 = null; //if (this.getGraphics() != null) //{ // System.out.println("GRAPHICS : " + this.getGraphics().toString()); // if (this.getGraphics().getClipBounds() != null) // System.out.println("GRAPHICS : " + this.getGraphics().getClipBounds().width); // this.getPreferredScrollableViewportSize().width // // View ui = getUI().getRootView(this); ui = ui.createFragment(this.getSelectionStart(), this.getSelectionEnd()); //System.out.println("min span: " + ui.getMinimumSpan(View.X_AXIS)); //** int start = getSelectionStart(); //** int end = getSelectionEnd(); //** float f = ui.getPreferredSpan(View.X_AXIS); //System.out.println("Preferred span : " + f); //** f = ui.getPreferredSpan(View.Y_AXIS); //System.out.println("Preferred span y : " + f); //** f = ui.getPreferredSpan(View.X_AXIS); //System.out.println("{referred span X : " + f); //ui.breakView(View.X_AXIS, offset, pos, len) //((HTMLEditorKit)this.getEditorKit()).getViewFactory().create(this.getDocument().getDefaultRootElement()). // System.out.println("BREAK WEIGHT : " + ui.getBreakWeight(View.X_AXIS, this.getCaretPosition(), this.getSelectionEnd())); // System.out.println("RESIZE WEIGHT : " + ui.getResizeWeight(View.X_AXIS)); // System.out.println("RESIZE WEIGHTY : " + ui.getResizeWeight(View.Y_AXIS)); //** float align = ui.getAlignment(View.X_AXIS); // System.out.println("align span : " + align); //** try { //** p2 = this.modelToView(this.getSelectionEnd()); //** //** } catch (BadLocationException e) { //** //Nothing we can do really. //** } //** //if (p2 != null) //** //System.out.println("Selection end rect : " + p2.x); //** if (mBounds.width > 0) { //** if (p2 != null && p2.x > mBounds.width) //** mBounds.width = p2.x; //int height = 48; /*if (getFont() != null &&this.getFontMetrics(getFont())!=null) { System.out.println("A:"+this.getFontMetrics(getFont()).getMaxAscent()); System.out.println("B:"+this.getFontMetrics(getFont()).getMaxDescent()); }*/ int height = super.getPreferredSize().height;//s.height;//Math.max(s.height, 48); Style style = ((HTMLDocument) getDocument()).getStyleSheet().getStyle("body"); Object a = style.getAttribute(javax.swing.text.html.CSS.Attribute.FONT_SIZE); if (a != null) { if (DEBUG.TEXT) out("got style"); int diff = 0; Integer i = new Integer(a.toString()); diff = i.intValue(); //minS.height = minS.height - diff; if (VUE.getActiveViewer() != null) { java.awt.Container parent = getParent(); double zoom = 1.0; if (parent != null) zoom = ((MapViewer) parent).getZoomFactor(); else { //parent is null during duplicate. zoom = VUE.getActiveViewer().getZoomFactor(); } zoom *= lwc.getMapScale(); diff *= zoom; } height = height - diff; } if (position != null) { float minSpan = ui.getMinimumSpan(View.X_AXIS); float mins2 = Math.max(minSpan, (float) position.getX()); s = new Dimension((int) (mBounds.width > mins2 ? mBounds.width : mins2), (int) height); } else { float minSpan = ui.getMinimumSpan(View.X_AXIS); s = new Dimension((int) (mBounds.width > minSpan ? mBounds.width : minSpan), (int) height); } //float widthRatio = ((float)s.width /(float)lwc.width); // float heightRatio =((float)s.height/(float)lwc.height); /* if ((widthRatio > 0) && (heightRatio > 0) && (widthRatio != heightRatio)) { s.height = (int)(lwc.height * widthRatio); // System.out.print("NEW SHEIGHT : " + s.height); // prevDim = s; // } System.out.println("width ratio : " + widthRatio); System.out.println("height ratio : " + heightRatio); */ /*if (this.getGraphics() != null) System.out.println("FONT HEIGHT : " +this.getGraphics().getFontMetrics().getMaxAscent()); System.out.println("==================================="); System.out.println("super pref height : " + s.height); System.out.println("Min Vertical Span : " +ui.getMinimumSpan(View.Y_AXIS)); System.out.println("MBounds height : " + mBounds.height); System.out.println("super pref height : " + s.height); System.out.println("Min Vertical Span : " +ui.getMinimumSpan(View.Y_AXIS)); System.out.println("MBounds height : " + mBounds.height); System.out.println("Mins height : " + min.height); System.out.println("Bounds Y : " + this.getBounds().y); System.out.println("Bounds height :" +this.getBounds().height); System.out.println("Bounds2D Y : " +this.getBoxBounds().getY()); System.out.println("Bounds2D height : " +this.getBoxBounds().getHeight()); if (this.getCaret().getMagicCaretPosition() != null) System.out.println("Cursor : " + this.getCaret().getMagicCaretPosition().toString()); //this.getCaret().getMagicCaretPosition(). System.out.println("===================================");*/ /*if (position != null) { System.out.println("Y Pos : " + position.getY()); try { Rectangle r = modelToView(this.getCaretPosition()); System.out.println("model pos : " + r.y); System.out.println("Model height : " + r.height); } catch (BadLocationException e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/ } // s.width = (int)(s.width * VUE.getActiveViewer().getZoomFactor()); // s.height = (int)(s.height * VUE.getActiveViewer().getZoomFactor()); // s.height=(int) this.getBoxBounds().getHeight(); if (this.getBoxBounds() != null && s.height < this.getBoxBounds().getHeight()) { s.height = (int) this.getBoxBounds().getHeight(); } return s; }