Package org.dcarew.samplemodel.views

Source Code of org.dcarew.samplemodel.views.ModelLabelProvider

package org.dcarew.samplemodel.views;

import java.util.Collection;

import org.dcarew.model.core.IModelClass;
import org.dcarew.model.core.IModelProperty;
import org.dcarew.model.core.ModelObject;
import org.dcarew.samplemodel.model.Book;
import org.dcarew.samplemodel.model.BookCollection;
import org.dcarew.samplemodel.model.Magazine;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;

/**
*
*
* @author dcarew
*/
public class SampleModelView
  extends ViewPart
{
  private TreeViewer treeViewer;
 
 
  public SampleModelView()
  {
   
  }
 
  public void createPartControl(Composite parent)
  {
    treeViewer = new TreeViewer(parent, SWT.NONE);
    treeViewer.setLabelProvider(new ModelLabelProvider());
    treeViewer.setContentProvider(new ModelTreeContentProvider());
    treeViewer.setInput(createSampleModel());
  }
 
  public void setFocus()
  {
    //treeViewer.setFocus();
  }
 
  private static BookCollection createSampleModel()
  {
    BookCollection books = new BookCollection();
   
    books.getItems().add(new Book("Alice in Wonderland", "ABC Publishers"));
    books.getItems().add(new Book("Sky of Blades", "Ace"));
    books.getItems().add(new Magazine("National Geographic"));
   
    return books;
  }

}

class ModelTreeContentProvider
  implements ITreeContentProvider
{

  public Object[] getChildren(Object parentElement)
  {
    if (parentElement instanceof ModelObject)
    {
      ModelObject modelObject = (ModelObject)parentElement;
     
      IModelClass modelClass = modelObject.getModelClass();
     
      IModelProperty[] properties = modelClass.getProperties();
     
      Object[] children = new Object[properties.length];
     
      for (int i = 0; i < properties.length; i++)
      {
        children[i] = modelObject.getPropertyValue(properties[i]);
      }
     
      return children;
    }
    else if (parentElement instanceof Collection)
    {
      return ((Collection)parentElement).toArray();
    }
    else
    {
      return new Object[0];
    }
  }

  public Object getParent(Object element)
  {
    return null;
  }

  public boolean hasChildren(Object element)
  {
    return getChildren(element).length > 0;
  }

  public Object[] getElements(Object inputElement)
  {
    return getChildren(inputElement);
  }

  public void dispose()
  {
   
  }

  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
  {
   
  }
}

class ModelLabelProvider
  extends LabelProvider
{

  public Image getImage(Object element)
  {
    if (element instanceof ModelObject)
    {
      return ((ModelObject)element).getModelClass().getIcon();
    }
    else
    {
      return null;
    }
  }

  public String getText(Object element)
  {
    if (element instanceof ModelObject)
    {
      return ((ModelObject)element).getModelClass().getName() + " " + element.toString();
    }
    else
    {
      return element == null ? "" : element.toString();
    }
  }
 
}
TOP

Related Classes of org.dcarew.samplemodel.views.ModelLabelProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.