auto import from //depot/cupcake/@136594

This commit is contained in:
The Android Open Source Project
2009-03-05 14:34:30 -08:00
parent 52d4c30ca5
commit edd86fdaa9
24 changed files with 596 additions and 148 deletions

View File

@@ -25,6 +25,8 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Set;
class LayoutRenderer extends JComponent {
@@ -34,14 +36,23 @@ class LayoutRenderer extends JComponent {
private boolean showExtras;
private ViewHierarchyScene scene;
private JComponent sceneView;
LayoutRenderer(ViewHierarchyScene scene) {
LayoutRenderer(ViewHierarchyScene scene, JComponent sceneView) {
this.scene = scene;
this.sceneView = sceneView;
setOpaque(true);
setBorder(BorderFactory.createEmptyBorder(0, 0, 12, 0));
setBackground(Color.BLACK);
setForeground(Color.WHITE);
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent event) {
selectChild(event.getX(), event.getY());
}
});
}
@Override
@@ -118,4 +129,49 @@ class LayoutRenderer extends JComponent {
this.showExtras = showExtras;
repaint();
}
private void selectChild(int x, int y) {
if (scene == null) {
return;
}
ViewNode root = scene.getRoot();
if (root == null) {
return;
}
Insets insets = getInsets();
int xoffset = (getWidth() - insets.left - insets.right - root.width) / 2 + insets.left + 1;
int yoffset = (getHeight() - insets.top - insets.bottom - root.height) / 2 + insets.top + 1;
x -= xoffset;
y -= yoffset;
if (x >= 0 && x < EMULATED_SCREEN_WIDTH && y >= 0 && y < EMULATED_SCREEN_HEIGHT) {
ViewNode hit = findChild(root, root, x, y);
scene.setFocusedObject(hit);
sceneView.repaint();
}
}
private ViewNode findChild(ViewNode root, ViewNode besthit, int x, int y) {
ViewNode hit = besthit;
for (ViewNode node : root.children) {
if (node.left <= x && x < node.left + node.width &&
node.top <= y && y < node.top + node.height) {
if (node.width <= hit.width && node.height <= hit.height) {
hit = node;
}
}
if (node.children.size() > 0) {
hit = findChild(node, hit,
x - (node.left - node.parent.scrollX),
y - (node.top - node.parent.scrollY));
}
}
return hit;
}
}

View File

@@ -45,6 +45,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.util.concurrent.ExecutionException;
class ScreenViewer extends JPanel implements ActionListener {
@@ -69,6 +71,8 @@ class ScreenViewer extends JPanel implements ActionListener {
private Timer timer;
private ViewNode node;
private JSlider zoomSlider;
ScreenViewer(Workspace workspace, Device device, int spacing) {
setLayout(new BorderLayout());
setOpaque(false);
@@ -95,6 +99,7 @@ class ScreenViewer extends JPanel implements ActionListener {
private JPanel buildLoupePanel(int spacing) {
loupe = new LoupeViewer();
loupe.addMouseWheelListener(new WheelZoomListener());
CrosshairPanel crosshairPanel = new CrosshairPanel(loupe);
JPanel loupePanel = new JPanel(new BorderLayout());
@@ -106,9 +111,20 @@ class ScreenViewer extends JPanel implements ActionListener {
return loupePanel;
}
private class WheelZoomListener implements MouseWheelListener {
public void mouseWheelMoved(MouseWheelEvent e) {
if (zoomSlider != null) {
int val = zoomSlider.getValue();
val -= e.getWheelRotation() * 2;
zoomSlider.setValue(val);
}
}
}
private JPanel buildViewerAndControls() {
JPanel panel = new JPanel(new GridBagLayout());
crosshair = new Crosshair(new ScreenshotViewer());
crosshair.addMouseWheelListener(new WheelZoomListener());
panel.add(crosshair,
new GridBagConstraints(0, y++, 2, 1, 1.0f, 0.0f,
GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE,
@@ -131,7 +147,8 @@ class ScreenViewer extends JPanel implements ActionListener {
timer.restart();
}
});
buildSlider(panel, "Zoom:", "2x", "24x", 2, 24, 8, 2).addChangeListener(
zoomSlider = buildSlider(panel, "Zoom:", "2x", "24x", 2, 24, 8, 2);
zoomSlider.addChangeListener(
new ChangeListener() {
public void stateChanged(ChangeEvent event) {
zoom = ((JSlider) event.getSource()).getValue();

View File

@@ -67,6 +67,7 @@ import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JScrollBar;
import javax.swing.JSlider;
import javax.swing.JSplitPane;
import javax.swing.JTable;
@@ -105,6 +106,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -173,6 +176,7 @@ public class Workspace extends JFrame {
add(buildMainPanel());
setJMenuBar(buildMenuBar());
devices.changeSelection(0, 0, false, false);
currentDeviceChanged();
pack();
@@ -648,6 +652,7 @@ public class Workspace extends JFrame {
sceneView = scene.createView();
sceneView.addMouseListener(new NodeClickListener());
sceneView.addMouseWheelListener(new WheelZoomListener());
sceneScroller.setViewportView(sceneView);
if (extrasPanel != null) {
@@ -678,7 +683,10 @@ public class Workspace extends JFrame {
private JPanel buildExtrasPanel() {
extrasPanel = new JPanel(new BorderLayout());
extrasPanel.add(new JScrollPane(layoutView = new LayoutRenderer(scene)));
JScrollPane p = new JScrollPane(layoutView = new LayoutRenderer(scene, sceneView));
JScrollBar b = p.getVerticalScrollBar();
b.setUnitIncrement(10);
extrasPanel.add(p);
extrasPanel.add(scene.createSatelliteView(), BorderLayout.SOUTH);
extrasPanel.add(buildLayoutViewControlButtons(), BorderLayout.NORTH);
return extrasPanel;
@@ -1231,6 +1239,15 @@ public class Workspace extends JFrame {
}
}
private class WheelZoomListener implements MouseWheelListener {
public void mouseWheelMoved(MouseWheelEvent e) {
if (zoomSlider != null) {
int val = zoomSlider.getValue();
val -= e.getWheelRotation() * 10;
zoomSlider.setValue(val);
}
}
}
private class DevicesTableModel extends DefaultTableModel implements
AndroidDebugBridge.IDeviceChangeListener {