Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Issue with Tree Viewer and EMF Databinding APIs
Issue with Tree Viewer and EMF Databinding APIs [message #513807] Thu, 11 February 2010 11:32 Go to next message
Chandresh Gandhi is currently offline Chandresh GandhiFriend
Messages: 30
Registered: July 2009
Member
I've designed ECore model for FileExplorer Application.
" a Drive may have Files and Directories, Directories may contain Subdirectories and Files, Subdirectories may have Directories and Files inside "

I'd generated "Model code" out of it. Now I'm developing view with TreeViewer to show model contents in Tree format more like Windows File Explorer using EMF Databinding APIs.
(with reference of tutorial series given at http://tomsondev.bestsolution.at/2009/06/08/galileo-emf-data binding-%E2%80%93-part-3/)

My concern here is that my view is absolutely blank neither with Tree OR model Content. Can someone please help me on cause of problem.

Following is my View code:

package com.spiderlogic.emf.databinding.model.model.ui.view;

import java.util.Set;

import org.eclipse.core.databinding.observable.IObservable;
import org.eclipse.core.databinding.observable.list.IObservableList ;
import org.eclipse.core.databinding.observable.map.IMapChangeListen er;
import org.eclipse.core.databinding.observable.map.IObservableMap;
import org.eclipse.core.databinding.observable.map.MapChangeEvent;
import org.eclipse.core.databinding.observable.masterdetail.IObserv ableFactory;
import org.eclipse.core.databinding.observable.set.IObservableSet;
import org.eclipse.emf.databinding.EMFProperties;
import org.eclipse.emf.databinding.FeaturePath;
import org.eclipse.emf.databinding.IEMFListProperty;
import org.eclipse.jface.databinding.viewers.ObservableListTreeCont entProvider;
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProv ider;
import org.eclipse.jface.databinding.viewers.TreeStructureAdvisor;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;

import fileexplorer.Directory;
import fileexplorer.Drive;
import fileexplorer.File;

import fileexplorer.FileexplorerFactory;
import fileexplorer.FileexplorerPackage;

public class FileExplorer extends ViewPart {

private TreeViewer viewer;

public FileExplorer() {
// TODO Auto-generated constructor stub
}

@Override
public void createPartControl(Composite parent) {

viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
ObservableListTreeContentProvider cp = new ObservableListTreeContentProvider(new TreeFactoryImpl(), new TreeStructureAdvisorImpl());
viewer.setContentProvider(cp);

IObservableSet set = cp.getKnownElements();

IObservableMap[] map = new IObservableMap [5];
map[0] = EMFProperties.value(FileexplorerPackage.Literals.DRIVE__NAME ).observeDetail(set);
map[1] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage .Literals.DRIVE__DIRECTORIES, FileexplorerPackage.Literals.DIRECTORY__NAME)).observeDetail (set);
map[2] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage .Literals.DRIVE__FILES, FileexplorerPackage.Literals.FILE__NAME)).observeDetail(set) ;
map[3] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage .Literals.DRIVE__DIRECTORIES, FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY, FileexplorerPackage.Literals.DIRECTORY__NAME)).observeDetail (set);
map[4] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage .Literals.DRIVE__DIRECTORIES, FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY, FileexplorerPackage.Literals.FILE__NAME)).observeDetail(set) ;

// ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(map);
// viewer.setLabelProvider(labelProvider);

viewer.setLabelProvider(new TreeLabelProviderImpl(map));
viewer.setInput(getDrive());
}

@Override
public void setFocus() {
viewer.getControl().setFocus();
if (viewer.getTree().getItemCount() > 0)
{
viewer.setSelection(new StructuredSelection(viewer.getTree().getItem(0).getData()));
}
}

// Initializing model
private Drive getDrive()
{
Drive drive = FileexplorerFactory.eINSTANCE.createDrive();
drive.setName("C:\\");
File pagefile = FileexplorerFactory.eINSTANCE.createFile();
pagefile.setName("pagefile.sys");
drive.getFiles().add(pagefile);
Directory windows = FileexplorerFactory.eINSTANCE.createDirectory();
windows.setName("WINDOWS");
drive.getDirectories().add(windows);
Directory windowssubdir = FileexplorerFactory.eINSTANCE.createDirectory();
windowssubdir.setName("WINDOWS_SUB");
windowssubdir.setParent(windows);
windows.getSubdirectory().add(windowssubdir);
File pagefile1 = FileexplorerFactory.eINSTANCE.createFile();
pagefile1.setName("pagefile1.sys");
windowssubdir.getFile().add(pagefile1);

return drive;
}

private static class TreeFactoryImpl implements IObservableFactory {

private IEMFListProperty multi = EMFProperties.multiList(
FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
FileexplorerPackage.Literals.DIRECTORY__FILE);

@Override
public IObservable createObservable(final Object target)
{
if (target instanceof IObservableList)
{
return (IObservable)target;
}
else if (target instanceof Directory)
{
return multi.observe(target);
}
return null;
}
}

private static class TreeStructureAdvisorImpl extends TreeStructureAdvisor
{
@Override
public Object getParent(Object element)
{
if (element instanceof Directory)
{
return ((Directory)element).getParent();
}
return null;
}

@Override
public Boolean hasChildren(Object element)
{
if (element instanceof Directory && (((Directory)element).getFile().size() > 0 || ((Directory)element).getSubdirectory().size() > 0))
{
return Boolean.TRUE;
}
return super.hasChildren(element);
}
}

private class TreeLabelProviderImpl extends StyledCellLabelProvider
{
private IMapChangeListener mapChangeListener = new IMapChangeListener()
{
public void handleMapChange(MapChangeEvent event)
{
Set< ? > affectedElements = event.diff.getChangedKeys();
if (!affectedElements.isEmpty())
{
LabelProviderChangedEvent newEvent = new LabelProviderChangedEvent(TreeLabelProviderImpl.this, affectedElements.toArray());
fireLabelProviderChanged(newEvent);
}
}
};

public TreeLabelProviderImpl(IObservableMap... attributeMaps)
{
for (int i = 0; i < attributeMaps.length; i++)
{
attributeMaps[i].addMapChangeListener(mapChangeListener);
}
}

@Override
public String getToolTipText(Object element)
{
return "#dummy#";
}

@Override
public void update(ViewerCell cell)
{
if (cell.getElement() instanceof Directory)
{
Directory p = (Directory)cell.getElement();

StyledString styledString = new StyledString(p.getName() != null ? p.getName() : "*noname*", null);
String decoration = " (" + p.getFile().size() + " Files)";
styledString.append(decoration, StyledString.COUNTER_STYLER);
cell.setText(styledString.getString());
//cell.setImage(projectImage);
cell.setStyleRanges(styledString.getStyleRanges());
}
/* else if (cell.getElement() instanceof CommitterShip)
{
Person p = ((CommitterShip)cell.getElement()).getPerson();
String value = "*noname*";
if (p != null)
{
value = p.getLastname() + ", " + p.getFirstname();
}
StyledString styledString = new StyledString(value, null);
cell.setText(styledString.getString());
cell.setForeground(cell.getControl().getDisplay().getSystemC olor(SWT.COLOR_DARK_GRAY));
cell.setImage(committerImage);
cell.setStyleRanges(styledString.getStyleRanges());
}*/
}
}
}
Re: Issue with Tree Viewer and EMF Databinding APIs [message #513812 is a reply to message #513807] Thu, 11 February 2010 06:50 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
Chandresh,

Comments below.

Chandresh Gandhi wrote:
> I've designed ECore model for FileExplorer Application.
> " a Drive may have Files and Directories, Directories may contain
> Subdirectories and Files, Subdirectories may have Directories
Not Subdirectories?
> and Files inside "
>
> I'd generated "Model code" out of it. Now I'm developing view with
> TreeViewer to show model contents in Tree format more like Windows
> File Explorer using EMF Databinding APIs.
> (with reference of tutorial series given at
> http://tomsondev.bestsolution.at/2009/06/08/galileo-emf-data binding-%E2%80%93-part-3/)
>
I'd talked to Tom about the fact that a tree view using data binding
doesn't delegate to the item providers and hence requires reimplementing
something that works out of the box with a generated model. A single
reflective implementation (much like AdapterFactoryContentProvider and
AdapterFactoryLabelProvider) could bridge that gap...
>
> My concern here is that my view is absolutely blank neither with Tree
> OR model Content. Can someone please help me on cause of problem.
I'm not sure you should expect anyone to follow your code dump. The
generated EMF editor gives you a working tree view that involves a
handful of lines of code to set up, so I'm not even sure why you're
going down this complex path..
>
> Following is my View code:
>
> package com.spiderlogic.emf.databinding.model.model.ui.view;
>
> import java.util.Set;
>
> import org.eclipse.core.databinding.observable.IObservable;
> import org.eclipse.core.databinding.observable.list.IObservableList ;
> import org.eclipse.core.databinding.observable.map.IMapChangeListen er;
> import org.eclipse.core.databinding.observable.map.IObservableMap;
> import org.eclipse.core.databinding.observable.map.MapChangeEvent;
> import org.eclipse.core.databinding.observable.masterdetail.IObserv
> ableFactory;
> import org.eclipse.core.databinding.observable.set.IObservableSet;
> import org.eclipse.emf.databinding.EMFProperties;
> import org.eclipse.emf.databinding.FeaturePath;
> import org.eclipse.emf.databinding.IEMFListProperty;
> import org.eclipse.jface.databinding.viewers.ObservableListTreeCont
> entProvider;
> import org.eclipse.jface.databinding.viewers.ObservableMapLabelProv
> ider;
> import org.eclipse.jface.databinding.viewers.TreeStructureAdvisor;
> import org.eclipse.jface.viewers.LabelProviderChangedEvent;
> import org.eclipse.jface.viewers.StructuredSelection;
> import org.eclipse.jface.viewers.StyledCellLabelProvider;
> import org.eclipse.jface.viewers.StyledString;
> import org.eclipse.jface.viewers.TreeViewer;
> import org.eclipse.jface.viewers.ViewerCell;
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.widgets.Composite;
> import org.eclipse.ui.part.ViewPart;
>
> import fileexplorer.Directory;
> import fileexplorer.Drive;
> import fileexplorer.File;
>
> import fileexplorer.FileexplorerFactory;
> import fileexplorer.FileexplorerPackage;
>
> public class FileExplorer extends ViewPart {
>
> private TreeViewer viewer;
>
> public FileExplorer() {
> // TODO Auto-generated constructor stub
> }
>
> @Override
> public void createPartControl(Composite parent) {
>
> viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
> ObservableListTreeContentProvider cp = new
> ObservableListTreeContentProvider(new TreeFactoryImpl(), new
> TreeStructureAdvisorImpl());
> viewer.setContentProvider(cp);
> IObservableSet set = cp.getKnownElements();
> IObservableMap[] map = new IObservableMap [5];
> map[0] =
> EMFProperties.value(FileexplorerPackage.Literals.DRIVE__NAME
> ).observeDetail(set);
> map[1] =
> EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__DIRECTORIES,
> FileexplorerPackage.Literals.DIRECTORY__NAME)).observeDetail (set);
> map[2] =
> EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__FILES,
> FileexplorerPackage.Literals.FILE__NAME)).observeDetail(set) ;
> map[3] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__DIRECTORIES,
> FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
> FileexplorerPackage.Literals.DIRECTORY__NAME)).observeDetail (set);
> map[4] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__DIRECTORIES,
> FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
> FileexplorerPackage.Literals.FILE__NAME)).observeDetail(set) ;
> // ObservableMapLabelProvider labelProvider
> = new ObservableMapLabelProvider(map);
> // viewer.setLabelProvider(labelProvider);
>
> viewer.setLabelProvider(new TreeLabelProviderImpl(map));
> viewer.

> (getDrive());
> }
>
> @Override
> public void setFocus() {
> viewer.getControl().setFocus();
> if (viewer.getTree().getItemCount() > 0)
> {
> viewer.setSelection(new
> StructuredSelection(viewer.getTree().getItem(0).getData()));
> }
> }
>
> // Initializing model private Drive getDrive() {
> Drive drive = FileexplorerFactory.eINSTANCE.createDrive();
> drive.setName("C:\\");
> File pagefile = FileexplorerFactory.eINSTANCE.createFile();
> pagefile.setName("pagefile.sys");
> drive.getFiles().add(pagefile);
> Directory windows =
> FileexplorerFactory.eINSTANCE.createDirectory();
> windows.setName("WINDOWS");
> drive.getDirectories().add(windows);
> Directory windowssubdir =
> FileexplorerFactory.eINSTANCE.createDirectory();
> windowssubdir.setName("WINDOWS_SUB");
> windowssubdir.setParent(windows);
> windows.getSubdirectory().add(windowssubdir);
> File pagefile1 = FileexplorerFactory.eINSTANCE.createFile();
> pagefile1.setName("pagefile1.sys");
> windowssubdir.getFile().add(pagefile1);
>
> return drive;
> }
>
> private static class TreeFactoryImpl implements IObservableFactory {
>
> private IEMFListProperty multi = EMFProperties.multiList(
> FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
> FileexplorerPackage.Literals.DIRECTORY__FILE);
>
> @Override
> public IObservable createObservable(final Object target)
> {
> if (target instanceof IObservableList)
> {
> return (IObservable)target;
> }
> else if (target instanceof Directory)
> {
> return multi.observe(target);
> }
> return null;
> }
> }
>
> private static class TreeStructureAdvisorImpl extends
> TreeStructureAdvisor {
> @Override
> public Object getParent(Object element)
> {
> if (element instanceof Directory)
> {
> return ((Directory)element).getParent();
> }
> return null;
> }
>
> @Override
> public Boolean hasChildren(Object element)
> {
> if (element instanceof Directory &&
> (((Directory)element).getFile().size() > 0 ||
> ((Directory)element).getSubdirectory().size() > 0))
> {
> return Boolean.TRUE;
> }
> return super.hasChildren(element);
> }
> }
>
> private class TreeLabelProviderImpl extends StyledCellLabelProvider
> {
> private IMapChangeListener mapChangeListener = new
> IMapChangeListener()
> {
> public void handleMapChange(MapChangeEvent event)
> {
> Set< ? > affectedElements = event.diff.getChangedKeys();
> if (!affectedElements.isEmpty())
> {
> LabelProviderChangedEvent newEvent = new
> LabelProviderChangedEvent(TreeLabelProviderImpl.this,
> affectedElements.toArray());
> fireLabelProviderChanged(newEvent);
> }
> }
> };
>
> public TreeLabelProviderImpl(IObservableMap... attributeMaps)
> {
> for (int i = 0; i < attributeMaps.length; i++)
> {
> attributeMaps[i].addMapChangeListener(mapChangeListener);
> }
> }
>
> @Override
> public String getToolTipText(Object element)
> {
> return "#dummy#";
> }
>
> @Override
> public void update(ViewerCell cell)
> {
> if (cell.getElement() instanceof Directory)
> {
> Directory p = (Directory)cell.getElement();
>
> StyledString styledString = new StyledString(p.getName()
> != null ? p.getName() : "*noname*", null);
> String decoration = " (" + p.getFile().size() + " Files)";
> styledString.append(decoration, StyledString.COUNTER_STYLER);
> cell.setText(styledString.getString());
> //cell.setImage(projectImage);
> cell.setStyleRanges(styledString.getStyleRanges());
> }
> /* else if (cell.getElement() instanceof CommitterShip)
> {
> Person p = ((CommitterShip)cell.getElement()).getPerson();
> String value = "*noname*";
> if (p != null)
> {
> value = p.getLastname() + ", " + p.getFirstname();
> }
> StyledString styledString = new StyledString(value, null);
> cell.setText(styledString.getString());
>
> cell.setForeground(cell.getControl().getDisplay().getSystemC
> olor(SWT.COLOR_DARK_GRAY));
> cell.setImage(committerImage);
> cell.setStyleRanges(styledString.getStyleRanges());
> }*/
> }
> }
> }


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Issue with Tree Viewer and EMF Databinding APIs [message #513818 is a reply to message #513807] Thu, 11 February 2010 12:05 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
The input has to be an IObservableList!

Tom

Am 11.02.10 12:32, schrieb Chandresh Gandhi:
> I've designed ECore model for FileExplorer Application.
> " a Drive may have Files and Directories, Directories may contain
> Subdirectories and Files, Subdirectories may have Directories and Files
> inside "
>
> I'd generated "Model code" out of it. Now I'm developing view with
> TreeViewer to show model contents in Tree format more like Windows File
> Explorer using EMF Databinding APIs.
> (with reference of tutorial series given at
> http://tomsondev.bestsolution.at/2009/06/08/galileo-emf-data binding-%E2%80%93-part-3/)
>
>
> My concern here is that my view is absolutely blank neither with Tree OR
> model Content. Can someone please help me on cause of problem.
>
> Following is my View code:
>
> package com.spiderlogic.emf.databinding.model.model.ui.view;
>
> import java.util.Set;
>
> import org.eclipse.core.databinding.observable.IObservable;
> import org.eclipse.core.databinding.observable.list.IObservableList ;
> import org.eclipse.core.databinding.observable.map.IMapChangeListen er;
> import org.eclipse.core.databinding.observable.map.IObservableMap;
> import org.eclipse.core.databinding.observable.map.MapChangeEvent;
> import org.eclipse.core.databinding.observable.masterdetail.IObserv
> ableFactory;
> import org.eclipse.core.databinding.observable.set.IObservableSet;
> import org.eclipse.emf.databinding.EMFProperties;
> import org.eclipse.emf.databinding.FeaturePath;
> import org.eclipse.emf.databinding.IEMFListProperty;
> import org.eclipse.jface.databinding.viewers.ObservableListTreeCont
> entProvider;
> import org.eclipse.jface.databinding.viewers.ObservableMapLabelProv ider;
> import org.eclipse.jface.databinding.viewers.TreeStructureAdvisor;
> import org.eclipse.jface.viewers.LabelProviderChangedEvent;
> import org.eclipse.jface.viewers.StructuredSelection;
> import org.eclipse.jface.viewers.StyledCellLabelProvider;
> import org.eclipse.jface.viewers.StyledString;
> import org.eclipse.jface.viewers.TreeViewer;
> import org.eclipse.jface.viewers.ViewerCell;
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.widgets.Composite;
> import org.eclipse.ui.part.ViewPart;
>
> import fileexplorer.Directory;
> import fileexplorer.Drive;
> import fileexplorer.File;
>
> import fileexplorer.FileexplorerFactory;
> import fileexplorer.FileexplorerPackage;
>
> public class FileExplorer extends ViewPart {
>
> private TreeViewer viewer;
>
> public FileExplorer() {
> // TODO Auto-generated constructor stub
> }
>
> @Override
> public void createPartControl(Composite parent) {
>
> viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
> ObservableListTreeContentProvider cp = new
> ObservableListTreeContentProvider(new TreeFactoryImpl(), new
> TreeStructureAdvisorImpl());
> viewer.setContentProvider(cp);
> IObservableSet set = cp.getKnownElements();
> IObservableMap[] map = new IObservableMap [5];
> map[0] =
> EMFProperties.value(FileexplorerPackage.Literals.DRIVE__NAME
> ).observeDetail(set);
> map[1] =
> EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__DIRECTORIES,
> FileexplorerPackage.Literals.DIRECTORY__NAME)).observeDetail (set);
> map[2] =
> EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__FILES,
> FileexplorerPackage.Literals.FILE__NAME)).observeDetail(set) ;
> map[3] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__DIRECTORIES,
> FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
> FileexplorerPackage.Literals.DIRECTORY__NAME)).observeDetail (set);
> map[4] = EMFProperties.value(FeaturePath.fromList(FileexplorerPackage
> .Literals.DRIVE__DIRECTORIES,
> FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
> FileexplorerPackage.Literals.FILE__NAME)).observeDetail(set) ;
> // ObservableMapLabelProvider labelProvider =
> new ObservableMapLabelProvider(map);
> // viewer.setLabelProvider(labelProvider);
>
> viewer.setLabelProvider(new TreeLabelProviderImpl(map));
> viewer.setInput(getDrive());
> }
>
> @Override
> public void setFocus() {
> viewer.getControl().setFocus();
> if (viewer.getTree().getItemCount() > 0)
> {
> viewer.setSelection(new
> StructuredSelection(viewer.getTree().getItem(0).getData()));
> }
> }
>
> // Initializing model private Drive getDrive() {
> Drive drive = FileexplorerFactory.eINSTANCE.createDrive();
> drive.setName("C:\\");
> File pagefile = FileexplorerFactory.eINSTANCE.createFile();
> pagefile.setName("pagefile.sys");
> drive.getFiles().add(pagefile);
> Directory windows =
> FileexplorerFactory.eINSTANCE.createDirectory();
> windows.setName("WINDOWS");
> drive.getDirectories().add(windows);
> Directory windowssubdir =
> FileexplorerFactory.eINSTANCE.createDirectory();
> windowssubdir.setName("WINDOWS_SUB");
> windowssubdir.setParent(windows);
> windows.getSubdirectory().add(windowssubdir);
> File pagefile1 = FileexplorerFactory.eINSTANCE.createFile();
> pagefile1.setName("pagefile1.sys");
> windowssubdir.getFile().add(pagefile1);
>
> return drive;
> }
>
> private static class TreeFactoryImpl implements IObservableFactory {
>
> private IEMFListProperty multi = EMFProperties.multiList(
> FileexplorerPackage.Literals.DIRECTORY__SUBDIRECTORY,
> FileexplorerPackage.Literals.DIRECTORY__FILE);
>
> @Override
> public IObservable createObservable(final Object target) {
> if (target instanceof IObservableList)
> {
> return (IObservable)target;
> }
> else if (target instanceof Directory)
> {
> return multi.observe(target);
> }
> return null;
> }
> }
>
> private static class TreeStructureAdvisorImpl extends
> TreeStructureAdvisor {
> @Override
> public Object getParent(Object element)
> {
> if (element instanceof Directory)
> {
> return ((Directory)element).getParent();
> }
> return null;
> }
>
> @Override
> public Boolean hasChildren(Object element)
> {
> if (element instanceof Directory &&
> (((Directory)element).getFile().size() > 0 ||
> ((Directory)element).getSubdirectory().size() > 0))
> {
> return Boolean.TRUE;
> }
> return super.hasChildren(element);
> }
> }
>
> private class TreeLabelProviderImpl extends StyledCellLabelProvider
> {
> private IMapChangeListener mapChangeListener = new
> IMapChangeListener()
> {
> public void handleMapChange(MapChangeEvent event)
> {
> Set< ? > affectedElements = event.diff.getChangedKeys();
> if (!affectedElements.isEmpty())
> {
> LabelProviderChangedEvent newEvent = new
> LabelProviderChangedEvent(TreeLabelProviderImpl.this,
> affectedElements.toArray());
> fireLabelProviderChanged(newEvent);
> }
> }
> };
>
> public TreeLabelProviderImpl(IObservableMap... attributeMaps)
> {
> for (int i = 0; i < attributeMaps.length; i++)
> {
> attributeMaps[i].addMapChangeListener(mapChangeListener);
> }
> }
>
> @Override
> public String getToolTipText(Object element)
> {
> return "#dummy#";
> }
>
> @Override
> public void update(ViewerCell cell)
> {
> if (cell.getElement() instanceof Directory)
> {
> Directory p = (Directory)cell.getElement();
>
> StyledString styledString = new StyledString(p.getName() !=
> null ? p.getName() : "*noname*", null);
> String decoration = " (" + p.getFile().size() + " Files)";
> styledString.append(decoration, StyledString.COUNTER_STYLER);
> cell.setText(styledString.getString());
> //cell.setImage(projectImage);
> cell.setStyleRanges(styledString.getStyleRanges());
> }
> /* else if (cell.getElement() instanceof CommitterShip)
> {
> Person p = ((CommitterShip)cell.getElement()).getPerson();
> String value = "*noname*";
> if (p != null)
> {
> value = p.getLastname() + ", " + p.getFirstname();
> }
> StyledString styledString = new StyledString(value, null);
> cell.setText(styledString.getString());
>
> cell.setForeground(cell.getControl().getDisplay().getSystemC
> olor(SWT.COLOR_DARK_GRAY));
> cell.setImage(committerImage);
> cell.setStyleRanges(styledString.getStyleRanges());
> }*/
> }
> }
> }
Re: Issue with Tree Viewer and EMF Databinding APIs [message #514012 is a reply to message #513818] Fri, 12 February 2010 05:36 Go to previous message
Chandresh Gandhi is currently offline Chandresh GandhiFriend
Messages: 30
Registered: July 2009
Member
Thanks Tom and Ed,

Following code for viewer.setInput() has resolved the issue.

IEMFListProperty directory = EMFProperties.list(FileexplorerPackage.Literals.DRIVE__DIREC TORIES);

viewer.setInput(directory.observe(getDrive()));

Thanks again Smile
Previous Topic:Generated providers and the new eInvoke mechanism
Next Topic:[Databinding] EMFEditListProperty problem
Goto Forum:
  


Current Time: Thu Apr 25 10:05:16 GMT 2024

Powered by FUDForum. Page generated in 0.02761 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top