com.google.gdt.eclipse.designer.gxt.databinding.ui.providers.BindingLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gdt.eclipse.designer.gxt.databinding.ui.providers.BindingLabelProvider.java

Source

/*******************************************************************************
 * Copyright 2011 Google Inc. All Rights Reserved.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * 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.google.gdt.eclipse.designer.gxt.databinding.ui.providers;

import com.google.gdt.eclipse.designer.gxt.databinding.Activator;
import com.google.gdt.eclipse.designer.gxt.databinding.model.bindings.BindingInfo;
import com.google.gdt.eclipse.designer.gxt.databinding.model.bindings.BindingsInfo;
import com.google.gdt.eclipse.designer.gxt.databinding.model.bindings.FieldBindingInfo;
import com.google.gdt.eclipse.designer.gxt.databinding.model.bindings.FormBindingInfo;

import org.eclipse.wb.internal.core.utils.execution.ExecutionUtils;
import org.eclipse.wb.internal.core.utils.execution.RunnableObjectEx;

import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;

/**
 * 
 * @author lobas_av
 * 
 */
public class BindingLabelProvider extends LabelProvider implements ITableLabelProvider {
    private static final Image FORM_BINDING_IMAGE = Activator.getImage("FormPanel.png");
    private static final Image FORM_FIELD_BINDING_IMAGE = Activator.getImage("FormPanelElement.png");
    private static final Image FORM_AUTO_FIELD_BINDING_IMAGE = Activator.getImage("FormPanelAutoElement.png");
    private static final Image BINDINGS_IMAGE = Activator.getImage("Bindings.png");
    private static final Image FIELD_BINDING_IMAGE = Activator.getImage("Field.png");
    public static final BindingLabelProvider INSTANCE = new BindingLabelProvider();

    ////////////////////////////////////////////////////////////////////////////
    //
    // ITableLabelProvider
    //
    ////////////////////////////////////////////////////////////////////////////
    public String getColumnText(final Object element, final int column) {
        return ExecutionUtils.runObjectLog(new RunnableObjectEx<String>() {
            public String runObject() throws Exception {
                return getBindingColumnText((BindingInfo) element, column);
            }
        }, "<exception, see log>");
    }

    private static String getBindingColumnText(BindingInfo binding, int column) throws Exception {
        switch (column) {
        case 1:
            // target
            return binding.getTargetPresentationText();
        case 2:
            // model
            return binding.getModelPresentationText();
        case 3:
            // binding
            return binding.getVariableIdentifier();
        default:
            return null;
        }
    }

    public Image getColumnImage(Object element, int column) {
        if (column == 0) {
            if (element instanceof FormBindingInfo) {
                return FORM_BINDING_IMAGE;
            }
            if (element instanceof BindingsInfo) {
                return BINDINGS_IMAGE;
            }
            if (element instanceof FieldBindingInfo) {
                FieldBindingInfo binding = (FieldBindingInfo) element;
                if (binding.getParentBinding() == null) {
                    return FIELD_BINDING_IMAGE;
                }
                return binding.isAutobind() ? FORM_AUTO_FIELD_BINDING_IMAGE : FORM_FIELD_BINDING_IMAGE;
            }
        }
        return null;
    }
}