diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/editors/StateLabelProvider.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/editors/StateLabelProvider.java | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/editors/StateLabelProvider.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/editors/StateLabelProvider.java new file mode 100644 index 000000000..e37ea77fd --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/editors/StateLabelProvider.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2011 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.ide.eclipse.gltrace.editors; + +import com.android.ide.eclipse.gltrace.state.GLListProperty; +import com.android.ide.eclipse.gltrace.state.GLSparseArrayProperty; +import com.android.ide.eclipse.gltrace.state.GLStateType; +import com.android.ide.eclipse.gltrace.state.IGLProperty; + +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.ViewerCell; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.widgets.Display; + +import java.util.Set; + +public class StateLabelProvider extends ColumnLabelProvider { + private Set<IGLProperty> mChangedProperties; + + private Color mHighlightForegroundColor; + private Color mNormalForegroundColor; + + public StateLabelProvider() { + mHighlightForegroundColor = Display.getDefault().getSystemColor(SWT.COLOR_BLUE); + mNormalForegroundColor = Display.getDefault().getSystemColor(SWT.COLOR_BLACK); + } + + public String getColumnText(IGLProperty property, int columnIndex) { + switch (columnIndex) { + case 0: + return getName(property); + case 1: + return getValue(property); + default: + return ""; + } + } + + private String getValue(IGLProperty element) { + return element.getStringValue(); + } + + private String getName(IGLProperty element) { + IGLProperty parent = element.getParent(); + if (parent instanceof GLListProperty) { + // For members of list, use the index in the list as the name as opposed to + // the property type + int index = ((GLListProperty) parent).indexOf(element); + if (element.getType() == GLStateType.GL_STATE_ES1) { + return String.format("Context %d (ES1)", index); + } else if (element.getType() == GLStateType.GL_STATE_ES2) { + return String.format("Context %d (ES2)", index); + } else { + return Integer.toString(index); + } + } else if (parent instanceof GLSparseArrayProperty) { + // For members of sparse array, use the key as the name as opposed to + // the property type + int index = ((GLSparseArrayProperty) parent).keyFor(element); + return Integer.toString(index); + } + + return element.getType().getDescription(); + } + + @Override + public void update(ViewerCell cell) { + Object element = cell.getElement(); + if (!(element instanceof IGLProperty)) { + return; + } + + IGLProperty prop = (IGLProperty) element; + + String text = getColumnText(prop, cell.getColumnIndex()); + cell.setText(text); + + if (mChangedProperties != null && mChangedProperties.contains(prop)) { + cell.setForeground(mHighlightForegroundColor); + } else { + cell.setForeground(mNormalForegroundColor); + } + } + + public void setChangedProperties(Set<IGLProperty> changedProperties) { + mChangedProperties = changedProperties; + } +} |