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 )
+ {
+
+ }
}