aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2/libs/hierarchyvieweruilib
diff options
context:
space:
mode:
Diffstat (limited to 'hierarchyviewer2/libs/hierarchyvieweruilib')
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/.classpath10
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/.gitignore1
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/.project17
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/Android.mk16
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/Android.mk29
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/DeviceSelector.java266
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfect.java307
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectLoupe.java288
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectTree.java216
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/ProfileViewer.java179
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PropertyViewer.java232
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeView.java361
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeViewOverview.java289
-rw-r--r--hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/util/TreeColumnResizer.java92
14 files changed, 0 insertions, 2303 deletions
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/.classpath b/hierarchyviewer2/libs/hierarchyvieweruilib/.classpath
deleted file mode 100644
index 4bddd6c..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ANDROID_SWT"/>
- <classpathentry combineaccessrules="false" kind="src" path="/hierarchyviewerlib"/>
- <classpathentry combineaccessrules="false" kind="src" path="/ddmlib"/>
- <classpathentry combineaccessrules="false" kind="src" path="/ddmuilib"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/.gitignore b/hierarchyviewer2/libs/hierarchyvieweruilib/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/.project b/hierarchyviewer2/libs/hierarchyvieweruilib/.project
deleted file mode 100644
index e9b1298..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>hierarchyvieweruilib</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/Android.mk b/hierarchyviewer2/libs/hierarchyvieweruilib/Android.mk
deleted file mode 100644
index 341880b..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-HIERARCHYVIEWERUILIB_LOCAL_DIR := $(call my-dir)
-include $(HIERARCHYVIEWERUILIB_LOCAL_DIR)/src/Android.mk
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/Android.mk b/hierarchyviewer2/libs/hierarchyvieweruilib/src/Android.mk
deleted file mode 100644
index 44d6b51..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_JAVA_LIBRARIES := \
- ddmlib \
- ddmuilib \
- hierarchyviewerlib \
- swt \
- org.eclipse.jface_3.4.2.M20090107-0800
-LOCAL_MODULE := hierarchyvieweruilib
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/DeviceSelector.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/DeviceSelector.java
deleted file mode 100644
index 49eb418..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/DeviceSelector.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.ddmlib.IDevice;
-import com.android.ddmuilib.ImageLoader;
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.device.Window;
-import com.android.hierarchyviewerlib.models.DeviceSelectionModel;
-import com.android.hierarchyviewerlib.models.DeviceSelectionModel.WindowChangeListener;
-
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-
-public class DeviceSelector extends Composite implements WindowChangeListener, SelectionListener {
- private TreeViewer treeViewer;
-
- private Tree tree;
-
- private DeviceSelectionModel model;
-
- private Font boldFont;
-
- private Image deviceImage;
-
- private Image emulatorImage;
-
- private final static int ICON_WIDTH = 16;
-
- private class ContentProvider implements ITreeContentProvider, ILabelProvider, IFontProvider {
- public Object[] getChildren(Object parentElement) {
- if (parentElement instanceof IDevice) {
- Window[] list = model.getWindows((IDevice) parentElement);
- if (list != null) {
- return list;
- }
- }
- return new Object[0];
- }
-
- public Object getParent(Object element) {
- if (element instanceof Window) {
- return ((Window) element).getDevice();
- }
- return null;
- }
-
- public boolean hasChildren(Object element) {
- if (element instanceof IDevice) {
- Window[] list = model.getWindows((IDevice) element);
- if (list != null) {
- return list.length != 0;
- }
- }
- return false;
- }
-
- public Object[] getElements(Object inputElement) {
- if (inputElement instanceof DeviceSelectionModel) {
- return model.getDevices();
- }
- return new Object[0];
- }
-
- public void dispose() {
- // pass
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- // pass
- }
-
- public Image getImage(Object element) {
- if (element instanceof IDevice) {
- if (((IDevice) element).isEmulator()) {
- return emulatorImage;
- }
- return deviceImage;
- }
- return null;
- }
-
- public String getText(Object element) {
- if (element instanceof IDevice) {
- return ((IDevice) element).toString();
- } else if (element instanceof Window) {
- return ((Window) element).getTitle();
- }
- return null;
- }
-
- public Font getFont(Object element) {
- if (element instanceof Window) {
- int focusedWindow = model.getFocusedWindow(((Window) element).getDevice());
- if (focusedWindow == ((Window) element).getHashCode()) {
- return boldFont;
- }
- }
- return null;
- }
-
- public void addListener(ILabelProviderListener listener) {
- // pass
- }
-
- public boolean isLabelProperty(Object element, String property) {
- // pass
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener) {
- // pass
- }
- }
-
- public DeviceSelector(Composite parent) {
- super(parent, SWT.NONE);
- setLayout(new FillLayout());
- treeViewer = new TreeViewer(this, SWT.SINGLE);
- treeViewer.setAutoExpandLevel(TreeViewer.ALL_LEVELS);
-
- tree = treeViewer.getTree();
- tree.setLinesVisible(true);
- tree.addSelectionListener(this);
-
- addDisposeListener(disposeListener);
-
- loadResources();
-
- model = ComponentRegistry.getDeviceSelectionModel();
- ContentProvider contentProvider = new ContentProvider();
- treeViewer.setContentProvider(contentProvider);
- treeViewer.setLabelProvider(contentProvider);
- treeViewer.setInput(model);
- model.addWindowChangeListener(this);
- }
-
- public void loadResources() {
- Display display = Display.getDefault();
- Font systemFont = display.getSystemFont();
- FontData[] fontData = systemFont.getFontData();
- FontData[] newFontData = new FontData[fontData.length];
- for (int i = 0; i < fontData.length; i++) {
- newFontData[i] =
- new FontData(fontData[i].getName(), fontData[i].getHeight(), fontData[i]
- .getStyle()
- | SWT.BOLD);
- }
- boldFont = new Font(Display.getDefault(), newFontData);
-
- ImageLoader loader = ImageLoader.getDdmUiLibLoader();
- deviceImage =
- loader.loadImage(display, "device.png", ICON_WIDTH, ICON_WIDTH, display
- .getSystemColor(SWT.COLOR_RED));
-
- emulatorImage =
- loader.loadImage(display, "emulator.png", ICON_WIDTH, ICON_WIDTH, display
- .getSystemColor(SWT.COLOR_BLUE));
- }
-
- private DisposeListener disposeListener = new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.removeWindowChangeListener(DeviceSelector.this);
- boldFont.dispose();
- }
- };
-
- @Override
- public boolean setFocus() {
- return tree.setFocus();
- }
-
- public void deviceConnected(final IDevice device) {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- treeViewer.refresh();
- treeViewer.setExpandedState(device, true);
- }
- });
- }
-
- public void deviceChanged(final IDevice device) {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- TreeSelection selection = (TreeSelection) treeViewer.getSelection();
- treeViewer.refresh(device);
- if (selection.getFirstElement() instanceof Window
- && ((Window) selection.getFirstElement()).getDevice() == device) {
- treeViewer.setSelection(selection, true);
- }
- }
- });
- }
-
- public void deviceDisconnected(final IDevice device) {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- treeViewer.refresh();
- }
- });
- }
-
- public void focusChanged(final IDevice device) {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- TreeSelection selection = (TreeSelection) treeViewer.getSelection();
- treeViewer.refresh(device);
- if (selection.getFirstElement() instanceof Window
- && ((Window) selection.getFirstElement()).getDevice() == device) {
- treeViewer.setSelection(selection, true);
- }
- }
- });
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // TODO: Double click to open view hierarchy
- Object selection = ((TreeItem) e.item).getData();
- if (selection instanceof IDevice) {
- ComponentRegistry.getDirector().loadPixelPerfectData((IDevice) selection);
- } else if (selection instanceof Window) {
- ComponentRegistry.getDirector().loadViewTreeData((Window) selection);
- }
- }
-
- public void widgetSelected(SelectionEvent e) {
- Object selection = ((TreeItem) e.item).getData();
- if (selection instanceof IDevice) {
- model.setSelection((IDevice) selection, null);
- } else if (selection instanceof Window) {
- model.setSelection(((Window) selection).getDevice(), (Window) selection);
- }
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfect.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfect.java
deleted file mode 100644
index 8165c0b..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfect.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.ddmlib.RawImage;
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.device.ViewNode;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel.ImageChangeListener;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel.Point;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-
-public class PixelPerfect extends ScrolledComposite implements ImageChangeListener {
- private Canvas canvas;
-
- private PixelPerfectModel model;
-
- private Image image;
-
- private Color crosshairColor;
-
- private Color marginColor;
-
- private Color borderColor;
-
- private Color paddingColor;
-
- private int width;
-
- private int height;
-
- private Point crosshairLocation;
-
- private ViewNode selectedNode;
-
- public PixelPerfect(Composite parent) {
- super(parent, SWT.H_SCROLL | SWT.V_SCROLL);
- canvas = new Canvas(this, SWT.NONE);
- setContent(canvas);
- setExpandHorizontal(true);
- setExpandVertical(true);
- model = ComponentRegistry.getPixelPerfectModel();
- model.addImageChangeListener(this);
-
- canvas.addPaintListener(paintListener);
- canvas.addMouseListener(mouseListener);
- canvas.addMouseMoveListener(mouseMoveListener);
-
- addDisposeListener(disposeListener);
-
- crosshairColor = new Color(Display.getDefault(), new RGB(0, 255, 255));
- borderColor = new Color(Display.getDefault(), new RGB(255, 0, 0));
- marginColor = new Color(Display.getDefault(), new RGB(0, 255, 0));
- paddingColor = new Color(Display.getDefault(), new RGB(0, 0, 255));
- }
-
- private DisposeListener disposeListener = new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.removeImageChangeListener(PixelPerfect.this);
- if (image != null) {
- image.dispose();
- }
- crosshairColor.dispose();
- borderColor.dispose();
- paddingColor.dispose();
- }
- };
-
- @Override
- public boolean setFocus() {
- return canvas.setFocus();
- }
-
- private MouseListener mouseListener = new MouseListener() {
-
- public void mouseDoubleClick(MouseEvent e) {
- // pass
- }
-
- public void mouseDown(MouseEvent e) {
- handleMouseEvent(e);
- }
-
- public void mouseUp(MouseEvent e) {
- handleMouseEvent(e);
- }
-
- };
-
- private MouseMoveListener mouseMoveListener = new MouseMoveListener() {
- public void mouseMove(MouseEvent e) {
- if (e.stateMask != 0) {
- handleMouseEvent(e);
- }
- }
- };
-
- private void handleMouseEvent(MouseEvent e) {
- synchronized (this) {
- if (image == null) {
- return;
- }
- int leftOffset = canvas.getSize().x / 2 - width / 2;
- int topOffset = canvas.getSize().y / 2 - height / 2;
- e.x -= leftOffset;
- e.y -= topOffset;
- e.x = Math.max(e.x, 0);
- e.x = Math.min(e.x, width - 1);
- e.y = Math.max(e.y, 0);
- e.y = Math.min(e.y, height - 1);
- }
- model.setCrosshairLocation(e.x, e.y);
- }
-
- private PaintListener paintListener = new PaintListener() {
- public void paintControl(PaintEvent e) {
- synchronized (this) {
- e.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
- e.gc.fillRectangle(0, 0, canvas.getSize().x, canvas.getSize().y);
- if (image != null) {
- // Let's be cool and put it in the center...
- int leftOffset = canvas.getSize().x / 2 - width / 2;
- int topOffset = canvas.getSize().y / 2 - height / 2;
- e.gc.drawImage(image, leftOffset, topOffset);
- if (selectedNode != null) {
- // There are a few quirks here. First of all, margins
- // are sometimes negative or positive numbers... Yet,
- // they are always treated as positive.
- // Secondly, if the screen is in landscape mode, the
- // coordinates are backwards.
- int leftShift = 0;
- int topShift = 0;
- int nodeLeft = selectedNode.left;
- int nodeTop = selectedNode.top;
- int nodeWidth = selectedNode.width;
- int nodeHeight = selectedNode.height;
- int nodeMarginLeft = selectedNode.marginLeft;
- int nodeMarginTop = selectedNode.marginTop;
- int nodeMarginRight = selectedNode.marginRight;
- int nodeMarginBottom = selectedNode.marginBottom;
- int nodePadLeft = selectedNode.paddingLeft;
- int nodePadTop = selectedNode.paddingTop;
- int nodePadRight = selectedNode.paddingRight;
- int nodePadBottom = selectedNode.paddingBottom;
- ViewNode cur = selectedNode;
- while (cur.parent != null) {
- leftShift += cur.parent.left;
- topShift += cur.parent.top;
- cur = cur.parent;
- }
-
- // Everything is sideways.
- if (cur.width > cur.height) {
- e.gc.setForeground(paddingColor);
- e.gc.drawRectangle(leftOffset + width - nodeTop - topShift - nodeHeight
- + nodePadBottom,
- topOffset + leftShift + nodeLeft + nodePadLeft, nodeHeight
- - nodePadBottom - nodePadTop, nodeWidth - nodePadRight
- - nodePadLeft);
- e.gc.setForeground(marginColor);
- e.gc.drawRectangle(leftOffset + width - nodeTop - topShift - nodeHeight
- - nodeMarginBottom, topOffset + leftShift + nodeLeft
- - nodeMarginLeft,
- nodeHeight + nodeMarginBottom + nodeMarginTop, nodeWidth
- + nodeMarginRight + nodeMarginLeft);
- e.gc.setForeground(borderColor);
- e.gc.drawRectangle(
- leftOffset + width - nodeTop - topShift - nodeHeight, topOffset
- + leftShift + nodeLeft, nodeHeight, nodeWidth);
- } else {
- e.gc.setForeground(paddingColor);
- e.gc.drawRectangle(leftOffset + leftShift + nodeLeft + nodePadLeft,
- topOffset + topShift + nodeTop + nodePadTop, nodeWidth
- - nodePadRight - nodePadLeft, nodeHeight
- - nodePadBottom - nodePadTop);
- e.gc.setForeground(marginColor);
- e.gc.drawRectangle(leftOffset + leftShift + nodeLeft - nodeMarginLeft,
- topOffset + topShift + nodeTop - nodeMarginTop, nodeWidth
- + nodeMarginRight + nodeMarginLeft, nodeHeight
- + nodeMarginBottom + nodeMarginTop);
- e.gc.setForeground(borderColor);
- e.gc.drawRectangle(leftOffset + leftShift + nodeLeft, topOffset
- + topShift + nodeTop, nodeWidth, nodeHeight);
- }
- }
- if (crosshairLocation != null) {
- e.gc.setForeground(crosshairColor);
- e.gc.drawLine(leftOffset, topOffset + crosshairLocation.y, leftOffset
- + width - 1, topOffset + crosshairLocation.y);
- e.gc.drawLine(leftOffset + crosshairLocation.x, topOffset, leftOffset
- + crosshairLocation.x, topOffset + height - 1);
- }
- }
- }
- }
- };
-
- private void doRedraw() {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- canvas.redraw();
- }
- });
- }
-
- private void loadImage() {
- final RawImage rawImage = model.getImage();
- if (rawImage != null) {
- ImageData imageData =
- new ImageData(rawImage.width, rawImage.height, rawImage.bpp,
- new PaletteData(rawImage.getRedMask(), rawImage.getGreenMask(),
- rawImage.getBlueMask()), 1, rawImage.data);
- if (image != null) {
- image.dispose();
- }
- image = new Image(Display.getDefault(), imageData);
- width = rawImage.width;
- height = rawImage.height;
-
- } else {
- if (image != null) {
- image.dispose();
- image = null;
- }
- width = 0;
- height = 0;
- }
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- setMinSize(width, height);
- }
- });
- }
-
- public void imageLoaded() {
- synchronized (this) {
- loadImage();
- crosshairLocation = model.getCrosshairLocation();
- selectedNode = model.getSelected();
- }
- doRedraw();
- }
-
- public void imageChanged() {
- synchronized (this) {
- loadImage();
- }
- doRedraw();
- }
-
- public void crosshairMoved() {
- synchronized (this) {
- crosshairLocation = model.getCrosshairLocation();
- }
- doRedraw();
- }
-
- public void selectionChanged() {
- synchronized (this) {
- selectedNode = model.getSelected();
- }
- doRedraw();
- }
-
- public void focusChanged() {
- synchronized (this) {
- loadImage();
- selectedNode = model.getSelected();
- }
- doRedraw();
- }
-
- public void zoomChanged() {
- // pass
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectLoupe.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectLoupe.java
deleted file mode 100644
index f0402f3..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectLoupe.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.ddmlib.RawImage;
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel.ImageChangeListener;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel.Point;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseWheelListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.Transform;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-
-public class PixelPerfectLoupe extends Canvas implements ImageChangeListener {
- private PixelPerfectModel model;
-
- private Image image;
-
- private Image grid;
-
- private Color crosshairColor;
-
- private int width;
-
- private int height;
-
- private Point crosshairLocation;
-
- private int zoom;
-
- private Transform transform;
-
- private int canvasWidth;
-
- private int canvasHeight;
-
- public PixelPerfectLoupe(Composite parent) {
- super(parent, SWT.NONE);
- model = ComponentRegistry.getPixelPerfectModel();
- model.addImageChangeListener(this);
-
- addPaintListener(paintListener);
- addMouseListener(mouseListener);
- addMouseWheelListener(mouseWheelListener);
- addDisposeListener(disposeListener);
-
- crosshairColor = new Color(Display.getDefault(), new RGB(255, 94, 254));
-
- transform = new Transform(Display.getDefault());
- }
-
- private DisposeListener disposeListener = new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.removeImageChangeListener(PixelPerfectLoupe.this);
- if (image != null) {
- image.dispose();
- }
- crosshairColor.dispose();
- transform.dispose();
- if (grid != null) {
- grid.dispose();
- }
- }
- };
-
- private MouseListener mouseListener = new MouseListener() {
-
- public void mouseDoubleClick(MouseEvent e) {
- // pass
- }
-
- public void mouseDown(MouseEvent e) {
- handleMouseEvent(e);
- }
-
- public void mouseUp(MouseEvent e) {
- //
- }
-
- };
-
- private MouseWheelListener mouseWheelListener = new MouseWheelListener() {
- public void mouseScrolled(MouseEvent e) {
- int newZoom = -1;
- synchronized (this) {
- if (image != null && crosshairLocation != null) {
- if (e.count > 0) {
- newZoom = zoom + 1;
- } else {
- newZoom = zoom - 1;
- }
- }
- }
- if (newZoom != -1) {
- model.setZoom(newZoom);
- }
- }
- };
-
- private void handleMouseEvent(MouseEvent e) {
- int newX = -1;
- int newY = -1;
- synchronized (this) {
- if (image == null) {
- return;
- }
- int zoomedX = -crosshairLocation.x * zoom - zoom / 2 + getBounds().width / 2;
- int zoomedY = -crosshairLocation.y * zoom - zoom / 2 + getBounds().height / 2;
- int x = (e.x - zoomedX) / zoom;
- int y = (e.y - zoomedY) / zoom;
- if (x >= 0 && x < width && y >= 0 && y < height) {
- newX = x;
- newY = y;
- }
- }
- if (newX != -1) {
- model.setCrosshairLocation(newX, newY);
- }
- }
-
- private PaintListener paintListener = new PaintListener() {
- public void paintControl(PaintEvent e) {
- synchronized (this) {
- e.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
- e.gc.fillRectangle(0, 0, getSize().x, getSize().y);
- if (image != null && crosshairLocation != null) {
- int zoomedX = -crosshairLocation.x * zoom - zoom / 2 + getBounds().width / 2;
- int zoomedY = -crosshairLocation.y * zoom - zoom / 2 + getBounds().height / 2;
- transform.translate(zoomedX, zoomedY);
- transform.scale(zoom, zoom);
- e.gc.setInterpolation(SWT.NONE);
- e.gc.setTransform(transform);
- e.gc.drawImage(image, 0, 0);
- transform.identity();
- e.gc.setTransform(transform);
-
- // If the size of the canvas has changed, we need to make
- // another grid.
- if (grid != null
- && (canvasWidth != getBounds().width || canvasHeight != getBounds().height)) {
- grid.dispose();
- grid = null;
- }
- canvasWidth = getBounds().width;
- canvasHeight = getBounds().height;
- if (grid == null) {
- // Make a transparent image;
- ImageData imageData =
- new ImageData(canvasWidth + zoom + 1, canvasHeight + zoom + 1, 1,
- new PaletteData(new RGB[] {
- new RGB(0, 0, 0)
- }));
- imageData.transparentPixel = 0;
-
- // Draw the grid.
- grid = new Image(Display.getDefault(), imageData);
- GC gc = new GC(grid);
- gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
- for (int x = 0; x <= canvasWidth + zoom; x += zoom) {
- gc.drawLine(x, 0, x, canvasHeight + zoom);
- }
- for (int y = 0; y <= canvasHeight + zoom; y += zoom) {
- gc.drawLine(0, y, canvasWidth + zoom, y);
- }
- gc.dispose();
- }
-
- e.gc.setClipping(new Rectangle(zoomedX, zoomedY, width * zoom + 1, height
- * zoom + 1));
- e.gc.setAlpha(76);
- e.gc.drawImage(grid, (canvasWidth / 2 - zoom / 2) % zoom - zoom,
- (canvasHeight / 2 - zoom / 2) % zoom - zoom);
- e.gc.setAlpha(255);
-
- e.gc.setForeground(crosshairColor);
- e.gc.drawLine(0, canvasHeight / 2, canvasWidth - 1, canvasHeight / 2);
- e.gc.drawLine(canvasWidth / 2, 0, canvasWidth / 2, canvasHeight - 1);
- }
- }
- }
- };
-
- private void doRedraw() {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- redraw();
- }
- });
- }
-
- private void loadImage() {
- final RawImage rawImage = model.getImage();
- if (rawImage != null) {
- ImageData imageData =
- new ImageData(rawImage.width, rawImage.height, rawImage.bpp,
- new PaletteData(rawImage.getRedMask(), rawImage.getGreenMask(),
- rawImage.getBlueMask()), 1, rawImage.data);
- if (image != null) {
- image.dispose();
- }
- image = new Image(Display.getDefault(), imageData);
- width = rawImage.width;
- height = rawImage.height;
- } else {
- if (image != null) {
- image.dispose();
- image = null;
- }
- width = 0;
- height = 0;
- }
- }
-
- public void imageLoaded() {
- synchronized (this) {
- loadImage();
- crosshairLocation = model.getCrosshairLocation();
- zoom = model.getZoom();
- }
- doRedraw();
- }
-
- public void imageChanged() {
- synchronized (this) {
- loadImage();
- }
- doRedraw();
- }
-
- public void crosshairMoved() {
- synchronized (this) {
- crosshairLocation = model.getCrosshairLocation();
- }
- doRedraw();
- }
-
- public void selectionChanged() {
- // pass
- }
-
- public void focusChanged() {
- imageChanged();
- }
-
- public void zoomChanged() {
- synchronized (this) {
- if (grid != null) {
- // To notify that the zoom level has changed, we get rid of the
- // grid.
- grid.dispose();
- grid = null;
- zoom = model.getZoom();
- }
- }
- doRedraw();
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectTree.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectTree.java
deleted file mode 100644
index 2c30857..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PixelPerfectTree.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.ddmuilib.ImageLoader;
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.device.ViewNode;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel;
-import com.android.hierarchyviewerlib.models.PixelPerfectModel.ImageChangeListener;
-
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-
-import java.util.List;
-
-public class PixelPerfectTree extends Composite implements ImageChangeListener, SelectionListener {
-
- private TreeViewer treeViewer;
-
- private Tree tree;
-
- private PixelPerfectModel model;
-
- private Image folderImage;
-
- private Image fileImage;
-
- private class ContentProvider implements ITreeContentProvider, ILabelProvider {
- public Object[] getChildren(Object element) {
- if (element instanceof ViewNode) {
- List<ViewNode> children = ((ViewNode) element).children;
- return children.toArray(new ViewNode[children.size()]);
- }
- return null;
- }
-
- public Object getParent(Object element) {
- if (element instanceof ViewNode) {
- return ((ViewNode) element).parent;
- }
- return null;
- }
-
- public boolean hasChildren(Object element) {
- if (element instanceof ViewNode) {
- return ((ViewNode) element).children.size() != 0;
- }
- return false;
- }
-
- public Object[] getElements(Object element) {
- if (element instanceof PixelPerfectModel) {
- ViewNode viewNode = ((PixelPerfectModel) element).getViewNode();
- if (viewNode == null) {
- return new Object[0];
- }
- return new Object[] {
- viewNode
- };
- }
- return new Object[0];
- }
-
- public void dispose() {
- // pass
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- // pass
- }
-
- public Image getImage(Object element) {
- if (element instanceof ViewNode) {
- if (hasChildren(element)) {
- return folderImage;
- }
- return fileImage;
- }
- return null;
- }
-
- public String getText(Object element) {
- if (element instanceof ViewNode) {
- return ((ViewNode) element).name;
- }
- return null;
- }
-
- public void addListener(ILabelProviderListener listener) {
- // pass
- }
-
- public boolean isLabelProperty(Object element, String property) {
- // pass
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener) {
- // pass
- }
- }
-
- public PixelPerfectTree(Composite parent) {
- super(parent, SWT.NONE);
- setLayout(new FillLayout());
- treeViewer = new TreeViewer(this, SWT.SINGLE);
- treeViewer.setAutoExpandLevel(TreeViewer.ALL_LEVELS);
-
- tree = treeViewer.getTree();
- tree.addSelectionListener(this);
-
- loadResources();
-
- addDisposeListener(disposeListener);
-
- model = ComponentRegistry.getPixelPerfectModel();
- ContentProvider contentProvider = new ContentProvider();
- treeViewer.setContentProvider(contentProvider);
- treeViewer.setLabelProvider(contentProvider);
- treeViewer.setInput(model);
- model.addImageChangeListener(this);
-
- }
-
- public void loadResources() {
- ImageLoader loader = ImageLoader.getDdmUiLibLoader();
- fileImage = loader.loadImage("file.png", Display.getDefault());
-
- folderImage = loader.loadImage("folder.png", Display.getDefault());
- }
-
- private DisposeListener disposeListener = new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.removeImageChangeListener(PixelPerfectTree.this);
- fileImage.dispose();
- folderImage.dispose();
- }
- };
-
- @Override
- public boolean setFocus() {
- return tree.setFocus();
- }
-
- public void imageLoaded() {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- treeViewer.refresh();
- treeViewer.expandAll();
- }
- });
- }
-
- public void imageChanged() {
- // pass
- }
-
- public void crosshairMoved() {
- // pass
- }
-
- public void selectionChanged() {
- // pass
- }
-
- public void focusChanged() {
- imageLoaded();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // pass
- }
-
- public void widgetSelected(SelectionEvent e) {
- // To combat phantom selection...
- if (((TreeSelection) treeViewer.getSelection()).isEmpty()) {
- model.setSelected(null);
- } else {
- model.setSelected((ViewNode) e.item.getData());
- }
- }
-
- public void zoomChanged() {
- // pass
- }
-
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/ProfileViewer.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/ProfileViewer.java
deleted file mode 100644
index 400318c..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/ProfileViewer.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.models.TreeViewModel;
-import com.android.hierarchyviewerlib.models.TreeViewModel.TreeChangeListener;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode;
-import com.android.hierarchyvieweruilib.util.TreeColumnResizer;
-
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-
-import java.text.DecimalFormat;
-
-public class ProfileViewer extends Composite implements TreeChangeListener {
- private TreeViewModel model;
-
- private TreeViewer treeViewer;
-
- private Tree tree;
-
- private DrawableViewNode selectedNode;
-
- private class ContentProvider implements ITreeContentProvider, ITableLabelProvider {
-
- public Object[] getChildren(Object parentElement) {
- synchronized (ProfileViewer.this) {
- return new Object[0];
- }
- }
-
- public Object getParent(Object element) {
- synchronized (ProfileViewer.this) {
- return new Object[0];
- }
- }
-
- public boolean hasChildren(Object element) {
- synchronized (ProfileViewer.this) {
- return false;
- }
- }
-
- public Object[] getElements(Object inputElement) {
- synchronized (ProfileViewer.this) {
- if (selectedNode != null && selectedNode.viewNode.measureTime != -1) {
- return new String[] {
- "measure", "layout", "draw"
- };
- }
- return new Object[0];
- }
- }
-
- public void dispose() {
- // pass
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- // pass
- }
-
- public Image getColumnImage(Object element, int column) {
- return null;
- }
-
- public String getColumnText(Object element, int column) {
- synchronized (ProfileViewer.this) {
- if (selectedNode != null) {
- if (column == 0) {
- return (String) element;
- } else if (column == 1) {
- DecimalFormat formatter = new DecimalFormat("0.000");
- if(((String)element).equals("measure")) {
- return formatter.format(selectedNode.viewNode.measureTime);
- } else if (((String) element).equals("layout")) {
- return formatter.format(selectedNode.viewNode.layoutTime);
- } else {
- return formatter.format(selectedNode.viewNode.drawTime);
- }
- }
- }
- return "";
- }
- }
-
- public void addListener(ILabelProviderListener listener) {
- // pass
- }
-
- public boolean isLabelProperty(Object element, String property) {
- // pass
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener) {
- // pass
- }
- }
-
- public ProfileViewer(Composite parent) {
- super(parent, SWT.NONE);
- setLayout(new FillLayout());
- treeViewer = new TreeViewer(this, SWT.NONE);
-
- tree = treeViewer.getTree();
- tree.setLinesVisible(true);
- tree.setHeaderVisible(true);
-
- TreeColumn operationColumn = new TreeColumn(tree, SWT.NONE);
- operationColumn.setText("Operation");
- TreeColumn durationColumn = new TreeColumn(tree, SWT.NONE);
- durationColumn.setText("Duration (ms)");
-
- model = ComponentRegistry.getTreeViewModel();
- ContentProvider contentProvider = new ContentProvider();
- treeViewer.setContentProvider(contentProvider);
- treeViewer.setLabelProvider(contentProvider);
- treeViewer.setInput(model);
- model.addTreeChangeListener(this);
-
- new TreeColumnResizer(this, operationColumn, durationColumn);
- }
-
- public void selectionChanged() {
- synchronized (this) {
- selectedNode = model.getSelection();
- }
- doRefresh();
- }
-
- public void treeChanged() {
- synchronized (this) {
- selectedNode = model.getSelection();
- }
- doRefresh();
- }
-
- public void viewportChanged() {
- // pass
- }
-
- public void zoomChanged() {
- // pass
- }
-
- private void doRefresh() {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- treeViewer.refresh();
- }
- });
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PropertyViewer.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PropertyViewer.java
deleted file mode 100644
index da4997b..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/PropertyViewer.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.device.ViewNode;
-import com.android.hierarchyviewerlib.device.ViewNode.Property;
-import com.android.hierarchyviewerlib.models.TreeViewModel;
-import com.android.hierarchyviewerlib.models.TreeViewModel.TreeChangeListener;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode;
-import com.android.hierarchyvieweruilib.util.TreeColumnResizer;
-
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-
-import java.util.ArrayList;
-
-public class PropertyViewer extends Composite implements TreeChangeListener {
- private TreeViewModel model;
-
- private TreeViewer treeViewer;
-
- private Tree tree;
-
- private DrawableViewNode selectedNode;
-
- private class ContentProvider implements ITreeContentProvider, ITableLabelProvider {
-
- public Object[] getChildren(Object parentElement) {
- synchronized (PropertyViewer.this) {
- if (selectedNode != null && parentElement instanceof String) {
- String category = (String) parentElement;
- ArrayList<Property> returnValue = new ArrayList<Property>();
- for (Property property : selectedNode.viewNode.properties) {
- if (category.equals(ViewNode.MISCELLANIOUS)) {
- if (property.name.indexOf(':') == -1) {
- returnValue.add(property);
- }
- } else {
- if (property.name.startsWith(((String) parentElement) + ":")) {
- returnValue.add(property);
- }
- }
- }
- return returnValue.toArray(new Property[returnValue.size()]);
- }
- return new Object[0];
- }
- }
-
- public Object getParent(Object element) {
- synchronized (PropertyViewer.this) {
- if (selectedNode != null && element instanceof Property) {
- if (selectedNode.viewNode.categories.size() == 0) {
- return null;
- }
- String name = ((Property) element).name;
- int index = name.indexOf(':');
- if (index == -1) {
- return ViewNode.MISCELLANIOUS;
- }
- return name.substring(0, index);
- }
- return null;
- }
- }
-
- public boolean hasChildren(Object element) {
- synchronized (PropertyViewer.this) {
- if (selectedNode != null && element instanceof String) {
- String category = (String) element;
- for (String name : selectedNode.viewNode.namedProperties.keySet()) {
- if (category.equals(ViewNode.MISCELLANIOUS)) {
- if (name.indexOf(':') == -1) {
- return true;
- }
- } else {
- if (name.startsWith(((String) element) + ":")) {
- return true;
- }
- }
- }
- }
- return false;
- }
- }
-
- public Object[] getElements(Object inputElement) {
- synchronized (PropertyViewer.this) {
- if (selectedNode != null && inputElement instanceof TreeViewModel) {
- if (selectedNode.viewNode.categories.size() == 0) {
- return selectedNode.viewNode.properties
- .toArray(new Property[selectedNode.viewNode.properties.size()]);
- } else {
- return selectedNode.viewNode.categories
- .toArray(new String[selectedNode.viewNode.categories.size()]);
- }
- }
- return new Object[0];
- }
- }
-
- public void dispose() {
- // pass
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- // pass
- }
-
- public Image getColumnImage(Object element, int column) {
- return null;
- }
-
- public String getColumnText(Object element, int column) {
- synchronized (PropertyViewer.this) {
- if (selectedNode != null) {
- if (element instanceof String && column == 0) {
- String category = (String) element;
- return Character.toUpperCase(category.charAt(0)) + category.substring(1);
- } else if (element instanceof Property) {
- if (column == 0) {
- String returnValue = ((Property) element).name;
- int index = returnValue.indexOf(':');
- if (index != -1) {
- return returnValue.substring(index + 1);
- }
- return returnValue;
- } else if (column == 1) {
- return ((Property) element).value;
- }
- }
- }
- return "";
- }
- }
-
- public void addListener(ILabelProviderListener listener) {
- // pass
- }
-
- public boolean isLabelProperty(Object element, String property) {
- // pass
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener) {
- // pass
- }
- }
-
- public PropertyViewer(Composite parent) {
- super(parent, SWT.NONE);
- setLayout(new FillLayout());
- treeViewer = new TreeViewer(this, SWT.NONE);
-
- tree = treeViewer.getTree();
- tree.setLinesVisible(true);
- tree.setHeaderVisible(true);
-
- TreeColumn propertyColumn = new TreeColumn(tree, SWT.NONE);
- propertyColumn.setText("Property");
- TreeColumn valueColumn = new TreeColumn(tree, SWT.NONE);
- valueColumn.setText("Value");
-
- model = ComponentRegistry.getTreeViewModel();
- ContentProvider contentProvider = new ContentProvider();
- treeViewer.setContentProvider(contentProvider);
- treeViewer.setLabelProvider(contentProvider);
- treeViewer.setInput(model);
- model.addTreeChangeListener(this);
-
- new TreeColumnResizer(this, propertyColumn, valueColumn);
- }
-
-
- public void selectionChanged() {
- synchronized (this) {
- selectedNode = model.getSelection();
- }
- doRefresh();
- }
-
- public void treeChanged() {
- synchronized (this) {
- selectedNode = model.getSelection();
- }
- doRefresh();
- }
-
- public void viewportChanged() {
- // pass
- }
-
- public void zoomChanged() {
- // pass
- }
-
- private void doRefresh() {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- treeViewer.refresh();
- }
- });
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeView.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeView.java
deleted file mode 100644
index f5d7ae0..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeView.java
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.models.TreeViewModel;
-import com.android.hierarchyviewerlib.models.TreeViewModel.TreeChangeListener;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode.Point;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode.Rectangle;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseWheelListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Transform;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-public class TreeView extends Canvas implements TreeChangeListener {
-
- private TreeViewModel model;
-
- private DrawableViewNode tree;
-
- private DrawableViewNode selectedNode;
-
- private Rectangle viewport;
-
- private Transform transform;
-
- private Transform inverse;
-
- private double zoom;
-
- private Point lastPoint;
-
- private DrawableViewNode draggedNode;
-
- public TreeView(Composite parent) {
- super(parent, SWT.NONE);
-
- model = ComponentRegistry.getTreeViewModel();
- model.addTreeChangeListener(this);
-
- addPaintListener(paintListener);
- addMouseListener(mouseListener);
- addMouseMoveListener(mouseMoveListener);
- addMouseWheelListener(mouseWheelListener);
- addListener(SWT.Resize, resizeListener);
- addDisposeListener(disposeListener);
-
- transform = new Transform(Display.getDefault());
- inverse = new Transform(Display.getDefault());
- }
-
- private DisposeListener disposeListener = new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.removeTreeChangeListener(TreeView.this);
- transform.dispose();
- inverse.dispose();
- }
- };
-
- private Listener resizeListener = new Listener() {
- public void handleEvent(Event e) {
- synchronized (this) {
- if (tree != null && viewport != null) {
-
- // I don't know what the best behaviour is... This seems
- // like a good idea.
- Point viewCenter =
- new Point(viewport.x + viewport.width / 2, viewport.y + viewport.height
- / 2);
- viewport.width = getBounds().width / zoom;
- viewport.height = getBounds().height / zoom;
- viewport.x = viewCenter.x - viewport.width / 2;
- viewport.y = viewCenter.y - viewport.height / 2;
- }
- }
- if (viewport != null) {
- model.setViewport(viewport);
- }
- }
- };
-
- private MouseListener mouseListener = new MouseListener() {
-
- public void mouseDoubleClick(MouseEvent e) {
- // pass
- }
-
- public void mouseDown(MouseEvent e) {
- boolean selectionChanged = false;
- synchronized (this) {
- if (tree != null && viewport != null) {
- Point pt = transformPoint(e.x, e.y);
- draggedNode = tree.getSelected(pt.x, pt.y);
- if (draggedNode != null && draggedNode != selectedNode) {
- selectedNode = draggedNode;
- selectionChanged = true;
- }
- if (draggedNode == tree) {
- draggedNode = null;
- }
- if (draggedNode != null) {
- lastPoint = pt;
- } else {
- lastPoint = new Point(e.x, e.y);
- }
- }
- }
- if (selectionChanged) {
- model.setSelection(selectedNode);
- }
- }
-
- public void mouseUp(MouseEvent e) {
- boolean redraw = false;
- boolean viewportChanged = false;
- synchronized (this) {
- if (tree != null && viewport != null && lastPoint != null) {
- if (draggedNode == null) {
- handleMouseDrag(new Point(e.x, e.y));
- viewportChanged = true;
- } else {
- handleMouseDrag(transformPoint(e.x, e.y));
- }
- lastPoint = null;
- draggedNode = null;
- redraw = true;
- }
- }
- if (viewportChanged) {
- model.setViewport(viewport);
- } else if (redraw) {
- model.removeTreeChangeListener(TreeView.this);
- model.notifyTreeChanged();
- model.addTreeChangeListener(TreeView.this);
- doRedraw();
- }
- }
-
- };
-
- private MouseMoveListener mouseMoveListener = new MouseMoveListener() {
- public void mouseMove(MouseEvent e) {
- boolean redraw = false;
- boolean viewportChanged = false;
- synchronized (this) {
- if (tree != null && viewport != null && lastPoint != null) {
- if (draggedNode == null) {
- handleMouseDrag(new Point(e.x, e.y));
- viewportChanged = true;
- } else {
- handleMouseDrag(transformPoint(e.x, e.y));
- }
- redraw = true;
- }
- }
- if (viewportChanged) {
- model.setViewport(viewport);
- } else if (redraw) {
- model.removeTreeChangeListener(TreeView.this);
- model.notifyTreeChanged();
- model.addTreeChangeListener(TreeView.this);
- doRedraw();
- }
- }
- };
-
- private void handleMouseDrag(Point pt) {
- if (draggedNode != null) {
- draggedNode.move(lastPoint.y - pt.y);
- lastPoint = pt;
- return;
- }
- double xDif = (lastPoint.x - pt.x) / zoom;
- double yDif = (lastPoint.y - pt.y) / zoom;
-
- if (viewport.width > tree.bounds.width) {
- if (xDif < 0 && viewport.x + viewport.width > tree.bounds.x + tree.bounds.width) {
- viewport.x =
- Math.max(viewport.x + xDif, tree.bounds.x + tree.bounds.width
- - viewport.width);
- } else if (xDif > 0 && viewport.x < tree.bounds.x) {
- viewport.x = Math.min(viewport.x + xDif, tree.bounds.x);
- }
- } else {
- if (xDif < 0 && viewport.x > tree.bounds.x) {
- viewport.x = Math.max(viewport.x + xDif, tree.bounds.x);
- } else if (xDif > 0 && viewport.x + viewport.width < tree.bounds.x + tree.bounds.width) {
- viewport.x =
- Math.min(viewport.x + xDif, tree.bounds.x + tree.bounds.width
- - viewport.width);
- }
- }
- if (viewport.height > tree.bounds.height) {
- if (yDif < 0 && viewport.y + viewport.height > tree.bounds.y + tree.bounds.height) {
- viewport.y =
- Math.max(viewport.y + yDif, tree.bounds.y + tree.bounds.height
- - viewport.height);
- } else if (yDif > 0 && viewport.y < tree.bounds.y) {
- viewport.y = Math.min(viewport.y + yDif, tree.bounds.y);
- }
- } else {
- if (yDif < 0 && viewport.y > tree.bounds.y) {
- viewport.y = Math.max(viewport.y + yDif, tree.bounds.y);
- } else if (yDif > 0
- && viewport.y + viewport.height < tree.bounds.y + tree.bounds.height) {
- viewport.y =
- Math.min(viewport.y + yDif, tree.bounds.y + tree.bounds.height
- - viewport.height);
- }
- }
- lastPoint = pt;
- }
-
- private Point transformPoint(double x, double y) {
- float[] pt = {
- (float) x, (float) y
- };
- inverse.transform(pt);
- return new Point(pt[0], pt[1]);
- }
-
- private MouseWheelListener mouseWheelListener = new MouseWheelListener() {
-
- public void mouseScrolled(MouseEvent e) {
- Point zoomPoint = null;
- synchronized (this) {
- if (tree != null && viewport != null) {
- zoom += Math.ceil(e.count / 3.0) * 0.1;
- zoomPoint = transformPoint(e.x, e.y);
- }
- }
- if (zoomPoint != null) {
- model.zoomOnPoint(zoom, zoomPoint);
- }
- }
- };
-
- private PaintListener paintListener = new PaintListener() {
- public void paintControl(PaintEvent e) {
- synchronized (this) {
- e.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
- e.gc.fillRectangle(0, 0, getBounds().width, getBounds().height);
- if (tree != null && viewport != null) {
- e.gc.setTransform(transform);
- e.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_GRAY));
- paintRecursive(e.gc, tree);
- }
- }
- }
- };
-
- private void paintRecursive(GC gc, DrawableViewNode node) {
- if (selectedNode == node) {
- gc.fillRectangle(node.left, (int) Math.round(node.top), DrawableViewNode.NODE_WIDTH,
- DrawableViewNode.NODE_HEIGHT);
- } else {
- gc.drawRectangle(node.left, (int) Math.round(node.top), DrawableViewNode.NODE_WIDTH,
- DrawableViewNode.NODE_HEIGHT);
- }
- int N = node.children.size();
- for (int i = 0; i < N; i++) {
- DrawableViewNode child = node.children.get(i);
- paintRecursive(gc, child);
- gc.drawLine(node.left + DrawableViewNode.NODE_WIDTH, (int) Math.round(node.top)
- + DrawableViewNode.NODE_HEIGHT / 2, child.left, (int) Math.round(child.top)
- + DrawableViewNode.NODE_HEIGHT / 2);
- }
- }
-
- private void doRedraw() {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- redraw();
- }
- });
- }
-
- public void treeChanged() {
- synchronized (this) {
- tree = model.getTree();
- selectedNode = model.getSelection();
- if (tree == null) {
- viewport = null;
- } else {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- viewport =
- new Rectangle((tree.bounds.width - getBounds().width) / 2,
- (tree.bounds.height - getBounds().height) / 2,
- getBounds().width, getBounds().height);
- }
- });
- }
- }
- if (viewport != null) {
- model.setViewport(viewport);
- }
- }
-
- private void setTransform() {
- if (viewport != null && tree != null) {
- // Set the transform.
- transform.identity();
- inverse.identity();
-
- transform.scale((float) zoom, (float) zoom);
- inverse.scale((float) zoom, (float) zoom);
- transform.translate((float) -viewport.x, (float) -viewport.y);
- inverse.translate((float) -viewport.x, (float) -viewport.y);
- inverse.invert();
- }
- }
-
- public void viewportChanged() {
- synchronized (this) {
- viewport = model.getViewport();
- zoom = model.getZoom();
- setTransform();
- }
- doRedraw();
- }
-
- public void zoomChanged() {
- viewportChanged();
- }
-
- public void selectionChanged() {
- synchronized (this) {
- selectedNode = model.getSelection();
- }
- doRedraw();
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeViewOverview.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeViewOverview.java
deleted file mode 100644
index feed1af..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/TreeViewOverview.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib;
-
-import com.android.hierarchyviewerlib.ComponentRegistry;
-import com.android.hierarchyviewerlib.models.TreeViewModel;
-import com.android.hierarchyviewerlib.models.TreeViewModel.TreeChangeListener;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode.Point;
-import com.android.hierarchyviewerlib.scene.DrawableViewNode.Rectangle;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Transform;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-public class TreeViewOverview extends Canvas implements TreeChangeListener {
-
- private TreeViewModel model;
-
- private DrawableViewNode tree;
-
- private Rectangle viewport;
-
- private Transform transform;
-
- private Transform inverse;
-
- private Rectangle bounds = new Rectangle();
-
- private double scale;
-
- private boolean dragging = false;
-
- public TreeViewOverview(Composite parent) {
- super(parent, SWT.NONE);
-
- model = ComponentRegistry.getTreeViewModel();
- model.addTreeChangeListener(this);
-
- addPaintListener(paintListener);
- addMouseListener(mouseListener);
- addMouseMoveListener(mouseMoveListener);
- addListener(SWT.Resize, resizeListener);
- addDisposeListener(disposeListener);
-
- transform = new Transform(Display.getDefault());
- inverse = new Transform(Display.getDefault());
- }
-
- private DisposeListener disposeListener = new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.removeTreeChangeListener(TreeViewOverview.this);
- transform.dispose();
- inverse.dispose();
- }
- };
-
- private MouseListener mouseListener = new MouseListener() {
-
- public void mouseDoubleClick(MouseEvent e) {
- // pass
- }
-
- public void mouseDown(MouseEvent e) {
- boolean redraw = false;
- synchronized (this) {
- if (tree != null && viewport != null) {
- dragging = true;
- redraw = true;
- handleMouseEvent(transformPoint(e.x, e.y));
- }
- }
- if (redraw) {
- model.removeTreeChangeListener(TreeViewOverview.this);
- model.setViewport(viewport);
- model.addTreeChangeListener(TreeViewOverview.this);
- doRedraw();
- }
- }
-
- public void mouseUp(MouseEvent e) {
- boolean redraw = false;
- synchronized (this) {
- if (tree != null && viewport != null) {
- dragging = false;
- redraw = true;
- handleMouseEvent(transformPoint(e.x, e.y));
- setBounds();
- setTransform();
- }
- }
- if (redraw) {
- model.removeTreeChangeListener(TreeViewOverview.this);
- model.setViewport(viewport);
- model.addTreeChangeListener(TreeViewOverview.this);
- doRedraw();
- }
- }
-
- };
-
- private MouseMoveListener mouseMoveListener = new MouseMoveListener() {
- public void mouseMove(MouseEvent e) {
- boolean moved = false;
- synchronized (this) {
- if (dragging) {
- moved = true;
- handleMouseEvent(transformPoint(e.x, e.y));
- }
- }
- if (moved) {
- model.removeTreeChangeListener(TreeViewOverview.this);
- model.setViewport(viewport);
- model.addTreeChangeListener(TreeViewOverview.this);
- doRedraw();
- }
- }
- };
-
- private void handleMouseEvent(Point pt) {
- viewport.x = pt.x - viewport.width / 2;
- viewport.y = pt.y - viewport.height / 2;
- if (viewport.x < bounds.x) {
- viewport.x = bounds.x;
- }
- if (viewport.y < bounds.y) {
- viewport.y = bounds.y;
- }
- if (viewport.x + viewport.width > bounds.x + bounds.width) {
- viewport.x = bounds.x + bounds.width - viewport.width;
- }
- if (viewport.y + viewport.height > bounds.y + bounds.height) {
- viewport.y = bounds.y + bounds.height - viewport.height;
- }
- }
-
- private Point transformPoint(double x, double y) {
- float[] pt = {
- (float) x, (float) y
- };
- inverse.transform(pt);
- return new Point(pt[0], pt[1]);
- }
-
- private Listener resizeListener = new Listener() {
- public void handleEvent(Event arg0) {
- synchronized (this) {
- setTransform();
- }
- doRedraw();
- }
- };
-
- private PaintListener paintListener = new PaintListener() {
- public void paintControl(PaintEvent e) {
- if (tree != null && viewport != null) {
- e.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
- e.gc.fillRectangle(0, 0, getBounds().width, getBounds().height);
- e.gc.setTransform(transform);
- paintRecursive(e.gc, tree);
-
- e.gc.setAlpha(80);
- e.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY));
- e.gc.fillRectangle((int) viewport.x, (int) viewport.y, (int) Math
- .ceil(viewport.width), (int) Math.ceil(viewport.height));
-
- e.gc.setAlpha(255);
- e.gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
- e.gc.setLineWidth((int) Math.ceil(2 / scale));
- e.gc.drawRectangle((int) viewport.x, (int) viewport.y, (int) Math
- .ceil(viewport.width), (int) Math.ceil(viewport.height));
- }
- }
- };
-
- private void paintRecursive(GC gc, DrawableViewNode node) {
- gc.drawRectangle(node.left, (int) Math.round(node.top), DrawableViewNode.NODE_WIDTH,
- DrawableViewNode.NODE_HEIGHT);
- int N = node.children.size();
- for (int i = 0; i < N; i++) {
- DrawableViewNode child = node.children.get(i);
- paintRecursive(gc, child);
- gc.drawLine(node.left + DrawableViewNode.NODE_WIDTH, (int) Math.round(node.top)
- + DrawableViewNode.NODE_HEIGHT / 2, child.left, (int) Math.round(child.top)
- + DrawableViewNode.NODE_HEIGHT / 2);
- }
- }
-
- private void doRedraw() {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- redraw();
- }
- });
- }
-
- public void treeChanged() {
- synchronized (this) {
- tree = model.getTree();
- setBounds();
- setTransform();
- }
- doRedraw();
- }
-
- private void setBounds() {
- if (viewport != null && tree != null) {
- bounds.x = Math.min(viewport.x, tree.bounds.x);
- bounds.y = Math.min(viewport.y, tree.bounds.y);
- bounds.width =
- Math.max(viewport.x + viewport.width, tree.bounds.x + tree.bounds.width)
- - bounds.x;
- bounds.height =
- Math.max(viewport.y + viewport.height, tree.bounds.y + tree.bounds.height)
- - bounds.y;
- }
- }
-
- private void setTransform() {
- if (viewport != null && tree != null) {
-
- transform.identity();
- inverse.identity();
- final Point size = new Point();
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- size.x = getBounds().width;
- size.y = getBounds().height;
- }
- });
- scale = Math.min(size.x / bounds.width, size.y / bounds.height);
- transform.scale((float) scale, (float) scale);
- inverse.scale((float) scale, (float) scale);
- transform.translate((float) -bounds.x, (float) -bounds.y);
- inverse.translate((float) -bounds.x, (float) -bounds.y);
- if (size.x / bounds.width < size.y / bounds.height) {
- transform.translate(0, (float) (size.y / scale - bounds.height) / 2);
- inverse.translate(0, (float) (size.y / scale - bounds.height) / 2);
- } else {
- transform.translate((float) (size.x / scale - bounds.width) / 2, 0);
- inverse.translate((float) (size.x / scale - bounds.width) / 2, 0);
- }
- inverse.invert();
- }
- }
-
- public void viewportChanged() {
- synchronized (this) {
- viewport = model.getViewport();
- setBounds();
- setTransform();
- }
- doRedraw();
- }
-
- public void zoomChanged() {
- viewportChanged();
- }
-
- public void selectionChanged() {
- // pass
- }
-}
diff --git a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/util/TreeColumnResizer.java b/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/util/TreeColumnResizer.java
deleted file mode 100644
index 09851c3..0000000
--- a/hierarchyviewer2/libs/hierarchyvieweruilib/src/com/android/hierarchyvieweruilib/util/TreeColumnResizer.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hierarchyvieweruilib.util;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.TreeColumn;
-
-public class TreeColumnResizer {
-
- private TreeColumn column1;
- private TreeColumn column2;
-
- private Composite control;
- private int column1Width;
- private int column2Width;
- public TreeColumnResizer(Composite control, TreeColumn column1, TreeColumn column2) {
- this.control = control;
- this.column1 = column1;
- this.column2 = column2;
- control.addListener(SWT.Resize, resizeListener);
- column1.addListener(SWT.Resize, column1ResizeListener);
- column2.setResizable(false);
- }
-
- private Listener resizeListener = new Listener() {
- public void handleEvent(Event e) {
- if (column1Width == 0 && column2Width == 0) {
- column1Width = (control.getBounds().width - 18) / 2;
- column2Width = (control.getBounds().width - 18) / 2;
- } else {
- int dif = control.getBounds().width - 18 - (column1Width + column2Width);
- int columnDif = Math.abs(column1Width - column2Width);
- int mainColumnChange = Math.min(Math.abs(dif), columnDif);
- int left = Math.max(0, Math.abs(dif) - columnDif);
- if (dif < 0) {
- if (column1Width > column2Width) {
- column1Width -= mainColumnChange;
- } else {
- column2Width -= mainColumnChange;
- }
- column1Width -= left / 2;
- column2Width -= left - left / 2;
- } else {
- if (column1Width > column2Width) {
- column2Width += mainColumnChange;
- } else {
- column1Width += mainColumnChange;
- }
- column1Width += left / 2;
- column2Width += left - left / 2;
- }
- }
- column1.removeListener(SWT.Resize, column1ResizeListener);
- column1.setWidth(column1Width);
- column2.setWidth(column2Width);
- column1.addListener(SWT.Resize, column1ResizeListener);
- }
- };
-
- private Listener column1ResizeListener = new Listener() {
- public void handleEvent(Event e) {
- int widthDif = column1Width - column1.getWidth();
- column1Width -= widthDif;
- column2Width += widthDif;
- if (column2Width < 0) {
- column1Width += column2Width;
- column2Width = 0;
- column1.removeListener(SWT.Resize, this);
- column1.setWidth(column1Width);
- column1.addListener(SWT.Resize, this);
- }
- column2.setWidth(column2Width);
- }
- };
-}