You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2009/07/21 20:51:41 UTC

svn commit: r796467 [22/25] - in /felix/trunk/sigil: common/core.tests/src/org/apache/felix/sigil/core/ common/core/src/org/apache/felix/sigil/bnd/ common/core/src/org/apache/felix/sigil/config/ common/core/src/org/apache/felix/sigil/core/ common/core/...

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ModelLabelProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ModelLabelProvider.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ModelLabelProvider.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ModelLabelProvider.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import java.util.Set;
 
 import org.apache.felix.sigil.eclipse.SigilCore;
@@ -40,146 +41,198 @@
 import org.eclipse.swt.graphics.Image;
 import org.osgi.framework.Version;
 
-public class ModelLabelProvider extends LabelProvider {
-	
-	private volatile Set<? extends IModelElement> unresolvedElements = null;
-	
-	public Image getImage(Object element) {
-		boolean unresolved = (unresolvedElements == null) ? false : unresolvedElements.contains(element);
-		
-		if ( element instanceof ISigilBundle || element instanceof IBundleModelElement) {
-			return findBundle();
-		} else if(element instanceof IRequiredBundle) {
-			boolean optional = ((IRequiredBundle) element).isOptional();
-			return findRequiredBundle(optional, unresolved);
-		}
-		else if ( element instanceof IPackageImport ) {
-			boolean optional = ((IPackageImport) element).isOptional();
-			return findPackageImport(optional, unresolved);
-		}
-		else if ( element instanceof IPackageExport ) {
-			return findPackageExport();
-		}
-		else if ( element instanceof IPackageFragmentRoot ) {
-			IPackageFragmentRoot root = (IPackageFragmentRoot) element;
-			try {
-				if ( root.getKind() == IPackageFragmentRoot.K_SOURCE ) {
-					return findPackage();
-				}
-				else {
-					return findBundle();
-				}
-			} catch (JavaModelException e) {
-				SigilCore.error( "Failed to inspect package fragment root", e );
-			}
-		}
-		else if ( element instanceof IClasspathEntry ) {
-			return findPackage();
-		}
-		if ( element instanceof IBundleRepository ) {
-			IBundleRepository rep = (IBundleRepository) element;
-			IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository(rep.getId());
-			return config.getType().getIcon();
-		}
-	
-		return null;
-	}
-
-	public String getText(Object element) {
-		if ( element instanceof ISigilBundle ) {
-			ISigilBundle bundle = (ISigilBundle) element;
-			return bundle.getBundleInfo().getSymbolicName() + " " + bundle.getBundleInfo().getVersion(); 
-		}
-		if ( element instanceof IBundleModelElement ) {
-			IBundleModelElement bundle = (IBundleModelElement) element;
-			return bundle.getSymbolicName();
-		}
-		if ( element instanceof IRequiredBundle ) {
-			IRequiredBundle req = (IRequiredBundle) element;
-			return req.getSymbolicName() + " " + req.getVersions();
-		}
-		
-		if ( element instanceof IPackageImport ) {
-			IPackageImport req = (IPackageImport) element;
-			return req.getPackageName() + " " + req.getVersions();
-		}
-		
-		if ( element instanceof IPackageExport ) {
-			IPackageExport pe = (IPackageExport) element;
-			Version rawVersion = pe.getRawVersion();
-			return rawVersion != null ? pe.getPackageName() + " " + rawVersion : pe.getPackageName();
-		}
-		
-		if ( element instanceof IResource ) {
-			IResource resource = (IResource) element;
-			return resource.getName();
-		}
-		
-		if ( element instanceof IPackageFragment )  {
-			IPackageFragment f = (IPackageFragment) element;
-			return f.getElementName();
-		}
-		
-		if ( element instanceof IPackageFragmentRoot ) {
-			IPackageFragmentRoot f = (IPackageFragmentRoot) element;
-			try {
-				return f.getUnderlyingResource().getName();
-			} catch (JavaModelException e) {
-				return "unknown";
-			}
-		}
-		
-		if ( element instanceof IClasspathEntry ) {
-			IClasspathEntry cp = (IClasspathEntry) element;
-			return cp.getPath().toString();
-		}
-		
-		if ( element instanceof IBundleRepository ) {
-			IBundleRepository rep = (IBundleRepository) element;
-			IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository(rep.getId());
-			return config.getName();
-		}
-		
-		return element.toString();
-	}
-
-	private Image findPackage() {
-		return cacheImage( "icons/package_obj.png" ); 
-	}
-
-	private Image findPackageImport(boolean optional, boolean unresolved) {
-		String path;
-		if(optional) {
-			path = unresolved ? "icons/package_obj_import_opt_error.png" : "icons/package_obj_import_opt.png";
-		} else {
-			path = unresolved ? "icons/package_obj_import_error.png" : "icons/package_obj_import.png";
-		}
-		return cacheImage(path);
-	}
-	
-	private Image findPackageExport() {
-		return cacheImage("icons/package_obj_export.png");
-	}
-	
-	private Image findBundle() {
-		return cacheImage("icons/jar_obj.png");
-	}
-	
-	private Image findRequiredBundle(boolean optional, boolean unresolved) {
-		String path;
-		if(optional) {
-			path = unresolved ? "icons/required_bundle_opt_error.png" : "icons/required_bundle_opt.png";
-		} else {
-			path = unresolved ? "icons/required_bundle_error.png" : "icons/jar_obj.png";
-		}
-		return cacheImage(path);
-	}
-	
-	private static Image cacheImage(String path) {
-		return SigilUI.cacheImage(path, ModelLabelProvider.class.getClassLoader());
-	}
-
-	public void setUnresolvedElements(Set<? extends IModelElement> elements) {
-		this.unresolvedElements = elements;
-	}
+
+public class ModelLabelProvider extends LabelProvider
+{
+
+    private volatile Set<? extends IModelElement> unresolvedElements = null;
+
+
+    public Image getImage( Object element )
+    {
+        boolean unresolved = ( unresolvedElements == null ) ? false : unresolvedElements.contains( element );
+
+        if ( element instanceof ISigilBundle || element instanceof IBundleModelElement )
+        {
+            return findBundle();
+        }
+        else if ( element instanceof IRequiredBundle )
+        {
+            boolean optional = ( ( IRequiredBundle ) element ).isOptional();
+            return findRequiredBundle( optional, unresolved );
+        }
+        else if ( element instanceof IPackageImport )
+        {
+            boolean optional = ( ( IPackageImport ) element ).isOptional();
+            return findPackageImport( optional, unresolved );
+        }
+        else if ( element instanceof IPackageExport )
+        {
+            return findPackageExport();
+        }
+        else if ( element instanceof IPackageFragmentRoot )
+        {
+            IPackageFragmentRoot root = ( IPackageFragmentRoot ) element;
+            try
+            {
+                if ( root.getKind() == IPackageFragmentRoot.K_SOURCE )
+                {
+                    return findPackage();
+                }
+                else
+                {
+                    return findBundle();
+                }
+            }
+            catch ( JavaModelException e )
+            {
+                SigilCore.error( "Failed to inspect package fragment root", e );
+            }
+        }
+        else if ( element instanceof IClasspathEntry )
+        {
+            return findPackage();
+        }
+        if ( element instanceof IBundleRepository )
+        {
+            IBundleRepository rep = ( IBundleRepository ) element;
+            IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository( rep.getId() );
+            return config.getType().getIcon();
+        }
+
+        return null;
+    }
+
+
+    public String getText( Object element )
+    {
+        if ( element instanceof ISigilBundle )
+        {
+            ISigilBundle bundle = ( ISigilBundle ) element;
+            return bundle.getBundleInfo().getSymbolicName() + " " + bundle.getBundleInfo().getVersion();
+        }
+        if ( element instanceof IBundleModelElement )
+        {
+            IBundleModelElement bundle = ( IBundleModelElement ) element;
+            return bundle.getSymbolicName();
+        }
+        if ( element instanceof IRequiredBundle )
+        {
+            IRequiredBundle req = ( IRequiredBundle ) element;
+            return req.getSymbolicName() + " " + req.getVersions();
+        }
+
+        if ( element instanceof IPackageImport )
+        {
+            IPackageImport req = ( IPackageImport ) element;
+            return req.getPackageName() + " " + req.getVersions();
+        }
+
+        if ( element instanceof IPackageExport )
+        {
+            IPackageExport pe = ( IPackageExport ) element;
+            Version rawVersion = pe.getRawVersion();
+            return rawVersion != null ? pe.getPackageName() + " " + rawVersion : pe.getPackageName();
+        }
+
+        if ( element instanceof IResource )
+        {
+            IResource resource = ( IResource ) element;
+            return resource.getName();
+        }
+
+        if ( element instanceof IPackageFragment )
+        {
+            IPackageFragment f = ( IPackageFragment ) element;
+            return f.getElementName();
+        }
+
+        if ( element instanceof IPackageFragmentRoot )
+        {
+            IPackageFragmentRoot f = ( IPackageFragmentRoot ) element;
+            try
+            {
+                return f.getUnderlyingResource().getName();
+            }
+            catch ( JavaModelException e )
+            {
+                return "unknown";
+            }
+        }
+
+        if ( element instanceof IClasspathEntry )
+        {
+            IClasspathEntry cp = ( IClasspathEntry ) element;
+            return cp.getPath().toString();
+        }
+
+        if ( element instanceof IBundleRepository )
+        {
+            IBundleRepository rep = ( IBundleRepository ) element;
+            IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository( rep.getId() );
+            return config.getName();
+        }
+
+        return element.toString();
+    }
+
+
+    private Image findPackage()
+    {
+        return cacheImage( "icons/package_obj.png" );
+    }
+
+
+    private Image findPackageImport( boolean optional, boolean unresolved )
+    {
+        String path;
+        if ( optional )
+        {
+            path = unresolved ? "icons/package_obj_import_opt_error.png" : "icons/package_obj_import_opt.png";
+        }
+        else
+        {
+            path = unresolved ? "icons/package_obj_import_error.png" : "icons/package_obj_import.png";
+        }
+        return cacheImage( path );
+    }
+
+
+    private Image findPackageExport()
+    {
+        return cacheImage( "icons/package_obj_export.png" );
+    }
+
+
+    private Image findBundle()
+    {
+        return cacheImage( "icons/jar_obj.png" );
+    }
+
+
+    private Image findRequiredBundle( boolean optional, boolean unresolved )
+    {
+        String path;
+        if ( optional )
+        {
+            path = unresolved ? "icons/required_bundle_opt_error.png" : "icons/required_bundle_opt.png";
+        }
+        else
+        {
+            path = unresolved ? "icons/required_bundle_error.png" : "icons/jar_obj.png";
+        }
+        return cacheImage( path );
+    }
+
+
+    private static Image cacheImage( String path )
+    {
+        return SigilUI.cacheImage( path, ModelLabelProvider.class.getClassLoader() );
+    }
+
+
+    public void setUnresolvedElements( Set<? extends IModelElement> elements )
+    {
+        this.unresolvedElements = elements;
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/PackageFilter.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/PackageFilter.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/PackageFilter.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/PackageFilter.java Tue Jul 21 18:51:33 2009
@@ -19,30 +19,41 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.felix.sigil.model.osgi.IPackageExport;
 import org.apache.felix.sigil.model.osgi.IPackageImport;
 
-public class PackageFilter implements IFilter<IPackageImport> {
-	
-	private Set<String> names = new HashSet<String>();
-	
-	public PackageFilter(String[] packageNames) {
-		for (String name : packageNames) {
-			names.add(name);
-		}
-	}
-	
-	public PackageFilter(IPackageExport[] packages) {
-		for (IPackageExport packageExport : packages) {
-			names.add(packageExport.getPackageName());
-		}
-	}
-
-	public boolean select(IPackageImport element) {
-		return !names.contains(element.getPackageName());
-	}
+
+public class PackageFilter implements IFilter<IPackageImport>
+{
+
+    private Set<String> names = new HashSet<String>();
+
+
+    public PackageFilter( String[] packageNames )
+    {
+        for ( String name : packageNames )
+        {
+            names.add( name );
+        }
+    }
+
+
+    public PackageFilter( IPackageExport[] packages )
+    {
+        for ( IPackageExport packageExport : packages )
+        {
+            names.add( packageExport.getPackageName() );
+        }
+    }
+
+
+    public boolean select( IPackageImport element )
+    {
+        return !names.contains( element.getPackageName() );
+    }
 
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ProjectUtils.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ProjectUtils.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ProjectUtils.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ProjectUtils.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import java.util.concurrent.Callable;
 
 import org.apache.felix.sigil.eclipse.SigilCore;
@@ -29,51 +30,72 @@
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
-public class ProjectUtils {
-	public static boolean runTaskWithRebuildCheck(final Runnable task, Shell shell) {
-		return runTaskWithRebuildCheck( new Callable<Boolean>() {
-			public Boolean call() throws Exception {
-				task.run();
-				return true;
-			}
-		}, shell);
-	}
-	
-	public static boolean runTaskWithRebuildCheck(Callable<Boolean> callable,
-			Shell shell) {
-		int result = checkRebuild(shell);
-		if ( result == IDialogConstants.CANCEL_ID ) {
-			return false;
-		}
-		else {
-			try {
-				if ( Boolean.TRUE == callable.call() ) {
-					if ( result == IDialogConstants.YES_ID ) {
-						SigilUI.runWorkspaceOperation( new WorkspaceModifyOperation() {
-							@Override
-							protected void execute(IProgressMonitor monitor) {
-								SigilCore.rebuildAllBundleDependencies(monitor);
-							}
-						}, shell );
-					}
-					return true;
-				}
-				else {
-					return false;
-				}
-			} catch (Exception e) {
-				SigilCore.error( "Failed to run caller", e);
-				return false;
-			}
-		}
-	}
-	
-	private static int checkRebuild(Shell shell) {
-		if ( SigilCore.getRoot().getProjects().isEmpty() ) {
-			return IDialogConstants.NO_ID;
-		}
-		else {
-			return OptionalPrompt.optionallyPromptWithCancel(SigilCore.getDefault().getPreferenceStore(), SigilCore.PREFERENCES_REBUILD_PROJECTS, "Rebuild", "Do you wish to rebuild all Sigil projects", shell );
-		}
-	}
+
+public class ProjectUtils
+{
+    public static boolean runTaskWithRebuildCheck( final Runnable task, Shell shell )
+    {
+        return runTaskWithRebuildCheck( new Callable<Boolean>()
+        {
+            public Boolean call() throws Exception
+            {
+                task.run();
+                return true;
+            }
+        }, shell );
+    }
+
+
+    public static boolean runTaskWithRebuildCheck( Callable<Boolean> callable, Shell shell )
+    {
+        int result = checkRebuild( shell );
+        if ( result == IDialogConstants.CANCEL_ID )
+        {
+            return false;
+        }
+        else
+        {
+            try
+            {
+                if ( Boolean.TRUE == callable.call() )
+                {
+                    if ( result == IDialogConstants.YES_ID )
+                    {
+                        SigilUI.runWorkspaceOperation( new WorkspaceModifyOperation()
+                        {
+                            @Override
+                            protected void execute( IProgressMonitor monitor )
+                            {
+                                SigilCore.rebuildAllBundleDependencies( monitor );
+                            }
+                        }, shell );
+                    }
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+            catch ( Exception e )
+            {
+                SigilCore.error( "Failed to run caller", e );
+                return false;
+            }
+        }
+    }
+
+
+    private static int checkRebuild( Shell shell )
+    {
+        if ( SigilCore.getRoot().getProjects().isEmpty() )
+        {
+            return IDialogConstants.NO_ID;
+        }
+        else
+        {
+            return OptionalPrompt.optionallyPromptWithCancel( SigilCore.getDefault().getPreferenceStore(),
+                SigilCore.PREFERENCES_REBUILD_PROJECTS, "Rebuild", "Do you wish to rebuild all Sigil projects", shell );
+        }
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourceReviewDialog.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourceReviewDialog.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourceReviewDialog.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourceReviewDialog.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import java.util.Collection;
 
 import org.apache.felix.sigil.model.IModelElement;
@@ -39,73 +40,90 @@
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
 
-public class ResourceReviewDialog<T extends IModelElement> extends TitleAreaDialog {
 
-	private String title;	
-	private Collection<T> resources;
-	
-	private TableViewer viewer;
-
-	public ResourceReviewDialog(Shell parentShell, String title, Collection<T> resources) {
-		super(parentShell);
-		this.title = title;
-		this.resources = resources;
-	}
-
-	public Collection<T> getResources() {
-		return resources;
-	}
-
-	@Override
-	protected Control createDialogArea(Composite parent) {
-		setTitle(title);
-
-		// Create controls
-		Composite container = (Composite) super.createDialogArea(parent);
-		Composite composite = new Composite(container, SWT.NONE);		
-		Table table = new Table(composite, SWT.BORDER | SWT.VIRTUAL);
-		
-		final Button remove = new Button(composite, SWT.PUSH);
-		remove.setText("Remove");
-		remove.setEnabled(false);
-		
-		remove.addSelectionListener( new SelectionAdapter() {
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				handleRemove();
-			}
-		} );
-		
-		viewer = new TableViewer(table);
-		viewer.setContentProvider( new DefaultTableProvider() {
-			public Object[] getElements(Object inputElement) {
-				return toArray(inputElement);
-			}
-		});
-		
-		viewer.setInput( resources );
-		viewer.addSelectionChangedListener( new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				remove.setEnabled(!event.getSelection().isEmpty());
-			}
-		});
-		
-		// layout
-		composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-		composite.setLayout(new GridLayout(2, false));
-		GridData tableLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 4);
-		tableLayoutData.heightHint = 150;
-		table.setLayoutData(tableLayoutData);
-		
-		return container;
-	}
-
-	private void handleRemove() {
-		ISelection s = viewer.getSelection();
-		if ( !s.isEmpty() ) {
-			IStructuredSelection sel = (IStructuredSelection) s;
-			resources.remove( sel.getFirstElement() );
-			viewer.refresh();
-		}
-	}
+public class ResourceReviewDialog<T extends IModelElement> extends TitleAreaDialog
+{
+
+    private String title;
+    private Collection<T> resources;
+
+    private TableViewer viewer;
+
+
+    public ResourceReviewDialog( Shell parentShell, String title, Collection<T> resources )
+    {
+        super( parentShell );
+        this.title = title;
+        this.resources = resources;
+    }
+
+
+    public Collection<T> getResources()
+    {
+        return resources;
+    }
+
+
+    @Override
+    protected Control createDialogArea( Composite parent )
+    {
+        setTitle( title );
+
+        // Create controls
+        Composite container = ( Composite ) super.createDialogArea( parent );
+        Composite composite = new Composite( container, SWT.NONE );
+        Table table = new Table( composite, SWT.BORDER | SWT.VIRTUAL );
+
+        final Button remove = new Button( composite, SWT.PUSH );
+        remove.setText( "Remove" );
+        remove.setEnabled( false );
+
+        remove.addSelectionListener( new SelectionAdapter()
+        {
+            @Override
+            public void widgetSelected( SelectionEvent e )
+            {
+                handleRemove();
+            }
+        } );
+
+        viewer = new TableViewer( table );
+        viewer.setContentProvider( new DefaultTableProvider()
+        {
+            public Object[] getElements( Object inputElement )
+            {
+                return toArray( inputElement );
+            }
+        } );
+
+        viewer.setInput( resources );
+        viewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                remove.setEnabled( !event.getSelection().isEmpty() );
+            }
+        } );
+
+        // layout
+        composite.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+        composite.setLayout( new GridLayout( 2, false ) );
+        GridData tableLayoutData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 4 );
+        tableLayoutData.heightHint = 150;
+        table.setLayoutData( tableLayoutData );
+
+        return container;
+    }
+
+
+    private void handleRemove()
+    {
+        ISelection s = viewer.getSelection();
+        if ( !s.isEmpty() )
+        {
+            IStructuredSelection sel = ( IStructuredSelection ) s;
+            resources.remove( sel.getFirstElement() );
+            viewer.refresh();
+        }
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourcesDialogHelper.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourcesDialogHelper.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourcesDialogHelper.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/ResourcesDialogHelper.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
@@ -51,240 +52,315 @@
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.progress.IJobRunnable;
 
-public class ResourcesDialogHelper {
-	
-	static final int UPDATE_BATCH_SIZE = 100;
-
-	public static BackgroundLoadingSelectionDialog<String> createClassSelectDialog(Shell shell, String title, final ISigilProjectModel project, String selected, final String ifaceOrParentClass) {
-		final BackgroundLoadingSelectionDialog<String> dialog = new BackgroundLoadingSelectionDialog<String>(shell, "Class Name", true);
-		
-		IJobRunnable job = new IJobRunnable() {
-			public IStatus run(IProgressMonitor monitor) {
-				try {
-					for ( IJavaElement e : JavaHelper.findTypes(project.getJavaModel(), IJavaElement.PACKAGE_FRAGMENT_ROOT ) ) {
-						IPackageFragmentRoot root = (IPackageFragmentRoot) e;
-						if ( project.isInBundleClasspath(root)) {
-							for ( IJavaElement e1 : JavaHelper.findTypes(root, IJavaElement.COMPILATION_UNIT, IJavaElement.CLASS_FILE ) ) {
-								ITypeRoot typeRoot = (ITypeRoot) e1;
-								IType type = (IType) JavaHelper.findType(typeRoot, IJavaElement.TYPE);
-								if ( JavaHelper.isAssignableTo( ifaceOrParentClass, type ) ) {
-									dialog.addElement(type.getFullyQualifiedName());					
-								}							
-							}
-						}
-					}
-					
-					return Status.OK_STATUS;
-				} catch (JavaModelException e) {
-					return e.getStatus();
-				}				
-			}
-
-		};
-		
-		dialog.addBackgroundJob("Scanning for activators in project", job);
-
-		return dialog;
-	}
-	
-	public static NewResourceSelectionDialog<IPackageExport> createImportDialog(
-			Shell shell, 
-			String title, 
-			ISigilProjectModel sigil, 
-			final IPackageImport selected, 
-			final Collection<IPackageImport> existing) {
-		final Set<String> existingNames = new HashSet<String>();
-		
-		for (IPackageImport existingImport : existing) {
-			existingNames.add(existingImport.getPackageName());
-		}
-		
-		final NewResourceSelectionDialog<IPackageExport> dialog = new NewResourceSelectionDialog<IPackageExport>(shell, "Package Name:", false);
-		
-		dialog.setFilter( new IFilter<IPackageModelElement>() {
-			public boolean select(IPackageModelElement element) {
-				return !existingNames.contains(element.getPackageName());
-			}
-		} );
-		
-		dialog.setComparator(new Comparator<IPackageExport>() {
-			public int compare(IPackageExport o1, IPackageExport o2) {
-				return o1.compareTo(o2);
-			}
-		});
-		
-		dialog.setDescriptor(new IElementDescriptor<IPackageExport>() {
-			public String getLabel(IPackageExport element) {
-				return getName(element) + " (" + element.getVersion().toString() + ")";
-			}
-
-			public String getName(IPackageExport element) {
-				return element.getPackageName();
-			}
-		});
-		
-		dialog.setLabelProvider(new WrappedContentProposalLabelProvider<IPackageExport>(dialog.getDescriptor()));
-		
-		if(selected != null) {
-			dialog.setSelectedName(selected.getPackageName());
-			dialog.setVersions(selected.getVersions());
-			dialog.setOptional(selected.isOptional());
-		}
-
-		IJobRunnable job = new ExportedPackageFinder(sigil, dialog);
-		dialog.addBackgroundJob("Scanning for exports in workspace", job);
-		
-		return dialog;
-	}
-	
-	public static NewPackageExportDialog createNewExportDialog(Shell shell, String title, final IPackageExport selected, final ISigilProjectModel project, boolean multiSelect) {
-		IFilter<IJavaElement> selectFilter = new IFilter<IJavaElement>() {
-			public boolean select(IJavaElement e) {
-				if ( selected != null && e.getElementName().equals( selected.getPackageName() ) ) {
-					return true;
-				}
-				
-				if ( e.getElementName().trim().length() > 0 && isLocal( e ) ) {
-					for ( IPackageExport p : project.getBundle().getBundleInfo().getExports() ) {
-						if ( p.getPackageName().equals( e.getElementName() ) ) {
-							return false;
-						}
-					}
-					
-					return true;
-				}
-				else {
-					return false;
-				}
-			}
-			
-			private boolean isLocal(IJavaElement java) {
-				try {
-					switch ( java.getElementType() ) {
-					case IJavaElement.PACKAGE_FRAGMENT:
-						IPackageFragment fragment= (IPackageFragment) java;
-						return fragment.containsJavaResources();
-					default:
-						throw new IllegalStateException( "Unexpected resource type " + java );
-					}
-				}
-				catch (JavaModelException e) {
-					SigilCore.error( "Failed to inspect java element ", e );
-					return false;
-				}
-			}
-			
-		};
-		
-		final NewPackageExportDialog dialog = new NewPackageExportDialog(shell, multiSelect);
-		dialog.setFilter(selectFilter);
-		
-		dialog.setProjectVersion(project.getVersion());
-		if ( selected != null ) {
-			dialog.setSelectedName(selected.getPackageName());
-			dialog.setVersion(selected.getRawVersion());
-		}
-		
-		IJobRunnable job = new IJobRunnable() {
-			public IStatus run(IProgressMonitor monitor) {
-				try {
-					ArrayList<IPackageFragment> list = new ArrayList<IPackageFragment>(UPDATE_BATCH_SIZE);
-					for ( IJavaElement e : JavaHelper.findTypes(project.getJavaModel(), IJavaElement.PACKAGE_FRAGMENT_ROOT) ) {
-						IPackageFragmentRoot root = (IPackageFragmentRoot) e;
-						if ( project.isInBundleClasspath(root) ) {
-							for ( IJavaElement e1 : JavaHelper.findTypes(root, IJavaElement.PACKAGE_FRAGMENT) ) {
-								list.add((IPackageFragment) e1);
-								if(list.size() >= UPDATE_BATCH_SIZE) {
-									dialog.addElements(list);
-									list.clear();
-								}
-							}
-						}
-					}
-					if(!list.isEmpty()) {
-						dialog.addElements(list);
-					}
-					return Status.OK_STATUS;
-				} catch (JavaModelException e) {
-					return e.getStatus();
-				}
-			}
-		};
-		
-		dialog.addBackgroundJob("Scanning for packages in project", job);
-		
-		return dialog;
-	}
-	
-	public static NewResourceSelectionDialog<IBundleModelElement> createRequiredBundleDialog(Shell shell, String title, final ISigilProjectModel sigil, final IRequiredBundle selected, final Collection<IRequiredBundle> existing) {
-		final Set<String> existingNames = new HashSet<String>();
-		for(IRequiredBundle existingBundle : existing) {
-			existingNames.add(existingBundle.getSymbolicName());
-		}
-		
-		final NewResourceSelectionDialog<IBundleModelElement> dialog = new NewResourceSelectionDialog<IBundleModelElement>(shell, "Bundle:", false);
-		
-		dialog.setDescriptor(new IElementDescriptor<IBundleModelElement>() {
-			public String getLabel(IBundleModelElement element) {
-				return getName(element) + " (" + element.getVersion() + ")";
-			}
-			public String getName(IBundleModelElement element) {
-				return element.getSymbolicName();
-			}
-		});
-		
-		dialog.setLabelProvider(new WrappedContentProposalLabelProvider<IBundleModelElement>(dialog.getDescriptor()));
-		
-		dialog.setFilter(new IFilter<IBundleModelElement>() {
-			public boolean select(IBundleModelElement element) {
-				return !existingNames.contains(element.getSymbolicName());
-			}
-		});
-		
-		dialog.setComparator(new Comparator<IBundleModelElement>() {
-			public int compare(IBundleModelElement o1, IBundleModelElement o2) {
-				return o1.getSymbolicName().compareTo(o2.getSymbolicName());
-			}
-		});
-		
-		if(selected != null) {
-			dialog.setSelectedName(selected.getSymbolicName());
-			dialog.setVersions(selected.getVersions());
-			dialog.setOptional(selected.isOptional());
-		}
-				
-		IJobRunnable job = new IJobRunnable() {
-			public IStatus run(final IProgressMonitor monitor) {
-				final List<IBundleModelElement> bundles = new ArrayList<IBundleModelElement>(UPDATE_BATCH_SIZE);
-				final IModelWalker walker = new IModelWalker() {
-					//int count = 0;
-					public boolean visit(IModelElement element) {
-						if ( element instanceof  IBundleModelElement) {
-							IBundleModelElement b = (IBundleModelElement) element;
-							bundles.add(b);
-
-							if(bundles.size() >= UPDATE_BATCH_SIZE) {
-								dialog.addElements(bundles);
-								bundles.clear();
-							}
-							// no need to recurse further.
-							return false;
-						}
-						return !monitor.isCanceled();
-					}
-				};
-				SigilCore.getRepositoryManager(sigil).visit(walker);
-				if(!bundles.isEmpty()) {
-					dialog.addElements(bundles);
-				}
-				return Status.OK_STATUS;
-			}
-		};
-		
-		dialog.addBackgroundJob("Scanning for bundles in workspace", job);
-		
-		return dialog;
-	}
-}
+
+public class ResourcesDialogHelper
+{
+
+    static final int UPDATE_BATCH_SIZE = 100;
 
 
+    public static BackgroundLoadingSelectionDialog<String> createClassSelectDialog( Shell shell, String title,
+        final ISigilProjectModel project, String selected, final String ifaceOrParentClass )
+    {
+        final BackgroundLoadingSelectionDialog<String> dialog = new BackgroundLoadingSelectionDialog<String>( shell,
+            "Class Name", true );
+
+        IJobRunnable job = new IJobRunnable()
+        {
+            public IStatus run( IProgressMonitor monitor )
+            {
+                try
+                {
+                    for ( IJavaElement e : JavaHelper.findTypes( project.getJavaModel(),
+                        IJavaElement.PACKAGE_FRAGMENT_ROOT ) )
+                    {
+                        IPackageFragmentRoot root = ( IPackageFragmentRoot ) e;
+                        if ( project.isInBundleClasspath( root ) )
+                        {
+                            for ( IJavaElement e1 : JavaHelper.findTypes( root, IJavaElement.COMPILATION_UNIT,
+                                IJavaElement.CLASS_FILE ) )
+                            {
+                                ITypeRoot typeRoot = ( ITypeRoot ) e1;
+                                IType type = ( IType ) JavaHelper.findType( typeRoot, IJavaElement.TYPE );
+                                if ( JavaHelper.isAssignableTo( ifaceOrParentClass, type ) )
+                                {
+                                    dialog.addElement( type.getFullyQualifiedName() );
+                                }
+                            }
+                        }
+                    }
+
+                    return Status.OK_STATUS;
+                }
+                catch ( JavaModelException e )
+                {
+                    return e.getStatus();
+                }
+            }
+
+        };
+
+        dialog.addBackgroundJob( "Scanning for activators in project", job );
+
+        return dialog;
+    }
+
+
+    public static NewResourceSelectionDialog<IPackageExport> createImportDialog( Shell shell, String title,
+        ISigilProjectModel sigil, final IPackageImport selected, final Collection<IPackageImport> existing )
+    {
+        final Set<String> existingNames = new HashSet<String>();
+
+        for ( IPackageImport existingImport : existing )
+        {
+            existingNames.add( existingImport.getPackageName() );
+        }
+
+        final NewResourceSelectionDialog<IPackageExport> dialog = new NewResourceSelectionDialog<IPackageExport>(
+            shell, "Package Name:", false );
+
+        dialog.setFilter( new IFilter<IPackageModelElement>()
+        {
+            public boolean select( IPackageModelElement element )
+            {
+                return !existingNames.contains( element.getPackageName() );
+            }
+        } );
+
+        dialog.setComparator( new Comparator<IPackageExport>()
+        {
+            public int compare( IPackageExport o1, IPackageExport o2 )
+            {
+                return o1.compareTo( o2 );
+            }
+        } );
+
+        dialog.setDescriptor( new IElementDescriptor<IPackageExport>()
+        {
+            public String getLabel( IPackageExport element )
+            {
+                return getName( element ) + " (" + element.getVersion().toString() + ")";
+            }
+
+
+            public String getName( IPackageExport element )
+            {
+                return element.getPackageName();
+            }
+        } );
+
+        dialog.setLabelProvider( new WrappedContentProposalLabelProvider<IPackageExport>( dialog.getDescriptor() ) );
+
+        if ( selected != null )
+        {
+            dialog.setSelectedName( selected.getPackageName() );
+            dialog.setVersions( selected.getVersions() );
+            dialog.setOptional( selected.isOptional() );
+        }
+
+        IJobRunnable job = new ExportedPackageFinder( sigil, dialog );
+        dialog.addBackgroundJob( "Scanning for exports in workspace", job );
+
+        return dialog;
+    }
+
+
+    public static NewPackageExportDialog createNewExportDialog( Shell shell, String title,
+        final IPackageExport selected, final ISigilProjectModel project, boolean multiSelect )
+    {
+        IFilter<IJavaElement> selectFilter = new IFilter<IJavaElement>()
+        {
+            public boolean select( IJavaElement e )
+            {
+                if ( selected != null && e.getElementName().equals( selected.getPackageName() ) )
+                {
+                    return true;
+                }
+
+                if ( e.getElementName().trim().length() > 0 && isLocal( e ) )
+                {
+                    for ( IPackageExport p : project.getBundle().getBundleInfo().getExports() )
+                    {
+                        if ( p.getPackageName().equals( e.getElementName() ) )
+                        {
+                            return false;
+                        }
+                    }
+
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+
+
+            private boolean isLocal( IJavaElement java )
+            {
+                try
+                {
+                    switch ( java.getElementType() )
+                    {
+                        case IJavaElement.PACKAGE_FRAGMENT:
+                            IPackageFragment fragment = ( IPackageFragment ) java;
+                            return fragment.containsJavaResources();
+                        default:
+                            throw new IllegalStateException( "Unexpected resource type " + java );
+                    }
+                }
+                catch ( JavaModelException e )
+                {
+                    SigilCore.error( "Failed to inspect java element ", e );
+                    return false;
+                }
+            }
+
+        };
+
+        final NewPackageExportDialog dialog = new NewPackageExportDialog( shell, multiSelect );
+        dialog.setFilter( selectFilter );
+
+        dialog.setProjectVersion( project.getVersion() );
+        if ( selected != null )
+        {
+            dialog.setSelectedName( selected.getPackageName() );
+            dialog.setVersion( selected.getRawVersion() );
+        }
+
+        IJobRunnable job = new IJobRunnable()
+        {
+            public IStatus run( IProgressMonitor monitor )
+            {
+                try
+                {
+                    ArrayList<IPackageFragment> list = new ArrayList<IPackageFragment>( UPDATE_BATCH_SIZE );
+                    for ( IJavaElement e : JavaHelper.findTypes( project.getJavaModel(),
+                        IJavaElement.PACKAGE_FRAGMENT_ROOT ) )
+                    {
+                        IPackageFragmentRoot root = ( IPackageFragmentRoot ) e;
+                        if ( project.isInBundleClasspath( root ) )
+                        {
+                            for ( IJavaElement e1 : JavaHelper.findTypes( root, IJavaElement.PACKAGE_FRAGMENT ) )
+                            {
+                                list.add( ( IPackageFragment ) e1 );
+                                if ( list.size() >= UPDATE_BATCH_SIZE )
+                                {
+                                    dialog.addElements( list );
+                                    list.clear();
+                                }
+                            }
+                        }
+                    }
+                    if ( !list.isEmpty() )
+                    {
+                        dialog.addElements( list );
+                    }
+                    return Status.OK_STATUS;
+                }
+                catch ( JavaModelException e )
+                {
+                    return e.getStatus();
+                }
+            }
+        };
+
+        dialog.addBackgroundJob( "Scanning for packages in project", job );
+
+        return dialog;
+    }
+
+
+    public static NewResourceSelectionDialog<IBundleModelElement> createRequiredBundleDialog( Shell shell,
+        String title, final ISigilProjectModel sigil, final IRequiredBundle selected,
+        final Collection<IRequiredBundle> existing )
+    {
+        final Set<String> existingNames = new HashSet<String>();
+        for ( IRequiredBundle existingBundle : existing )
+        {
+            existingNames.add( existingBundle.getSymbolicName() );
+        }
+
+        final NewResourceSelectionDialog<IBundleModelElement> dialog = new NewResourceSelectionDialog<IBundleModelElement>(
+            shell, "Bundle:", false );
+
+        dialog.setDescriptor( new IElementDescriptor<IBundleModelElement>()
+        {
+            public String getLabel( IBundleModelElement element )
+            {
+                return getName( element ) + " (" + element.getVersion() + ")";
+            }
+
+
+            public String getName( IBundleModelElement element )
+            {
+                return element.getSymbolicName();
+            }
+        } );
+
+        dialog
+            .setLabelProvider( new WrappedContentProposalLabelProvider<IBundleModelElement>( dialog.getDescriptor() ) );
+
+        dialog.setFilter( new IFilter<IBundleModelElement>()
+        {
+            public boolean select( IBundleModelElement element )
+            {
+                return !existingNames.contains( element.getSymbolicName() );
+            }
+        } );
+
+        dialog.setComparator( new Comparator<IBundleModelElement>()
+        {
+            public int compare( IBundleModelElement o1, IBundleModelElement o2 )
+            {
+                return o1.getSymbolicName().compareTo( o2.getSymbolicName() );
+            }
+        } );
+
+        if ( selected != null )
+        {
+            dialog.setSelectedName( selected.getSymbolicName() );
+            dialog.setVersions( selected.getVersions() );
+            dialog.setOptional( selected.isOptional() );
+        }
+
+        IJobRunnable job = new IJobRunnable()
+        {
+            public IStatus run( final IProgressMonitor monitor )
+            {
+                final List<IBundleModelElement> bundles = new ArrayList<IBundleModelElement>( UPDATE_BATCH_SIZE );
+                final IModelWalker walker = new IModelWalker()
+                {
+                    //int count = 0;
+                    public boolean visit( IModelElement element )
+                    {
+                        if ( element instanceof IBundleModelElement )
+                        {
+                            IBundleModelElement b = ( IBundleModelElement ) element;
+                            bundles.add( b );
+
+                            if ( bundles.size() >= UPDATE_BATCH_SIZE )
+                            {
+                                dialog.addElements( bundles );
+                                bundles.clear();
+                            }
+                            // no need to recurse further.
+                            return false;
+                        }
+                        return !monitor.isCanceled();
+                    }
+                };
+                SigilCore.getRepositoryManager( sigil ).visit( walker );
+                if ( !bundles.isEmpty() )
+                {
+                    dialog.addElements( bundles );
+                }
+                return Status.OK_STATUS;
+            }
+        };
+
+        dialog.addBackgroundJob( "Scanning for bundles in workspace", job );
+
+        return dialog;
+    }
+}

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/SingletonSelection.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/SingletonSelection.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/SingletonSelection.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/SingletonSelection.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -26,38 +27,55 @@
 
 import org.eclipse.jface.viewers.IStructuredSelection;
 
+
 @SuppressWarnings("unchecked")
-public class SingletonSelection implements IStructuredSelection {
+public class SingletonSelection implements IStructuredSelection
+{
+
+    private final Object singleton;
+
+
+    public SingletonSelection( Object singleton )
+    {
+        this.singleton = singleton;
+    }
+
+
+    public Object getFirstElement()
+    {
+        return singleton;
+    }
+
+
+    public Iterator iterator()
+    {
+        return Collections.singleton( singleton ).iterator();
+    }
+
+
+    public int size()
+    {
+        return 1;
+    }
+
+
+    public Object[] toArray()
+    {
+        return new Object[]
+            { singleton };
+    }
+
+
+    public List toList()
+    {
+        ArrayList list = new ArrayList( 1 );
+        list.add( singleton );
+        return list;
+    }
+
 
-	private final Object singleton;
-	
-	public SingletonSelection(Object singleton) {
-		this.singleton = singleton;
-	}
-
-	public Object getFirstElement() {
-		return singleton;
-	}
-
-	public Iterator iterator() {
-		return Collections.singleton(singleton).iterator();
-	}
-
-	public int size() {
-		return 1;
-	}
-
-	public Object[] toArray() {
-		return new Object[] { singleton };
-	}
-
-	public List toList() {
-		ArrayList list = new ArrayList(1);
-		list.add( singleton );
-		return list;
-	}
-
-	public boolean isEmpty() {
-		return false;
-	}
+    public boolean isEmpty()
+    {
+        return false;
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/WrappedContentProposalLabelProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/WrappedContentProposalLabelProvider.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/WrappedContentProposalLabelProvider.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/util/WrappedContentProposalLabelProvider.java Tue Jul 21 18:51:33 2009
@@ -19,41 +19,55 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.util;
 
+
 import org.apache.felix.sigil.ui.eclipse.ui.editors.project.IElementDescriptor;
 import org.apache.felix.sigil.ui.eclipse.ui.editors.project.WrappedContentProposal;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.swt.graphics.Image;
 
-public class WrappedContentProposalLabelProvider<E> extends LabelProvider {
-	
-	private final IElementDescriptor<? super E> descriptor;
-	private final ModelLabelProvider projectLabelProvider;
-
-	public WrappedContentProposalLabelProvider(IElementDescriptor<? super E> descriptor) {
-		this.descriptor = descriptor;
-		projectLabelProvider = new ModelLabelProvider();
-	}
-	
-	@SuppressWarnings("unchecked")
-	private E adapt(Object element) {
-		E result;
-		if(element instanceof WrappedContentProposal<?>) {
-			WrappedContentProposal<?> proposal = (WrappedContentProposal<?>) element;
-			result = (E) proposal.getElement();
-		} else {
-			result = (E) element;
-		}
-		return result;
-	}
-	
-	@Override
-	public Image getImage(Object element) {
-		Object value = adapt(element);
-		return projectLabelProvider.getImage(value);
-	}
-	
-	@Override
-	public String getText(Object element) {
-		return descriptor.getLabel(adapt(element));
-	}
+
+public class WrappedContentProposalLabelProvider<E> extends LabelProvider
+{
+
+    private final IElementDescriptor<? super E> descriptor;
+    private final ModelLabelProvider projectLabelProvider;
+
+
+    public WrappedContentProposalLabelProvider( IElementDescriptor<? super E> descriptor )
+    {
+        this.descriptor = descriptor;
+        projectLabelProvider = new ModelLabelProvider();
+    }
+
+
+    @SuppressWarnings("unchecked")
+    private E adapt( Object element )
+    {
+        E result;
+        if ( element instanceof WrappedContentProposal<?> )
+        {
+            WrappedContentProposal<?> proposal = ( WrappedContentProposal<?> ) element;
+            result = ( E ) proposal.getElement();
+        }
+        else
+        {
+            result = ( E ) element;
+        }
+        return result;
+    }
+
+
+    @Override
+    public Image getImage( Object element )
+    {
+        Object value = adapt( element );
+        return projectLabelProvider.getImage( value );
+    }
+
+
+    @Override
+    public String getText( Object element )
+    {
+        return descriptor.getLabel( adapt( element ) );
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/ModelElementComparator.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/ModelElementComparator.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/ModelElementComparator.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/ModelElementComparator.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.views;
 
+
 import org.apache.felix.sigil.model.osgi.IPackageExport;
 import org.apache.felix.sigil.model.osgi.IPackageImport;
 import org.apache.felix.sigil.model.osgi.IRequiredBundle;
@@ -28,68 +29,90 @@
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerComparator;
 
-public class ModelElementComparator extends ViewerComparator {
-	private static final int EXPORT_GROUP = 0;
-	private static final int IMPORT_GROUP = 1;
-	private static final int REQUIRE_GROUP = 2;
-	private static final int OTHER_GROUP = 4;
-	public int category(Object element) {
-		if ( element instanceof IPackageImport ) {
-			return IMPORT_GROUP;
-		}
-		else if ( element instanceof IPackageExport ) {
-			return EXPORT_GROUP;
-		}
-		else if ( element instanceof IRequiredBundle ) {
-			return REQUIRE_GROUP;
-		}
-		else {
-			return OTHER_GROUP;
-		}
-	}
-	@SuppressWarnings("unchecked")
-	@Override
-	public int compare(Viewer viewer, Object e1, Object e2) {
-        int cat1 = category(e1);
-        int cat2 = category(e2);
-
-        if (cat1 != cat2) {
-			return cat1 - cat2;
-		}
-        
-        if ( cat1 == OTHER_GROUP ) {
+
+public class ModelElementComparator extends ViewerComparator
+{
+    private static final int EXPORT_GROUP = 0;
+    private static final int IMPORT_GROUP = 1;
+    private static final int REQUIRE_GROUP = 2;
+    private static final int OTHER_GROUP = 4;
+
+
+    public int category( Object element )
+    {
+        if ( element instanceof IPackageImport )
+        {
+            return IMPORT_GROUP;
+        }
+        else if ( element instanceof IPackageExport )
+        {
+            return EXPORT_GROUP;
+        }
+        else if ( element instanceof IRequiredBundle )
+        {
+            return REQUIRE_GROUP;
+        }
+        else
+        {
+            return OTHER_GROUP;
+        }
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public int compare( Viewer viewer, Object e1, Object e2 )
+    {
+        int cat1 = category( e1 );
+        int cat2 = category( e2 );
+
+        if ( cat1 != cat2 )
+        {
+            return cat1 - cat2;
+        }
+
+        if ( cat1 == OTHER_GROUP )
+        {
             String name1;
             String name2;
 
-            if (viewer == null || !(viewer instanceof ContentViewer)) {
+            if ( viewer == null || !( viewer instanceof ContentViewer ) )
+            {
                 name1 = e1.toString();
                 name2 = e2.toString();
-            } else {
-                IBaseLabelProvider prov = ((ContentViewer) viewer)
-                        .getLabelProvider();
-                if (prov instanceof ILabelProvider) {
-                    ILabelProvider lprov = (ILabelProvider) prov;
-                    name1 = lprov.getText(e1);
-                    name2 = lprov.getText(e2);
-                } else {
+            }
+            else
+            {
+                IBaseLabelProvider prov = ( ( ContentViewer ) viewer ).getLabelProvider();
+                if ( prov instanceof ILabelProvider )
+                {
+                    ILabelProvider lprov = ( ILabelProvider ) prov;
+                    name1 = lprov.getText( e1 );
+                    name2 = lprov.getText( e2 );
+                }
+                else
+                {
                     name1 = e1.toString();
                     name2 = e2.toString();
                 }
             }
-            if (name1 == null) {
-    			name1 = "";//$NON-NLS-1$
-    		}
-            if (name2 == null) {
-    			name2 = "";//$NON-NLS-1$
-    		}
+            if ( name1 == null )
+            {
+                name1 = "";//$NON-NLS-1$
+            }
+            if ( name2 == null )
+            {
+                name2 = "";//$NON-NLS-1$
+            }
 
             // use the comparator to compare the strings
-            return getComparator().compare(name1, name2);
+            return getComparator().compare( name1, name2 );
         }
-        else {
-        	Comparable c1 = (Comparable) e1;
-        	Comparable c2 = (Comparable) e2;
-        	return c1.compareTo(c2);
+        else
+        {
+            Comparable c1 = ( Comparable ) e1;
+            Comparable c2 = ( Comparable ) e2;
+            return c1.compareTo( c2 );
         }
-	}
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/RepositoryViewPart.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/RepositoryViewPart.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/RepositoryViewPart.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/RepositoryViewPart.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.views;
 
+
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -58,263 +59,341 @@
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.part.ViewPart;
 
-public class RepositoryViewPart extends ViewPart implements IRepositoryChangeListener {
 
-	public class FindUsersAction extends Action {
-		@Override
-		public String getText() {
-			return "Find Uses";
-		}
-
-		@Override
-		public void run() {
-			ISelection s = treeViewer.getSelection();
-			if ( !s.isEmpty() ) {
-				IStructuredSelection sel = (IStructuredSelection) s;
-				IModelElement e = (IModelElement) sel.getFirstElement();
-				List<IModelElement>	users = ModelHelper.findUsers(e);
-				String msg = null;
-				if ( users.isEmpty() ) {
-					msg = "No users of " + e;
-				}
-				else {
-					StringBuilder b = new StringBuilder();	
-					for ( IModelElement u : users ) {
-						ISigilBundle bndl = u.getAncestor(ISigilBundle.class);
-						b.append( bndl );
-						b.append( "->" );
-						b.append( u );
-						b.append( "\n" );
-					}
-					msg = b.toString();
-				}
-				MessageDialog.openInformation(getViewSite().getShell(), "Information", msg );
-			}
-		}
-	}
-
-	class RepositoryAction extends Action {
-		final IBundleRepository rep;
-		final IRepositoryModel model;
-		
-		public RepositoryAction(IBundleRepository rep) {
-			this.rep = rep;
-			this.model = SigilCore.getRepositoryConfiguration().findRepository(rep.getId());
-		}
-		
-		
-		@Override
-		public void run() {
-			treeViewer.setInput(rep);
-			createMenu();
-		}
-
-		@Override
-		public String getText() {
-			String name = model.getName(); 
-			if ( treeViewer.getInput() == rep ) {
-				name = "> " + name;
-			}
-			return name;
-		}
-		
-		@Override
-		public ImageDescriptor getImageDescriptor() {
-			Image img = model.getType().getIcon();
-			if ( img == null ) {
-				return ImageDescriptor.createFromFile(RepositoryViewPart.class, "/icons/jars_obj.png");
-			}
-			else {
-				return ImageDescriptor.createFromImage(img);
-			}
-		}
-	}
-	
-	class RefreshAction extends Action {
-		@Override
-		public void run() {
-			IBundleRepository rep = (IBundleRepository) treeViewer.getInput();
-			if ( rep != null ) {
-				rep.refresh();
-				treeViewer.refresh();
-			}
-		}
-
-		@Override
-		public String getText() {
-			return "Refresh";
-		}
-		
-		@Override
-		public ImageDescriptor getImageDescriptor() {
-			return ImageDescriptor.createFromFile(RepositoryViewPart.class, "/icons/refreshBundle.png");
-		}
-
-	}
-
-	private TreeViewer treeViewer;
-
-	@Override
-	public void createPartControl(Composite parent) {
-		createBody(parent);
-		createMenu();
-		SigilCore.getGlobalRepositoryManager().addRepositoryChangeListener(this);
-	}
-
-	@Override
-	public void dispose() {
-		SigilCore.getGlobalRepositoryManager().removeRepositoryChangeListener(this);
-		super.dispose();
-	}
-
-	private void createMenu() {
-		createTopMenu();
-		createLocalMenu();
-	}
-
-	private void createLocalMenu() {
-		/*MenuManager menuMgr = new MenuManager();
-		menuMgr.add( new FindUsersAction() );
-		Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
-
-		treeViewer.getControl().setMenu(menu);
-		getViewSite().registerContextMenu(menuMgr, treeViewer); */
-		IActionBars bars = getViewSite().getActionBars();
-		IToolBarManager toolBar = bars.getToolBarManager();
-		toolBar.add( new RefreshAction() );
-	}
-
-	private void createTopMenu() {
-		IActionBars bars = getViewSite().getActionBars();
-		IMenuManager menu = bars.getMenuManager();
-		menu.removeAll();
-		for ( final IBundleRepository rep : SigilCore.getGlobalRepositoryManager().getRepositories() ) {
-			if ( treeViewer.getInput() == null ) {
-				treeViewer.setInput(rep);
-			}
-			
-			RepositoryAction action = new RepositoryAction(rep);
-			menu.add( action );			
-		}
-	}
-
-	private void createBody(Composite parent) {
-		// components
-		Composite control = new Composite(parent, SWT.NONE);
-		Tree tree = new Tree(control, SWT.NONE);
-		
-		// layout
-		control.setLayout( new GridLayout(1, false ) );
-		tree.setLayoutData( new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1) );
-		
-		// viewer
-		treeViewer = new TreeViewer(tree);
-		treeViewer.setContentProvider( new DefaultTreeContentProvider() {
-			public Object[] getChildren(Object parentElement) {
-				if ( parentElement instanceof ICompoundModelElement ) {
-					ICompoundModelElement model = (ICompoundModelElement) parentElement;
-					return model.children();
-				}
-				
-				return null;
-			}
-
-			public Object getParent(Object element) {
-				if ( element instanceof IModelElement ) {
-					IModelElement model = (IModelElement) element;
-					return model.getParent();
-				}
-				
-				return null;
-			}
-
-			public boolean hasChildren(Object element) {
-				if ( element instanceof ICompoundModelElement ) {
-					ICompoundModelElement model = (ICompoundModelElement) element;
-					return model.children().length > 0;
-				}
-				return false;
-			}
-
-			public Object[] getElements(Object inputElement) {
-				IBundleRepository rep = (IBundleRepository) inputElement;
-				return getBundles(rep);
-			}
-		});
-		
-		treeViewer.setComparator( new ModelElementComparator() );
-		
-		treeViewer.setLabelProvider( new ModelLabelProvider() );
-		
-		treeViewer.addDragSupport(DND.DROP_LINK, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceAdapter() {
-			@Override
-			public void dragFinished(DragSourceEvent event) {
-				// TODO Auto-generated method stub
-				super.dragFinished(event);
-			}
-
-			@Override
-			public void dragSetData(DragSourceEvent event) {
-				// TODO Auto-generated method stub
-				super.dragSetData(event);
-			}
-
-			@SuppressWarnings("unchecked")
-			@Override
-			public void dragStart(DragSourceEvent event) {
-				if ( treeViewer.getSelection().isEmpty() ) {
-					IStructuredSelection sel = (IStructuredSelection) treeViewer.getSelection();
-					for ( Iterator<IModelElement> i = sel.iterator(); i.hasNext(); ) {
-						IModelElement e = i.next();
-						if ( e instanceof ISigilBundle ) {
-							event.data = e;
-						}
-						else {
-							event.doit = false;
-						}
-					}
-				}
-				else {
-					event.doit = false;
-				}
-			}
-		});
-	}
-
-	@Override
-	public void setFocus() {
-	}
-
-	public void repositoryChanged(RepositoryChangeEvent event) {
-		switch ( event.getType() ) {
-		case ADDED:
-			createTopMenu();
-			break;
-		case CHANGED:
-			if ( event.getRepository() == treeViewer.getInput() ) {
-				SigilUI.runInUI( new Runnable() {
-					public void run() {
-						treeViewer.refresh();
-					} 					
-				} );
-			}
-			break;
-		case REMOVED:
-			if ( event.getRepository() == treeViewer.getInput() ) {
-				treeViewer.setInput(null);
-			}
-			createTopMenu();
-		}
-	}
-	
-	private Object[] getBundles(IBundleRepository repository) {
-		final LinkedList<ISigilBundle> bundles = new LinkedList<ISigilBundle>();
-		repository.accept(new IRepositoryVisitor() {
-			public boolean visit(ISigilBundle bundle) {
-				bundles.add(bundle);
-				return true;
-			}
-		});
-		return bundles.toArray();
-	}
+public class RepositoryViewPart extends ViewPart implements IRepositoryChangeListener
+{
+
+    public class FindUsersAction extends Action
+    {
+        @Override
+        public String getText()
+        {
+            return "Find Uses";
+        }
+
+
+        @Override
+        public void run()
+        {
+            ISelection s = treeViewer.getSelection();
+            if ( !s.isEmpty() )
+            {
+                IStructuredSelection sel = ( IStructuredSelection ) s;
+                IModelElement e = ( IModelElement ) sel.getFirstElement();
+                List<IModelElement> users = ModelHelper.findUsers( e );
+                String msg = null;
+                if ( users.isEmpty() )
+                {
+                    msg = "No users of " + e;
+                }
+                else
+                {
+                    StringBuilder b = new StringBuilder();
+                    for ( IModelElement u : users )
+                    {
+                        ISigilBundle bndl = u.getAncestor( ISigilBundle.class );
+                        b.append( bndl );
+                        b.append( "->" );
+                        b.append( u );
+                        b.append( "\n" );
+                    }
+                    msg = b.toString();
+                }
+                MessageDialog.openInformation( getViewSite().getShell(), "Information", msg );
+            }
+        }
+    }
+
+    class RepositoryAction extends Action
+    {
+        final IBundleRepository rep;
+        final IRepositoryModel model;
+
+
+        public RepositoryAction( IBundleRepository rep )
+        {
+            this.rep = rep;
+            this.model = SigilCore.getRepositoryConfiguration().findRepository( rep.getId() );
+        }
+
+
+        @Override
+        public void run()
+        {
+            treeViewer.setInput( rep );
+            createMenu();
+        }
+
+
+        @Override
+        public String getText()
+        {
+            String name = model.getName();
+            if ( treeViewer.getInput() == rep )
+            {
+                name = "> " + name;
+            }
+            return name;
+        }
+
+
+        @Override
+        public ImageDescriptor getImageDescriptor()
+        {
+            Image img = model.getType().getIcon();
+            if ( img == null )
+            {
+                return ImageDescriptor.createFromFile( RepositoryViewPart.class, "/icons/jars_obj.png" );
+            }
+            else
+            {
+                return ImageDescriptor.createFromImage( img );
+            }
+        }
+    }
+
+    class RefreshAction extends Action
+    {
+        @Override
+        public void run()
+        {
+            IBundleRepository rep = ( IBundleRepository ) treeViewer.getInput();
+            if ( rep != null )
+            {
+                rep.refresh();
+                treeViewer.refresh();
+            }
+        }
+
+
+        @Override
+        public String getText()
+        {
+            return "Refresh";
+        }
+
+
+        @Override
+        public ImageDescriptor getImageDescriptor()
+        {
+            return ImageDescriptor.createFromFile( RepositoryViewPart.class, "/icons/refreshBundle.png" );
+        }
+
+    }
+
+    private TreeViewer treeViewer;
+
+
+    @Override
+    public void createPartControl( Composite parent )
+    {
+        createBody( parent );
+        createMenu();
+        SigilCore.getGlobalRepositoryManager().addRepositoryChangeListener( this );
+    }
+
+
+    @Override
+    public void dispose()
+    {
+        SigilCore.getGlobalRepositoryManager().removeRepositoryChangeListener( this );
+        super.dispose();
+    }
+
+
+    private void createMenu()
+    {
+        createTopMenu();
+        createLocalMenu();
+    }
+
+
+    private void createLocalMenu()
+    {
+        /*MenuManager menuMgr = new MenuManager();
+        menuMgr.add( new FindUsersAction() );
+        Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
+
+        treeViewer.getControl().setMenu(menu);
+        getViewSite().registerContextMenu(menuMgr, treeViewer); */
+        IActionBars bars = getViewSite().getActionBars();
+        IToolBarManager toolBar = bars.getToolBarManager();
+        toolBar.add( new RefreshAction() );
+    }
+
+
+    private void createTopMenu()
+    {
+        IActionBars bars = getViewSite().getActionBars();
+        IMenuManager menu = bars.getMenuManager();
+        menu.removeAll();
+        for ( final IBundleRepository rep : SigilCore.getGlobalRepositoryManager().getRepositories() )
+        {
+            if ( treeViewer.getInput() == null )
+            {
+                treeViewer.setInput( rep );
+            }
+
+            RepositoryAction action = new RepositoryAction( rep );
+            menu.add( action );
+        }
+    }
+
+
+    private void createBody( Composite parent )
+    {
+        // components
+        Composite control = new Composite( parent, SWT.NONE );
+        Tree tree = new Tree( control, SWT.NONE );
+
+        // layout
+        control.setLayout( new GridLayout( 1, false ) );
+        tree.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 1 ) );
+
+        // viewer
+        treeViewer = new TreeViewer( tree );
+        treeViewer.setContentProvider( new DefaultTreeContentProvider()
+        {
+            public Object[] getChildren( Object parentElement )
+            {
+                if ( parentElement instanceof ICompoundModelElement )
+                {
+                    ICompoundModelElement model = ( ICompoundModelElement ) parentElement;
+                    return model.children();
+                }
+
+                return null;
+            }
+
+
+            public Object getParent( Object element )
+            {
+                if ( element instanceof IModelElement )
+                {
+                    IModelElement model = ( IModelElement ) element;
+                    return model.getParent();
+                }
+
+                return null;
+            }
+
+
+            public boolean hasChildren( Object element )
+            {
+                if ( element instanceof ICompoundModelElement )
+                {
+                    ICompoundModelElement model = ( ICompoundModelElement ) element;
+                    return model.children().length > 0;
+                }
+                return false;
+            }
+
+
+            public Object[] getElements( Object inputElement )
+            {
+                IBundleRepository rep = ( IBundleRepository ) inputElement;
+                return getBundles( rep );
+            }
+        } );
+
+        treeViewer.setComparator( new ModelElementComparator() );
+
+        treeViewer.setLabelProvider( new ModelLabelProvider() );
+
+        treeViewer.addDragSupport( DND.DROP_LINK, new Transfer[]
+            { LocalSelectionTransfer.getTransfer() }, new DragSourceAdapter()
+        {
+            @Override
+            public void dragFinished( DragSourceEvent event )
+            {
+                // TODO Auto-generated method stub
+                super.dragFinished( event );
+            }
+
+
+            @Override
+            public void dragSetData( DragSourceEvent event )
+            {
+                // TODO Auto-generated method stub
+                super.dragSetData( event );
+            }
+
+
+            @SuppressWarnings("unchecked")
+            @Override
+            public void dragStart( DragSourceEvent event )
+            {
+                if ( treeViewer.getSelection().isEmpty() )
+                {
+                    IStructuredSelection sel = ( IStructuredSelection ) treeViewer.getSelection();
+                    for ( Iterator<IModelElement> i = sel.iterator(); i.hasNext(); )
+                    {
+                        IModelElement e = i.next();
+                        if ( e instanceof ISigilBundle )
+                        {
+                            event.data = e;
+                        }
+                        else
+                        {
+                            event.doit = false;
+                        }
+                    }
+                }
+                else
+                {
+                    event.doit = false;
+                }
+            }
+        } );
+    }
+
+
+    @Override
+    public void setFocus()
+    {
+    }
+
+
+    public void repositoryChanged( RepositoryChangeEvent event )
+    {
+        switch ( event.getType() )
+        {
+            case ADDED:
+                createTopMenu();
+                break;
+            case CHANGED:
+                if ( event.getRepository() == treeViewer.getInput() )
+                {
+                    SigilUI.runInUI( new Runnable()
+                    {
+                        public void run()
+                        {
+                            treeViewer.refresh();
+                        }
+                    } );
+                }
+                break;
+            case REMOVED:
+                if ( event.getRepository() == treeViewer.getInput() )
+                {
+                    treeViewer.setInput( null );
+                }
+                createTopMenu();
+        }
+    }
+
+
+    private Object[] getBundles( IBundleRepository repository )
+    {
+        final LinkedList<ISigilBundle> bundles = new LinkedList<ISigilBundle>();
+        repository.accept( new IRepositoryVisitor()
+        {
+            public boolean visit( ISigilBundle bundle )
+            {
+                bundles.add( bundle );
+                return true;
+            }
+        } );
+        return bundles.toArray();
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleConnectionHighlighter.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleConnectionHighlighter.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleConnectionHighlighter.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleConnectionHighlighter.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.views.resolution;
 
+
 import java.util.Set;
 
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
@@ -31,89 +32,117 @@
 import org.eclipse.zest.core.widgets.GraphItem;
 import org.eclipse.zest.core.widgets.GraphNode;
 
-public class BundleConnectionHighlighter implements ISelectionChangedListener {
 
-	private BundleResolverView view;
-	
-	public BundleConnectionHighlighter(BundleResolverView view) {
-		this.view = view;
-	}
-	
-	public void selectionChanged(SelectionChangedEvent event) {
-		ISelection selection = event.getSelection();
-		if ( !selection.isEmpty() ) {
-			IStructuredSelection str = (IStructuredSelection) selection;
-
-			Object sel = str.getFirstElement();
-			
-			if ( sel instanceof ISigilBundle ) {
-				BundleGraph graph = (BundleGraph) view.getBundlegraph();
-
-				ISigilBundle selected = (ISigilBundle) sel;
-				Set<ISigilBundle> connected = graph.getTargets(selected);
-
-				highlightLinks(graph, selected, connected);
-				highlightBundles(graph, selected, connected);
-			}
-			else if ( sel instanceof Link ) {
-				GraphConnection c = (GraphConnection) findGraphItem(sel);
-				if ( c != null ) {
-					c.unhighlight();
-					c.setHighlightColor(ColorConstants.blue);
-					c.highlight();
-				}
-			}
-		}
-		else {
-			// TODO clear highlights...
-		}
-	}
-
-	private void highlightBundles(BundleGraph graph, ISigilBundle selected, Set<ISigilBundle> connected) {
-		for ( ISigilBundle bundle : graph.getBundles() ) {
-			GraphNode node = (GraphNode) findGraphItem(bundle);
-			if ( node != null ) {
-				node.unhighlight();
-
-				if ( bundle == selected ) {
-					node.setHighlightColor(ColorConstants.yellow);
-					node.highlight();
-				}
-				else if ( view.isDisplayed(BundleResolverView.DEPENDENTS) ) {
-					if ( connected.contains(bundle) ) {
-						node.setHighlightColor(ColorConstants.lightBlue);
-						node.highlight();
-					}
-				}
-			}
-		}
-	}
-	
-	private void highlightLinks(BundleGraph graph, ISigilBundle selected, Set<ISigilBundle> connected) {
-		for ( Link l : graph.getLinks() ) {
-			GraphConnection c = (GraphConnection) findGraphItem(l);
-			if ( c != null ) {
-				c.unhighlight();
-
-				if ( view.isDisplayed(BundleResolverView.DEPENDENTS) ) {
-					if ( l.getSource() == selected && connected.contains( l.getTarget() ) ) {
-						c.setHighlightColor(ColorConstants.lightBlue);
-						c.highlight();
-					}
-				}
-			}
-		}
-	}
-
-	private GraphItem findGraphItem(Object l) {
-		try {
-			return view.getGraphViewer().findGraphItem(l);
-		}
-		catch (ArrayIndexOutOfBoundsException e) {
-			// temporary fix for issue 
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=242523
-			return null;
-		}
-	}
+public class BundleConnectionHighlighter implements ISelectionChangedListener
+{
+
+    private BundleResolverView view;
+
+
+    public BundleConnectionHighlighter( BundleResolverView view )
+    {
+        this.view = view;
+    }
+
+
+    public void selectionChanged( SelectionChangedEvent event )
+    {
+        ISelection selection = event.getSelection();
+        if ( !selection.isEmpty() )
+        {
+            IStructuredSelection str = ( IStructuredSelection ) selection;
+
+            Object sel = str.getFirstElement();
+
+            if ( sel instanceof ISigilBundle )
+            {
+                BundleGraph graph = ( BundleGraph ) view.getBundlegraph();
+
+                ISigilBundle selected = ( ISigilBundle ) sel;
+                Set<ISigilBundle> connected = graph.getTargets( selected );
+
+                highlightLinks( graph, selected, connected );
+                highlightBundles( graph, selected, connected );
+            }
+            else if ( sel instanceof Link )
+            {
+                GraphConnection c = ( GraphConnection ) findGraphItem( sel );
+                if ( c != null )
+                {
+                    c.unhighlight();
+                    c.setHighlightColor( ColorConstants.blue );
+                    c.highlight();
+                }
+            }
+        }
+        else
+        {
+            // TODO clear highlights...
+        }
+    }
+
+
+    private void highlightBundles( BundleGraph graph, ISigilBundle selected, Set<ISigilBundle> connected )
+    {
+        for ( ISigilBundle bundle : graph.getBundles() )
+        {
+            GraphNode node = ( GraphNode ) findGraphItem( bundle );
+            if ( node != null )
+            {
+                node.unhighlight();
+
+                if ( bundle == selected )
+                {
+                    node.setHighlightColor( ColorConstants.yellow );
+                    node.highlight();
+                }
+                else if ( view.isDisplayed( BundleResolverView.DEPENDENTS ) )
+                {
+                    if ( connected.contains( bundle ) )
+                    {
+                        node.setHighlightColor( ColorConstants.lightBlue );
+                        node.highlight();
+                    }
+                }
+            }
+        }
+    }
+
+
+    private void highlightLinks( BundleGraph graph, ISigilBundle selected, Set<ISigilBundle> connected )
+    {
+        for ( Link l : graph.getLinks() )
+        {
+            GraphConnection c = ( GraphConnection ) findGraphItem( l );
+            if ( c != null )
+            {
+                c.unhighlight();
+
+                if ( view.isDisplayed( BundleResolverView.DEPENDENTS ) )
+                {
+                    if ( l.getSource() == selected && connected.contains( l.getTarget() ) )
+                    {
+                        c.setHighlightColor( ColorConstants.lightBlue );
+                        c.highlight();
+                    }
+                }
+            }
+        }
+    }
+
+
+    private GraphItem findGraphItem( Object l )
+    {
+        try
+        {
+            return view.getGraphViewer().findGraphItem( l );
+        }
+        catch ( ArrayIndexOutOfBoundsException e )
+        {
+            // temporary fix for issue 
+            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=242523
+            return null;
+        }
+    }
 
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraph.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraph.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraph.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraph.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.views.resolution;
 
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -30,79 +31,102 @@
 import org.apache.felix.sigil.model.IModelElement;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 
-public class BundleGraph {
 
-	private HashMap<ISigilBundle, LinkedList<Link>> lookup = new HashMap<ISigilBundle, LinkedList<Link>>();
-	private LinkedList<Link> links = new LinkedList<Link>();
-	private HashSet<ISigilBundle> bundles = new HashSet<ISigilBundle>();
-	
-	public void startResolution(IModelElement requirement) {
-	}
-
-	public void endResolution(IModelElement requirement, ISigilBundle target) {
-		ISigilBundle source = requirement.getAncestor(ISigilBundle.class);
-
-		bundles.add(source);
-		bundles.add(target);
-
-		LinkedList<Link> links = lookup.get(source);
-
-		if ( links == null ) {
-			links = new LinkedList<Link>();
-			lookup.put(source, links);
-		}
-
-		Link l = null;
-		for ( Link c : links ) {
-			if ( c.getTarget() == target ) {
-				l = c;
-				break;
-			}
-		}
-
-		if ( l == null ) {
-			l = new Link(source, target);
-			links.add(l);
-			this.links.add(l);
-		}
-
-		l.addRequirement(requirement);
-	}
-	
-	public List<Link> getLinks() {
-		return links;
-	}
-
-	public Set<ISigilBundle> getBundles() {
-		return bundles;
-	}
-
-	public Set<ISigilBundle> getTargets(ISigilBundle bundle) {
-		HashSet<ISigilBundle> targets = new HashSet<ISigilBundle>();
-		
-		for ( Link l : getLinks(bundle) ) {
-			targets.add(l.getTarget());
-		}
-		
-		return targets;
-	}
-
-	public List<Link> getLinks(ISigilBundle selected) {
-		List<Link> l = lookup.get(selected);
-		return l == null ? Collections.<Link>emptyList() : l;
-	}
-
-	public List<Link> getDependentLinks(ISigilBundle bundle) {
-		ArrayList<Link> found = new ArrayList<Link>(links.size());
-		
-		for  (Link l : links) {
-			if ( l.getTarget() == bundle ) {
-				found.add( l );
-			}
-		}
-		
-		found.trimToSize();
-		
-		return found;
-	}
+public class BundleGraph
+{
+
+    private HashMap<ISigilBundle, LinkedList<Link>> lookup = new HashMap<ISigilBundle, LinkedList<Link>>();
+    private LinkedList<Link> links = new LinkedList<Link>();
+    private HashSet<ISigilBundle> bundles = new HashSet<ISigilBundle>();
+
+
+    public void startResolution( IModelElement requirement )
+    {
+    }
+
+
+    public void endResolution( IModelElement requirement, ISigilBundle target )
+    {
+        ISigilBundle source = requirement.getAncestor( ISigilBundle.class );
+
+        bundles.add( source );
+        bundles.add( target );
+
+        LinkedList<Link> links = lookup.get( source );
+
+        if ( links == null )
+        {
+            links = new LinkedList<Link>();
+            lookup.put( source, links );
+        }
+
+        Link l = null;
+        for ( Link c : links )
+        {
+            if ( c.getTarget() == target )
+            {
+                l = c;
+                break;
+            }
+        }
+
+        if ( l == null )
+        {
+            l = new Link( source, target );
+            links.add( l );
+            this.links.add( l );
+        }
+
+        l.addRequirement( requirement );
+    }
+
+
+    public List<Link> getLinks()
+    {
+        return links;
+    }
+
+
+    public Set<ISigilBundle> getBundles()
+    {
+        return bundles;
+    }
+
+
+    public Set<ISigilBundle> getTargets( ISigilBundle bundle )
+    {
+        HashSet<ISigilBundle> targets = new HashSet<ISigilBundle>();
+
+        for ( Link l : getLinks( bundle ) )
+        {
+            targets.add( l.getTarget() );
+        }
+
+        return targets;
+    }
+
+
+    public List<Link> getLinks( ISigilBundle selected )
+    {
+        List<Link> l = lookup.get( selected );
+        return l == null ? Collections.<Link> emptyList() : l;
+    }
+
+
+    public List<Link> getDependentLinks( ISigilBundle bundle )
+    {
+        ArrayList<Link> found = new ArrayList<Link>( links.size() );
+
+        for ( Link l : links )
+        {
+            if ( l.getTarget() == bundle )
+            {
+                found.add( l );
+            }
+        }
+
+        found.trimToSize();
+
+        return found;
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraphContentProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraphContentProvider.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraphContentProvider.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/views/resolution/BundleGraphContentProvider.java Tue Jul 21 18:51:33 2009
@@ -19,33 +19,45 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.views.resolution;
 
+
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.zest.core.viewers.IGraphContentProvider;
 
-public class BundleGraphContentProvider implements IGraphContentProvider {
 
-	public Object[] getElements(Object input) {
-		BundleGraph graph = (BundleGraph) input;
-		return graph.getLinks().toArray();
-	}
-
-	public Object getDestination(Object element) {
-		Link l = (Link) element;
-		return l.isSatisfied() ? l.getTarget() : new Link.Unsatisfied();
-	}
-
-	public Object getSource(Object element) {
-		Link l = (Link) element;
-		return l.getSource();
-	}
-
-	public void dispose() {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		
-	}
+public class BundleGraphContentProvider implements IGraphContentProvider
+{
+
+    public Object[] getElements( Object input )
+    {
+        BundleGraph graph = ( BundleGraph ) input;
+        return graph.getLinks().toArray();
+    }
+
+
+    public Object getDestination( Object element )
+    {
+        Link l = ( Link ) element;
+        return l.isSatisfied() ? l.getTarget() : new Link.Unsatisfied();
+    }
+
+
+    public Object getSource( Object element )
+    {
+        Link l = ( Link ) element;
+        return l.getSource();
+    }
+
+
+    public void dispose()
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    public void inputChanged( Viewer viewer, Object oldInput, Object newInput )
+    {
+
+    }
 
 }