aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/ui/PropertyViewer.java
diff options
context:
space:
mode:
Diffstat (limited to 'hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/ui/PropertyViewer.java')
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/ui/PropertyViewer.java391
1 files changed, 0 insertions, 391 deletions
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/ui/PropertyViewer.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/ui/PropertyViewer.java
deleted file mode 100644
index 9456a0a..0000000
--- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/ui/PropertyViewer.java
+++ /dev/null
@@ -1,391 +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.hierarchyviewerlib.ui;
-
-import com.android.ddmuilib.ImageLoader;
-import com.android.hierarchyviewerlib.HierarchyViewerDirector;
-import com.android.hierarchyviewerlib.device.IHvDevice;
-import com.android.hierarchyviewerlib.models.TreeViewModel;
-import com.android.hierarchyviewerlib.models.TreeViewModel.ITreeChangeListener;
-import com.android.hierarchyviewerlib.models.ViewNode;
-import com.android.hierarchyviewerlib.models.ViewNode.Property;
-import com.android.hierarchyviewerlib.ui.DevicePropertyEditingSupport.PropertyType;
-import com.android.hierarchyviewerlib.ui.util.DrawableViewNode;
-import com.android.hierarchyviewerlib.ui.util.TreeColumnResizer;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-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.ArrayList;
-import java.util.Collection;
-
-public class PropertyViewer extends Composite implements ITreeChangeListener {
- private TreeViewModel mModel;
-
- private TreeViewer mTreeViewer;
- private Tree mTree;
- private TreeViewerColumn mValueColumn;
- private PropertyValueEditingSupport mPropertyValueEditingSupport;
-
- private Image mImage;
-
- private DrawableViewNode mSelectedNode;
-
- private class ContentProvider implements ITreeContentProvider, ITableLabelProvider {
-
- @Override
- public Object[] getChildren(Object parentElement) {
- synchronized (PropertyViewer.this) {
- if (mSelectedNode != null && parentElement instanceof String) {
- String category = (String) parentElement;
- ArrayList<Property> returnValue = new ArrayList<Property>();
- for (Property property : mSelectedNode.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];
- }
- }
-
- @Override
- public Object getParent(Object element) {
- synchronized (PropertyViewer.this) {
- if (mSelectedNode != null && element instanceof Property) {
- if (mSelectedNode.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;
- }
- }
-
- @Override
- public boolean hasChildren(Object element) {
- synchronized (PropertyViewer.this) {
- if (mSelectedNode != null && element instanceof String) {
- String category = (String) element;
- for (String name : mSelectedNode.viewNode.namedProperties.keySet()) {
- if (category.equals(ViewNode.MISCELLANIOUS)) {
- if (name.indexOf(':') == -1) {
- return true;
- }
- } else {
- if (name.startsWith(((String) element) + ":")) {
- return true;
- }
- }
- }
- }
- return false;
- }
- }
-
- @Override
- public Object[] getElements(Object inputElement) {
- synchronized (PropertyViewer.this) {
- if (mSelectedNode != null && inputElement instanceof TreeViewModel) {
- if (mSelectedNode.viewNode.categories.size() == 0) {
- return mSelectedNode.viewNode.properties
- .toArray(new Property[mSelectedNode.viewNode.properties.size()]);
- } else {
- return mSelectedNode.viewNode.categories
- .toArray(new String[mSelectedNode.viewNode.categories.size()]);
- }
- }
- return new Object[0];
- }
- }
-
- @Override
- public void dispose() {
- // pass
- }
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- // pass
- }
-
- @Override
- public Image getColumnImage(Object element, int column) {
- if (mSelectedNode == null) {
- return null;
- }
- if (column == 1 && mPropertyValueEditingSupport.canEdit(element)) {
- return mImage;
- }
-
- return null;
- }
-
- @Override
- public String getColumnText(Object element, int column) {
- synchronized (PropertyViewer.this) {
- if (mSelectedNode != 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 "";
- }
- }
-
- @Override
- public void addListener(ILabelProviderListener listener) {
- // pass
- }
-
- @Override
- public boolean isLabelProperty(Object element, String property) {
- // pass
- return false;
- }
-
- @Override
- public void removeListener(ILabelProviderListener listener) {
- // pass
- }
- }
-
- private class PropertyValueEditingSupport extends EditingSupport {
- private DevicePropertyEditingSupport mDevicePropertyEditingSupport =
- new DevicePropertyEditingSupport();
-
- public PropertyValueEditingSupport(ColumnViewer viewer) {
- super(viewer);
- }
-
- @Override
- protected boolean canEdit(Object element) {
- if (mSelectedNode == null) {
- return false;
- }
-
- return element instanceof Property
- && mSelectedNode.viewNode.window.getHvDevice().isViewUpdateEnabled()
- && mDevicePropertyEditingSupport.canEdit((Property) element);
- }
-
- @Override
- protected CellEditor getCellEditor(Object element) {
- Property p = (Property) element;
- PropertyType type = mDevicePropertyEditingSupport.getPropertyType(p);
- Composite parent = (Composite) getViewer().getControl();
-
- switch (type) {
- case INTEGER:
- case INTEGER_OR_CONSTANT:
- return new TextCellEditor(parent);
- case ENUM:
- String[] items = mDevicePropertyEditingSupport.getPropertyRange(p);
- return new ComboBoxCellEditor(parent, items, SWT.READ_ONLY);
- }
-
- return null;
- }
-
- @Override
- protected Object getValue(Object element) {
- Property p = (Property) element;
- PropertyType type = mDevicePropertyEditingSupport.getPropertyType(p);
-
- if (type == PropertyType.ENUM) {
- // for enums, return the index of the current value in the list of possible values
- String[] items = mDevicePropertyEditingSupport.getPropertyRange(p);
- return Integer.valueOf(indexOf(p.value, items));
- }
-
- return ((Property) element).value;
- }
-
- private int indexOf(String item, String[] items) {
- for (int i = 0; i < items.length; i++) {
- if (items[i].equals(item)) {
- return i;
- }
- }
-
- return -1;
- }
-
- @Override
- protected void setValue(Object element, Object newValue) {
- Property p = (Property) element;
- IHvDevice device = mSelectedNode.viewNode.window.getHvDevice();
- Collection<Property> properties = mSelectedNode.viewNode.namedProperties.values();
- if (mDevicePropertyEditingSupport.setValue(properties, p, newValue,
- mSelectedNode.viewNode, device)) {
- doRefresh();
- }
- }
- }
-
- public PropertyViewer(Composite parent) {
- super(parent, SWT.NONE);
- setLayout(new FillLayout());
- mTreeViewer = new TreeViewer(this, SWT.NONE);
-
- mTree = mTreeViewer.getTree();
- mTree.setLinesVisible(true);
- mTree.setHeaderVisible(true);
-
- TreeColumn propertyColumn = new TreeColumn(mTree, SWT.NONE);
- propertyColumn.setText("Property");
- TreeColumn valueColumn = new TreeColumn(mTree, SWT.NONE);
- valueColumn.setText("Value");
-
- mValueColumn = new TreeViewerColumn(mTreeViewer, valueColumn);
- mPropertyValueEditingSupport = new PropertyValueEditingSupport(mTreeViewer);
- mValueColumn.setEditingSupport(mPropertyValueEditingSupport);
-
- mModel = TreeViewModel.getModel();
- ContentProvider contentProvider = new ContentProvider();
- mTreeViewer.setContentProvider(contentProvider);
- mTreeViewer.setLabelProvider(contentProvider);
- mTreeViewer.setInput(mModel);
- mModel.addTreeChangeListener(this);
-
- addDisposeListener(mDisposeListener);
-
- @SuppressWarnings("unused")
- TreeColumnResizer resizer = new TreeColumnResizer(this, propertyColumn, valueColumn);
-
- addControlListener(mControlListener);
-
- ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class);
- mImage = imageLoader.loadImage("picker.png", Display.getDefault()); //$NON-NLS-1$
-
- treeChanged();
- }
-
- private DisposeListener mDisposeListener = new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent e) {
- mModel.removeTreeChangeListener(PropertyViewer.this);
- }
- };
-
- // If the window gets too small, hide the data, otherwise SWT throws an
- // ERROR.
-
- private ControlListener mControlListener = new ControlAdapter() {
- private boolean noInput = false;
-
- private boolean noHeader = false;
-
- @Override
- public void controlResized(ControlEvent e) {
- if (getBounds().height <= 20) {
- mTree.setHeaderVisible(false);
- noHeader = true;
- } else if (noHeader) {
- mTree.setHeaderVisible(true);
- noHeader = false;
- }
- if (getBounds().height <= 38) {
- mTreeViewer.setInput(null);
- noInput = true;
- } else if (noInput) {
- mTreeViewer.setInput(mModel);
- noInput = false;
- }
- }
- };
-
- @Override
- public void selectionChanged() {
- synchronized (this) {
- mSelectedNode = mModel.getSelection();
- }
- doRefresh();
- }
-
- @Override
- public void treeChanged() {
- synchronized (this) {
- mSelectedNode = mModel.getSelection();
- }
- doRefresh();
- }
-
- @Override
- public void viewportChanged() {
- // pass
- }
-
- @Override
- public void zoomChanged() {
- // pass
- }
-
- private void doRefresh() {
- Display.getDefault().syncExec(new Runnable() {
- @Override
- public void run() {
- mTreeViewer.refresh();
- }
- });
- }
-}