Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-11-27 14:31:51 +0000
committerMichael Valenta2006-11-27 14:31:51 +0000
commit38ce4c57ad56bf125edbde0e471083535a2f1f84 (patch)
tree5b7345a1f0af8f2f4e2d0740abc0f07c0be12c02 /examples
parentc3380c235e7751513372424b3282e5e3ad3fc253 (diff)
downloadeclipse.platform.team-38ce4c57ad56bf125edbde0e471083535a2f1f84.tar.gz
eclipse.platform.team-38ce4c57ad56bf125edbde0e471083535a2f1f84.tar.xz
eclipse.platform.team-38ce4c57ad56bf125edbde0e471083535a2f1f84.zip
Bug 98503 [Algorithms] Comparing zip archives does not scale/appears to hang
Diffstat (limited to 'examples')
-rw-r--r--examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/AbstractMatching.java2
-rw-r--r--examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/OrderedMatching.java3
-rw-r--r--examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java174
3 files changed, 70 insertions, 109 deletions
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/AbstractMatching.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/AbstractMatching.java
index a69790ca6..dda01dd6f 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/AbstractMatching.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/AbstractMatching.java
@@ -251,7 +251,7 @@ public abstract class AbstractMatching {
return distance;
}
- abstract public void match(XMLNode LeftTree, XMLNode RightTree, boolean rightTreeIsAncestor, IProgressMonitor monitor) throws InterruptedException;
+ abstract public void match(XMLNode LeftTree, XMLNode RightTree, boolean rightTreeIsAncestor, IProgressMonitor monitor);
protected int dist(XMLNode x, XMLNode y) {
//System.out.println("dist( "+x.getSignature()+" , "+y.getSignature()+")");
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/OrderedMatching.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/OrderedMatching.java
index 8f9caba22..325a6ce72 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/OrderedMatching.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/OrderedMatching.java
@@ -117,8 +117,7 @@ public class OrderedMatching extends AbstractMatching {
XMLNode LeftTree,
XMLNode RightTree,
boolean rightTreeIsAncestor,
- IProgressMonitor monitor)
- throws InterruptedException {
+ IProgressMonitor monitor) {
fNLeft= new Vector();
//numbering LeftTree: Mapping nodes in LeftTree to numbers to be used as array indexes
diff --git a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java
index 6bb775783..42eb3f967 100644
--- a/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java
+++ b/examples/org.eclipse.compare.examples.xml/src/org/eclipse/compare/examples/xml/XMLStructureViewer.java
@@ -10,37 +10,18 @@
*******************************************************************************/
package org.eclipse.compare.examples.xml;
-import java.lang.reflect.InvocationTargetException;
import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.CompareViewerSwitchingPane;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-import org.eclipse.compare.structuremergeviewer.IStructureComparator;
-import org.eclipse.compare.structuremergeviewer.StructureDiffViewer;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.operation.IRunnableWithProgress;
+import java.util.*;
+
+import org.eclipse.compare.*;
+import org.eclipse.compare.structuremergeviewer.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.action.*;
import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.jface.viewers.*;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.PlatformUI;
/**
* An XML diff tree viewer that can be configured with a <code>IStructureCreator</code>
@@ -241,92 +222,14 @@ public class XMLStructureViewer extends StructureDiffViewer {
}
- public IRunnableWithProgress getMatchingRunnable(
- final XMLNode left,
- final XMLNode right,
- final XMLNode ancestor) {
- return new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor)
- throws
- InvocationTargetException,
- InterruptedException,
- OperationCanceledException {
- if (monitor == null) {
- monitor= new NullProgressMonitor();
- }
- int totalWork;
- if (ancestor != null)
- totalWork= 1;
- else
- totalWork= 3;
- monitor.beginTask(XMLCompareMessages.XMLStructureViewer_matching_beginTask, totalWork);
- ArrayList ordered= null;
- if (!getXMLStructureCreator()
- .getIdMap()
- .equals(XMLStructureCreator.USE_UNORDERED)
- && !getXMLStructureCreator().getIdMap().equals(
- XMLStructureCreator.USE_ORDERED)) {
- ordered=
- (ArrayList) fOrderedElements.get(
- getXMLStructureCreator().getIdMap());
- if (ordered == null)
- ordered=
- (ArrayList) fOrderedElementsInternal.get(
- getXMLStructureCreator().getIdMap());
- }
- if (getSorter() instanceof XMLSorter)
- ((XMLSorter) getSorter()).setOrdered(ordered);
- AbstractMatching m= null;
- if (getXMLStructureCreator()
- .getIdMap()
- .equals(XMLStructureCreator.USE_ORDERED)) {
- m= new OrderedMatching();
- if (getSorter() instanceof XMLSorter)
- ((XMLSorter) getSorter()).setAlwaysOrderSort(true);
- }
- try {
- if (m != null) {
- m.match(left, right, false, monitor);
- if (ancestor != null) {
- m.match(
- left,
- ancestor,
- true,
- new SubProgressMonitor(monitor, 1));
- m.match(
- right,
- ancestor,
- true,
- new SubProgressMonitor(monitor, 1));
- }
- // } catch (InterruptedException e) {
- // System.out.println("in run");
- // e.printStackTrace();
- }
- } finally {
- monitor.done();
- }
- }
- };
- }
-
protected void preDiffHook(
IStructureComparator ancestor,
IStructureComparator left,
- IStructureComparator right) {
+ IStructureComparator right, IProgressMonitor monitor) {
// if (!xsc.getIdMap().equals(XMLStructureCreator.USE_ORDERED)) {
//TimeoutContext.run(true, TIMEOUT, getControl().getShell(), runnable);
if (left != null && right != null) {
- try {
- PlatformUI.getWorkbench().getProgressService().run(true, true,
- //TimeoutContext.run(true, 500, XMLPlugin.getActiveWorkbenchShell(),
- getMatchingRunnable(
- (XMLNode) left,
- (XMLNode) right,
- (XMLNode) ancestor));
- } catch (Exception e) {
- XMLPlugin.log(e);
- }
+ performMatching((XMLNode)left, (XMLNode)right, (XMLNode)ancestor, monitor);
}
}
@@ -597,4 +500,63 @@ public class XMLStructureViewer extends StructureDiffViewer {
contentChanged();
}
}
+
+ private void performMatching(final XMLNode left, final XMLNode right,
+ final XMLNode ancestor, IProgressMonitor monitor) {
+ if (monitor == null) {
+ monitor= new NullProgressMonitor();
+ }
+ int totalWork;
+ if (ancestor != null)
+ totalWork= 1;
+ else
+ totalWork= 3;
+ monitor.beginTask(XMLCompareMessages.XMLStructureViewer_matching_beginTask, totalWork);
+ ArrayList ordered= null;
+ if (!getXMLStructureCreator()
+ .getIdMap()
+ .equals(XMLStructureCreator.USE_UNORDERED)
+ && !getXMLStructureCreator().getIdMap().equals(
+ XMLStructureCreator.USE_ORDERED)) {
+ ordered=
+ (ArrayList) fOrderedElements.get(
+ getXMLStructureCreator().getIdMap());
+ if (ordered == null)
+ ordered=
+ (ArrayList) fOrderedElementsInternal.get(
+ getXMLStructureCreator().getIdMap());
+ }
+ if (getSorter() instanceof XMLSorter)
+ ((XMLSorter) getSorter()).setOrdered(ordered);
+ AbstractMatching m= null;
+ if (getXMLStructureCreator()
+ .getIdMap()
+ .equals(XMLStructureCreator.USE_ORDERED)) {
+ m= new OrderedMatching();
+ if (getSorter() instanceof XMLSorter)
+ ((XMLSorter) getSorter()).setAlwaysOrderSort(true);
+ }
+ try {
+ if (m != null) {
+ m.match(left, right, false, monitor);
+ if (ancestor != null) {
+ m.match(
+ left,
+ ancestor,
+ true,
+ new SubProgressMonitor(monitor, 1));
+ m.match(
+ right,
+ ancestor,
+ true,
+ new SubProgressMonitor(monitor, 1));
+ }
+ // } catch (InterruptedException e) {
+ // System.out.println("in run");
+ // e.printStackTrace();
+ }
+ } finally {
+ monitor.done();
+ }
+ }
}

Back to the top