aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java
diff options
context:
space:
mode:
Diffstat (limited to 'hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java')
-rw-r--r--hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java98
1 files changed, 62 insertions, 36 deletions
diff --git a/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java b/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java
index 25943c4..bf18965 100644
--- a/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java
+++ b/hierarchyviewer2/app/src/com/android/hierarchyviewer/HierarchyViewerApplication.java
@@ -26,6 +26,7 @@ import com.android.hierarchyviewer.util.ActionButton;
import com.android.hierarchyviewerlib.HierarchyViewerDirector;
import com.android.hierarchyviewerlib.actions.CapturePSDAction;
import com.android.hierarchyviewerlib.actions.DisplayViewAction;
+import com.android.hierarchyviewerlib.actions.DumpDisplayListAction;
import com.android.hierarchyviewerlib.actions.InspectScreenshotAction;
import com.android.hierarchyviewerlib.actions.InvalidateAction;
import com.android.hierarchyviewerlib.actions.LoadOverlayAction;
@@ -38,6 +39,8 @@ 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.device.DeviceBridge.ViewServerInfo;
+import com.android.hierarchyviewerlib.models.DeviceSelectionModel;
import com.android.hierarchyviewerlib.models.PixelPerfectModel;
import com.android.hierarchyviewerlib.models.TreeViewModel;
import com.android.hierarchyviewerlib.models.PixelPerfectModel.IImageChangeListener;
@@ -53,11 +56,15 @@ 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 com.android.menubar.IMenuBarEnhancer;
+import com.android.menubar.MenuBarEnhancer;
+import com.android.menubar.IMenuBarEnhancer.MenuBarMode;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.events.SelectionEvent;
@@ -81,8 +88,9 @@ import org.eclipse.swt.widgets.Shell;
public class HierarchyViewerApplication extends ApplicationWindow {
- private static final int INITIAL_WIDTH = 1024;
- private static final int INITIAL_HEIGHT = 768;
+ private static final String APP_NAME = "Hierarchy Viewer";
+ private static final int INITIAL_WIDTH = 1280;
+ private static final int INITIAL_HEIGHT = 800;
private static HierarchyViewerApplication sMainWindow;
@@ -119,6 +127,8 @@ public class HierarchyViewerApplication extends ApplicationWindow {
private PixelPerfectLoupe mPixelPerfectLoupe;
private Composite mTreeViewControls;
+ private ActionButton dumpDisplayList;
+
private HierarchyViewerDirector mDirector;
/*
@@ -148,9 +158,9 @@ public class HierarchyViewerApplication extends ApplicationWindow {
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
- shell.setText("Hierarchy Viewer");
+ shell.setText(APP_NAME);
ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class);
- Image image = imageLoader.loadImage("load-view-hierarchy.png", Display.getDefault()); //$NON-NLS-1$
+ Image image = imageLoader.loadImage("sdk-hierarchyviewer-128.png", Display.getDefault()); //$NON-NLS-1$
shell.setImage(image);
}
@@ -162,7 +172,14 @@ public class HierarchyViewerApplication extends ApplicationWindow {
public void run() {
setBlockOnOpen(true);
- open();
+ try {
+ open();
+ } catch (SWTException e) {
+ // Ignore "widget disposed" errors after we closed.
+ if (!getShell().isDisposed()) {
+ throw e;
+ }
+ }
TreeViewModel.getModel().removeTreeChangeListener(mTreeChangeListener);
PixelPerfectModel.getModel().removeImageChangeListener(mImageChangeListener);
@@ -354,7 +371,7 @@ public class HierarchyViewerApplication extends ApplicationWindow {
Composite innerButtonPanel = new Composite(buttonPanel, SWT.NONE);
innerButtonPanel.setLayoutData(new GridData(GridData.FILL_VERTICAL));
- GridLayout innerButtonPanelLayout = new GridLayout(6, true);
+ GridLayout innerButtonPanelLayout = new GridLayout(7, true);
innerButtonPanelLayout.marginWidth = innerButtonPanelLayout.marginHeight = 2;
innerButtonPanelLayout.horizontalSpacing = innerButtonPanelLayout.verticalSpacing = 2;
innerButtonPanel.setLayout(innerButtonPanelLayout);
@@ -382,6 +399,10 @@ public class HierarchyViewerApplication extends ApplicationWindow {
new ActionButton(innerButtonPanel, RequestLayoutAction.getAction());
requestLayout.setLayoutData(new GridData(GridData.FILL_BOTH));
+ dumpDisplayList =
+ new ActionButton(innerButtonPanel, DumpDisplayListAction.getAction());
+ dumpDisplayList.setLayoutData(new GridData(GridData.FILL_BOTH));
+
SashForm mainSash = new SashForm(mTreeViewPanel, SWT.HORIZONTAL | SWT.SMOOTH);
mainSash.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite treeViewContainer = new Composite(mainSash, SWT.BORDER);
@@ -581,12 +602,16 @@ public class HierarchyViewerApplication extends ApplicationWindow {
MenuManager mm = getMenuBarManager();
mm.removeAll();
- String os = System.getProperty("os.name"); //$NON-NLS-1$
- if (os.startsWith("Mac OS") == false) { //$NON-NLS-1$
- MenuManager file = new MenuManager("&File");
+ MenuManager file = new MenuManager("&File");
+ IMenuBarEnhancer enhancer = MenuBarEnhancer.setupMenuManager(
+ APP_NAME,
+ getShell().getDisplay(),
+ file,
+ AboutAction.getAction(getShell()),
+ null /*preferencesAction*/,
+ QuitAction.getAction());
+ if (enhancer.getMenuBarMode() == MenuBarMode.GENERIC) {
mm.add(file);
-
- file.add(QuitAction.getAction());
}
MenuManager device = new MenuManager("&Devices");
@@ -596,11 +621,6 @@ public class HierarchyViewerApplication extends ApplicationWindow {
device.add(LoadViewHierarchyAction.getAction());
device.add(InspectScreenshotAction.getAction());
- MenuManager help = new MenuManager("&Help");
- mm.add(help);
-
- help.add(AboutAction.getAction(getShell()));
-
mm.updateAll(true);
mDeviceViewButton.setSelection(true);
@@ -626,12 +646,16 @@ public class HierarchyViewerApplication extends ApplicationWindow {
MenuManager mm = getMenuBarManager();
mm.removeAll();
- String os = System.getProperty("os.name"); //$NON-NLS-1$
- if (os.startsWith("Mac OS") == false) { //$NON-NLS-1$
- MenuManager file = new MenuManager("&File");
+ MenuManager file = new MenuManager("&File");
+ IMenuBarEnhancer enhancer = MenuBarEnhancer.setupMenuManager(
+ APP_NAME,
+ getShell().getDisplay(),
+ file,
+ AboutAction.getAction(getShell()),
+ null /*preferencesAction*/,
+ QuitAction.getAction());
+ if (enhancer.getMenuBarMode() == MenuBarMode.GENERIC) {
mm.add(file);
-
- file.add(QuitAction.getAction());
}
MenuManager treeViewMenu = new MenuManager("&Tree View");
@@ -642,15 +666,18 @@ public class HierarchyViewerApplication extends ApplicationWindow {
treeViewMenu.add(new Separator());
treeViewMenu.add(RefreshViewAction.getAction());
treeViewMenu.add(DisplayViewAction.getAction(getShell()));
+ // Only make the DumpDisplayList action visible if the protocol supports it.
+ ViewServerInfo info = DeviceSelectionModel.getModel().getSelectedDeviceInfo();
+ if (info != null && info.protocolVersion >= 4) {
+ treeViewMenu.add(DumpDisplayListAction.getAction());
+ dumpDisplayList.setVisible(true);
+ } else {
+ dumpDisplayList.setVisible(false);
+ }
treeViewMenu.add(new Separator());
treeViewMenu.add(InvalidateAction.getAction());
treeViewMenu.add(RequestLayoutAction.getAction());
- MenuManager help = new MenuManager("&Help");
- mm.add(help);
-
- help.add(AboutAction.getAction(getShell()));
-
mm.updateAll(true);
mDeviceViewButton.setSelection(false);
@@ -676,12 +703,16 @@ public class HierarchyViewerApplication extends ApplicationWindow {
MenuManager mm = getMenuBarManager();
mm.removeAll();
- String os = System.getProperty("os.name"); //$NON-NLS-1$
- if (os.startsWith("Mac OS") == false) { //$NON-NLS-1$
- MenuManager file = new MenuManager("&File");
+ MenuManager file = new MenuManager("&File");
+ IMenuBarEnhancer enhancer = MenuBarEnhancer.setupMenuManager(
+ APP_NAME,
+ getShell().getDisplay(),
+ file,
+ AboutAction.getAction(getShell()),
+ null /*preferencesAction*/,
+ QuitAction.getAction());
+ if (enhancer.getMenuBarMode() == MenuBarMode.GENERIC) {
mm.add(file);
-
- file.add(QuitAction.getAction());
}
MenuManager pixelPerfect = new MenuManager("&Pixel Perfect");
@@ -695,11 +726,6 @@ public class HierarchyViewerApplication extends ApplicationWindow {
mm.add(pixelPerfect);
- MenuManager help = new MenuManager("&Help");
- mm.add(help);
-
- help.add(AboutAction.getAction(getShell()));
-
mm.updateAll(true);
mDeviceViewButton.setSelection(false);