aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android
diff options
context:
space:
mode:
authorKonstantin Lopyrev <klopyrev@google.com>2010-08-11 12:45:59 -0700
committerKonstantin Lopyrev <klopyrev@google.com>2010-08-17 18:02:55 -0700
commit7e87e711974d258d8a3d780a4abc8f9c6c005bba (patch)
treeb8342127ef1e13d56679086fb0c004c999df583a /hierarchyviewer2/libs/hierarchyviewerlib/src/com/android
parente361a961cbe1ead74659b4a761453b312d026e55 (diff)
downloadsdk-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')
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java21
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/ViewNode.java73
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/models/TreeViewModel.java27
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) {