diff options
Diffstat (limited to 'hierarchyviewer2/app/src/com/android/hierarchyviewer')
20 files changed, 92 insertions, 1252 deletions
diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java index d66f8e1..f5c6e98 100644 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java +++ b/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java @@ -16,43 +16,41 @@ package com.android.hierarchyviewer; -import com.android.ddmlib.IDevice; import com.android.ddmuilib.ImageLoader; import com.android.hierarchyviewer.actions.AboutAction; -import com.android.hierarchyviewer.actions.CapturePSDAction; -import com.android.hierarchyviewer.actions.DisplayViewAction; -import com.android.hierarchyviewer.actions.InspectScreenshotAction; -import com.android.hierarchyviewer.actions.InvalidateAction; import com.android.hierarchyviewer.actions.LoadAllViewsAction; -import com.android.hierarchyviewer.actions.LoadOverlayAction; -import com.android.hierarchyviewer.actions.LoadViewHierarchyAction; -import com.android.hierarchyviewer.actions.PixelPerfectAutoRefreshAction; import com.android.hierarchyviewer.actions.QuitAction; -import com.android.hierarchyviewer.actions.RefreshPixelPerfectAction; -import com.android.hierarchyviewer.actions.RefreshPixelPerfectTreeAction; -import com.android.hierarchyviewer.actions.RefreshViewAction; -import com.android.hierarchyviewer.actions.RefreshWindowsAction; -import com.android.hierarchyviewer.actions.RequestLayoutAction; -import com.android.hierarchyviewer.actions.SavePixelPerfectAction; -import com.android.hierarchyviewer.actions.SaveTreeViewAction; import com.android.hierarchyviewer.actions.ShowOverlayAction; import com.android.hierarchyviewer.util.ActionButton; import com.android.hierarchyviewerlib.HierarchyViewerDirector; -import com.android.hierarchyviewerlib.device.Window; -import com.android.hierarchyviewerlib.models.DeviceSelectionModel; +import com.android.hierarchyviewerlib.actions.CapturePSDAction; +import com.android.hierarchyviewerlib.actions.DisplayViewAction; +import com.android.hierarchyviewerlib.actions.InspectScreenshotAction; +import com.android.hierarchyviewerlib.actions.InvalidateAction; +import com.android.hierarchyviewerlib.actions.LoadOverlayAction; +import com.android.hierarchyviewerlib.actions.LoadViewHierarchyAction; +import com.android.hierarchyviewerlib.actions.PixelPerfectAutoRefreshAction; +import com.android.hierarchyviewerlib.actions.RefreshPixelPerfectAction; +import com.android.hierarchyviewerlib.actions.RefreshPixelPerfectTreeAction; +import com.android.hierarchyviewerlib.actions.RefreshViewAction; +import com.android.hierarchyviewerlib.actions.RefreshWindowsAction; +import com.android.hierarchyviewerlib.actions.RequestLayoutAction; +import com.android.hierarchyviewerlib.actions.SavePixelPerfectAction; +import com.android.hierarchyviewerlib.actions.SaveTreeViewAction; import com.android.hierarchyviewerlib.models.PixelPerfectModel; import com.android.hierarchyviewerlib.models.TreeViewModel; -import com.android.hierarchyviewerlib.models.DeviceSelectionModel.WindowChangeListener; import com.android.hierarchyviewerlib.models.PixelPerfectModel.ImageChangeListener; import com.android.hierarchyviewerlib.models.TreeViewModel.TreeChangeListener; import com.android.hierarchyviewerlib.ui.DeviceSelector; import com.android.hierarchyviewerlib.ui.LayoutViewer; import com.android.hierarchyviewerlib.ui.PixelPerfect; +import com.android.hierarchyviewerlib.ui.PixelPerfectControls; import com.android.hierarchyviewerlib.ui.PixelPerfectLoupe; import com.android.hierarchyviewerlib.ui.PixelPerfectPixelPanel; import com.android.hierarchyviewerlib.ui.PixelPerfectTree; import com.android.hierarchyviewerlib.ui.PropertyViewer; import com.android.hierarchyviewerlib.ui.TreeView; +import com.android.hierarchyviewerlib.ui.TreeViewControls; import com.android.hierarchyviewerlib.ui.TreeViewOverview; import org.eclipse.jface.action.MenuManager; @@ -61,8 +59,6 @@ import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; @@ -81,8 +77,6 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Slider; -import org.eclipse.swt.widgets.Text; public class HierarchyViewerApplication extends ApplicationWindow { @@ -114,7 +108,6 @@ public class HierarchyViewerApplication extends ApplicationWindow { private Button deviceViewButton; - private Label progressLabel; private ProgressBar progressBar; @@ -147,29 +140,9 @@ public class HierarchyViewerApplication extends ApplicationWindow { private LayoutViewer layoutViewer; - private StackLayout statusBarStackLayout; - - private Composite treeViewControls; - - private Slider zoomSlider; - - private Text filterText; - - private Composite statusBarControlPanel; - private PixelPerfectLoupe pixelPerfectLoupe; - private boolean autoRefresh = false; - - private int refreshInterval = 5; - - private int refreshTimeLeft = 5; - - private Slider overlaySlider; - - private Slider ppZoomSlider; - - private Slider refreshSlider; + private Composite treeViewControls; public static final HierarchyViewerApplication getApp() { return APP; @@ -202,20 +175,13 @@ public class HierarchyViewerApplication extends ApplicationWindow { director.initDebugBridge(); director.startListenForDevices(); director.populateDeviceSelectionModel(); - DeviceSelectionModel.getModel().addWindowChangeListener(windowChangeListener); TreeViewModel.getModel().addTreeChangeListener(treeChangeListener); PixelPerfectModel.getModel().addImageChangeListener(imageChangeListener); setBlockOnOpen(true); - Thread pixelPerfectRefreshingThread = new Thread(autoRefresher); - pixelPerfectRefreshingThread.start(); - open(); - pixelPerfectRefreshingThread.interrupt(); - - DeviceSelectionModel.getModel().removeWindowChangeListener(windowChangeListener); TreeViewModel.getModel().removeTreeChangeListener(treeChangeListener); PixelPerfectModel.getModel().removeImageChangeListener(imageChangeListener); @@ -312,51 +278,12 @@ public class HierarchyViewerApplication extends ApplicationWindow { pixelPerfectButton.setLayoutData(pixelPerfectButtonFormData); // Tree View control panel... - statusBarControlPanel = new Composite(statusBar, SWT.NONE); - FormData statusBarControlPanelFormData = new FormData(); - statusBarControlPanelFormData.left = new FormAttachment(pixelPerfectButton, 2); - statusBarControlPanelFormData.top = new FormAttachment(treeViewButton, 0, SWT.CENTER); - statusBarControlPanel.setLayoutData(statusBarControlPanelFormData); - - statusBarStackLayout = new StackLayout(); - statusBarControlPanel.setLayout(statusBarStackLayout); - - treeViewControls = new Composite(statusBarControlPanel, SWT.NONE); - GridLayout treeViewControlLayout = new GridLayout(5, false); - treeViewControlLayout.marginWidth = treeViewControlLayout.marginHeight = 2; - treeViewControlLayout.verticalSpacing = treeViewControlLayout.horizontalSpacing = 4; - treeViewControls.setLayout(treeViewControlLayout); - - Label filterLabel = new Label(treeViewControls, SWT.NONE); - filterLabel.setText("Filter by class or id:"); - filterLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, true)); - - filterText = new Text(treeViewControls, SWT.LEFT | SWT.SINGLE); - GridData filterTextGridData = new GridData(GridData.FILL_HORIZONTAL); - filterTextGridData.widthHint = 148; - filterText.setLayoutData(filterTextGridData); - filterText.addModifyListener(filterTextModifyListener); - - Label smallZoomLabel = new Label(treeViewControls, SWT.NONE); - smallZoomLabel.setText(" 20%"); - smallZoomLabel - .setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, true)); - - zoomSlider = new Slider(treeViewControls, SWT.HORIZONTAL); - GridData zoomSliderGridData = new GridData(GridData.CENTER, GridData.CENTER, false, false); - zoomSliderGridData.widthHint = 190; - zoomSlider.setLayoutData(zoomSliderGridData); - zoomSlider.setMinimum((int) (TreeViewModel.MIN_ZOOM * 10)); - zoomSlider.setMaximum((int) (TreeViewModel.MAX_ZOOM * 10 + 1)); - zoomSlider.setThumb(1); - zoomSlider.setSelection(10); - - zoomSlider.addSelectionListener(zoomSliderSelectionListener); - - Label largeZoomLabel = new Label(treeViewControls, SWT.NONE); - largeZoomLabel - .setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, true)); - largeZoomLabel.setText("200%"); + treeViewControls = new TreeViewControls(statusBar); + FormData treeViewControlsFormData = new FormData(); + treeViewControlsFormData.left = new FormAttachment(pixelPerfectButton, 2); + treeViewControlsFormData.top = new FormAttachment(treeViewButton, 0, SWT.CENTER); + treeViewControlsFormData.width = 552; + treeViewControls.setLayoutData(treeViewControlsFormData); // Progress stuff progressLabel = new Label(statusBar, SWT.RIGHT); @@ -409,17 +336,15 @@ public class HierarchyViewerApplication extends ApplicationWindow { ActionButton loadViewHierarchyButton = new ActionButton(innerButtonPanel, LoadViewHierarchyAction.getAction()); loadViewHierarchyButton.setLayoutData(new GridData(GridData.FILL_BOTH)); - LoadViewHierarchyAction.getAction().setEnabled(false); ActionButton inspectScreenshotButton = new ActionButton(innerButtonPanel, InspectScreenshotAction.getAction()); inspectScreenshotButton.setLayoutData(new GridData(GridData.FILL_BOTH)); - InspectScreenshotAction.getAction().setEnabled(false); Composite deviceSelectorContainer = new Composite(deviceSelectorPanel, SWT.BORDER); deviceSelectorContainer.setLayoutData(new GridData(GridData.FILL_BOTH)); deviceSelectorContainer.setLayout(new FillLayout()); - deviceSelector = new DeviceSelector(deviceSelectorContainer); + deviceSelector = new DeviceSelector(deviceSelectorContainer, true, true); } public void buildTreeViewPanel(Composite parent) { @@ -482,11 +407,11 @@ public class HierarchyViewerApplication extends ApplicationWindow { Composite treeViewOverviewContainer = new Composite(sideSash, SWT.BORDER); treeViewOverviewContainer.setLayout(new FillLayout()); - TreeViewOverview treeViewOverview = new TreeViewOverview(treeViewOverviewContainer); + new TreeViewOverview(treeViewOverviewContainer); Composite propertyViewerContainer = new Composite(sideSash, SWT.BORDER); propertyViewerContainer.setLayout(new FillLayout()); - PropertyViewer propertyViewer = new PropertyViewer(propertyViewerContainer); + new PropertyViewer(propertyViewerContainer); Composite layoutViewerContainer = new Composite(sideSash, SWT.NONE); GridLayout layoutViewerLayout = new GridLayout(); @@ -514,10 +439,12 @@ public class HierarchyViewerApplication extends ApplicationWindow { onBlackWhiteButton = new Button(buttonBar, SWT.PUSH); onBlackWhiteButton.setImage(onWhiteImage); onBlackWhiteButton.addSelectionListener(onBlackWhiteSelectionListener); + onBlackWhiteButton.setToolTipText("Change layout viewer background color"); showExtras = new Button(buttonBar, SWT.CHECK); showExtras.setText("Show Extras"); showExtras.addSelectionListener(showExtrasSelectionListener); + showExtras.setToolTipText("Show images"); ActionButton loadAllViewsButton = new ActionButton(fullButtonBar, LoadAllViewsAction.getAction()); @@ -578,8 +505,6 @@ public class HierarchyViewerApplication extends ApplicationWindow { new ActionButton(innerButtonPanel, ShowOverlayAction.getAction()); showInLoupe.setLayoutData(new GridData(GridData.FILL_BOTH)); - ShowOverlayAction.getAction().setEnabled(false); - ActionButton autoRefresh = new ActionButton(innerButtonPanel, PixelPerfectAutoRefreshAction.getAction()); autoRefresh.setLayoutData(new GridData(GridData.FILL_BOTH)); @@ -590,7 +515,7 @@ public class HierarchyViewerApplication extends ApplicationWindow { Composite pixelPerfectTreeContainer = new Composite(mainSash, SWT.BORDER); pixelPerfectTreeContainer.setLayout(new FillLayout()); - PixelPerfectTree pixelPerfectTree = new PixelPerfectTree(pixelPerfectTreeContainer); + new PixelPerfectTree(pixelPerfectTreeContainer); Composite pixelPerfectLoupeContainer = new Composite(mainSash, SWT.NONE); GridLayout loupeLayout = new GridLayout(); @@ -614,121 +539,14 @@ public class HierarchyViewerApplication extends ApplicationWindow { new PixelPerfectPixelPanel(pixelPerfectLoupeBorder); pixelPerfectPixelPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - Composite pixelPerfectControls = new Composite(pixelPerfectLoupeContainer, SWT.NONE); + PixelPerfectControls pixelPerfectControls = + new PixelPerfectControls(pixelPerfectLoupeContainer); pixelPerfectControls.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - pixelPerfectControls.setLayout(new FormLayout()); - - Label overlayTransparencyRight = new Label(pixelPerfectControls, SWT.NONE); - overlayTransparencyRight.setText("100%"); - FormData overlayTransparencyRightData = new FormData(); - overlayTransparencyRightData.right = new FormAttachment(100, -2); - overlayTransparencyRightData.top = new FormAttachment(0, 2); - overlayTransparencyRight.setLayoutData(overlayTransparencyRightData); - - Label refreshRight = new Label(pixelPerfectControls, SWT.NONE); - refreshRight.setText("40s"); - FormData refreshRightData = new FormData(); - refreshRightData.right = new FormAttachment(100, -2); - refreshRightData.top = new FormAttachment(overlayTransparencyRight, 2); - refreshRightData.left = new FormAttachment(overlayTransparencyRight, 0, SWT.LEFT); - refreshRight.setLayoutData(refreshRightData); - - Label zoomRight = new Label(pixelPerfectControls, SWT.NONE); - zoomRight.setText("24x"); - FormData zoomRightData = new FormData(); - zoomRightData.right = new FormAttachment(100, -2); - zoomRightData.top = new FormAttachment(refreshRight, 2); - zoomRightData.left = new FormAttachment(overlayTransparencyRight, 0, SWT.LEFT); - zoomRight.setLayoutData(zoomRightData); - - Label overlayTransparency = new Label(pixelPerfectControls, SWT.NONE); - Label refresh = new Label(pixelPerfectControls, SWT.NONE); - - overlayTransparency.setText("Overlay:"); - FormData overlayTransparencyData = new FormData(); - overlayTransparencyData.left = new FormAttachment(0, 2); - overlayTransparencyData.top = new FormAttachment(0, 2); - overlayTransparencyData.right = new FormAttachment(refresh, 0, SWT.RIGHT); - overlayTransparency.setLayoutData(overlayTransparencyData); - - refresh.setText("Refresh Rate:"); - FormData refreshData = new FormData(); - refreshData.top = new FormAttachment(overlayTransparency, 2); - refreshData.left = new FormAttachment(0, 2); - refresh.setLayoutData(refreshData); - - Label zoom = new Label(pixelPerfectControls, SWT.NONE); - zoom.setText("Zoom:"); - FormData zoomData = new FormData(); - zoomData.right = new FormAttachment(refresh, 0, SWT.RIGHT); - zoomData.top = new FormAttachment(refresh, 2); - zoomData.left = new FormAttachment(0, 2); - zoom.setLayoutData(zoomData); - - Label overlayTransparencyLeft = new Label(pixelPerfectControls, SWT.RIGHT); - overlayTransparencyLeft.setText("0%"); - FormData overlayTransparencyLeftData = new FormData(); - overlayTransparencyLeftData.top = new FormAttachment(0, 2); - overlayTransparencyLeftData.left = new FormAttachment(overlayTransparency, 2); - overlayTransparencyLeft.setLayoutData(overlayTransparencyLeftData); - - Label refreshLeft = new Label(pixelPerfectControls, SWT.RIGHT); - refreshLeft.setText("1s"); - FormData refreshLeftData = new FormData(); - refreshLeftData.top = new FormAttachment(overlayTransparencyLeft, 2); - refreshLeftData.left = new FormAttachment(refresh, 2); - refreshLeft.setLayoutData(refreshLeftData); - - Label zoomLeft = new Label(pixelPerfectControls, SWT.RIGHT); - zoomLeft.setText("2x"); - FormData zoomLeftData = new FormData(); - zoomLeftData.top = new FormAttachment(refreshLeft, 2); - zoomLeftData.left = new FormAttachment(zoom, 2); - zoomLeft.setLayoutData(zoomLeftData); - - overlaySlider = new Slider(pixelPerfectControls, SWT.HORIZONTAL); - overlaySlider.setMinimum(0); - overlaySlider.setMaximum(101); - overlaySlider.setThumb(1); - overlaySlider.setSelection(50); - overlaySlider.setEnabled(false); - FormData overlaySliderData = new FormData(); - overlaySliderData.right = new FormAttachment(overlayTransparencyRight, -4); - overlaySliderData.top = new FormAttachment(0, 2); - overlaySliderData.left = new FormAttachment(overlayTransparencyLeft, 4); - overlaySlider.setLayoutData(overlaySliderData); - - overlaySlider.addSelectionListener(overlaySliderSelectionListener); - - refreshSlider = new Slider(pixelPerfectControls, SWT.HORIZONTAL); - refreshSlider.setMinimum(1); - refreshSlider.setMaximum(41); - refreshSlider.setThumb(1); - refreshSlider.setSelection(refreshInterval); - FormData refreshSliderData = new FormData(); - refreshSliderData.right = new FormAttachment(overlayTransparencyRight, -4); - refreshSliderData.top = new FormAttachment(overlayTransparencyRight, 2); - refreshSliderData.left = new FormAttachment(overlaySlider, 0, SWT.LEFT); - refreshSlider.setLayoutData(refreshSliderData); - - refreshSlider.addSelectionListener(refreshSliderSelectionListener); - - ppZoomSlider = new Slider(pixelPerfectControls, SWT.HORIZONTAL); - ppZoomSlider.setMinimum(2); - ppZoomSlider.setMaximum(25); - ppZoomSlider.setThumb(1); - ppZoomSlider.setSelection(PixelPerfectModel.DEFAULT_ZOOM); - FormData zoomSliderData = new FormData(); - zoomSliderData.right = new FormAttachment(overlayTransparencyRight, -4); - zoomSliderData.top = new FormAttachment(refreshRight, 2); - zoomSliderData.left = new FormAttachment(overlaySlider, 0, SWT.LEFT); - ppZoomSlider.setLayoutData(zoomSliderData); - - ppZoomSlider.addSelectionListener(ppZoomSliderSelectionListener); + Composite pixelPerfectContainer = new Composite(mainSash, SWT.BORDER); pixelPerfectContainer.setLayout(new FillLayout()); - PixelPerfect pixelPerfect = new PixelPerfect(pixelPerfectContainer); + new PixelPerfect(pixelPerfectContainer); mainSash.setWeights(new int[] { 272, 376, 346 @@ -736,15 +554,6 @@ public class HierarchyViewerApplication extends ApplicationWindow { } - public void setAutoRefresh(boolean value) { - if (value) { - refreshTimeLeft = refreshInterval; - autoRefresh = true; - } else { - autoRefresh = false; - } - } - public void showOverlayInLoupe(boolean value) { pixelPerfectLoupe.setShowOverlay(value); } @@ -816,9 +625,7 @@ public class HierarchyViewerApplication extends ApplicationWindow { deviceSelector.setFocus(); - statusBarStackLayout.topControl = null; - statusBarControlPanel.setVisible(false); - statusBarControlPanel.layout(); + treeViewControls.setVisible(false); } public void showTreeView() { @@ -865,9 +672,7 @@ public class HierarchyViewerApplication extends ApplicationWindow { treeView.setFocus(); - statusBarStackLayout.topControl = treeViewControls; - statusBarControlPanel.setVisible(true); - statusBarControlPanel.layout(); + treeViewControls.setVisible(true); } public void showPixelPerfect() { @@ -913,9 +718,7 @@ public class HierarchyViewerApplication extends ApplicationWindow { pixelPerfectLoupe.setFocus(); - statusBarStackLayout.topControl = null; - statusBarControlPanel.setVisible(false); - statusBarControlPanel.layout(); + treeViewControls.setVisible(false); } private SelectionListener deviceViewButtonSelectionListener = new SelectionListener() { @@ -988,135 +791,6 @@ public class HierarchyViewerApplication extends ApplicationWindow { } }; - private SelectionListener zoomSliderSelectionListener = new SelectionListener() { - private int oldValue; - - public void widgetDefaultSelected(SelectionEvent e) { - // pass - } - - public void widgetSelected(SelectionEvent e) { - int newValue = zoomSlider.getSelection(); - if (oldValue != newValue) { - TreeViewModel.getModel().removeTreeChangeListener(treeChangeListener); - TreeViewModel.getModel().setZoom(newValue / 10.0); - TreeViewModel.getModel().addTreeChangeListener(treeChangeListener); - oldValue = newValue; - } - } - }; - - private Runnable autoRefresher = new Runnable() { - public void run() { - while (!Thread.currentThread().isInterrupted()) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - break; - } - refreshTimeLeft--; - if (autoRefresh && refreshTimeLeft <= 0) { - HierarchyViewerDirector.getDirector().refreshPixelPerfect(); - refreshTimeLeft = refreshInterval; - } - } - } - }; - - private SelectionListener overlaySliderSelectionListener = new SelectionListener() { - private int oldValue; - - public void widgetDefaultSelected(SelectionEvent e) { - // pass - } - - public void widgetSelected(SelectionEvent e) { - int newValue = overlaySlider.getSelection(); - if (oldValue != newValue) { - PixelPerfectModel.getModel().removeImageChangeListener(imageChangeListener); - PixelPerfectModel.getModel().setOverlayTransparency(newValue / 100.0); - PixelPerfectModel.getModel().addImageChangeListener(imageChangeListener); - oldValue = newValue; - } - } - }; - - private SelectionListener refreshSliderSelectionListener = new SelectionListener() { - private int oldValue; - - public void widgetDefaultSelected(SelectionEvent e) { - // pass - } - - public void widgetSelected(SelectionEvent e) { - int newValue = refreshSlider.getSelection(); - if (oldValue != newValue) { - refreshInterval = newValue; - refreshTimeLeft = Math.min(refreshTimeLeft, refreshInterval); - oldValue = newValue; - } - } - }; - - private SelectionListener ppZoomSliderSelectionListener = new SelectionListener() { - private int oldValue; - - public void widgetDefaultSelected(SelectionEvent e) { - // pass - } - - public void widgetSelected(SelectionEvent e) { - int newValue = ppZoomSlider.getSelection(); - if (oldValue != newValue) { - PixelPerfectModel.getModel().removeImageChangeListener(imageChangeListener); - PixelPerfectModel.getModel().setZoom(newValue); - PixelPerfectModel.getModel().addImageChangeListener(imageChangeListener); - oldValue = newValue; - } - } - }; - - private ModifyListener filterTextModifyListener = new ModifyListener() { - public void modifyText(ModifyEvent e) { - HierarchyViewerDirector.getDirector().filterNodes(filterText.getText()); - } - }; - - private WindowChangeListener windowChangeListener = new WindowChangeListener() { - public void deviceChanged(IDevice device) { - // pass - } - - public void deviceConnected(IDevice device) { - // pass - } - - public void deviceDisconnected(IDevice device) { - // pass - } - - public void focusChanged(IDevice device) { - // pass - } - - public void selectionChanged(final IDevice device, final Window window) { - Display.getDefault().syncExec(new Runnable() { - public void run() { - if (window == null) { - LoadViewHierarchyAction.getAction().setEnabled(false); - } else { - LoadViewHierarchyAction.getAction().setEnabled(true); - } - if (device == null) { - InspectScreenshotAction.getAction().setEnabled(false); - } else { - InspectScreenshotAction.getAction().setEnabled(true); - } - } - }); - } - }; - private TreeChangeListener treeChangeListener = new TreeChangeListener() { public void selectionChanged() { // pass @@ -1131,9 +805,6 @@ public class HierarchyViewerApplication extends ApplicationWindow { } else { showTreeView(); treeViewButton.setEnabled(true); - zoomSlider.setSelection((int) Math - .round(TreeViewModel.getModel().getZoom() * 10)); - filterText.setText(""); } } }); @@ -1145,7 +816,6 @@ public class HierarchyViewerApplication extends ApplicationWindow { public void zoomChanged() { // pass - zoomSlider.setSelection((int) Math.round(TreeViewModel.getModel().getZoom() * 10)); } }; @@ -1166,14 +836,10 @@ public class HierarchyViewerApplication extends ApplicationWindow { public void imageLoaded() { Display.getDefault().syncExec(new Runnable() { public void run() { - Image overlayImage = PixelPerfectModel.getModel().getOverlayImage(); - ShowOverlayAction.getAction().setEnabled(overlayImage != null); - overlaySlider.setEnabled(overlayImage != null); if (PixelPerfectModel.getModel().getImage() == null) { pixelPerfectButton.setEnabled(false); showDeviceSelector(); } else { - ppZoomSlider.setSelection(PixelPerfectModel.getModel().getZoom()); pixelPerfectButton.setEnabled(true); showPixelPerfect(); } @@ -1182,22 +848,11 @@ public class HierarchyViewerApplication extends ApplicationWindow { } public void overlayChanged() { - Display.getDefault().syncExec(new Runnable() { - public void run() { - Image overlayImage = PixelPerfectModel.getModel().getOverlayImage(); - ShowOverlayAction.getAction().setEnabled(overlayImage != null); - overlaySlider.setEnabled(overlayImage != null); - } - }); + // pass } public void overlayTransparencyChanged() { - Display.getDefault().syncExec(new Runnable() { - public void run() { - overlaySlider.setSelection((int) (PixelPerfectModel.getModel() - .getOverlayTransparency() * 100)); - } - }); + // pass } public void selectionChanged() { @@ -1205,11 +860,7 @@ public class HierarchyViewerApplication extends ApplicationWindow { } public void zoomChanged() { - Display.getDefault().syncExec(new Runnable() { - public void run() { - ppZoomSlider.setSelection(PixelPerfectModel.getModel().getZoom()); - } - }); + // pass } }; diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/AboutAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/AboutAction.java index 9c76ae9..c6abe57 100644 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/AboutAction.java +++ b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/AboutAction.java @@ -19,6 +19,7 @@ package com.android.hierarchyviewer.actions; import com.android.ddmuilib.ImageLoader; import com.android.hierarchyviewer.AboutDialog; import com.android.hierarchyviewerlib.HierarchyViewerDirector; +import com.android.hierarchyviewerlib.actions.ImageAction; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/CapturePSDAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/CapturePSDAction.java deleted file mode 100644 index 6ae0d17..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/CapturePSDAction.java +++ /dev/null @@ -1,62 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public class CapturePSDAction extends Action implements ImageAction { - - private static CapturePSDAction action; - - private Image image; - - private Shell shell; - - private CapturePSDAction(Shell shell) { - super("&Capture Layers"); - this.shell = shell; - setAccelerator(SWT.MOD1 + 'C'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("capture-psd.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Capture the window layers as a photoshop document"); - } - - public static CapturePSDAction getAction(Shell shell) { - if (action == null) { - action = new CapturePSDAction(shell); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().capturePSD(shell); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/DisplayViewAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/DisplayViewAction.java deleted file mode 100644 index a622eb2..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/DisplayViewAction.java +++ /dev/null @@ -1,62 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public class DisplayViewAction extends Action implements ImageAction { - - private static DisplayViewAction action; - - private Image image; - - private Shell shell; - - private DisplayViewAction(Shell shell) { - super("&Display View"); - this.shell = shell; - setAccelerator(SWT.MOD1 + 'D'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("display.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Display the selected view image in a separate window"); - } - - public static DisplayViewAction getAction(Shell shell) { - if (action == null) { - action = new DisplayViewAction(shell); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().showCapture(shell); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ImageAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ImageAction.java deleted file mode 100644 index 11c98a4..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ImageAction.java +++ /dev/null @@ -1,27 +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.hierarchyviewer.actions; - -import org.eclipse.swt.graphics.Image; - -public interface ImageAction { - public Image getImage(); - - public String getText(); - - public String getToolTipText(); -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/InspectScreenshotAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/InspectScreenshotAction.java deleted file mode 100644 index 5109ca5..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/InspectScreenshotAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class InspectScreenshotAction extends Action implements ImageAction { - - private static InspectScreenshotAction action; - - private Image image; - - private InspectScreenshotAction() { - super("Inspect &Screenshot"); - setAccelerator(SWT.MOD1 + 'S'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("inspect-screenshot.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Inspect a screenshot in the pixel perfect view"); - } - - public static InspectScreenshotAction getAction() { - if (action == null) { - action = new InspectScreenshotAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().inspectScreenshot(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/InvalidateAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/InvalidateAction.java deleted file mode 100644 index 831a56d..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/InvalidateAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class InvalidateAction extends Action implements ImageAction { - - private static InvalidateAction action; - - private Image image; - - private InvalidateAction() { - super("&Invalidate Layout"); - setAccelerator(SWT.MOD1 + 'I'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("invalidate.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Invalidate the layout for the current window"); - } - - public static InvalidateAction getAction() { - if (action == null) { - action = new InvalidateAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().invalidateCurrentNode(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadAllViewsAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadAllViewsAction.java index 2ea2298..5007e1e 100644 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadAllViewsAction.java +++ b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadAllViewsAction.java @@ -18,14 +18,15 @@ package com.android.hierarchyviewer.actions; import com.android.ddmuilib.ImageLoader; import com.android.hierarchyviewerlib.HierarchyViewerDirector; +import com.android.hierarchyviewerlib.actions.ImageAction; +import com.android.hierarchyviewerlib.actions.TreeViewEnabledAction; -import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; -public class LoadAllViewsAction extends Action implements ImageAction { +public class LoadAllViewsAction extends TreeViewEnabledAction implements ImageAction { private static LoadAllViewsAction action; diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadOverlayAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadOverlayAction.java deleted file mode 100644 index 588b995..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadOverlayAction.java +++ /dev/null @@ -1,62 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public class LoadOverlayAction extends Action implements ImageAction { - - private static LoadOverlayAction action; - - private Image image; - - private Shell shell; - - private LoadOverlayAction(Shell shell) { - super("Load &Overlay"); - this.shell = shell; - setAccelerator(SWT.MOD1 + 'O'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("load-overlay.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Load an image to overlay the screenshot"); - } - - public static LoadOverlayAction getAction(Shell shell) { - if (action == null) { - action = new LoadOverlayAction(shell); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().loadOverlay(shell); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadViewHierarchyAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadViewHierarchyAction.java deleted file mode 100644 index 79fd0b3..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/LoadViewHierarchyAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class LoadViewHierarchyAction extends Action implements ImageAction { - - private static LoadViewHierarchyAction action; - - private Image image; - - private LoadViewHierarchyAction() { - super("Load View &Hierarchy"); - setAccelerator(SWT.MOD1 + 'H'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("load-view-hierarchy.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Load the view hierarchy into the tree view"); - } - - public static LoadViewHierarchyAction getAction() { - if (action == null) { - action = new LoadViewHierarchyAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().loadViewHierarchy(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/PixelPerfectAutoRefreshAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/PixelPerfectAutoRefreshAction.java deleted file mode 100644 index 325eb86..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/PixelPerfectAutoRefreshAction.java +++ /dev/null @@ -1,59 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewer.HierarchyViewerApplication; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class PixelPerfectAutoRefreshAction extends Action implements ImageAction { - - private static PixelPerfectAutoRefreshAction action; - - private Image image; - - private PixelPerfectAutoRefreshAction() { - super("Auto &Refresh", Action.AS_CHECK_BOX); - setAccelerator(SWT.MOD1 + 'R'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("auto-refresh.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Automatically refresh the screenshot"); - } - - public static PixelPerfectAutoRefreshAction getAction() { - if (action == null) { - action = new PixelPerfectAutoRefreshAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerApplication.getApp().setAutoRefresh(action.isChecked()); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshPixelPerfectAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshPixelPerfectAction.java deleted file mode 100644 index 5d68c37..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshPixelPerfectAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class RefreshPixelPerfectAction extends Action implements ImageAction { - - private static RefreshPixelPerfectAction action; - - private Image image; - - private RefreshPixelPerfectAction() { - super("&Refresh Screenshot"); - setAccelerator(SWT.F5); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("refresh-windows.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Refresh the screenshot"); - } - - public static RefreshPixelPerfectAction getAction() { - if (action == null) { - action = new RefreshPixelPerfectAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().refreshPixelPerfect(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshPixelPerfectTreeAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshPixelPerfectTreeAction.java deleted file mode 100644 index 74c577d..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshPixelPerfectTreeAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class RefreshPixelPerfectTreeAction extends Action implements ImageAction { - - private static RefreshPixelPerfectTreeAction action; - - private Image image; - - private RefreshPixelPerfectTreeAction() { - super("Refresh &Tree"); - setAccelerator(SWT.MOD1 + 'T'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("load-view-hierarchy.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Refresh the tree"); - } - - public static RefreshPixelPerfectTreeAction getAction() { - if (action == null) { - action = new RefreshPixelPerfectTreeAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().refreshPixelPerfectTree(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshViewAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshViewAction.java deleted file mode 100644 index 36704a7..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshViewAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class RefreshViewAction extends Action implements ImageAction { - - private static RefreshViewAction action; - - private Image image; - - private RefreshViewAction() { - super("Load View &Hierarchy"); - setAccelerator(SWT.MOD1 + 'H'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("load-view-hierarchy.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Reload the view hierarchy"); - } - - public static RefreshViewAction getAction() { - if (action == null) { - action = new RefreshViewAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().reloadViewHierarchy(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshWindowsAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshWindowsAction.java deleted file mode 100644 index 63808ee..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RefreshWindowsAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class RefreshWindowsAction extends Action implements ImageAction { - - private static RefreshWindowsAction action; - - private Image image; - - private RefreshWindowsAction() { - super("&Refresh"); - setAccelerator(SWT.F5); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("refresh-windows.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Refresh the list of devices"); - } - - public static RefreshWindowsAction getAction() { - if (action == null) { - action = new RefreshWindowsAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().refreshWindows(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RequestLayoutAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RequestLayoutAction.java deleted file mode 100644 index 9255432..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/RequestLayoutAction.java +++ /dev/null @@ -1,58 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -public class RequestLayoutAction extends Action implements ImageAction { - - private static RequestLayoutAction action; - - private Image image; - - private RequestLayoutAction() { - super("Request &Layout"); - setAccelerator(SWT.MOD1 + 'L'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("request-layout.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Request the view to lay out"); - } - - public static RequestLayoutAction getAction() { - if (action == null) { - action = new RequestLayoutAction(); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().relayoutCurrentNode(); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/SavePixelPerfectAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/SavePixelPerfectAction.java deleted file mode 100644 index 2221ad8..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/SavePixelPerfectAction.java +++ /dev/null @@ -1,62 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public class SavePixelPerfectAction extends Action implements ImageAction { - - private static SavePixelPerfectAction action; - - private Image image; - - private Shell shell; - - private SavePixelPerfectAction(Shell shell) { - super("&Save as PNG"); - this.shell = shell; - setAccelerator(SWT.MOD1 + 'S'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("save.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Save the screenshot as a PNG image"); - } - - public static SavePixelPerfectAction getAction(Shell shell) { - if (action == null) { - action = new SavePixelPerfectAction(shell); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().savePixelPerfect(shell); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/SaveTreeViewAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/SaveTreeViewAction.java deleted file mode 100644 index c203ace..0000000 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/SaveTreeViewAction.java +++ /dev/null @@ -1,62 +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.hierarchyviewer.actions; - -import com.android.ddmuilib.ImageLoader; -import com.android.hierarchyviewerlib.HierarchyViewerDirector; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public class SaveTreeViewAction extends Action implements ImageAction { - - private static SaveTreeViewAction action; - - private Image image; - - private Shell shell; - - private SaveTreeViewAction(Shell shell) { - super("&Save as PNG"); - this.shell = shell; - setAccelerator(SWT.MOD1 + 'S'); - ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class); - image = imageLoader.loadImage("save.png", Display.getDefault()); - setImageDescriptor(ImageDescriptor.createFromImage(image)); - setToolTipText("Save the tree view as a PNG image"); - } - - public static SaveTreeViewAction getAction(Shell shell) { - if (action == null) { - action = new SaveTreeViewAction(shell); - } - return action; - } - - @Override - public void run() { - HierarchyViewerDirector.getDirector().saveTreeView(shell); - } - - public Image getImage() { - return image; - } -} diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ShowOverlayAction.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ShowOverlayAction.java index b0f51ec..e4695cd 100644 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ShowOverlayAction.java +++ b/hierarchyviewer2/app/src/com/android/hierarchyviewer/actions/ShowOverlayAction.java @@ -19,6 +19,9 @@ package com.android.hierarchyviewer.actions; import com.android.ddmuilib.ImageLoader; import com.android.hierarchyviewer.HierarchyViewerApplication; import com.android.hierarchyviewerlib.HierarchyViewerDirector; +import com.android.hierarchyviewerlib.actions.ImageAction; +import com.android.hierarchyviewerlib.models.PixelPerfectModel; +import com.android.hierarchyviewerlib.models.PixelPerfectModel.ImageChangeListener; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; @@ -26,7 +29,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; -public class ShowOverlayAction extends Action implements ImageAction { +public class ShowOverlayAction extends Action implements ImageAction, ImageChangeListener { private static ShowOverlayAction action; @@ -39,6 +42,8 @@ public class ShowOverlayAction extends Action implements ImageAction { image = imageLoader.loadImage("show-overlay.png", Display.getDefault()); setImageDescriptor(ImageDescriptor.createFromImage(image)); setToolTipText("Show the overlay in the loupe view"); + setEnabled(PixelPerfectModel.getModel().getOverlayImage() != null); + PixelPerfectModel.getModel().addImageChangeListener(this); } public static ShowOverlayAction getAction() { @@ -56,4 +61,45 @@ public class ShowOverlayAction extends Action implements ImageAction { public Image getImage() { return image; } + + public void crosshairMoved() { + // pass + } + + public void treeChanged() { + // pass + } + + public void imageChanged() { + // pass + } + + public void imageLoaded() { + Display.getDefault().syncExec(new Runnable() { + public void run() { + Image overlayImage = PixelPerfectModel.getModel().getOverlayImage(); + setEnabled(overlayImage != null); + } + }); + } + + public void overlayChanged() { + Display.getDefault().syncExec(new Runnable() { + public void run() { + setEnabled(PixelPerfectModel.getModel().getOverlayImage() != null); + } + }); + } + + public void overlayTransparencyChanged() { + // pass + } + + public void selectionChanged() { + // pass + } + + public void zoomChanged() { + // pass + } } diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/util/ActionButton.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/util/ActionButton.java index 08fe1ac..cf8d5e2 100644 --- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/util/ActionButton.java +++ b/hierarchyviewer2/app/src/com/android/hierarchyviewer/util/ActionButton.java @@ -16,7 +16,7 @@ package com.android.hierarchyviewer.util; -import com.android.hierarchyviewer.actions.ImageAction; +import com.android.hierarchyviewerlib.actions.ImageAction; import org.eclipse.jface.action.Action; import org.eclipse.jface.util.IPropertyChangeListener; @@ -44,6 +44,7 @@ public class ActionButton implements IPropertyChangeListener, SelectionListener this.action.addPropertyChangeListener(this); button.addSelectionListener(this); button.setToolTipText(action.getToolTipText()); + button.setEnabled(this.action.isEnabled()); } public void propertyChange(PropertyChangeEvent e) { |