org.eclipse.cdt.dstore.ui.widgets.DataElementLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.cdt.dstore.ui.widgets.DataElementLabelProvider.java

Source

package org.eclipse.cdt.dstore.ui.widgets;

/*
 * Copyright (c) 2001, 2002 International Business Machines Corporation. All rights reserved.
 * This program and the accompanying materials are made available under the terms of
 * the Common Public License which accompanies this distribution.
 */

import org.eclipse.cdt.dstore.ui.*;
import org.eclipse.cdt.dstore.core.DataStoreCorePlugin;
import org.eclipse.cdt.dstore.core.model.*;
import org.eclipse.cdt.dstore.ui.resource.ResourceElement;

import java.io.*;
import java.util.*;

import org.eclipse.core.resources.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.resource.*;

public class DataElementLabelProvider extends LabelProvider implements ILabelProvider, ITableLabelProvider {
    private ImageRegistry _registry;
    private static final String DEFAULT_ICON = "default.gif";
    private Image _default;

    private String _labelProperty;
    private int _labelPropertyIndex;

    private static DataElementLabelProvider _instance;
    private IActionLoader _actionLoader;

    private DataElement _attributesD = null;

    public DataElementLabelProvider(ImageRegistry registry, IActionLoader loader) {
        super();
        setLabelProperty(DE.P_VALUE);

        _registry = registry;
        _actionLoader = loader;

        String baseDir = DataStoreUIPlugin.getInstance().getInstallLocation();
        String imageStr = baseDir + java.io.File.separator + "icons" + java.io.File.separator + "default.gif";

        Image image = _registry.get(imageStr);
        if (image == null) {
            _registry.put(imageStr, ImageDescriptor.createFromFile(null, imageStr));
            image = _registry.get(imageStr);
        }

        _default = image;
        _instance = this;
    }

    public DataElementLabelProvider getInstance() {
        return _instance;
    }

    public void setLoader(IActionLoader loader) {
        _actionLoader = loader;

    }

    public Image getImage(Object i) {
        if (i instanceof String) {
            return getImage((String) i);
        } else if (i instanceof DataElement) {
            DataElement element = (DataElement) i;
            String imageStr = getImageString(element);

            Image result = null;
            if (imageStr != null) {
                result = getImage(imageStr);
            }
            return result;
        } else if (i instanceof ResourceElement) {
            ResourceElement resource = (ResourceElement) i;
            return resource.getImage(i, null);
        } else if (i instanceof IProject) {
            IProject project = (IProject) i;

            DataStoreCorePlugin plugin = DataStoreCorePlugin.getInstance();
            if (project.isOpen()) {
                return plugin.getImage("project.gif", true);
            } else {
                return plugin.getImage("project_closed.gif", true);
            }
        } else {
            return null;
        }
    }

    public Image getImage(String imageStr) {
        Image image = null;
        image = _registry.get(imageStr);
        if (image == null && imageStr != null) {
            File file = new File(imageStr);
            if (file.exists()) {
                try {
                    image = ImageDescriptor.createFromFile(null, imageStr).createImage();
                    _registry.put(imageStr, image);

                    image = _registry.get(imageStr);
                } catch (org.eclipse.swt.SWTException e) {
                    //System.out.println(e);
                    System.out.println("invalid image: " + imageStr);
                    return _default;
                }
            } else {
                return _default;
            }
        }

        return image;
    }

    public Image getLabelImage(Viewer viewer, Object obj) {
        if (obj != null) {
            DataElement element = (DataElement) obj;
            String imageStr = getImageString(element);

            Image result = getImage(imageStr);
            return result;
        } else {
            return null;
        }
    }

    public void setLabelProperty(String property) {
        _labelProperty = property;

        if (_labelProperty.equals(DE.P_TYPE)) {
            _labelPropertyIndex = DE.A_TYPE;
        } else if (_labelProperty.equals(DE.P_NAME)) {
            _labelPropertyIndex = DE.A_NAME;
        } else if (_labelProperty.equals(DE.P_VALUE)) {
            _labelPropertyIndex = DE.A_VALUE;
        } else if (_labelProperty.equals(DE.P_SOURCE)) {
            _labelPropertyIndex = DE.A_SOURCE;
        }

    }

    public String getText(Object obj) {
        if (obj instanceof DataElement) {
            DataElement element = (DataElement) obj;
            String type = element.getAttribute(DE.A_TYPE);
            if (type != null && type.equals("property")) {
                String name = element.getAttribute(DE.A_NAME);
                String value = element.getAttribute(DE.A_VALUE);
                return name + " = " + value;
            } else {
                if (_labelProperty == null) {
                    _labelProperty = DE.P_VALUE;
                }
                String result = element.getAttribute(_labelPropertyIndex);
                if (result == null) {
                    if (element.isDeleted()) {
                        result = "deleted";
                    } else {
                        result = "null";
                    }
                }
                return result;
            }
        } else if (obj instanceof ResourceElement) {
            ResourceElement resource = (ResourceElement) obj;
            String name = resource.getLabel(obj);
            if (name == null)
                name = "null";

            return name;
        } else if (obj instanceof IProject) {
            IProject repository = (IProject) obj;
            String name = repository.getName();
            return name;
        } else {
            return "null";
        }
    }

    public String getImageString(String key) {
        if (_actionLoader != null) {
            return _actionLoader.getImageString(key);
        } else {
            return "";
        }
    }

    public String getImageString(DataElement element) {
        if (_actionLoader != null) {
            return _actionLoader.getImageString(element);
        } else {
            return "";
        }
    }

    public Image getColumnImage(Object element, int columnIndex) {
        if (columnIndex == 0) {
            return getImage(element);
        } else {
            return null;
        }
    }

    public String getColumnText(Object element, int columnIndex) {
        if (columnIndex == 0) {
            return getText(element);
        } else if (element instanceof DataElement) {

            DataElement data = (DataElement) element;
            DataStore dataStore = data.getDataStore();
            if (_attributesD == null || _attributesD.getDataStore() != dataStore) {
                _attributesD = dataStore.getAttributesRelation();
            }

            DataElement descriptor = data.getDescriptor();
            DataElement attributeDescriptor = getAttributeDescriptor(descriptor, columnIndex - 1);

            if (attributeDescriptor != null) {
                ArrayList attributes = data.getAssociated(_attributesD);

                if (attributes.size() > 0) {
                    DataElement attribute = null;
                    if (attributes.size() > columnIndex) {
                        attribute = (DataElement) attributes.get(columnIndex - 1);
                        if (attribute.getDescriptor() == attributeDescriptor) {
                            return getText(attribute);
                        }
                    }

                    for (int i = 0; i < attributes.size(); i++) {
                        {
                            attribute = (DataElement) attributes.get(i);
                            if (attribute.getDescriptor() == attributeDescriptor) {
                                return getText(attribute);
                            }
                        }
                    }
                }

                // get attribute attributes
                ArrayList format = attributeDescriptor.getAssociated(_attributesD);
                if (format != null && format.size() > 0) {
                    DataElement formatDescriptor = (DataElement) format.get(0);
                    String formatStr = formatDescriptor.getName();

                    if (formatStr.equals("Integer") || formatStr.equals("Date")) {
                        return "0";
                    } else if (formatStr.equals("Float")) {
                        return "0.0";
                    } else {
                        return "";
                    }

                }

            }

        }
        return "";
    }

    private DataElement getAttributeDescriptor(DataElement rootDescriptor, int attributeIndex) {

        int attributeNum = 0;

        for (int i = 0; i < rootDescriptor.getNestedSize(); i++) {
            DataElement child = rootDescriptor.get(i);
            if (child.isReference()) {
                if (child.getType().equals("attributes")) {
                    if (attributeNum == attributeIndex) {
                        return child.dereference();
                    }
                    attributeNum++;
                }
            }

        }

        return null;
    }
}