*** empty log message ***
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageObject.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageObject.java
index 02f9887..4ad3a79 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageObject.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageObject.java
@@ -15,7 +15,6 @@
import org.eclipse.jdt.core.*;
import org.eclipse.osgi.util.*;
-import org.osgi.framework.*;
public class ExportPackageObject implements Serializable {
@@ -24,12 +23,14 @@
private String fVersionAttribute;
private String name;
private String version;
+ private boolean internal;
private transient ManifestElement element;
public ExportPackageObject(ManifestElement element, String versionAttribute) {
fVersionAttribute = versionAttribute;
name = element.getValue();
version = element.getAttribute(fVersionAttribute);
+ internal = "true".equals(element.getDirective("x-internal"));
this.element = element;
}
@@ -62,6 +63,9 @@
buffer.append(version.trim());
buffer.append("\"");
}
+ if (internal)
+ buffer.append(";x-internal:=true");
+
if (element == null)
return buffer.toString();
@@ -78,11 +82,12 @@
buffer.append("\"");
}
}
+
Enumeration directives = element.getDirectiveKeys();
if (directives != null) {
while (directives.hasMoreElements()) {
String directive = directives.nextElement().toString();
- if (directive.equals(Constants.RESOLUTION_DIRECTIVE))
+ if (directive.equals("x-internal"))
continue;
buffer.append(";");
buffer.append(directive);
@@ -111,4 +116,12 @@
this.version = version;
}
+ public boolean isInternal() {
+ return internal;
+ }
+
+ public void setInternal(boolean internal) {
+ this.internal = internal;
+ }
+
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java
index 891d280..f16c91b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java
@@ -111,9 +111,9 @@
parent,
Section.DESCRIPTION,
new String[] {"Add...", "Remove", "Properties..."});
- getSection().setText("Required Packages");
+ getSection().setText("Exported Packages");
getSection()
- .setDescription("You can specify packages this plug-in depends on without explicitly restricting what plug-ins they must come from.");
+ .setDescription("Enumerate all the packages that this plug-in exposes to clients. All other packages will be hidden from clients at all times.");
getTablePart().setEditable(false);
}
@@ -172,6 +172,13 @@
return false;
}
+ public void dispose() {
+ IBundleModel model = getBundleModel();
+ if (model != null)
+ model.removeModelChangedListener(this);
+ super.dispose();
+ }
+
protected void doPaste() {
}
@@ -216,15 +223,12 @@
if (dialog.open() == DependencyPropertiesDialog.OK && isEditable()) {
exportObject.setVersion(dialog.getVersion());
writeExportPackageHeader();
- fPackageViewer.refresh(exportObject);
}
}
private void handleRemove() {
IStructuredSelection ssel = (IStructuredSelection) fPackageViewer.getSelection();
- Object[] items = ssel.toArray();
- fPackageViewer.remove(items);
- removeExportPackages(items);
+ removeExportPackages(ssel.toArray());
}
private void removeExportPackages(Object[] removed) {
@@ -250,7 +254,6 @@
IPackageFragment candidate = (IPackageFragment) selected[i];
ExportPackageObject p = new ExportPackageObject(candidate, getVersionAttribute());
fPackages.put(p.getName(), p);
- fPackageViewer.add(p);
}
if (selected.length > 0) {
writeExportPackageHeader();
@@ -271,7 +274,7 @@
return vector;
}
- private void writeExportPackageHeader() {
+ public void writeExportPackageHeader() {
StringBuffer buffer = new StringBuffer();
if (fPackages != null) {
Iterator iter = fPackages.values().iterator();
@@ -287,14 +290,15 @@
public void modelChanged(IModelChangedEvent event) {
if (event.getChangeType() == IModelChangedEvent.WORLD_CHANGED) {
+ fPackages = null;
markStale();
return;
}
- refresh();
+ if (event.getChangedProperty().equals(getExportedPackageHeader()))
+ refresh();
}
public void refresh() {
- fPackages = null;
fPackageViewer.refresh();
super.refresh();
}
@@ -352,11 +356,9 @@
return (manifestVersion < 2) ? Constants.PACKAGE_SPECIFICATION_VERSION : Constants.VERSION_ATTRIBUTE;
}
- private String getExportedPackageHeader() {
+ public String getExportedPackageHeader() {
int manifestVersion = BundlePluginBase.getBundleManifestVersion(getBundle());
return (manifestVersion < 2) ? ICoreConstants.PROVIDE_PACKAGE : Constants.EXPORT_PACKAGE;
}
-
-
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageVisibilitySection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageVisibilitySection.java
index 618cb01..0c3766a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageVisibilitySection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageVisibilitySection.java
@@ -14,8 +14,10 @@
import org.eclipse.jface.viewers.*;
import org.eclipse.pde.core.*;
import org.eclipse.pde.core.plugin.*;
+import org.eclipse.pde.internal.core.ibundle.*;
import org.eclipse.pde.internal.ui.*;
import org.eclipse.pde.internal.ui.editor.*;
+import org.eclipse.pde.internal.ui.editor.context.*;
import org.eclipse.pde.internal.ui.elements.*;
import org.eclipse.pde.internal.ui.parts.*;
import org.eclipse.swt.*;
@@ -39,6 +41,7 @@
private TableViewer fPackageExportViewer;
private Action fAddAction;
private Action fRemoveAction;
+ private ExportPackageSection fMaster;
class TableContentProvider extends DefaultContentProvider
implements IStructuredContentProvider {
@@ -62,11 +65,12 @@
}
}
- public ExportPackageVisibilitySection(PDEFormPage formPage, Composite parent) {
+ public ExportPackageVisibilitySection(PDEFormPage formPage, Composite parent, ExportPackageSection master) {
super(formPage, parent, Section.DESCRIPTION, new String[]{
PDEPlugin.getResourceString(KEY_ADD),
PDEPlugin.getResourceString(KEY_REMOVE)});
handleDefaultButton = false;
+ fMaster = master;
}
public void createClient(Section section, FormToolkit toolkit) {
@@ -83,8 +87,7 @@
createPackageViewer(container, toolkit);
makeActions();
- IPluginModelBase model = (IPluginModelBase) getPage().getModel();
- model.addModelChangedListener(this);
+ getBundleModel().addModelChangedListener(this);
section.setLayoutData(new GridData(GridData.FILL_BOTH));
section.setClient(container);
@@ -147,8 +150,8 @@
}
public void dispose() {
- IPluginModelBase model = (IPluginModelBase) getPage().getModel();
- if (model!=null)
+ IBundleModel model = getBundleModel();
+ if (model != null)
model.removeModelChangedListener(this);
super.dispose();
}
@@ -168,7 +171,8 @@
markStale();
return;
}
- refresh();
+ if (e.getChangedProperty().equals(fMaster.getExportedPackageHeader()))
+ refresh();
}
public void refresh() {
@@ -178,5 +182,13 @@
public void selectionChanged(IFormPart source, ISelection selection) {
}
-
+ private BundleInputContext getBundleContext() {
+ InputContextManager manager = getPage().getPDEEditor().getContextManager();
+ return (BundleInputContext) manager.findContext(BundleInputContext.CONTEXT_ID);
+ }
+
+ private IBundleModel getBundleModel() {
+ BundleInputContext context = getBundleContext();
+ return (context != null) ? (IBundleModel)context.getModel() : null;
+ }
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ImportPackageSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ImportPackageSection.java
index 7751c11..32c1254 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ImportPackageSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ImportPackageSection.java
@@ -169,6 +169,13 @@
return false;
}
+ public void dispose() {
+ IBundleModel model = getBundleModel();
+ if (model != null)
+ model.removeModelChangedListener(this);
+ super.dispose();
+ }
+
protected void doPaste() {
}
@@ -214,15 +221,12 @@
importObject.setOptional(dialog.isOptional());
importObject.setVersion(dialog.getVersion());
writeImportPackages();
- fPackageViewer.refresh(importObject);
}
}
private void handleRemove() {
IStructuredSelection ssel = (IStructuredSelection) fPackageViewer.getSelection();
- Object[] items = ssel.toArray();
- fPackageViewer.remove(items);
- removeImportPackages(items);
+ removeImportPackages(ssel.toArray());
}
/**
@@ -252,7 +256,6 @@
ExportPackageDescription candidate = (ExportPackageDescription) selected[i];
ImportPackageObject p = new ImportPackageObject(candidate, getVersionAttribute());
fPackages.put(p.getName(), p);
- fPackageViewer.add(p);
}
if (selected.length > 0) {
writeImportPackages();
@@ -297,13 +300,14 @@
public void modelChanged(IModelChangedEvent event) {
if (event.getChangeType() == IModelChangedEvent.WORLD_CHANGED) {
markStale();
+ fPackages = null;
return;
}
- refresh();
+ if (event.getChangedProperty().equals(Constants.IMPORT_PACKAGE))
+ refresh();
}
public void refresh() {
- fPackages = null;
fPackageViewer.refresh();
super.refresh();
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java
index 897c491..959ed32 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/RuntimePage.java
@@ -39,8 +39,9 @@
form.getBody().setLayout(layout);
if (isBundle()) {
- mform.addPart(new ExportPackageSection(this, form.getBody()));
- mform.addPart(new ExportPackageVisibilitySection(this, form.getBody()));
+ ExportPackageSection section = new ExportPackageSection(this, form.getBody());
+ mform.addPart(section);
+ mform.addPart(new ExportPackageVisibilitySection(this, form.getBody(), section));
mform.addPart(new LibrarySection(this, form.getBody()));
} else {
mform.addPart(new LibrarySection(this, form.getBody()));
diff --git a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/Bundle.java b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/Bundle.java
index a89be6a..91dfc4e 100644
--- a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/Bundle.java
+++ b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/Bundle.java
@@ -101,6 +101,7 @@
*/
public void setHeader(String key, String value) {
ManifestHeader header = (ManifestHeader)fDocumentHeaders.get(key);
+ String old = header == null ? null : header.getValue();
if (header == null) {
header = new ManifestHeader();
}
@@ -108,7 +109,7 @@
header.setValue(value);
fDocumentHeaders.put(key, header);
- fModel.fireModelObjectChanged(header, key, null, value);
+ fModel.fireModelObjectChanged(header, key, old, value);
}
/* (non-Javadoc)
* @see org.eclipse.pde.internal.core.ibundle.IBundle#getHeader(java.lang.String)