diff options
author | Konstantin Lopyrev <klopyrev@google.com> | 2010-08-11 12:45:59 -0700 |
---|---|---|
committer | Konstantin Lopyrev <klopyrev@google.com> | 2010-08-17 18:02:55 -0700 |
commit | 7e87e711974d258d8a3d780a4abc8f9c6c005bba (patch) | |
tree | b8342127ef1e13d56679086fb0c004c999df583a /hierarchyviewer2/libs/hierarchyviewerlib/src/com/android | |
parent | e361a961cbe1ead74659b4a761453b312d026e55 (diff) | |
download | sdk-7e87e711974d258d8a3d780a4abc8f9c6c005bba.zip sdk-7e87e711974d258d8a3d780a4abc8f9c6c005bba.tar.gz sdk-7e87e711974d258d8a3d780a4abc8f9c6c005bba.tar.bz2 |
Adding property and profile viewers + misc
Change-Id: I04b7e6045047d303b3434dc64662ffeb36c48c24
Diffstat (limited to 'hierarchyviewer2/libs/hierarchyviewerlib/src/com/android')
3 files changed, 101 insertions, 20 deletions
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java index c9244d2..af3f9f1 100644 --- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java +++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java @@ -440,7 +440,15 @@ public class DeviceBridge { connection = new DeviceConnection(window.getDevice()); connection.sendCommand("PROFILE " + window.encode() + " " + viewNode.toString()); BufferedReader in = connection.getInputStream(); - return loadProfileDataRecursive(viewNode, in); + int protocol; + synchronized (viewServerInfo) { + protocol = viewServerInfo.get(window.getDevice()).protocolVersion; + } + if (protocol < 3) { + return loadProfileData(viewNode, in); + } else { + return loadProfileDataRecursive(viewNode, in); + } } catch (IOException e) { Log.e(TAG, "Unable to load profiling data for window " + window.getTitle() + " on device " + window.getDevice()); @@ -452,8 +460,7 @@ public class DeviceBridge { return false; } - private static boolean loadProfileDataRecursive(ViewNode node, BufferedReader in) - throws IOException { + private static boolean loadProfileData(ViewNode node, BufferedReader in) throws IOException { String line; if ((line = in.readLine()) == null || line.equalsIgnoreCase("-1 -1 -1") || line.equalsIgnoreCase("DONE.")) { @@ -463,6 +470,14 @@ public class DeviceBridge { node.measureTime = (Long.parseLong(data[0]) / 1000.0) / 1000.0; node.layoutTime = (Long.parseLong(data[1]) / 1000.0) / 1000.0; node.drawTime = (Long.parseLong(data[2]) / 1000.0) / 1000.0; + return true; + } + + private static boolean loadProfileDataRecursive(ViewNode node, BufferedReader in) + throws IOException { + if (!loadProfileData(node, in)) { + return false; + } for (int i = 0; i < node.children.size(); i++) { if (!loadProfileDataRecursive(node.children.get(i), in)) { return false; diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/ViewNode.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/ViewNode.java index 2e22b56..2dd9b61 100644 --- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/ViewNode.java +++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/ViewNode.java @@ -22,8 +22,12 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; public class ViewNode { + public static final String MISCELLANIOUS = "miscellaneous"; + public String id; public String name; @@ -82,6 +86,8 @@ public class ViewNode { public double drawTime; + public Set<String> categories = new TreeSet<String>(); + public ViewNode(ViewNode parent, String data) { this.parent = parent; index = this.parent == null ? 0 : this.parent.children.size(); @@ -130,28 +136,61 @@ public class ViewNode { id = namedProperties.get("mID").value; - left = getInt("mLeft", 0); - top = getInt("mTop", 0); - width = getInt("getWidth()", 0); - height = getInt("getHeight()", 0); - scrollX = getInt("mScrollX", 0); - scrollY = getInt("mScrollY", 0); - paddingLeft = getInt("mPaddingLeft", 0); - paddingRight = getInt("mPaddingRight", 0); - paddingTop = getInt("mPaddingTop", 0); - paddingBottom = getInt("mPaddingBottom", 0); - marginLeft = getInt("layout_leftMargin", Integer.MIN_VALUE); - marginRight = getInt("layout_rightMargin", Integer.MIN_VALUE); - marginTop = getInt("layout_topMargin", Integer.MIN_VALUE); - marginBottom = getInt("layout_bottomMargin", Integer.MIN_VALUE); - baseline = getInt("getBaseline()", 0); - willNotDraw = getBoolean("willNotDraw()", false); - hasFocus = getBoolean("hasFocus()", false); + left = namedProperties.containsKey("mLeft") ? + getInt("mLeft", 0) : getInt("layout:mLeft", 0); + top = namedProperties.containsKey("mTop") ? + getInt("mTop", 0) : getInt("layout:mTop", 0); + width = namedProperties.containsKey("getWidth()") ? + getInt("getWidth()", 0) : getInt("measurement:getWidth()", 0); + height = namedProperties.containsKey("getHeight()") ? + getInt("getHeight()", 0) : getInt("measurement:getHeight()", 0); + scrollX = namedProperties.containsKey("mScrollX") ? + getInt("mScrollX", 0) : getInt("scrolling:mScrollX", 0); + scrollY = namedProperties.containsKey("mScrollY") ? + getInt("mScrollY", 0) : getInt("scrolling:mScrollY", 0); + paddingLeft = namedProperties.containsKey("mPaddingLeft") ? + getInt("mPaddingLeft", 0) : getInt("padding:mPaddingLeft", 0); + paddingRight = namedProperties.containsKey("mPaddingRight") ? + getInt("mPaddingRight", 0) : getInt("padding:mPaddingRight", 0); + paddingTop = namedProperties.containsKey("mPaddingTop") ? + getInt("mPaddingTop", 0) : getInt("padding:mPaddingTop", 0); + paddingBottom = namedProperties.containsKey("mPaddingBottom") ? + getInt("mPaddingBottom", 0) : getInt("padding:mPaddingBottom", 0); + marginLeft = namedProperties.containsKey("layout_leftMargin") ? + getInt("layout_leftMargin", Integer.MIN_VALUE) : + getInt("layout:leftMargin", Integer.MIN_VALUE); + marginRight = namedProperties.containsKey("layout_rightMargin") ? + getInt("layout_rightMargin", Integer.MIN_VALUE) : + getInt("layout:rightMargin", Integer.MIN_VALUE); + marginTop = namedProperties.containsKey("layout_topMargin") ? + getInt("layout_topMargin", Integer.MIN_VALUE) : + getInt("layout:topMargin", Integer.MIN_VALUE); + marginBottom = namedProperties.containsKey("layout_bottomMargin") ? + getInt("layout_bottomMargin", Integer.MIN_VALUE) : + getInt("layout:bottomMargin", Integer.MIN_VALUE); + baseline = namedProperties.containsKey("getBaseline()") ? + getInt("getBaseline()", 0) : + getInt("measurement:getBaseline()", 0); + willNotDraw = namedProperties.containsKey("willNotDraw()") ? + getBoolean("willNotDraw()", false) : + getBoolean("drawing:willNotDraw()", false); + hasFocus = namedProperties.containsKey("hasFocus()") ? + getBoolean("hasFocus()", false) : + getBoolean("focus:hasFocus()", false); hasMargins = marginLeft != Integer.MIN_VALUE && marginRight != Integer.MIN_VALUE && marginTop != Integer.MIN_VALUE && marginBottom != Integer.MIN_VALUE; + for(String name : namedProperties.keySet()) { + int index = name.indexOf(':'); + if(index != -1) { + categories.add(name.substring(0, index)); + } + } + if(categories.size() != 0) { + categories.add(MISCELLANIOUS); + } } private boolean getBoolean(String name, boolean defaultValue) { diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/models/TreeViewModel.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/models/TreeViewModel.java index 890b88c..f6279df 100644 --- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/models/TreeViewModel.java +++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/models/TreeViewModel.java @@ -33,6 +33,8 @@ public class TreeViewModel { private DrawableViewNode tree; + private DrawableViewNode selectedNode; + private Rectangle viewport; private double zoom; @@ -48,10 +50,18 @@ public class TreeViewModel { tree.placeRoot(); viewport = null; zoom = 1; + selectedNode = null; } notifyTreeChanged(); } + public void setSelection(DrawableViewNode selectedNode) { + synchronized (this) { + this.selectedNode = selectedNode; + } + notifySelectionChanged(); + } + public void setViewport(Rectangle viewport) { synchronized (this) { this.viewport = viewport; @@ -113,9 +123,17 @@ public class TreeViewModel { } } + public DrawableViewNode getSelection() { + synchronized (this) { + return selectedNode; + } + } + public static interface TreeChangeListener { public void treeChanged(); + public void selectionChanged(); + public void viewportChanged(); public void zoomChanged(); @@ -142,6 +160,15 @@ public class TreeViewModel { } } + public void notifySelectionChanged() { + TreeChangeListener[] listeners = getTreeChangeListenerList(); + if (listeners != null) { + for (int i = 0; i < listeners.length; i++) { + listeners[i].selectionChanged(); + } + } + } + public void notifyViewportChanged() { TreeChangeListener[] listeners = getTreeChangeListenerList(); if (listeners != null) { |