Update of /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/core/model
In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv9316/src/org/epic/core/model
Modified Files:
SourceFile.java
Log Message:
Fixed a bug which prevented the Outline view from updating while 'use' statements were being edited.
Index: SourceFile.java
===================================================================
RCS file: /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/core/model/SourceFile.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- SourceFile.java 25 Dec 2005 14:03:43 -0000 1.2
+++ SourceFile.java 26 Jun 2006 16:41:26 -0000 1.3
@@ -76,6 +76,15 @@
return new SubIterator();
}
+ /**
+ * @return an iterator over {@link ModuleUse} instances representing
+ * 'use module' statements found in the source, in their original order
+ */
+ public Iterator getUses()
+ {
+ return new ModuleUseIterator();
+ }
+
public synchronized void parse()
{
this.pods = new ArrayList();
@@ -330,4 +339,39 @@
return subIterator.next();
}
}
+
+ private class ModuleUseIterator implements Iterator
+ {
+ private Iterator pkgIterator;
+ private Iterator useIterator;
+
+ public ModuleUseIterator()
+ {
+ pkgIterator = packages.iterator();
+ }
+
+ public void remove()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean hasNext()
+ {
+ while (useIterator == null || !useIterator.hasNext())
+ {
+ if (pkgIterator.hasNext())
+ {
+ Package pkg = (Package) pkgIterator.next();
+ useIterator = pkg.getUses().iterator();
+ }
+ else return false;
+ }
+ return true;
+ }
+
+ public Object next()
+ {
+ return useIterator.next();
+ }
+ }
}
|