*** empty log message ***
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependencyPropertiesDialog.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependencyPropertiesDialog.java
index 82ae2b8..3033194 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependencyPropertiesDialog.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependencyPropertiesDialog.java
@@ -16,6 +16,7 @@
import org.eclipse.jface.dialogs.*;
import org.eclipse.pde.core.plugin.*;
import org.eclipse.pde.internal.ui.*;
+import org.eclipse.pde.internal.ui.model.bundle.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
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 f16c91b..b3abe83 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
@@ -11,34 +11,50 @@
package org.eclipse.pde.internal.ui.editor.plugin;
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jdt.core.*;
-import org.eclipse.jdt.ui.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.*;
-import org.eclipse.pde.core.*;
-import org.eclipse.pde.core.plugin.*;
-import org.eclipse.pde.internal.core.*;
-import org.eclipse.pde.internal.core.bundle.*;
-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.pde.internal.ui.util.*;
-import org.eclipse.swt.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.actions.*;
-import org.eclipse.ui.forms.widgets.*;
-import org.osgi.framework.*;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.ui.ISharedImages;
+import org.eclipse.jdt.ui.JavaElementLabelProvider;
+import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osgi.service.resolver.ExportPackageDescription;
+import org.eclipse.pde.core.IModelChangedEvent;
+import org.eclipse.pde.core.IModelChangedListener;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
+import org.eclipse.pde.internal.core.ICoreConstants;
+import org.eclipse.pde.internal.core.bundle.BundlePluginBase;
+import org.eclipse.pde.internal.core.ibundle.IBundle;
+import org.eclipse.pde.internal.core.ibundle.IBundleModel;
+import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.pde.internal.ui.editor.PDEFormPage;
+import org.eclipse.pde.internal.ui.editor.TableSection;
+import org.eclipse.pde.internal.ui.editor.context.InputContextManager;
+import org.eclipse.pde.internal.ui.elements.DefaultTableProvider;
+import org.eclipse.pde.internal.ui.model.bundle.Bundle;
+import org.eclipse.pde.internal.ui.model.bundle.ExportPackageHeader;
+import org.eclipse.pde.internal.ui.model.bundle.ExportPackageObject;
+import org.eclipse.pde.internal.ui.parts.TablePart;
+import org.eclipse.pde.internal.ui.util.SWTUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
public class ExportPackageSection extends TableSection implements IModelChangedListener {
@@ -48,27 +64,15 @@
class ExportPackageContentProvider extends DefaultTableProvider {
public Object[] getElements(Object parent) {
- if (fPackages == null)
- createExportObjects();
- return fPackages.values().toArray();
+ if (fHeader == null) {
+ //TODO bad cast
+ Bundle bundle = (Bundle)getBundle();
+ fHeader = (ExportPackageHeader)bundle.getManifestHeader(getExportedPackageHeader());
+ }
+ return fHeader == null ? new Object[0] : fHeader.getPackages();
}
-
- private void createExportObjects() {
- fPackages = new TreeMap();
- try {
- String value = getBundle().getHeader(getExportedPackageHeader());
- if (value != null) {
- ManifestElement[] elements = ManifestElement.parseHeader(Constants.IMPORT_PACKAGE, value);
- for (int i = 0; i < elements.length; i++) {
- ExportPackageObject p = new ExportPackageObject(elements[i], getVersionAttribute());
- fPackages.put(p.getName(), p);
- }
- }
- } catch (BundleException e) {
- }
- }
- }
-
+ }
+
class ExportPackageLabelProvider extends LabelProvider implements
ITableLabelProvider {
public String getColumnText(Object obj, int index) {
@@ -100,10 +104,10 @@
private TableViewer fPackageViewer;
- private Map fPackages;
private Action fAddAction;
private Action fRemoveAction;
private Action fPropertiesAction;
+ private ExportPackageHeader fHeader;
public ExportPackageSection(PDEFormPage page, Composite parent) {
super(
@@ -222,21 +226,14 @@
dialog.setTitle(exportObject.getName());
if (dialog.open() == DependencyPropertiesDialog.OK && isEditable()) {
exportObject.setVersion(dialog.getVersion());
- writeExportPackageHeader();
}
}
private void handleRemove() {
- IStructuredSelection ssel = (IStructuredSelection) fPackageViewer.getSelection();
- removeExportPackages(ssel.toArray());
- }
-
- private void removeExportPackages(Object[] removed) {
- for (int k = 0; k < removed.length; k++) {
- ExportPackageObject p = (ExportPackageObject) removed[k];
- fPackages.remove(p.getName());
- }
- writeExportPackageHeader();
+ Object[] removed = ((IStructuredSelection) fPackageViewer.getSelection()).toArray();
+ for (int i = 0; i < removed.length; i++) {
+ fHeader.removePackage((ExportPackageObject) removed[i]);
+ }
}
private void handleAdd() {
@@ -247,16 +244,12 @@
ILabelProvider labelProvider = new JavaElementLabelProvider();
PackageSelectionDialog dialog = new PackageSelectionDialog(
PDEPlugin.getActiveWorkbenchShell(),
- labelProvider, JavaCore.create(project), getNames());
+ labelProvider, JavaCore.create(project), fHeader.getPackageNames());
if (dialog.open() == PackageSelectionDialog.OK) {
Object[] selected = dialog.getResult();
for (int i = 0; i < selected.length; i++) {
IPackageFragment candidate = (IPackageFragment) selected[i];
- ExportPackageObject p = new ExportPackageObject(candidate, getVersionAttribute());
- fPackages.put(p.getName(), p);
- }
- if (selected.length > 0) {
- writeExportPackageHeader();
+ fHeader.addPackage(new ExportPackageObject(candidate, getVersionAttribute()));
}
}
labelProvider.dispose();
@@ -265,32 +258,9 @@
}
}
- private Vector getNames() {
- Vector vector = new Vector(fPackages.size());
- Iterator iter = fPackages.keySet().iterator();
- for (int i = 0; iter.hasNext(); i++) {
- vector.add(iter.next().toString());
- }
- return vector;
- }
-
- public void writeExportPackageHeader() {
- StringBuffer buffer = new StringBuffer();
- if (fPackages != null) {
- Iterator iter = fPackages.values().iterator();
- while (iter.hasNext()) {
- buffer.append(((ExportPackageObject)iter.next()).write());
- if (iter.hasNext()) {
- buffer.append("," + System.getProperty("line.separator") + " "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- }
- getBundle().setHeader(getExportedPackageHeader(), buffer.toString());
- }
-
public void modelChanged(IModelChangedEvent event) {
if (event.getChangeType() == IModelChangedEvent.WORLD_CHANGED) {
- fPackages = null;
+ fHeader = null;
markStale();
return;
}
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 91dfc4e..c82e2f8 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
@@ -13,8 +13,10 @@
import java.util.*;
import java.util.jar.*;
import org.eclipse.jface.text.*;
+import org.eclipse.pde.internal.core.*;
import org.eclipse.pde.internal.core.ibundle.*;
import org.eclipse.pde.internal.ui.model.*;
+import org.osgi.framework.*;
public class Bundle implements IBundle {
@@ -34,9 +36,8 @@
Iterator iter = attributes.keySet().iterator();
while (iter.hasNext()) {
Attributes.Name key = (Attributes.Name) iter.next();
- ManifestHeader header = new ManifestHeader();
- header.setName(key.toString());
- header.setValue((String)attributes.get(key));
+ String value = (String)attributes.get(key);
+ ManifestHeader header = createHeader(key.toString(), value);
fDocumentHeaders.put(key.toString(), header);
}
adjustOffsets(fModel.getDocument());
@@ -103,14 +104,25 @@
ManifestHeader header = (ManifestHeader)fDocumentHeaders.get(key);
String old = header == null ? null : header.getValue();
if (header == null) {
- header = new ManifestHeader();
- }
- header.setName(key);
- header.setValue(value);
+ header = createHeader(key, value);
+ } else {
+ header.setValue(value);
+ }
fDocumentHeaders.put(key, header);
fModel.fireModelObjectChanged(header, key, old, value);
}
+
+ private ManifestHeader createHeader(String key, String value) {
+ ManifestHeader header = null;
+ if (key.equals(Constants.EXPORT_PACKAGE) || key.equals(ICoreConstants.PROVIDE_PACKAGE)) {
+ header = new ExportPackageHeader(key, value);
+ } else {
+ header = new ManifestHeader(key, value);
+ }
+ header.setBundle(this);
+ return header;
+ }
/* (non-Javadoc)
* @see org.eclipse.pde.internal.core.ibundle.IBundle#getHeader(java.lang.String)
*/
@@ -118,6 +130,10 @@
ManifestHeader header = (ManifestHeader)fDocumentHeaders.get(key);
return (header != null) ? header.getValue() : null;
}
+
+ public ManifestHeader getManifestHeader(String key) {
+ return (ManifestHeader)fDocumentHeaders.get(key);
+ }
public Dictionary getHeaders() {
return fDocumentHeaders;
diff --git a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/EclipseAutoStartHeader.java b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/EclipseAutoStartHeader.java
deleted file mode 100644
index 4a77925..0000000
--- a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/EclipseAutoStartHeader.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.pde.internal.ui.model.bundle;
-
-import java.util.*;
-
-
-public class EclipseAutoStartHeader extends ManifestHeader {
-
- private ArrayList fExceptions = new ArrayList();
-
- public EclipseAutoStartHeader() {
- setName("Eclipse-AutoStart"); //$NON-NLS-1$
- }
-
- public void addException(String packageName) {
- if (!fExceptions.contains(packageName))
- fExceptions.add(packageName);
- }
-
- public void removeException(String packageName) {
- fExceptions.remove(packageName);
- }
-
- public String[] getExceptions() {
- return (String[])fExceptions.toArray(new String[fExceptions.size()]);
- }
-}
diff --git a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ExportPackageHeader.java b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ExportPackageHeader.java
new file mode 100644
index 0000000..55955a0
--- /dev/null
+++ b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ExportPackageHeader.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.ui.model.bundle;
+
+import java.util.*;
+
+import org.eclipse.osgi.util.*;
+import org.eclipse.pde.internal.core.*;
+import org.osgi.framework.*;
+
+public class ExportPackageHeader extends ManifestHeader {
+
+ private TreeMap fPackages = new TreeMap();
+
+ public ExportPackageHeader(int manifestVersion, String value) {
+ this(getExportedPackageHeader(manifestVersion), value);
+ }
+
+ public ExportPackageHeader(String name, String value) {
+ super(name, value);
+ processValue();
+ }
+
+ private void processValue() {
+ try {
+ if (fValue != null) {
+ ManifestElement[] elements = ManifestElement.parseHeader(fName, fValue);
+ for (int i = 0; i < elements.length; i++) {
+ ExportPackageObject p = new ExportPackageObject(elements[i], getVersionAttribute());
+ fPackages.put(p.getName(), p);
+ }
+ }
+ } catch (BundleException e) {
+ }
+ }
+
+ private String getVersionAttribute() {
+ int manifestVersion = fName.equals(Constants.EXPORT_PACKAGE) ? 2 : 1;
+ return (manifestVersion < 2) ? Constants.PACKAGE_SPECIFICATION_VERSION : Constants.VERSION_ATTRIBUTE;
+ }
+
+ private static String getExportedPackageHeader(int manifestVersion) {
+ return (manifestVersion < 2) ? ICoreConstants.PROVIDE_PACKAGE : Constants.EXPORT_PACKAGE;
+ }
+
+ public void addPackage(ExportPackageObject object) {
+ fPackages.put(object.getName(), object);
+ getBundle().setHeader(fName, write());
+ }
+
+ public void removePackage(ExportPackageObject object) {
+ fPackages.remove(object.getName());
+ getBundle().setHeader(fName, write());
+ }
+
+ public ExportPackageObject[] getPackages() {
+ return (ExportPackageObject[])fPackages.values().toArray(new ExportPackageObject[fPackages.size()]);
+ }
+
+ public Vector getPackageNames() {
+ Vector vector = new Vector(fPackages.size());
+ Iterator iter = fPackages.keySet().iterator();
+ for (int i = 0; iter.hasNext(); i++) {
+ vector.add(iter.next().toString());
+ }
+ return vector;
+ }
+
+ public String write() {
+ StringBuffer buffer = new StringBuffer(fName);
+ buffer.append(": ");
+ Iterator iter = fPackages.values().iterator();
+ while (iter.hasNext()) {
+ buffer.append(((ExportPackageObject)iter.next()).write());
+ if (iter.hasNext()) {
+ buffer.append("," + System.getProperty("line.separator") + " "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ }
+ return buffer.toString();
+ }
+
+}
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_Forms/org/eclipse/pde/internal/ui/model/bundle/ExportPackageObject.java
similarity index 98%
rename from ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageObject.java
rename to ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ExportPackageObject.java
index 4ad3a79..27f3a2d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageObject.java
+++ b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ExportPackageObject.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.pde.internal.ui.editor.plugin;
+package org.eclipse.pde.internal.ui.model.bundle;
import java.io.*;
import java.util.*;
diff --git a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ManifestHeader.java b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ManifestHeader.java
index 117b777..d3cd2da 100644
--- a/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ManifestHeader.java
+++ b/ui/org.eclipse.pde.ui/src_Forms/org/eclipse/pde/internal/ui/model/bundle/ManifestHeader.java
@@ -12,13 +12,21 @@
import java.io.*;
import org.eclipse.pde.internal.core.bundle.*;
+import org.eclipse.pde.internal.core.ibundle.IBundle;
import org.eclipse.pde.internal.ui.model.*;
public class ManifestHeader extends BundleObject implements IDocumentKey {
private int fOffset = -1;
private int fLength = -1;
- private String fName;
- private String fValue;
+
+ protected String fName;
+ protected String fValue;
+ private IBundle fBundle;
+
+ public ManifestHeader(String name, String value) {
+ fName = name;
+ fValue = value;
+ }
/* (non-Javadoc)
* @see org.eclipse.pde.internal.ui.model.IDocumentKey#setName(java.lang.String)
@@ -75,5 +83,13 @@
*/
public void write(String indent, PrintWriter writer) {
}
+
+ public void setBundle(IBundle bundle) {
+ fBundle = bundle;
+ }
+
+ public IBundle getBundle() {
+ return fBundle;
+ }
}