prompt to remove corresponding import on export removal (FELIX-2483)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@967022 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
index c173cf5..35d67a2 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
@@ -30,6 +30,7 @@
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 @@
if ( importsAdded )
{
- ( ( SigilProjectEditorPart ) getPage().getEditor() ).refreshAllPages();
+ refreshAllPages();
markDirty();
}
else if ( exportsAdded )
@@ -193,20 +194,57 @@
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();