| /* |
| * 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; |
| } |
| } |