Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaneklb2006-05-30 20:44:17 +0000
committerjaneklb2006-05-30 20:44:17 +0000
commitfb4594c94a43cb8321f96bcbee8307c72aa3372d (patch)
tree7240da05278e046c522087713e658b26c4988ea9
parentde7331ccd02cef8093e69a3ac5e170f6e37207a9 (diff)
downloadeclipse.pde.ui-post32.tar.gz
eclipse.pde.ui-post32.tar.xz
eclipse.pde.ui-post32.zip
Bug 138520 manifest.mf page should have a format optionpost32
- changes done to TextChangeListeners will reduce number of TextEdit ops (eliminates ops for CHANGE events with equal old/new values)
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ibundle/IManifestHeader.java7
-rw-r--r--ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/build/PropertiesTextChangeListener.java4
-rw-r--r--ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/BundleTextChangeListener.java4
-rw-r--r--ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/CompositeManifestHeader.java1
-rw-r--r--ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/ManifestHeader.java5
-rw-r--r--ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/SingleManifestHeader.java8
-rw-r--r--ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/plugin/XMLTextChangeListener.java4
-rw-r--r--ui/org.eclipse.pde.ui/plugin.properties3
-rw-r--r--ui/org.eclipse.pde.ui/plugin.xml26
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java6
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/IncludedFeaturesSection.java2
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/PluginSection.java2
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/RequiresSection.java2
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/BundleSourcePage.java12
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java2
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties3
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestAction.java69
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestOperation.java68
18 files changed, 222 insertions, 6 deletions
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ibundle/IManifestHeader.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ibundle/IManifestHeader.java
index 8b06bbb823..1ca49838dc 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ibundle/IManifestHeader.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ibundle/IManifestHeader.java
@@ -50,4 +50,11 @@ public interface IManifestHeader extends IDocumentKey {
*
*/
void update();
+
+ /**
+ * Forces the header to update its value based on the current components,
+ * attributes and directives it contains.
+ * @param notify if true the model will be notified of the "changes"
+ */
+ void update(boolean notify);
}
diff --git a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/build/PropertiesTextChangeListener.java b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/build/PropertiesTextChangeListener.java
index 8d407a2191..8cd4f3b5ea 100644
--- a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/build/PropertiesTextChangeListener.java
+++ b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/build/PropertiesTextChangeListener.java
@@ -22,6 +22,10 @@ public class PropertiesTextChangeListener extends AbstractKeyValueTextChangeList
}
public void modelChanged(IModelChangedEvent event) {
+ Object old = event.getOldValue();
+ if (event.getChangeType() == IModelChangedEvent.CHANGE &&
+ old != null && old.equals(event.getNewValue()))
+ return;
Object[] objects = event.getChangedObjects();
for (int i = 0; i < objects.length; i++) {
Object object = objects[i];
diff --git a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/BundleTextChangeListener.java b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/BundleTextChangeListener.java
index 551184c5dc..8694c780c0 100644
--- a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/BundleTextChangeListener.java
+++ b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/BundleTextChangeListener.java
@@ -21,6 +21,10 @@ public class BundleTextChangeListener extends AbstractKeyValueTextChangeListener
}
public void modelChanged(IModelChangedEvent event) {
+ Object old = event.getOldValue();
+ if (event.getChangeType() == IModelChangedEvent.CHANGE &&
+ old != null && old.equals(event.getNewValue()))
+ return;
Object[] objects = event.getChangedObjects();
for (int i = 0; i < objects.length; i++) {
Object object = objects[i];
diff --git a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/CompositeManifestHeader.java b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/CompositeManifestHeader.java
index cdab6ea110..7b0716b2e8 100644
--- a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/CompositeManifestHeader.java
+++ b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/CompositeManifestHeader.java
@@ -61,6 +61,7 @@ public class CompositeManifestHeader extends ManifestHeader {
}
public void update() {
+ // let subclasses fire changes
update(false);
}
diff --git a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/ManifestHeader.java b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/ManifestHeader.java
index bfd4a369e8..773321c296 100644
--- a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/ManifestHeader.java
+++ b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/ManifestHeader.java
@@ -154,7 +154,12 @@ public class ManifestHeader extends BundleObject implements IManifestHeader {
}
public void update() {
+ // TODO
+ // should do something for headers that don't have their own class
+ // (and don't override this method)
}
+ public void update(boolean notify) {
+ }
}
diff --git a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/SingleManifestHeader.java b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/SingleManifestHeader.java
index a8cea5b0c3..c6982f46f9 100644
--- a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/SingleManifestHeader.java
+++ b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/SingleManifestHeader.java
@@ -68,9 +68,15 @@ public class SingleManifestHeader extends ManifestHeader {
}
public void update() {
+ // single headers will fire a change by default
+ update(true);
+ }
+
+ public void update(boolean notify) {
String old = fValue;
fValue = fElement.write();
- fBundle.getModel().fireModelObjectChanged(this, fName, old, fValue);
+ if (notify)
+ fBundle.getModel().fireModelObjectChanged(this, fName, old, fValue);
}
}
diff --git a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/plugin/XMLTextChangeListener.java b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/plugin/XMLTextChangeListener.java
index 4570b23102..bec24fa795 100644
--- a/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/plugin/XMLTextChangeListener.java
+++ b/ui/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/plugin/XMLTextChangeListener.java
@@ -403,6 +403,10 @@ public class XMLTextChangeListener extends AbstractTextChangeListener {
}
public void modelChanged(IModelChangedEvent event) {
+ Object old = event.getOldValue();
+ if (event.getChangeType() == IModelChangedEvent.CHANGE &&
+ old != null && old.equals(event.getNewValue()))
+ return;
Object[] objects = event.getChangedObjects();
if (objects == null)
return;
diff --git a/ui/org.eclipse.pde.ui/plugin.properties b/ui/org.eclipse.pde.ui/plugin.properties
index ed041d4286..b0a6ac7706 100644
--- a/ui/org.eclipse.pde.ui/plugin.properties
+++ b/ui/org.eclipse.pde.ui/plugin.properties
@@ -436,3 +436,6 @@ fontDefinition.description.0 = The MANIFEST.MF compare text font is used by Bund
convert.html.xhtml = Convert Help files to &XHTML...
pde.sourcelocator = PDE Source Lookup Director
+
+formatManifest.label.0 = Format MANIFEST.MF
+formatManifest.description.0 = Cleanup the MANIFEST.MF by formatting to a default layout \ No newline at end of file
diff --git a/ui/org.eclipse.pde.ui/plugin.xml b/ui/org.eclipse.pde.ui/plugin.xml
index d30b49aa32..3be110dd19 100644
--- a/ui/org.eclipse.pde.ui/plugin.xml
+++ b/ui/org.eclipse.pde.ui/plugin.xml
@@ -681,6 +681,11 @@
categoryId="org.eclipse.ui.category.views"
id="org.eclipse.pde.ui.DependenciesView">
</command>
+ <command
+ name="%formatManifest.label.0"
+ description="%formatManifest.description.0"
+ id="org.eclipse.pde.ui.manifestEditor.FormatManifest">
+ </command>
<!-- launch shortcuts -->
<command
name="%EclipseApplicationShortcut.description.debug"
@@ -862,6 +867,14 @@
enablesFor="1"
id="org.eclipse.pde.ui.BuildPluginAction2">
</action>
+ <action
+ class="org.eclipse.pde.internal.ui.util.FormatManifestAction"
+ definitionId="org.eclipse.pde.ui.manifestEditor.FormatManifest"
+ enablesFor="+"
+ helpContextId="org.eclipse.pde.doc.user.format_bundle"
+ id="org.eclipse.pde.ui.FormatBundleText"
+ label="%formatManifest.label.0"
+ menubarPath="org.eclipse.pde.ui.manifest.tools/group1"/>
</objectContribution>
<objectContribution
objectClass="org.eclipse.core.resources.IFile"
@@ -1741,7 +1754,12 @@
sequence="M3+M2+X S"
commandId="org.eclipse.pde.ui.swtLaunchShortcut.run"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
- </key>
+ </key>
+ <key
+ commandId="org.eclipse.pde.ui.manifestEditor.FormatManifest"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+M2+F">
+ </key>
</extension>
<extension
point="org.eclipse.ltk.core.refactoring.renameParticipants">
@@ -1905,4 +1923,10 @@
name="%pde.sourcelocator">
</sourceLocator>
</extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension targetID="org.eclipse.pde.ui.PDEPerspective">
+ <actionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
+ </perspectiveExtension>
+ </extension>
</plugin>
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
index e1d2853ce9..d519268e89 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
@@ -23,6 +23,12 @@ public class PDEUIMessages extends NLS {
public static String ExportOptionsTab_antReservedMessage;
+ public static String FormatManifestAction_actionText;
+
+ public static String FormatManifestOperation_subtask;
+
+ public static String FormatManifestOperation_task;
+
public static String HelpTemplate_sampleText;
public static String ImportActionGroup_binaryWithLinkedContent;
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/IncludedFeaturesSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/IncludedFeaturesSection.java
index 74b518147c..1f2ed1cacc 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/IncludedFeaturesSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/IncludedFeaturesSection.java
@@ -162,7 +162,7 @@ public class IncludedFeaturesSection extends TableSection implements
try {
doAdd(models);
} catch (CoreException e) {
- PDECore.log(e);
+ PDEPlugin.log(e);
}
}
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/PluginSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/PluginSection.java
index 9f69ff47ef..1c77e06c5d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/PluginSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/PluginSection.java
@@ -168,7 +168,7 @@ public class PluginSection extends TableSection implements
try {
doAdd(models);
} catch (CoreException e) {
- PDECore.log(e);
+ PDEPlugin.log(e);
}
}
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/RequiresSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/RequiresSection.java
index 379b451660..e84d0b20f2 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/RequiresSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/feature/RequiresSection.java
@@ -162,7 +162,7 @@ public class RequiresSection extends TableSection implements
try {
doAdd(models);
} catch (CoreException e) {
- PDECore.log(e);
+ PDEPlugin.log(e);
}
}
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/BundleSourcePage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/BundleSourcePage.java
index cbe04bf7b9..cda2d16d1e 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/BundleSourcePage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/BundleSourcePage.java
@@ -13,6 +13,8 @@ import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Enumeration;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.reconciler.IReconciler;
@@ -22,6 +24,7 @@ import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.pde.core.plugin.IPluginLibrary;
import org.eclipse.pde.core.plugin.IPluginModelBase;
import org.eclipse.pde.internal.core.ibundle.IBundleModel;
@@ -47,6 +50,7 @@ import org.eclipse.pde.internal.ui.editor.text.IColorManager;
import org.eclipse.pde.internal.ui.editor.text.ManifestConfiguration;
import org.eclipse.pde.internal.ui.editor.text.ReconcilingStrategy;
import org.eclipse.pde.internal.ui.elements.DefaultContentProvider;
+import org.eclipse.pde.internal.ui.util.FormatManifestAction;
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Constants;
@@ -267,4 +271,12 @@ public class BundleSourcePage extends KeyValueSourcePage {
protected boolean isSelectionListener() {
return true;
}
+
+ protected void editorContextMenuAboutToShow(IMenuManager menu) {
+ super.editorContextMenuAboutToShow(menu);
+ menu.add(new Separator());
+ FormatManifestAction action = new FormatManifestAction();
+ action.selectionChanged(null, new StructuredSelection(getEditorInput()));
+ menu.add(action);
+ }
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java
index 48276e48e3..b34489e9a5 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java
@@ -742,7 +742,7 @@ public class CategorySection extends TreeSection implements
try {
doAdd(models);
} catch (CoreException e) {
- PDECore.log(e);
+ PDEPlugin.log(e);
}
}
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
index c8c92572e0..ca2538ebb0 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
@@ -2491,3 +2491,6 @@ ImportPackageSection_dialogButtonLabel=&Show non-exported packages
MissingResourcePage_missingResource=Missing Resource
MissingResourcePage_unableToOpenFull={0}: ''{1}'' of project ''{2}'' is not available.
EditorPreferencePage_folding = &Enable folding when opening a new editor
+FormatManifestOperation_task=Formatting MANIFEST.MF file(s)...
+FormatManifestOperation_subtask=Formatting {0}...
+FormatManifestAction_actionText=Format MANIFEST.MF
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestAction.java
new file mode 100644
index 0000000000..58c4a66fd4
--- /dev/null
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestAction.java
@@ -0,0 +1,69 @@
+package org.eclipse.pde.internal.ui.util;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.ui.PlatformUI;
+
+public class FormatManifestAction extends Action implements IObjectActionDelegate, IWorkbenchWindowActionDelegate {
+
+ private IStructuredSelection fSelection;
+
+ public FormatManifestAction() {
+ setText(PDEUIMessages.FormatManifestAction_actionText);
+ setActionDefinitionId("org.eclipse.pde.ui.manifestEditor.FormatManifest"); //$NON-NLS-1$
+ setEnabled(true);
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ targetPart.toString();
+ }
+
+ public void runWithEvent(Event event) {
+ run(this);
+ }
+
+ public void run() {
+ run(this);
+ }
+
+ public void run(IAction action) {
+ if (fSelection == null)
+ return;
+
+ try {
+ PlatformUI.getWorkbench().getProgressService().busyCursorWhile(
+ new FormatManifestOperation(fSelection.toArray()));
+ } catch (InvocationTargetException e) {
+ PDEPlugin.log(e);
+ } catch (InterruptedException e) {
+ PDEPlugin.log(e);
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ if (!selection.isEmpty() && selection instanceof IStructuredSelection)
+ fSelection = (IStructuredSelection)selection;
+ else
+ fSelection = null;
+ }
+
+ public void dispose() {
+
+ }
+
+ public void init(IWorkbenchWindow window) {
+
+ }
+
+}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestOperation.java
new file mode 100644
index 0000000000..c11bb90a9d
--- /dev/null
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/FormatManifestOperation.java
@@ -0,0 +1,68 @@
+package org.eclipse.pde.internal.ui.util;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Enumeration;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.core.IBaseModel;
+import org.eclipse.pde.internal.core.ibundle.IBundleModel;
+import org.eclipse.pde.internal.core.ibundle.IBundlePluginModel;
+import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
+import org.eclipse.pde.internal.core.text.bundle.Bundle;
+import org.eclipse.pde.internal.core.text.bundle.BundleModel;
+import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.eclipse.ui.IFileEditorInput;
+
+public class FormatManifestOperation implements IRunnableWithProgress {
+
+ private Object[] fObjects;
+
+ public FormatManifestOperation(Object[] objects) {
+ fObjects = objects;
+ }
+
+ public void run(IProgressMonitor mon) throws InvocationTargetException, InterruptedException {
+ mon.beginTask(PDEUIMessages.FormatManifestOperation_task, fObjects.length);
+ for (int i = 0; !mon.isCanceled() && i < fObjects.length; i++) {
+ Object obj = fObjects[i];
+ if (obj instanceof IFileEditorInput)
+ obj = ((IFileEditorInput)obj).getFile();
+ if (obj instanceof IFile) {
+ mon.subTask(NLS.bind(PDEUIMessages.FormatManifestOperation_subtask, ((IFile)obj).getFullPath().toString()));
+ formatManifest((IFile)obj, mon);
+ }
+ mon.worked(1);
+ }
+ }
+
+ private static void formatManifest(Bundle bundle) {
+ Enumeration headers = bundle.getHeaders().elements();
+ while (headers.hasMoreElements())
+ ((IManifestHeader)headers.nextElement()).update(true);
+ BundleModel model = (BundleModel)bundle.getModel();
+ model.adjustOffsets(model.getDocument());
+ }
+
+ public static void formatManifest(IFile manifestFile, IProgressMonitor mon) {
+ ModelModification mod = new ModelModification(manifestFile) {
+ protected void modifyModel(IBaseModel model, IProgressMonitor monitor) throws CoreException {
+ if (model instanceof IBundlePluginModel) {
+ IBundleModel bundleModel = ((IBundlePluginModel)model).getBundleModel();
+ if (bundleModel.getBundle() instanceof Bundle)
+ formatManifest((Bundle)bundleModel.getBundle());
+ }
+ }
+ };
+ try {
+ PDEModelUtility.modifyModel(mod, mon);
+ } catch (CoreException e) {
+ PDEPlugin.log(e);
+ }
+ }
+
+}

Back to the top