auto import from //depot/cupcake/@136594
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user