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 [17/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/editors/project/OverviewForm.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/OverviewForm.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/OverviewForm.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/OverviewForm.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
 import org.apache.felix.sigil.ui.eclipse.ui.form.SigilPage;
@@ -30,27 +31,33 @@
 import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
+
 /**
  * @author dave
  *
  */
-public class OverviewForm extends SigilPage {
+public class OverviewForm extends SigilPage
+{
     public static final String PAGE_ID = "overview";
     private ISigilProjectModel sigil;
-    
-    public OverviewForm(SigilProjectEditorPart editor, ISigilProjectModel sigil) {
-        super(editor, PAGE_ID, "Overview");
+
+
+    public OverviewForm( SigilProjectEditorPart editor, ISigilProjectModel sigil )
+    {
+        super( editor, PAGE_ID, "Overview" );
         this.sigil = sigil;
     }
 
+
     @Override
-    protected void createFormContent(IManagedForm managedForm) {
+    protected void createFormContent( IManagedForm managedForm )
+    {
         FormToolkit toolkit = managedForm.getToolkit();
-        
+
         ScrolledForm form = managedForm.getForm();
         form.setText( "Overview" );
-        
-        Composite body = form.getBody();        
+
+        Composite body = form.getBody();
         TableWrapLayout layout = new TableWrapLayout();
         layout.bottomMargin = 10;
         layout.topMargin = 5;
@@ -58,39 +65,41 @@
         layout.rightMargin = 10;
         layout.numColumns = 2;
         layout.horizontalSpacing = 10;
-        body.setLayout(layout);
-        body.setLayoutData(new TableWrapData(TableWrapData.FILL));
-        
-        Composite left = toolkit.createComposite(body);
+        body.setLayout( layout );
+        body.setLayoutData( new TableWrapData( TableWrapData.FILL ) );
+
+        Composite left = toolkit.createComposite( body );
         layout = new TableWrapLayout();
         layout.verticalSpacing = 20;
-        left.setLayout(layout);
-        left.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
-        
-        Composite right = toolkit.createComposite(body);
+        left.setLayout( layout );
+        left.setLayoutData( new TableWrapData( TableWrapData.FILL_GRAB ) );
+
+        Composite right = toolkit.createComposite( body );
         layout = new TableWrapLayout();
         layout.verticalSpacing = 20;
-        right.setLayout(layout);
-        right.setLayoutData( new TableWrapData( TableWrapData.FILL_GRAB) );
-        
-        try {
-	        GeneralInfoSection general = new GeneralInfoSection(this, left, sigil);
-	        managedForm.addPart( general );
-	        
-	        ContentSummarySection content = new ContentSummarySection( this, right, sigil);
-	        managedForm.addPart( content );
-	        
-	        // XXX-FELIX
-	        // commented out due to removal of runtime newton integration
-	        // potential to bring back in medium term...
-	        //TestingSection testing = new TestingSection(this, right, newton);
-	        //managedForm.addPart(testing);
-	        
-	        ToolsSection tools = new ToolsSection(this, right, sigil);
-	        managedForm.addPart(tools);
+        right.setLayout( layout );
+        right.setLayoutData( new TableWrapData( TableWrapData.FILL_GRAB ) );
+
+        try
+        {
+            GeneralInfoSection general = new GeneralInfoSection( this, left, sigil );
+            managedForm.addPart( general );
+
+            ContentSummarySection content = new ContentSummarySection( this, right, sigil );
+            managedForm.addPart( content );
+
+            // XXX-FELIX
+            // commented out due to removal of runtime newton integration
+            // potential to bring back in medium term...
+            //TestingSection testing = new TestingSection(this, right, newton);
+            //managedForm.addPart(testing);
+
+            ToolsSection tools = new ToolsSection( this, right, sigil );
+            managedForm.addPart( tools );
         }
-        catch (CoreException e) {
-        	SigilCore.error( "Failed to create overview form", e );
+        catch ( CoreException e )
+        {
+            SigilCore.error( "Failed to create overview form", e );
         }
     }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PackageExportDialog.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PackageExportDialog.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PackageExportDialog.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PackageExportDialog.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import org.eclipse.jface.viewers.IContentProvider;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.swt.SWT;
@@ -30,42 +31,58 @@
 import org.eclipse.swt.widgets.Text;
 import org.osgi.framework.Version;
 
-public class PackageExportDialog extends ResourceSelectDialog  {
 
-	private Text versionText;
-	private Version version;
-	
-	public PackageExportDialog(Shell parentShell, String title, IContentProvider content, ViewerFilter filter, Object scope ) {
-		super(parentShell, content, filter, scope, title, "Package Name:", true);
-	}
-	
-	@Override
-	protected void createCustom(Composite body) {
-		Label l = new Label( body, SWT.NONE );
-		l.setText( "Version:" );
-		versionText = new Text(body, SWT.BORDER);
-		versionText.addKeyListener(new KeyAdapter() {
-			@Override
-			public void keyReleased(KeyEvent e) {
-				try {
-					version = Version.parseVersion(versionText.getText());
-					setErrorMessage(null);
-				}
-				catch (IllegalArgumentException ex) {
-					setErrorMessage("Invalid version");
-				}
-			}			
-		});
-		if ( version != null ) {
-			versionText.setText( version.toString() );
-		}
-	}
-
-	public Version getVersion() {
-		return version;
-	}
-
-	public void setVersion(Version version) {
-		this.version = version;
-	}	
+public class PackageExportDialog extends ResourceSelectDialog
+{
+
+    private Text versionText;
+    private Version version;
+
+
+    public PackageExportDialog( Shell parentShell, String title, IContentProvider content, ViewerFilter filter,
+        Object scope )
+    {
+        super( parentShell, content, filter, scope, title, "Package Name:", true );
+    }
+
+
+    @Override
+    protected void createCustom( Composite body )
+    {
+        Label l = new Label( body, SWT.NONE );
+        l.setText( "Version:" );
+        versionText = new Text( body, SWT.BORDER );
+        versionText.addKeyListener( new KeyAdapter()
+        {
+            @Override
+            public void keyReleased( KeyEvent e )
+            {
+                try
+                {
+                    version = Version.parseVersion( versionText.getText() );
+                    setErrorMessage( null );
+                }
+                catch ( IllegalArgumentException ex )
+                {
+                    setErrorMessage( "Invalid version" );
+                }
+            }
+        } );
+        if ( version != null )
+        {
+            versionText.setText( version.toString() );
+        }
+    }
+
+
+    public Version getVersion()
+    {
+        return version;
+    }
+
+
+    public void setVersion( Version version )
+    {
+        this.version = version;
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectLabelProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectLabelProvider.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectLabelProvider.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectLabelProvider.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import java.io.InputStream;
 
 import org.apache.felix.sigil.eclipse.SigilCore;
@@ -39,140 +40,186 @@
 import org.eclipse.swt.graphics.ImageData;
 import org.eclipse.swt.widgets.Widget;
 
-public class ProjectLabelProvider extends DefaultLabelProvider implements IBaseLabelProvider {
 
-	private final Widget parent;
-	private final ImageRegistry registry;
-	private final IDependencyChecker checker;
-	
-	public ProjectLabelProvider(Widget parent, ImageRegistry registry ) {
-		this(parent, registry, null);
-	}
-	
-	public ProjectLabelProvider(Widget parent, ImageRegistry registry, IDependencyChecker checker) {
-		this.parent = parent;
-		this.registry = registry;
-		this.checker = checker;
-	}
-
-	public Image getImage(Object element) {
-		Image result = null;
-		if ( element instanceof ISigilBundle || element instanceof IRequiredBundle || element instanceof IBundleModelElement) {
-			result = findBundle();
-		}
-		else if (element instanceof IPackageImport) {
-			if(checker != null) {
-				result = checker.isSatisfied((IPackageImport) element) ? findPackage() : findPackageError();
-			} else {
-				result = findPackage();
-			}
-		}
-		else if (element instanceof IPackageExport) {
-			result = findPackage();
-		}
-		else if ( element instanceof IPackageFragmentRoot ) {
-			IPackageFragmentRoot root = (IPackageFragmentRoot) element;
-			try {
-				if ( root.getKind() == IPackageFragmentRoot.K_SOURCE ) {
-					result = findPackage();
-				}
-				else {
-					result = findBundle();
-				}
-			} catch (JavaModelException e) {
-				SigilCore.error( "Failed to inspect package fragment root", e );
-			}
-		}
-		else if ( element instanceof IClasspathEntry ) {
-			result = findPackage();
-		}
-	
-		return result;
-	}
-
-	public String getText(Object element) {
-		if ( element instanceof ISigilBundle ) {
-			ISigilBundle bundle = (ISigilBundle) element;
-			return bundle.getBundleInfo().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;
-			return pe.getPackageName() + " " + pe.getVersion();
-		}
-		
-		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();
-		}
-		
-		return element.toString();
-	}
-
-	private Image findPackage() {
-		Image image = registry.get( "package" );
-		
-		if ( image == null ) {
-			image = loadImage( "icons/package_obj.png" ); 
-			registry.put( "package", image);
-		}
-		
-		return image; 
-	}
-	
-	private Image findPackageError() {
-		Image image = registry.get("package_error");
-		if(image == null) {
-			image = loadImage("icons/package_obj_error.gif");
-			registry.put("package_error", image);
-		}
-		return image;
-	}
-
-	private Image findBundle() {
-		Image image = registry.get( "bundle" );
-		
-		if ( image == null ) {
-			image = loadImage( "icons/jar_obj.png" ); 
-			registry.put( "bundle", image);
-		}
-		
-		return image; 
-	}
-		
-	private Image loadImage(String resource) {
-		InputStream in = ProjectLabelProvider.class.getClassLoader().getResourceAsStream( resource );
-		ImageData data = new ImageData( in );
-		return new Image( parent.getDisplay(), data );
-	}
+public class ProjectLabelProvider extends DefaultLabelProvider implements IBaseLabelProvider
+{
+
+    private final Widget parent;
+    private final ImageRegistry registry;
+    private final IDependencyChecker checker;
+
+
+    public ProjectLabelProvider( Widget parent, ImageRegistry registry )
+    {
+        this( parent, registry, null );
+    }
+
+
+    public ProjectLabelProvider( Widget parent, ImageRegistry registry, IDependencyChecker checker )
+    {
+        this.parent = parent;
+        this.registry = registry;
+        this.checker = checker;
+    }
+
+
+    public Image getImage( Object element )
+    {
+        Image result = null;
+        if ( element instanceof ISigilBundle || element instanceof IRequiredBundle
+            || element instanceof IBundleModelElement )
+        {
+            result = findBundle();
+        }
+        else if ( element instanceof IPackageImport )
+        {
+            if ( checker != null )
+            {
+                result = checker.isSatisfied( ( IPackageImport ) element ) ? findPackage() : findPackageError();
+            }
+            else
+            {
+                result = findPackage();
+            }
+        }
+        else if ( element instanceof IPackageExport )
+        {
+            result = findPackage();
+        }
+        else if ( element instanceof IPackageFragmentRoot )
+        {
+            IPackageFragmentRoot root = ( IPackageFragmentRoot ) element;
+            try
+            {
+                if ( root.getKind() == IPackageFragmentRoot.K_SOURCE )
+                {
+                    result = findPackage();
+                }
+                else
+                {
+                    result = findBundle();
+                }
+            }
+            catch ( JavaModelException e )
+            {
+                SigilCore.error( "Failed to inspect package fragment root", e );
+            }
+        }
+        else if ( element instanceof IClasspathEntry )
+        {
+            result = findPackage();
+        }
+
+        return result;
+    }
+
+
+    public String getText( Object element )
+    {
+        if ( element instanceof ISigilBundle )
+        {
+            ISigilBundle bundle = ( ISigilBundle ) element;
+            return bundle.getBundleInfo().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;
+            return pe.getPackageName() + " " + pe.getVersion();
+        }
+
+        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();
+        }
+
+        return element.toString();
+    }
+
+
+    private Image findPackage()
+    {
+        Image image = registry.get( "package" );
+
+        if ( image == null )
+        {
+            image = loadImage( "icons/package_obj.png" );
+            registry.put( "package", image );
+        }
+
+        return image;
+    }
+
+
+    private Image findPackageError()
+    {
+        Image image = registry.get( "package_error" );
+        if ( image == null )
+        {
+            image = loadImage( "icons/package_obj_error.gif" );
+            registry.put( "package_error", image );
+        }
+        return image;
+    }
+
+
+    private Image findBundle()
+    {
+        Image image = registry.get( "bundle" );
+
+        if ( image == null )
+        {
+            image = loadImage( "icons/jar_obj.png" );
+            registry.put( "bundle", image );
+        }
+
+        return image;
+    }
+
+
+    private Image loadImage( String resource )
+    {
+        InputStream in = ProjectLabelProvider.class.getClassLoader().getResourceAsStream( resource );
+        ImageData data = new ImageData( in );
+        return new Image( parent.getDisplay(), data );
+    }
 
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectTableViewer.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectTableViewer.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectTableViewer.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ProjectTableViewer.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import java.util.Set;
 
 import org.apache.felix.sigil.model.IModelElement;
@@ -27,30 +28,39 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.widgets.Table;
 
-public class ProjectTableViewer extends TableViewer {
 
-	private ModelLabelProvider labelProvider;
+public class ProjectTableViewer extends TableViewer
+{
+
+    private ModelLabelProvider labelProvider;
+
+
+    public ProjectTableViewer( Table table )
+    {
+        super( table );
+        labelProvider = new ModelLabelProvider();
+        setLabelProvider( labelProvider );
+    }
+
+
+    @Override
+    public void setContentProvider( IContentProvider provider )
+    {
+        super.setContentProvider( provider );
+        setInput( getTable() );
+    }
+
+
+    public void setUnresolvedElements( Set<? extends IModelElement> elements )
+    {
+        labelProvider.setUnresolvedElements( elements );
+    }
+
+
+    @Override
+    public ModelLabelProvider getLabelProvider()
+    {
+        return labelProvider;
+    }
 
-	public ProjectTableViewer(Table table) {
-		super(table);
-		labelProvider = new ModelLabelProvider();
-		setLabelProvider(labelProvider);
-	}
-
-	@Override
-	public void setContentProvider(IContentProvider provider) {
-		super.setContentProvider(provider);
-		setInput(getTable());
-	}
-
-	public void setUnresolvedElements(Set<? extends IModelElement> elements) {
-		labelProvider.setUnresolvedElements(elements);
-	}
-
-	@Override
-	public ModelLabelProvider getLabelProvider() {
-		return labelProvider;
-	}
-	
-	
 }
\ No newline at end of file

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PropertiesForm.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PropertiesForm.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PropertiesForm.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/PropertiesForm.java Tue Jul 21 18:51:33 2009
@@ -27,23 +27,30 @@
 import org.eclipse.jdt.ui.text.JavaTextTools;
 import org.eclipse.jface.preference.IPreferenceStore;
 
+
 @SuppressWarnings("restriction")
-public class PropertiesForm extends SigilSourcePage {
+public class PropertiesForm extends SigilSourcePage
+{
 
     public static final String PAGE_ID = "properties";
-    
-	public PropertiesForm(SigilProjectEditorPart editor, ISigilProjectModel project) {
-		super(PAGE_ID);
-		JavaTextTools textTools= JavaPlugin.getDefault().getJavaTextTools();
-		IPreferenceStore store= JavaPlugin.getDefault().getCombinedPreferenceStore();
-		setPreferenceStore(store);
-		setSourceViewerConfiguration(new PropertiesFileSourceViewerConfiguration(textTools.getColorManager(), store, this, IPropertiesFilePartitions.PROPERTIES_FILE_PARTITIONING));
+
+
+    public PropertiesForm( SigilProjectEditorPart editor, ISigilProjectModel project )
+    {
+        super( PAGE_ID );
+        JavaTextTools textTools = JavaPlugin.getDefault().getJavaTextTools();
+        IPreferenceStore store = JavaPlugin.getDefault().getCombinedPreferenceStore();
+        setPreferenceStore( store );
+        setSourceViewerConfiguration( new PropertiesFileSourceViewerConfiguration( textTools.getColorManager(), store,
+            this, IPropertiesFilePartitions.PROPERTIES_FILE_PARTITIONING ) );
         /*IFileEditorInput fileInput = (IFileEditorInput) editor.getEditorInput();
-		this.setDocumentProvider(fileInput);*/
-	}
+        this.setDocumentProvider(fileInput);*/
+    }
+
 
-	@Override
-	public boolean isSaveAsAllowed() {
-		return false;
-	}	
+    @Override
+    public boolean isSaveAsAllowed()
+    {
+        return false;
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/RequiresBundleSection.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/RequiresBundleSection.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/RequiresBundleSection.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/RequiresBundleSection.java Tue Jul 21 18:51:33 2009
@@ -42,94 +42,127 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 
-public class RequiresBundleSection extends BundleDependencySection {
-	
-	public RequiresBundleSection(SigilPage page, Composite parent, ISigilProjectModel project, Set<IModelElement> unresolvedElements) throws CoreException {
-		super( page, parent, project, unresolvedElements );
-	}
-	
-	@Override
-	protected String getTitle() {
-		return "Requires Bundles";
-	}
-	
-	@Override
-	protected Label createLabel(Composite parent, FormToolkit toolkit) {
-		return toolkit.createLabel( parent, "Specify which bundles this bundle depends on." );
-	}
-	
-	@Override
-	protected IContentProvider getContentProvider() {
-		return new DefaultTableProvider() {
-			public Object[] getElements(Object inputElement) {
-				return getBundle().getBundleInfo().getRequiredBundles().toArray();
-			}
-		};
-	}
-
-	protected ISigilBundle getBundle() {
-		return getProjectModel().getBundle();
-	}
-
-	@Override
-	protected void handleAdd() {
-		try {
-			NewResourceSelectionDialog<IBundleModelElement> dialog = ResourcesDialogHelper.createRequiredBundleDialog( getSection().getShell(), "Add Required Bundle", getProjectModel(), null, getBundle().getBundleInfo().getRequiredBundles() );
-			
-			if (dialog.open() == Window.OK) {
-				IRequiredBundle required = ModelElementFactory.getInstance().newModelElement( IRequiredBundle.class );
-				required.setSymbolicName(dialog.getSelectedName());
-				required.setVersions(dialog.getSelectedVersions());
-				required.setOptional(dialog.isOptional());
-				
-				getBundle().getBundleInfo().addRequiredBundle(required);
-				refresh();
-				markDirty();
-			}
-		}
-		catch (ModelElementFactoryException e) {
-			SigilCore.error( "Failed to build required bundle", e );
-		}
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected void handleEdit() {
-		IStructuredSelection selection = (IStructuredSelection) getSelection();
-		
-		boolean changed = false;
-		
-		if ( !selection.isEmpty() ) {
-			for ( Iterator<IRequiredBundle> i = selection.iterator(); i.hasNext(); ) {	
-				IRequiredBundle requiredBundle = i.next();
-				NewResourceSelectionDialog<IBundleModelElement> dialog = ResourcesDialogHelper.createRequiredBundleDialog(getSection().getShell(), "Edit Imported Package", getProjectModel(), requiredBundle, getBundle().getBundleInfo().getRequiredBundles() );
-				if ( dialog.open() == Window.OK ) {
-					changed = true;
-					requiredBundle.setSymbolicName(dialog.getSelectedName());
-					requiredBundle.setVersions(dialog.getSelectedVersions());
-					requiredBundle.setOptional(dialog.isOptional());
-				}
-			}					
-		}
-		
-		if ( changed ) {
-			refresh();
-			markDirty();
-		}
-	}
-	
-	@SuppressWarnings("unchecked")
-	@Override
-	protected void handleRemoved() {
-		IStructuredSelection selection = (IStructuredSelection) getSelection();
-
-		if ( !selection.isEmpty() ) {
-			for ( Iterator<IRequiredBundle> i = selection.iterator(); i.hasNext(); ) {			
-				getBundle().getBundleInfo().removeRequiredBundle( i.next() );
-			}		
-			
-			refresh();
-			markDirty();
-		}
-	}
+
+public class RequiresBundleSection extends BundleDependencySection
+{
+
+    public RequiresBundleSection( SigilPage page, Composite parent, ISigilProjectModel project,
+        Set<IModelElement> unresolvedElements ) throws CoreException
+    {
+        super( page, parent, project, unresolvedElements );
+    }
+
+
+    @Override
+    protected String getTitle()
+    {
+        return "Requires Bundles";
+    }
+
+
+    @Override
+    protected Label createLabel( Composite parent, FormToolkit toolkit )
+    {
+        return toolkit.createLabel( parent, "Specify which bundles this bundle depends on." );
+    }
+
+
+    @Override
+    protected IContentProvider getContentProvider()
+    {
+        return new DefaultTableProvider()
+        {
+            public Object[] getElements( Object inputElement )
+            {
+                return getBundle().getBundleInfo().getRequiredBundles().toArray();
+            }
+        };
+    }
+
+
+    protected ISigilBundle getBundle()
+    {
+        return getProjectModel().getBundle();
+    }
+
+
+    @Override
+    protected void handleAdd()
+    {
+        try
+        {
+            NewResourceSelectionDialog<IBundleModelElement> dialog = ResourcesDialogHelper.createRequiredBundleDialog(
+                getSection().getShell(), "Add Required Bundle", getProjectModel(), null, getBundle().getBundleInfo()
+                    .getRequiredBundles() );
+
+            if ( dialog.open() == Window.OK )
+            {
+                IRequiredBundle required = ModelElementFactory.getInstance().newModelElement( IRequiredBundle.class );
+                required.setSymbolicName( dialog.getSelectedName() );
+                required.setVersions( dialog.getSelectedVersions() );
+                required.setOptional( dialog.isOptional() );
+
+                getBundle().getBundleInfo().addRequiredBundle( required );
+                refresh();
+                markDirty();
+            }
+        }
+        catch ( ModelElementFactoryException e )
+        {
+            SigilCore.error( "Failed to build required bundle", e );
+        }
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Override
+    protected void handleEdit()
+    {
+        IStructuredSelection selection = ( IStructuredSelection ) getSelection();
+
+        boolean changed = false;
+
+        if ( !selection.isEmpty() )
+        {
+            for ( Iterator<IRequiredBundle> i = selection.iterator(); i.hasNext(); )
+            {
+                IRequiredBundle requiredBundle = i.next();
+                NewResourceSelectionDialog<IBundleModelElement> dialog = ResourcesDialogHelper
+                    .createRequiredBundleDialog( getSection().getShell(), "Edit Imported Package", getProjectModel(),
+                        requiredBundle, getBundle().getBundleInfo().getRequiredBundles() );
+                if ( dialog.open() == Window.OK )
+                {
+                    changed = true;
+                    requiredBundle.setSymbolicName( dialog.getSelectedName() );
+                    requiredBundle.setVersions( dialog.getSelectedVersions() );
+                    requiredBundle.setOptional( dialog.isOptional() );
+                }
+            }
+        }
+
+        if ( changed )
+        {
+            refresh();
+            markDirty();
+        }
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Override
+    protected void handleRemoved()
+    {
+        IStructuredSelection selection = ( IStructuredSelection ) getSelection();
+
+        if ( !selection.isEmpty() )
+        {
+            for ( Iterator<IRequiredBundle> i = selection.iterator(); i.hasNext(); )
+            {
+                getBundle().getBundleInfo().removeRequiredBundle( i.next() );
+            }
+
+            refresh();
+            markDirty();
+        }
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java Tue Jul 21 18:51:33 2009
@@ -20,7 +20,6 @@
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
 
-
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
@@ -47,120 +46,151 @@
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 
+
 /**
  * @author dave
  *
  */
-public class ResourceBuildSection extends AbstractResourceSection implements ICheckStateListener, IResourceChangeListener, IPropertyChangeListener {
+public class ResourceBuildSection extends AbstractResourceSection implements ICheckStateListener,
+    IResourceChangeListener, IPropertyChangeListener
+{
+
+    private ExcludedResourcesFilter resourcesFilter;
+
+
+    /**
+     * @param page
+     * @param parent
+     * @param project
+     * @throws CoreException 
+     */
+    public ResourceBuildSection( SigilPage page, Composite parent, ISigilProjectModel project ) throws CoreException
+    {
+        super( page, parent, project );
+    }
+
+
+    @Override
+    protected void createSection( Section section, FormToolkit toolkit )
+    {
+        setTitle( "Resources" );
 
-	private ExcludedResourcesFilter resourcesFilter;
-
-	/**
-	 * @param page
-	 * @param parent
-	 * @param project
-	 * @throws CoreException 
-	 */
-	public ResourceBuildSection(SigilPage page, Composite parent, ISigilProjectModel project) throws CoreException {
-		super( page, parent, project );
-	}
-
-	@Override
-	protected void createSection(Section section, FormToolkit toolkit) {
-		setTitle( "Resources" );
-		
-		Composite body = createTableWrapBody(1, toolkit);
+        Composite body = createTableWrapBody( 1, toolkit );
 
         toolkit.createLabel( body, "Specify which resources are included in the bundle." );
-		
-		tree = toolkit.createTree( body, SWT.CHECK | SWT.BORDER );
-		Link link = new Link(body, SWT.WRAP);
-		link.setText("Some resources may be filtered according to preferences. <a href=\"excludedResourcePrefs\">Click here</a> to edit the list of exclusions.");
-		
-		TableWrapData data = new TableWrapData( TableWrapData.FILL_GRAB);
-		data.heightHint = 200;
-		tree.setLayoutData( data );
-		
-		viewer = new CheckboxTreeViewer( tree );
-		IProject base = getProjectModel().getProject();
-		viewer.setContentProvider( new ContainerTreeProvider() );
-		viewer.setLabelProvider( new ModelLabelProvider() );
-		viewer.addCheckStateListener( this );
-		resourcesFilter = new ExcludedResourcesFilter();
-		viewer.addFilter(resourcesFilter);
-		viewer.setInput(base);
-		
-		link.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				if("excludedResourcePrefs".equals(event.text)) {
-					PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getPage().getEditorSite().getShell(), SigilCore.EXCLUDED_RESOURCES_PREFERENCES_ID, null, null);
-					dialog.open();
-				}
-			}
-		});
-		
-		SigilCore.getDefault().getPreferenceStore().addPropertyChangeListener(this);
-		
-		startWorkspaceListener(base.getWorkspace());
-	}
-
-	@Override
-	public void commit(boolean onSave) {
-		ISigilBundle bundle = getProjectModel().getBundle();
-		
-		bundle.clearSourcePaths();
-		
-		SigilUI.runInUISync( new Runnable() {
-			public void run() {
-				for ( Object o : viewer.getCheckedElements() ) {
-					if ( !viewer.getGrayed(o) ) {
-						IResource r = (IResource) o;
-						getProjectModel().getBundle().addSourcePath( r.getProjectRelativePath() );
-					}
-				}
-			}			
-		});
-		
-		super.commit(onSave);
-	}
-
-	@Override
-	protected void refreshSelections()  {
-		// zero the state
-		for ( IPath path : getProjectModel().getBundle().getSourcePaths() ) {
-			IResource r = findResource( path );
-			if ( r != null ) {
-				viewer.expandToLevel(r, 0);
-				viewer.setChecked( r, true );
-				viewer.setGrayed( r, false );
-				handleStateChanged(r, true, false, false);
-			}
-			else {
-				SigilCore.error( "Unknown path " + path );
-			}
-		}
-	}
-	
-	@Override
-	protected void syncResourceModel(IResource element, boolean checked) {
-		if ( checked ) {
-			getProjectModel().getBundle().addSourcePath( element.getProjectRelativePath() );
-		}
-		else {
-			getProjectModel().getBundle().removeSourcePath( element.getProjectRelativePath() );
-		}
-		
-		markDirty();
-	}
-	
-	@Override
-	public void dispose() {
-		super.dispose();
-		SigilCore.getDefault().getPreferenceStore().removePropertyChangeListener(this);
-	}
-
-	public void propertyChange(PropertyChangeEvent event) {
-		resourcesFilter.loadExclusions();
-		viewer.refresh();
-	}
+
+        tree = toolkit.createTree( body, SWT.CHECK | SWT.BORDER );
+        Link link = new Link( body, SWT.WRAP );
+        link
+            .setText( "Some resources may be filtered according to preferences. <a href=\"excludedResourcePrefs\">Click here</a> to edit the list of exclusions." );
+
+        TableWrapData data = new TableWrapData( TableWrapData.FILL_GRAB );
+        data.heightHint = 200;
+        tree.setLayoutData( data );
+
+        viewer = new CheckboxTreeViewer( tree );
+        IProject base = getProjectModel().getProject();
+        viewer.setContentProvider( new ContainerTreeProvider() );
+        viewer.setLabelProvider( new ModelLabelProvider() );
+        viewer.addCheckStateListener( this );
+        resourcesFilter = new ExcludedResourcesFilter();
+        viewer.addFilter( resourcesFilter );
+        viewer.setInput( base );
+
+        link.addListener( SWT.Selection, new Listener()
+        {
+            public void handleEvent( Event event )
+            {
+                if ( "excludedResourcePrefs".equals( event.text ) )
+                {
+                    PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn( getPage().getEditorSite()
+                        .getShell(), SigilCore.EXCLUDED_RESOURCES_PREFERENCES_ID, null, null );
+                    dialog.open();
+                }
+            }
+        } );
+
+        SigilCore.getDefault().getPreferenceStore().addPropertyChangeListener( this );
+
+        startWorkspaceListener( base.getWorkspace() );
+    }
+
+
+    @Override
+    public void commit( boolean onSave )
+    {
+        ISigilBundle bundle = getProjectModel().getBundle();
+
+        bundle.clearSourcePaths();
+
+        SigilUI.runInUISync( new Runnable()
+        {
+            public void run()
+            {
+                for ( Object o : viewer.getCheckedElements() )
+                {
+                    if ( !viewer.getGrayed( o ) )
+                    {
+                        IResource r = ( IResource ) o;
+                        getProjectModel().getBundle().addSourcePath( r.getProjectRelativePath() );
+                    }
+                }
+            }
+        } );
+
+        super.commit( onSave );
+    }
+
+
+    @Override
+    protected void refreshSelections()
+    {
+        // zero the state
+        for ( IPath path : getProjectModel().getBundle().getSourcePaths() )
+        {
+            IResource r = findResource( path );
+            if ( r != null )
+            {
+                viewer.expandToLevel( r, 0 );
+                viewer.setChecked( r, true );
+                viewer.setGrayed( r, false );
+                handleStateChanged( r, true, false, false );
+            }
+            else
+            {
+                SigilCore.error( "Unknown path " + path );
+            }
+        }
+    }
+
+
+    @Override
+    protected void syncResourceModel( IResource element, boolean checked )
+    {
+        if ( checked )
+        {
+            getProjectModel().getBundle().addSourcePath( element.getProjectRelativePath() );
+        }
+        else
+        {
+            getProjectModel().getBundle().removeSourcePath( element.getProjectRelativePath() );
+        }
+
+        markDirty();
+    }
+
+
+    @Override
+    public void dispose()
+    {
+        super.dispose();
+        SigilCore.getDefault().getPreferenceStore().removePropertyChangeListener( this );
+    }
+
+
+    public void propertyChange( PropertyChangeEvent event )
+    {
+        resourcesFilter.loadExclusions();
+        viewer.refresh();
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceImportDialog.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceImportDialog.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceImportDialog.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceImportDialog.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.common.VersionRange;
 import org.apache.felix.sigil.model.osgi.IPackageImport;
@@ -30,60 +31,81 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Shell;
 
-public class ResourceImportDialog extends ResourceSelectDialog implements VersionsChangeListener {
 
-	private VersionRangeComponent versions;
-	private VersionRange range;
-	
-	public ResourceImportDialog(Shell parentShell, String title, String label, IContentProvider content, ViewerFilter filter, Object scope ) {
-		super(parentShell, content, filter, scope, title, label, true);
-	}
-
-	public VersionRange getVersions() {
-		return range;
-	}
-
-	@Override
-	protected void createCustom(Composite body) {
-		versions = new VersionRangeComponent(body, SWT.BORDER );
-		versions.addVersionChangeListener(this);
-		versions.setVersions(range);
-		
-		GridData data = new GridData( SWT.LEFT, SWT.TOP, true, true );
-		data.horizontalSpan = 2;
-		data.widthHint = 300;
-		data.heightHint = 200;
-		versions.setLayoutData(data);
-	}
-
-	@Override
-	protected void selectionChanged(SelectionChangedEvent event) {
-		if ( event.getSelection().isEmpty() ) {
-			versions.setEnabled(false);
-		}
-		else {
-			versions.setEnabled(true);
-		}
-	}
-
-	public void versionsChanged(VersionRange range) {
-		this.range = range; 
-		if ( range == null ) {
-			setErrorMessage( "Invalid version" );
-		}
-		else {
-			setErrorMessage( null );
-		}
-	}
-
-	public void setVersions(VersionRange range) {
-		this.range = range;
-	}
-
-	public IPackageImport getImport() {
-		IPackageImport packageImport = ModelElementFactory.getInstance().newModelElement( IPackageImport.class );
-		packageImport.setPackageName( (String) getSelected()[0] );
-		packageImport.setVersions( getVersions() );
-		return packageImport;
-	}
+public class ResourceImportDialog extends ResourceSelectDialog implements VersionsChangeListener
+{
+
+    private VersionRangeComponent versions;
+    private VersionRange range;
+
+
+    public ResourceImportDialog( Shell parentShell, String title, String label, IContentProvider content,
+        ViewerFilter filter, Object scope )
+    {
+        super( parentShell, content, filter, scope, title, label, true );
+    }
+
+
+    public VersionRange getVersions()
+    {
+        return range;
+    }
+
+
+    @Override
+    protected void createCustom( Composite body )
+    {
+        versions = new VersionRangeComponent( body, SWT.BORDER );
+        versions.addVersionChangeListener( this );
+        versions.setVersions( range );
+
+        GridData data = new GridData( SWT.LEFT, SWT.TOP, true, true );
+        data.horizontalSpan = 2;
+        data.widthHint = 300;
+        data.heightHint = 200;
+        versions.setLayoutData( data );
+    }
+
+
+    @Override
+    protected void selectionChanged( SelectionChangedEvent event )
+    {
+        if ( event.getSelection().isEmpty() )
+        {
+            versions.setEnabled( false );
+        }
+        else
+        {
+            versions.setEnabled( true );
+        }
+    }
+
+
+    public void versionsChanged( VersionRange range )
+    {
+        this.range = range;
+        if ( range == null )
+        {
+            setErrorMessage( "Invalid version" );
+        }
+        else
+        {
+            setErrorMessage( null );
+        }
+    }
+
+
+    public void setVersions( VersionRange range )
+    {
+        this.range = range;
+    }
+
+
+    public IPackageImport getImport()
+    {
+        IPackageImport packageImport = ModelElementFactory.getInstance().newModelElement( IPackageImport.class );
+        packageImport.setPackageName( ( String ) getSelected()[0] );
+        packageImport.setVersions( getVersions() );
+        return packageImport;
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceSelectDialog.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceSelectDialog.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceSelectDialog.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceSelectDialog.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -57,316 +58,403 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.Text;
 
-public class ResourceSelectDialog extends Dialog {
 
-	private AtomicInteger keyCheck = new AtomicInteger();
-	private ScheduledExecutorService background = Executors.newSingleThreadScheduledExecutor();
-	
-	private class UpdateViewerRunnable implements Runnable {
-		private int check;
-		public UpdateViewerRunnable(int check) {
-			this.check = check;
-		}
-
-		public void run() {
-			if ( check == keyCheck.get() ) {
-				try {
-					viewer.refresh();
-				}
-				catch (SWTException e) {
-					// discard
-				}
-			}
-		}
-	}
-
-	private static final ISelection EMPTY_SELECTION = new ISelection() {
-		public boolean isEmpty() {
-			return true;
-		}
-	};
-	
-	private Job job;
-	
-	private boolean isCombo;
-	private String title;
-	private String selectionText;
-
-	private StructuredViewer viewer;
-	private Combo resourceNameCombo;
-	private Table resourceNameTable;
-	private Text errorMessageText;
-	private String errorMessage;
-	
-	private ViewerFilter filter;
-	private Object[] selected;
-	
-	private Object scope;	
-	private IContentProvider content;
-	private ILabelProvider labelProvider;
-
-	public ResourceSelectDialog(Shell parentShell, IContentProvider content, ViewerFilter filter, Object scope, String title, String selectionText, boolean isCombo) {
-		super(parentShell);
-		this.title = title;
-		this.selectionText = selectionText;
-		this.content = content;
-		this.filter = filter;
-		this.scope = scope;
-		this.isCombo = isCombo;
-	}
-	
-	public void setJob(Job job) {
-		this.job = job;
-	}
-	
-	public void refreshResources() {
-		try {
-			getShell().getDisplay().asyncExec( new Runnable() {
-				public void run() {
-					try {
-						viewer.refresh();
-					}
-					catch (SWTException e) {
-						// attempt to exec after dialog closed - discard
-					}
-				}
-			});
-		}
-		catch (NullPointerException e) {
-			// attempt to exec after dialog closed - discard
-		}
-		catch (SWTException e) {
-			// attempt to exec after dialog closed - discard
-		}
-	}
+public class ResourceSelectDialog extends Dialog
+{
+
+    private AtomicInteger keyCheck = new AtomicInteger();
+    private ScheduledExecutorService background = Executors.newSingleThreadScheduledExecutor();
+
+    private class UpdateViewerRunnable implements Runnable
+    {
+        private int check;
+
+
+        public UpdateViewerRunnable( int check )
+        {
+            this.check = check;
+        }
+
+
+        public void run()
+        {
+            if ( check == keyCheck.get() )
+            {
+                try
+                {
+                    viewer.refresh();
+                }
+                catch ( SWTException e )
+                {
+                    // discard
+                }
+            }
+        }
+    }
+
+    private static final ISelection EMPTY_SELECTION = new ISelection()
+    {
+        public boolean isEmpty()
+        {
+            return true;
+        }
+    };
+
+    private Job job;
+
+    private boolean isCombo;
+    private String title;
+    private String selectionText;
+
+    private StructuredViewer viewer;
+    private Combo resourceNameCombo;
+    private Table resourceNameTable;
+    private Text errorMessageText;
+    private String errorMessage;
+
+    private ViewerFilter filter;
+    private Object[] selected;
+
+    private Object scope;
+    private IContentProvider content;
+    private ILabelProvider labelProvider;
+
+
+    public ResourceSelectDialog( Shell parentShell, IContentProvider content, ViewerFilter filter, Object scope,
+        String title, String selectionText, boolean isCombo )
+    {
+        super( parentShell );
+        this.title = title;
+        this.selectionText = selectionText;
+        this.content = content;
+        this.filter = filter;
+        this.scope = scope;
+        this.isCombo = isCombo;
+    }
+
 
-	/*
+    public void setJob( Job job )
+    {
+        this.job = job;
+    }
+
+
+    public void refreshResources()
+    {
+        try
+        {
+            getShell().getDisplay().asyncExec( new Runnable()
+            {
+                public void run()
+                {
+                    try
+                    {
+                        viewer.refresh();
+                    }
+                    catch ( SWTException e )
+                    {
+                        // attempt to exec after dialog closed - discard
+                    }
+                }
+            } );
+        }
+        catch ( NullPointerException e )
+        {
+            // attempt to exec after dialog closed - discard
+        }
+        catch ( SWTException e )
+        {
+            // attempt to exec after dialog closed - discard
+        }
+    }
+
+
+    /*
      * (non-Javadoc)
      * 
      * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
      */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        if (title != null) {
-			shell.setText(title);
-		}        
-    }
-
-	@Override
-	public void create() {
-		super.create();
-		if ( getItemCount() == 0 ) {
-			setErrorMessage( "No resources available" );
-			getButton(IDialogConstants.OK_ID).setEnabled(false);
-		}
-		else {
-			ISelection selection = selected == null ? EMPTY_SELECTION : new SingletonSelection( selected );
-			setSelected( new SelectionChangedEvent( viewer, selection ), true );
-		}
-		
-		if ( job != null ) {
-			job.schedule();
-		}
-	}
-
-	@Override
-	public boolean close() {
-		if ( job != null ) {
-			job.cancel();
-		}
-		background.shutdownNow();
-		return super.close();
-	}
-
-	private int getItemCount() {
-		if ( isCombo ) {
-			return resourceNameCombo.getItemCount();
-		}
-		else {
-			return resourceNameTable.getItemCount();
-		}
-	}
-
-	@Override
-	protected Control createDialogArea(Composite parent) {
-		Composite body = (Composite) super.createDialogArea(parent);
-		
-		GridLayout layout = (GridLayout) body.getLayout();
-		layout.numColumns = 2;
-		GridData data;
-		
-		labelProvider = new ModelLabelProvider();
-		
-		Label l = new Label( body, SWT.LEFT );
-		l.setText( selectionText );
-		data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-		if ( !isCombo ) {
-			data.horizontalSpan = 2;
-		}
-		l.setLayoutData( data );
-	
-		if ( isCombo ) {
-			createCombo( body );
-		}
-		else {
-			createTable( body );
-		}
-		
-		viewer.addFilter( filter );
-		viewer.setContentProvider(content);
-		viewer.setLabelProvider( getLabelProvider() );
-		viewer.setComparator( new ViewerComparator() );
-		viewer.setInput( scope );
-		
-		viewer.addSelectionChangedListener( new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				setSelected(event, false);
-			}			
-		});
-	    createCustom( body );
-	    
-		errorMessageText = new Text(body, SWT.READ_ONLY | SWT.WRAP);
-		data = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
-		data.horizontalSpan = 2;
-	    errorMessageText.setLayoutData(data);
-	    errorMessageText.setBackground(errorMessageText.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
-	    setErrorMessage(errorMessage);
-	    
-		return body;
-	}
-	
-    protected void createCustom(Composite body) {
-	}
-
-	private void createCombo(Composite body) {
-		resourceNameCombo = new Combo( body, SWT.SINGLE | SWT.BORDER );
-		GridData data = new GridData( GridData.HORIZONTAL_ALIGN_END);
-		data.widthHint = 200;
-		resourceNameCombo.setLayoutData( data );
-		
-		viewer = new ComboViewer(resourceNameCombo);
-	}
-
-	private void createTable(Composite body) {
-		final Text txtFilter = new Text(body, SWT.BORDER);
-		GridData data = new GridData( GridData.HORIZONTAL_ALIGN_END);
-		data.horizontalSpan = 2;
-		data.widthHint = 400;
-		txtFilter.setLayoutData(data);
-		
-		resourceNameTable = new Table( body, SWT.MULTI | SWT.BORDER );
-		data = new GridData( GridData.HORIZONTAL_ALIGN_END);
-		data.widthHint = 400;
-		data.heightHint = 400;
-		resourceNameTable.setLayoutData( data );
-		
-		viewer = new TableViewer(resourceNameTable);
-
-		txtFilter.addKeyListener( new KeyAdapter() {
-			@Override
-			public void keyReleased(KeyEvent e) {
-				switch ( e.keyCode ) {
-				case SWT.ARROW_UP:
-					scrollTable(-1);
-					break;
-				case SWT.ARROW_DOWN:
-					scrollTable(+1);
-					break;
-				default:
-					Runnable r = new UpdateViewerRunnable(keyCheck.incrementAndGet());
-					background.schedule(r, 100, TimeUnit.MILLISECONDS);
-					break;
-				}
-			}
-		});
-		
-		ViewerFilter filter = new ViewerFilter() {
-			@Override
-			public boolean select(Viewer viewer, Object parentElement,
-					Object element) {
-				return getLabelProvider().getText(element).startsWith( txtFilter.getText() );
-			}
-		};
-		
-		viewer.addFilter(filter);
-	}
-	
-	private void scrollTable(int delta) {
-		int i = resourceNameTable.getSelectionIndex();
-		
-		if ( i == -1 ) {
-			if ( delta < 0 ) { 
-				i = resourceNameTable.getItemCount() - 1;
-			}
-			else {
-				i = 0;
-			}
-		}
-		else {
-			i+=delta;
-		}
-		
-		if ( i > -1 && i < resourceNameTable.getItemCount() ) {
-			Item item = resourceNameTable.getItem(i);
-			resourceNameTable.select(i);
-			selected = new Object[] { item.getData() };
-			ISelection selection = new SingletonSelection( selected );
-			selectionChanged(new SelectionChangedEvent(viewer, selection));
-			viewer.reveal(selected);
-		}
-	}
-
-	private void setSelected(SelectionChangedEvent event, boolean reveal) {
-		if ( event.getSelection().isEmpty() ) {
-			selected = null;
-			setErrorMessage( "No resource selected" );
-		}
-		else {
-			selected = ((IStructuredSelection) event.getSelection()).toArray();
-			setErrorMessage( null );
-		}
-		
-		selectionChanged(event);
-		
-		if ( reveal && !event.getSelection().isEmpty() ) {
-			if ( resourceNameCombo != null ) {
-				IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-				resourceNameCombo.select(resourceNameCombo.indexOf((String) sel.getFirstElement()));
-			}
-			else {
-				viewer.setSelection(event.getSelection(), true);
-			}
-		}
-	}
-
-	protected ILabelProvider getLabelProvider() {
-		return labelProvider;
-	}
-
-	public Object[] getSelected() {
-    	return selected;
-    }
-	
-	public void setSelected(Object[] selected) {
-		this.selected = selected;
-	}
-	
-	protected void selectionChanged(SelectionChangedEvent event) {
-	}
-
-	public void setErrorMessage(String errorMessage) {
-		this.errorMessage = errorMessage;
-		if (errorMessageText != null && !errorMessageText.isDisposed()) {
-			errorMessageText.setText(errorMessage == null ? " \n " : errorMessage); 
-			boolean hasError = errorMessage != null && (StringConverter.removeWhiteSpaces(errorMessage)).length() > 0;
-			errorMessageText.setEnabled(hasError);
-			errorMessageText.setVisible(hasError);
-			errorMessageText.getParent().update();
-			Control ok = getButton(IDialogConstants.OK_ID);
-			if (ok != null) {
-				ok.setEnabled(!hasError);
-			}
-		}
-	}
+    protected void configureShell( Shell shell )
+    {
+        super.configureShell( shell );
+        if ( title != null )
+        {
+            shell.setText( title );
+        }
+    }
+
+
+    @Override
+    public void create()
+    {
+        super.create();
+        if ( getItemCount() == 0 )
+        {
+            setErrorMessage( "No resources available" );
+            getButton( IDialogConstants.OK_ID ).setEnabled( false );
+        }
+        else
+        {
+            ISelection selection = selected == null ? EMPTY_SELECTION : new SingletonSelection( selected );
+            setSelected( new SelectionChangedEvent( viewer, selection ), true );
+        }
+
+        if ( job != null )
+        {
+            job.schedule();
+        }
+    }
+
+
+    @Override
+    public boolean close()
+    {
+        if ( job != null )
+        {
+            job.cancel();
+        }
+        background.shutdownNow();
+        return super.close();
+    }
+
+
+    private int getItemCount()
+    {
+        if ( isCombo )
+        {
+            return resourceNameCombo.getItemCount();
+        }
+        else
+        {
+            return resourceNameTable.getItemCount();
+        }
+    }
+
+
+    @Override
+    protected Control createDialogArea( Composite parent )
+    {
+        Composite body = ( Composite ) super.createDialogArea( parent );
+
+        GridLayout layout = ( GridLayout ) body.getLayout();
+        layout.numColumns = 2;
+        GridData data;
+
+        labelProvider = new ModelLabelProvider();
+
+        Label l = new Label( body, SWT.LEFT );
+        l.setText( selectionText );
+        data = new GridData( GridData.HORIZONTAL_ALIGN_BEGINNING );
+        if ( !isCombo )
+        {
+            data.horizontalSpan = 2;
+        }
+        l.setLayoutData( data );
+
+        if ( isCombo )
+        {
+            createCombo( body );
+        }
+        else
+        {
+            createTable( body );
+        }
+
+        viewer.addFilter( filter );
+        viewer.setContentProvider( content );
+        viewer.setLabelProvider( getLabelProvider() );
+        viewer.setComparator( new ViewerComparator() );
+        viewer.setInput( scope );
+
+        viewer.addSelectionChangedListener( new ISelectionChangedListener()
+        {
+            public void selectionChanged( SelectionChangedEvent event )
+            {
+                setSelected( event, false );
+            }
+        } );
+        createCustom( body );
+
+        errorMessageText = new Text( body, SWT.READ_ONLY | SWT.WRAP );
+        data = new GridData( GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL );
+        data.horizontalSpan = 2;
+        errorMessageText.setLayoutData( data );
+        errorMessageText.setBackground( errorMessageText.getDisplay().getSystemColor( SWT.COLOR_WIDGET_BACKGROUND ) );
+        setErrorMessage( errorMessage );
+
+        return body;
+    }
+
+
+    protected void createCustom( Composite body )
+    {
+    }
+
+
+    private void createCombo( Composite body )
+    {
+        resourceNameCombo = new Combo( body, SWT.SINGLE | SWT.BORDER );
+        GridData data = new GridData( GridData.HORIZONTAL_ALIGN_END );
+        data.widthHint = 200;
+        resourceNameCombo.setLayoutData( data );
+
+        viewer = new ComboViewer( resourceNameCombo );
+    }
+
+
+    private void createTable( Composite body )
+    {
+        final Text txtFilter = new Text( body, SWT.BORDER );
+        GridData data = new GridData( GridData.HORIZONTAL_ALIGN_END );
+        data.horizontalSpan = 2;
+        data.widthHint = 400;
+        txtFilter.setLayoutData( data );
+
+        resourceNameTable = new Table( body, SWT.MULTI | SWT.BORDER );
+        data = new GridData( GridData.HORIZONTAL_ALIGN_END );
+        data.widthHint = 400;
+        data.heightHint = 400;
+        resourceNameTable.setLayoutData( data );
+
+        viewer = new TableViewer( resourceNameTable );
+
+        txtFilter.addKeyListener( new KeyAdapter()
+        {
+            @Override
+            public void keyReleased( KeyEvent e )
+            {
+                switch ( e.keyCode )
+                {
+                    case SWT.ARROW_UP:
+                        scrollTable( -1 );
+                        break;
+                    case SWT.ARROW_DOWN:
+                        scrollTable( +1 );
+                        break;
+                    default:
+                        Runnable r = new UpdateViewerRunnable( keyCheck.incrementAndGet() );
+                        background.schedule( r, 100, TimeUnit.MILLISECONDS );
+                        break;
+                }
+            }
+        } );
+
+        ViewerFilter filter = new ViewerFilter()
+        {
+            @Override
+            public boolean select( Viewer viewer, Object parentElement, Object element )
+            {
+                return getLabelProvider().getText( element ).startsWith( txtFilter.getText() );
+            }
+        };
+
+        viewer.addFilter( filter );
+    }
+
+
+    private void scrollTable( int delta )
+    {
+        int i = resourceNameTable.getSelectionIndex();
+
+        if ( i == -1 )
+        {
+            if ( delta < 0 )
+            {
+                i = resourceNameTable.getItemCount() - 1;
+            }
+            else
+            {
+                i = 0;
+            }
+        }
+        else
+        {
+            i += delta;
+        }
+
+        if ( i > -1 && i < resourceNameTable.getItemCount() )
+        {
+            Item item = resourceNameTable.getItem( i );
+            resourceNameTable.select( i );
+            selected = new Object[]
+                { item.getData() };
+            ISelection selection = new SingletonSelection( selected );
+            selectionChanged( new SelectionChangedEvent( viewer, selection ) );
+            viewer.reveal( selected );
+        }
+    }
+
+
+    private void setSelected( SelectionChangedEvent event, boolean reveal )
+    {
+        if ( event.getSelection().isEmpty() )
+        {
+            selected = null;
+            setErrorMessage( "No resource selected" );
+        }
+        else
+        {
+            selected = ( ( IStructuredSelection ) event.getSelection() ).toArray();
+            setErrorMessage( null );
+        }
+
+        selectionChanged( event );
+
+        if ( reveal && !event.getSelection().isEmpty() )
+        {
+            if ( resourceNameCombo != null )
+            {
+                IStructuredSelection sel = ( IStructuredSelection ) event.getSelection();
+                resourceNameCombo.select( resourceNameCombo.indexOf( ( String ) sel.getFirstElement() ) );
+            }
+            else
+            {
+                viewer.setSelection( event.getSelection(), true );
+            }
+        }
+    }
+
+
+    protected ILabelProvider getLabelProvider()
+    {
+        return labelProvider;
+    }
+
+
+    public Object[] getSelected()
+    {
+        return selected;
+    }
+
+
+    public void setSelected( Object[] selected )
+    {
+        this.selected = selected;
+    }
+
+
+    protected void selectionChanged( SelectionChangedEvent event )
+    {
+    }
+
+
+    public void setErrorMessage( String errorMessage )
+    {
+        this.errorMessage = errorMessage;
+        if ( errorMessageText != null && !errorMessageText.isDisposed() )
+        {
+            errorMessageText.setText( errorMessage == null ? " \n " : errorMessage );
+            boolean hasError = errorMessage != null
+                && ( StringConverter.removeWhiteSpaces( errorMessage ) ).length() > 0;
+            errorMessageText.setEnabled( hasError );
+            errorMessageText.setVisible( hasError );
+            errorMessageText.getParent().update();
+            Control ok = getButton( IDialogConstants.OK_ID );
+            if ( ok != null )
+            {
+                ok.setEnabled( !hasError );
+            }
+        }
+    }
 
 }
\ No newline at end of file

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilProjectEditorPart.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilProjectEditorPart.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilProjectEditorPart.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilProjectEditorPart.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collections;
 import java.util.HashSet;
@@ -58,242 +59,324 @@
 import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.forms.editor.IFormPage;
 
-public class SigilProjectEditorPart extends FormEditor implements IResourceChangeListener {
 
-	private final Set<IModelElement> unresolvedElements = Collections.synchronizedSet(new HashSet<IModelElement>());
-	private ISigilProjectModel project;
-	private volatile boolean saving = false;
-	private int dependenciesPageIndex;
-	
-	// XXX-FIXME-XXX
-	private Image errorImage = null; //SigilUI.imageDescriptorFromPlugin(SigilUI.PLUGIN_ID, "icons/error.gif").createImage();
-	private PropertiesForm textPage;
-	
-    public IProject getProject() {
-        IFileEditorInput fileInput = (IFileEditorInput) getEditorInput();
+public class SigilProjectEditorPart extends FormEditor implements IResourceChangeListener
+{
+
+    private final Set<IModelElement> unresolvedElements = Collections.synchronizedSet( new HashSet<IModelElement>() );
+    private ISigilProjectModel project;
+    private volatile boolean saving = false;
+    private int dependenciesPageIndex;
+
+    // XXX-FIXME-XXX
+    private Image errorImage = null; //SigilUI.imageDescriptorFromPlugin(SigilUI.PLUGIN_ID, "icons/error.gif").createImage();
+    private PropertiesForm textPage;
+
+
+    public IProject getProject()
+    {
+        IFileEditorInput fileInput = ( IFileEditorInput ) getEditorInput();
         return fileInput.getFile().getProject();
     }
-    
+
+
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
      */
     @Override
-    public void doSave(IProgressMonitor monitor) {
-		monitor.beginTask("Saving", IProgressMonitor.UNKNOWN);
-		try {
-			saving = true;
-			new ProgressMonitorDialog(getSite().getShell()).run(true, true, new IRunnableWithProgress() {
-				public void run(final IProgressMonitor monitor) throws InvocationTargetException,
-						InterruptedException {
-					try {
-						if ( textPage.isDirty() ) {
-							SigilUI.runInUISync(new Runnable() {
-								public void run() {
-									textPage.doSave(monitor);
-								}								
-							});
-							project.setBundle(null);
-						}
-						else if ( isDirty() ) {
-							commitPages(true);
-							project.save(monitor);
-							SigilUI.runInUISync(new Runnable() {
-								public void run() {
-									editorDirtyStateChanged();
-								}								
-							});
-						}
-						
-						monitor.done();
-					} catch (CoreException e) {
-						throw new InvocationTargetException(e);
-					}
-				}
-			});
-		} catch (InvocationTargetException e) {
-			SigilCore.error("Failed to save " + project, e.getTargetException());
-		} catch (InterruptedException e) {
-			monitor.setCanceled(true);
-			return;
-		} finally {
-			saving = false;
-		}
-		monitor.done();		
+    public void doSave( IProgressMonitor monitor )
+    {
+        monitor.beginTask( "Saving", IProgressMonitor.UNKNOWN );
+        try
+        {
+            saving = true;
+            new ProgressMonitorDialog( getSite().getShell() ).run( true, true, new IRunnableWithProgress()
+            {
+                public void run( final IProgressMonitor monitor ) throws InvocationTargetException,
+                    InterruptedException
+                {
+                    try
+                    {
+                        if ( textPage.isDirty() )
+                        {
+                            SigilUI.runInUISync( new Runnable()
+                            {
+                                public void run()
+                                {
+                                    textPage.doSave( monitor );
+                                }
+                            } );
+                            project.setBundle( null );
+                        }
+                        else if ( isDirty() )
+                        {
+                            commitPages( true );
+                            project.save( monitor );
+                            SigilUI.runInUISync( new Runnable()
+                            {
+                                public void run()
+                                {
+                                    editorDirtyStateChanged();
+                                }
+                            } );
+                        }
+
+                        monitor.done();
+                    }
+                    catch ( CoreException e )
+                    {
+                        throw new InvocationTargetException( e );
+                    }
+                }
+            } );
+        }
+        catch ( InvocationTargetException e )
+        {
+            SigilCore.error( "Failed to save " + project, e.getTargetException() );
+        }
+        catch ( InterruptedException e )
+        {
+            monitor.setCanceled( true );
+            return;
+        }
+        finally
+        {
+            saving = false;
+        }
+        monitor.done();
     }
-    
-	/* (non-Javadoc)
+
+
+    /* (non-Javadoc)
      * @see org.eclipse.ui.forms.editor.FormEditor#addPages()
      */
     @Override
-    protected void addPages() {
-        try {
-            addPage(new OverviewForm(this, project));
-			addPage(new ContentsForm(this, project));
-			dependenciesPageIndex = addPage(new DependenciesForm(this, project, unresolvedElements));
-			addPage(new ExportsForm(this, project));
-			textPage = new PropertiesForm(this, project);
-			addPage(textPage, getEditorInput());
-			setPartName(project.getSymbolicName());
-			
-			refreshTabImages();
-        }
-        catch (PartInitException e) {
-        	SigilCore.error( "Failed to build " + this, e );
-		}
-    }
-    
-    protected void refreshTabImages() {
-	    if(unresolvedElements.isEmpty()) {
-	    	setPageImage(dependenciesPageIndex, null);
-	    } else {
-	    	setPageImage(dependenciesPageIndex, errorImage);
-	    }
+    protected void addPages()
+    {
+        try
+        {
+            addPage( new OverviewForm( this, project ) );
+            addPage( new ContentsForm( this, project ) );
+            dependenciesPageIndex = addPage( new DependenciesForm( this, project, unresolvedElements ) );
+            addPage( new ExportsForm( this, project ) );
+            textPage = new PropertiesForm( this, project );
+            addPage( textPage, getEditorInput() );
+            setPartName( project.getSymbolicName() );
+
+            refreshTabImages();
+        }
+        catch ( PartInitException e )
+        {
+            SigilCore.error( "Failed to build " + this, e );
+        }
+    }
+
+
+    protected void refreshTabImages()
+    {
+        if ( unresolvedElements.isEmpty() )
+        {
+            setPageImage( dependenciesPageIndex, null );
+        }
+        else
+        {
+            setPageImage( dependenciesPageIndex, errorImage );
+        }
     }
-    
+
+
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#doSaveAs()
      */
     @Override
-    public void doSaveAs() {
-    	// save as not allowed
+    public void doSaveAs()
+    {
+        // save as not allowed
     }
 
+
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
      */
     @Override
-    public boolean isSaveAsAllowed() {
+    public boolean isSaveAsAllowed()
+    {
         return false;
     }
-    
+
+
     @Override
-    public void dispose() {
-    	ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
-    	errorImage.dispose();
-    	super.dispose();
-    }
-
-	public void resourceChanged(IResourceChangeEvent event) {
-		IResourceDelta delta = event.getDelta();
-		final IFile editorFile = ((IFileEditorInput) getEditorInput()).getFile();
-		try {
-			delta.accept(new IResourceDeltaVisitor() {
-				public boolean visit(IResourceDelta delta) throws CoreException {
-					int kind = delta.getKind();
-					IResource resource = delta.getResource();
-					if(resource instanceof IProject) {
-						if(!editorFile.getProject().equals(resource)) {
-							return false;
-						}
-						if(kind == IResourceDelta.CHANGED && (delta.getFlags() & IResourceDelta.MARKERS) > 0) {
-							loadUnresolvedDependencies();
-							refreshAllPages();
-						}
-						return true;
-					}
-					
-					if(resource instanceof IFile) {
-						IFile affectedFile = (IFile) resource;
-							if(affectedFile.equals(editorFile)) {
-							switch (kind) {
-							case IResourceDelta.REMOVED:
-								close(false);
-								break;
-							case IResourceDelta.CHANGED:
-								if(!saving) {
-									reload();
-								}
-								SigilUI.runInUISync( new Runnable() {
-									public void run() {
-										setPartName(project.getSymbolicName());								
-									} 									
-								} );
-								break;
-							}
-						}
-						// Recurse no more
-						return false;
-					}
-					
-					return true;
-				}
-			});
-		} catch (CoreException e) {
-			ErrorDialog.openError(getSite().getShell(), "Error", null, e.getStatus());
-		}
-	}
-	
-	protected void refreshAllPages() {
-		Runnable op = new Runnable() {
-			public void run() {
-				for(Iterator<?> iter = pages.iterator(); iter.hasNext(); ) {
-					IFormPage page = (IFormPage) iter.next();
-					if(page != null) {
-						IManagedForm managedForm = page.getManagedForm();
-						if(managedForm != null) {
-							managedForm.refresh();
-							IFormPart[] parts = managedForm.getParts();
-							for (IFormPart part : parts) {
-								part.refresh();
-							}
-						}
-					}
-				}
-				firePropertyChange(IEditorPart.PROP_DIRTY);
-				setPartName(project.getSymbolicName());
-				refreshTabImages();
-			}
-		};
-		getSite().getShell().getDisplay().syncExec(op);
-	}
-	
-	protected void reload() {
-		project.setBundle(null);
-		refreshAllPages();
-	}
-	
-	@Override
-	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-		super.init(site, input);
-		
-        try {
-			this.project = SigilCore.create(getProject());
-		} catch (CoreException e) {
-			throw new PartInitException("Error creating Sigil project", e);
-		}
-		
-    	ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
-		
-		if(input instanceof IFileEditorInput) {
-			try {
-				loadUnresolvedDependencies();
-			} catch (CoreException e) {
-				throw new PartInitException("Error retrieving dependency markers", e);
-			}
-		}
-	}
-
-	private void loadUnresolvedDependencies() throws CoreException {
-		ModelElementFactory factory = ModelElementFactory.getInstance();
-		IMarker[] markers = getProject().findMarkers(SigilCore.MARKER_UNRESOLVED_DEPENDENCY, true, IResource.DEPTH_ONE);
-		unresolvedElements.clear();
-		
-		for (IMarker marker : markers) {
-			String elementName = (String) marker.getAttribute("element");
-			String versionRangeStr = (String) marker.getAttribute("versionRange");
-			if(elementName != null && versionRangeStr != null) {
-				if(marker.getType().equals(SigilCore.MARKER_UNRESOLVED_IMPORT_PACKAGE)) {
-					IPackageImport pkgImport = factory.newModelElement(IPackageImport.class);
-					pkgImport.setPackageName(elementName);
-					pkgImport.setVersions(VersionRange.parseVersionRange(versionRangeStr));
-					unresolvedElements.add(pkgImport);
-				} else if(marker.getType().equals(SigilCore.MARKER_UNRESOLVED_REQUIRE_BUNDLE)) {
-					IRequiredBundle req = factory.newModelElement(IRequiredBundle.class);
-					req.setSymbolicName(elementName);
-					req.setVersions(VersionRange.parseVersionRange(versionRangeStr));
-					unresolvedElements.add(req);
-				}
-			}
-		}
-	}
+    public void dispose()
+    {
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener( this );
+        errorImage.dispose();
+        super.dispose();
+    }
+
+
+    public void resourceChanged( IResourceChangeEvent event )
+    {
+        IResourceDelta delta = event.getDelta();
+        final IFile editorFile = ( ( IFileEditorInput ) getEditorInput() ).getFile();
+        try
+        {
+            delta.accept( new IResourceDeltaVisitor()
+            {
+                public boolean visit( IResourceDelta delta ) throws CoreException
+                {
+                    int kind = delta.getKind();
+                    IResource resource = delta.getResource();
+                    if ( resource instanceof IProject )
+                    {
+                        if ( !editorFile.getProject().equals( resource ) )
+                        {
+                            return false;
+                        }
+                        if ( kind == IResourceDelta.CHANGED && ( delta.getFlags() & IResourceDelta.MARKERS ) > 0 )
+                        {
+                            loadUnresolvedDependencies();
+                            refreshAllPages();
+                        }
+                        return true;
+                    }
+
+                    if ( resource instanceof IFile )
+                    {
+                        IFile affectedFile = ( IFile ) resource;
+                        if ( affectedFile.equals( editorFile ) )
+                        {
+                            switch ( kind )
+                            {
+                                case IResourceDelta.REMOVED:
+                                    close( false );
+                                    break;
+                                case IResourceDelta.CHANGED:
+                                    if ( !saving )
+                                    {
+                                        reload();
+                                    }
+                                    SigilUI.runInUISync( new Runnable()
+                                    {
+                                        public void run()
+                                        {
+                                            setPartName( project.getSymbolicName() );
+                                        }
+                                    } );
+                                    break;
+                            }
+                        }
+                        // Recurse no more
+                        return false;
+                    }
+
+                    return true;
+                }
+            } );
+        }
+        catch ( CoreException e )
+        {
+            ErrorDialog.openError( getSite().getShell(), "Error", null, e.getStatus() );
+        }
+    }
+
+
+    protected void refreshAllPages()
+    {
+        Runnable op = new Runnable()
+        {
+            public void run()
+            {
+                for ( Iterator<?> iter = pages.iterator(); iter.hasNext(); )
+                {
+                    IFormPage page = ( IFormPage ) iter.next();
+                    if ( page != null )
+                    {
+                        IManagedForm managedForm = page.getManagedForm();
+                        if ( managedForm != null )
+                        {
+                            managedForm.refresh();
+                            IFormPart[] parts = managedForm.getParts();
+                            for ( IFormPart part : parts )
+                            {
+                                part.refresh();
+                            }
+                        }
+                    }
+                }
+                firePropertyChange( IEditorPart.PROP_DIRTY );
+                setPartName( project.getSymbolicName() );
+                refreshTabImages();
+            }
+        };
+        getSite().getShell().getDisplay().syncExec( op );
+    }
+
+
+    protected void reload()
+    {
+        project.setBundle( null );
+        refreshAllPages();
+    }
+
+
+    @Override
+    public void init( IEditorSite site, IEditorInput input ) throws PartInitException
+    {
+        super.init( site, input );
+
+        try
+        {
+            this.project = SigilCore.create( getProject() );
+        }
+        catch ( CoreException e )
+        {
+            throw new PartInitException( "Error creating Sigil project", e );
+        }
+
+        ResourcesPlugin.getWorkspace().addResourceChangeListener( this, IResourceChangeEvent.POST_CHANGE );
+
+        if ( input instanceof IFileEditorInput )
+        {
+            try
+            {
+                loadUnresolvedDependencies();
+            }
+            catch ( CoreException e )
+            {
+                throw new PartInitException( "Error retrieving dependency markers", e );
+            }
+        }
+    }
+
+
+    private void loadUnresolvedDependencies() throws CoreException
+    {
+        ModelElementFactory factory = ModelElementFactory.getInstance();
+        IMarker[] markers = getProject()
+            .findMarkers( SigilCore.MARKER_UNRESOLVED_DEPENDENCY, true, IResource.DEPTH_ONE );
+        unresolvedElements.clear();
+
+        for ( IMarker marker : markers )
+        {
+            String elementName = ( String ) marker.getAttribute( "element" );
+            String versionRangeStr = ( String ) marker.getAttribute( "versionRange" );
+            if ( elementName != null && versionRangeStr != null )
+            {
+                if ( marker.getType().equals( SigilCore.MARKER_UNRESOLVED_IMPORT_PACKAGE ) )
+                {
+                    IPackageImport pkgImport = factory.newModelElement( IPackageImport.class );
+                    pkgImport.setPackageName( elementName );
+                    pkgImport.setVersions( VersionRange.parseVersionRange( versionRangeStr ) );
+                    unresolvedElements.add( pkgImport );
+                }
+                else if ( marker.getType().equals( SigilCore.MARKER_UNRESOLVED_REQUIRE_BUNDLE ) )
+                {
+                    IRequiredBundle req = factory.newModelElement( IRequiredBundle.class );
+                    req.setSymbolicName( elementName );
+                    req.setVersions( VersionRange.parseVersionRange( versionRangeStr ) );
+                    unresolvedElements.add( req );
+                }
+            }
+        }
+    }
 }

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilSourcePage.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilSourcePage.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilSourcePage.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/SigilSourcePage.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
 
 package org.apache.felix.sigil.ui.eclipse.ui.editors.project;
 
+
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.text.IDocument;
@@ -33,83 +34,117 @@
 import org.eclipse.ui.forms.editor.IFormPage;
 import org.eclipse.ui.ide.IDE;
 
-public class SigilSourcePage extends TextEditor implements IFormPage {
-	private final String id;
-	private int index;
-	private SigilProjectEditorPart editor;
-	private boolean active;
-	private Control control;
-	
-	public SigilSourcePage(String id) {
-		this.id = id;
-	}
-
-	@Override
-	public void createPartControl(Composite parent) {
-		super.createPartControl(parent);
-		Control[] children = parent.getChildren();
-		control = children[children.length - 1];
-		getSourceViewer().addTextListener( new ITextListener() {
-			public void textChanged(TextEvent event) {
-				if ( editor != null ) {
-					editor.refreshAllPages();
-				}
-			}
-		});
-		//PlatformUI.getWorkbench().getHelpSystem().setHelp(fControl, IHelpContextIds.MANIFEST_SOURCE_PAGE);
-	}
-
-	public void initialize(FormEditor editor) {
-		this.editor = (SigilProjectEditorPart) editor;
-	}
-
-	public FormEditor getEditor() {
-		return editor;
-	}
-
-	public String getId() {
-		return id;
-	}
-
-	public int getIndex() {
-		return index;
-	}
-	
-	public void setIndex(int index) {
-		this.index = index;
-	}	
-
-	public boolean isActive() {
-		return active;
-	}
-
-	public void setActive(boolean active) {
-		this.active = active;
-	}
-	
-	public Control getPartControl() {
-		return control;
-	}
-
-	public boolean selectReveal(Object object) {
-		if (object instanceof IMarker) {
-			IDE.gotoMarker(this, (IMarker) object);
-			return true;
-		}
-		return false;
-	}
-
-	// static impls
-	public boolean isEditor() {
-		return true;
-	}
-
-	public boolean canLeaveThePage() {
-		return true;
-	}
-
-	public IManagedForm getManagedForm() {
-		// this is not a form
-		return null;
-	}
+
+public class SigilSourcePage extends TextEditor implements IFormPage
+{
+    private final String id;
+    private int index;
+    private SigilProjectEditorPart editor;
+    private boolean active;
+    private Control control;
+
+
+    public SigilSourcePage( String id )
+    {
+        this.id = id;
+    }
+
+
+    @Override
+    public void createPartControl( Composite parent )
+    {
+        super.createPartControl( parent );
+        Control[] children = parent.getChildren();
+        control = children[children.length - 1];
+        getSourceViewer().addTextListener( new ITextListener()
+        {
+            public void textChanged( TextEvent event )
+            {
+                if ( editor != null )
+                {
+                    editor.refreshAllPages();
+                }
+            }
+        } );
+        //PlatformUI.getWorkbench().getHelpSystem().setHelp(fControl, IHelpContextIds.MANIFEST_SOURCE_PAGE);
+    }
+
+
+    public void initialize( FormEditor editor )
+    {
+        this.editor = ( SigilProjectEditorPart ) editor;
+    }
+
+
+    public FormEditor getEditor()
+    {
+        return editor;
+    }
+
+
+    public String getId()
+    {
+        return id;
+    }
+
+
+    public int getIndex()
+    {
+        return index;
+    }
+
+
+    public void setIndex( int index )
+    {
+        this.index = index;
+    }
+
+
+    public boolean isActive()
+    {
+        return active;
+    }
+
+
+    public void setActive( boolean active )
+    {
+        this.active = active;
+    }
+
+
+    public Control getPartControl()
+    {
+        return control;
+    }
+
+
+    public boolean selectReveal( Object object )
+    {
+        if ( object instanceof IMarker )
+        {
+            IDE.gotoMarker( this, ( IMarker ) object );
+            return true;
+        }
+        return false;
+    }
+
+
+    // static impls
+    public boolean isEditor()
+    {
+        return true;
+    }
+
+
+    public boolean canLeaveThePage()
+    {
+        return true;
+    }
+
+
+    public IManagedForm getManagedForm()
+    {
+        // this is not a form
+        return null;
+    }
 }