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 2010/07/23 12:19:49 UTC

svn commit: r967022 - /felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java

Author: dsavage
Date: Fri Jul 23 10:19:49 2010
New Revision: 967022

URL: http://svn.apache.org/viewvc?rev=967022&view=rev
Log:
prompt to remove corresponding import on export removal (FELIX-2483)

Modified:
    felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java

Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java?rev=967022&r1=967021&r2=967022&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java Fri Jul 23 10:19:49 2010
@@ -30,6 +30,7 @@ import org.apache.felix.sigil.eclipse.mo
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.ModelElementFactoryException;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
+import org.apache.felix.sigil.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.model.osgi.IPackageExport;
 import org.apache.felix.sigil.model.osgi.IPackageImport;
 import org.apache.felix.sigil.ui.eclipse.ui.form.SigilPage;
@@ -138,7 +139,7 @@ public class ExportPackagesSection exten
 
                 if ( importsAdded )
                 {
-                    ( ( SigilProjectEditorPart ) getPage().getEditor() ).refreshAllPages();
+                    refreshAllPages();
                     markDirty();
                 }
                 else if ( exportsAdded )
@@ -193,20 +194,57 @@ public class ExportPackagesSection exten
     protected void handleRemoved()
     {
         IStructuredSelection selection = ( IStructuredSelection ) getSelection();
-
+        
         if ( !selection.isEmpty() )
         {
+            boolean importsRemoved = false;
+
+            IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
+            boolean shouldRemoveImports = OptionalPrompt.optionallyPrompt( store,
+                SigilCore.PREFERENCES_REMOVE_IMPORT_FOR_EXPORT, "Remove Exports",
+                "Should corresponding imports be removed?", getSection().getShell() );
+            
+            IBundleModelElement info = getBundle().getBundleInfo();
+            
             for ( Iterator<IPackageExport> i = selection.iterator(); i.hasNext(); )
             {
-                getBundle().getBundleInfo().removeExport( i.next() );
+                IPackageExport pe = i.next();
+                info.removeExport( pe );
+                
+                // Remove corresponding imports (maybe)
+                if (shouldRemoveImports) 
+                {                    
+                    for(IPackageImport pi : info.getImports() ) {
+                        if (pi.getPackageName().equals(pe.getPackageName())) {
+                            importsRemoved = true;
+                            info.removeImport(pi);
+                        }
+                    }
+                }
             }
 
-            refresh();
+            if ( importsRemoved )
+            {
+                refreshAllPages();
+            }
+            else {
+                refresh();
+            }
+            
             markDirty();
         }
     }
 
 
+    /**
+     * 
+     */
+    private void refreshAllPages()
+    {
+        ( ( SigilProjectEditorPart ) getPage().getEditor() ).refreshAllPages();
+    }
+
+
     private ISigilBundle getBundle()
     {
         return getProjectModel().getBundle();