Author: dgolovin
Date: 2010-05-10 14:52:15 -0400 (Mon, 10 May 2010)
New Revision: 21995
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerVpeUtils.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5101 Resizer isn't shown correctly for
buttons, imput fields. controls
fixed by applying path from Volha Chukhutsina
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerVpeUtils.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerVpeUtils.java 2010-05-10
15:59:56 UTC (rev 21994)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerVpeUtils.java 2010-05-10
18:52:15 UTC (rev 21995)
@@ -14,7 +14,6 @@
import org.eclipse.swt.graphics.Rectangle;
import org.jboss.tools.vpe.xulrunner.BrowserPlugin;
import org.mozilla.interfaces.nsIBoxObject;
-import org.mozilla.interfaces.nsIDOMClientRect;
import org.mozilla.interfaces.nsIDOMDocument;
import org.mozilla.interfaces.nsIDOMElement;
import org.mozilla.interfaces.nsIDOMNSDocument;
@@ -28,45 +27,85 @@
*/
public class XulRunnerVpeUtils {
- /**
- * @param domElement
- * @return Rectangle
- */
- static public Rectangle getElementBounds(nsIDOMNode domNode) {
- try {
- nsIDOMElement domElement = (nsIDOMElement) domNode
- .queryInterface(nsIDOMElement.NS_IDOMELEMENT_IID);
- nsIDOMNSElement htmlElement =
(nsIDOMNSElement)domNode.queryInterface(nsIDOMNSElement.NS_IDOMNSELEMENT_IID);
- nsIDOMNSHTMLElement domElement1 =
(nsIDOMNSHTMLElement)domNode.queryInterface(nsIDOMNSHTMLElement.NS_IDOMNSHTMLELEMENT_IID);
- nsIDOMDocument document = domElement.getOwnerDocument();
- nsIDOMNSDocument nsDocument = (nsIDOMNSDocument) document
- .queryInterface(nsIDOMNSDocument.NS_IDOMNSDOCUMENT_IID);
- nsIBoxObject boxObject = nsDocument.getBoxObjectFor(domElement);
- Rectangle rectangle = new Rectangle(boxObject.getX(), boxObject.getY(),
boxObject.getWidth()-htmlElement.getClientLeft(),
boxObject.getHeight()-htmlElement.getClientTop());
- if(BrowserPlugin.PRINT_ELEMENT_BOUNDS) {
- System.out.println("getElementBounds(IDOMNode) returns " + rectangle);
- System.out.println("nsIDOMNSHTMLElement
getOffsetLeft,getOffsetTop,getOffsetWidth,getOffsetHeight" + new Rectangle(
- domElement1.getOffsetLeft(),
- domElement1.getOffsetTop(),
- domElement1.getOffsetWidth(),
- domElement1.getOffsetHeight()));
- System.out.println("nsIDOMNSElement
getClientLeft,getClientTop,getClientWidth,getClientHeight" + new Rectangle(
- htmlElement.getClientLeft(),
- htmlElement.getClientTop(),
- htmlElement.getClientWidth(),
- htmlElement.getClientHeight()));
- System.out.println("nsIBoxObject getX,getY,getWidth,getHeight" + new
Rectangle(
- boxObject.getX(),
- boxObject.getY(),
- boxObject.getWidth(),
- boxObject.getHeight()));
- }
- return rectangle;
-
-
+ private static int findPosX(nsIDOMNSHTMLElement boxObject) {
+ int curleft = 0;
+
+ if (boxObject.getOffsetParent() != null) {
+ while (true) {
+ curleft += boxObject.getOffsetLeft();
+ if ( boxObject.getOffsetParent() == null)
+ return curleft;
+ boxObject = (nsIDOMNSHTMLElement)
boxObject.getOffsetParent().queryInterface(nsIDOMNSHTMLElement.NS_IDOMNSHTMLELEMENT_IID);
+ }
+ } else {
+ curleft += boxObject.getOffsetLeft();
+ }
+ return curleft;
+ }
- } catch (XPCOMException xpcomException) {
- return new Rectangle(0, 0, 0, 0);
+ private static int findPosY(nsIDOMNSHTMLElement boxObject) {
+ int curleft = 0;
+
+ if (boxObject.getOffsetParent() != null) {
+ while (true) {
+ curleft += boxObject.getOffsetTop();
+ if ( boxObject.getOffsetParent() == null)
+ return curleft;
+ boxObject = (nsIDOMNSHTMLElement)
boxObject.getOffsetParent().queryInterface(nsIDOMNSHTMLElement.NS_IDOMNSHTMLELEMENT_IID);
+ }
+ } else {
+ curleft += boxObject.getOffsetTop();
+ }
+ return curleft;
}
- }
+
+ /**
+ * @param domElement
+ * @return Rectangle
+ */
+ static public Rectangle getElementBounds(nsIDOMNode domNode) {
+ try {
+ nsIDOMElement domElement = (nsIDOMElement) domNode
+ .queryInterface(nsIDOMElement.NS_IDOMELEMENT_IID);
+
+ nsIDOMNSElement htmlElement = (nsIDOMNSElement) domNode
+ .queryInterface(nsIDOMNSElement.NS_IDOMNSELEMENT_IID);
+ nsIDOMNSHTMLElement domNSHTMLElement = (nsIDOMNSHTMLElement) domNode
+ .queryInterface(nsIDOMNSHTMLElement.NS_IDOMNSHTMLELEMENT_IID);
+ nsIDOMDocument document = domElement.getOwnerDocument();
+
+ nsIDOMNSDocument nsDocument = (nsIDOMNSDocument) document
+ .queryInterface(nsIDOMNSDocument.NS_IDOMNSDOCUMENT_IID);
+ nsIBoxObject boxObject = nsDocument.getBoxObjectFor(domElement);
+ Rectangle rectangle = new Rectangle(findPosX(domNSHTMLElement),
+ findPosY(domNSHTMLElement),
+ boxObject.getWidth(),
+ boxObject.getHeight());
+
+ if (BrowserPlugin.PRINT_ELEMENT_BOUNDS) {
+ System.out.println("getElementBounds(IDOMNode) returns "
+ + rectangle);
+ System.out
+ .println("nsIDOMNSHTMLElement
getOffsetLeft,getOffsetTop,getOffsetWidth,getOffsetHeight"
+ + new Rectangle(domNSHTMLElement.getOffsetLeft(),
+ domNSHTMLElement.getOffsetTop(), domNSHTMLElement
+ .getOffsetWidth(), domNSHTMLElement
+ .getOffsetHeight()));
+ System.out
+ .println("nsIDOMNSElement
getClientLeft,getClientTop,getClientWidth,getClientHeight"
+ + new Rectangle(htmlElement.getClientLeft(),
+ htmlElement.getClientTop(), htmlElement
+ .getClientWidth(), htmlElement
+ .getClientHeight()));
+ System.out.println("nsIBoxObject getX,getY,getWidth,getHeight"
+ + new Rectangle(boxObject.getX(), boxObject.getY(),
+ boxObject.getWidth(), boxObject.getHeight()));
+
+ }
+ return rectangle;
+
+ } catch (XPCOMException xpcomException) {
+ return new Rectangle(0, 0, 0, 0);
+ }
+ }
}