cvs commit: xml-fop/src/java/org/apache/fop/layoutmgr LayoutManagerLS.java

2003-08-21 Thread vmote
vmote   2003/08/21 12:01:24

  Modified:src/java/org/apache/fop/extensions Outline.java
   src/java/org/apache/fop/layoutmgr LayoutManagerLS.java
  Log:
  move extensions/Outline.getData() to layoutmgr/LayoutManagerLS.createBookmarkData()
  
  Revision  ChangesPath
  1.4   +12 -19xml-fop/src/java/org/apache/fop/extensions/Outline.java
  
  Index: Outline.java
  ===
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/extensions/Outline.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Outline.java  21 Aug 2003 18:17:49 -  1.3
  +++ Outline.java  21 Aug 2003 19:01:24 -  1.4
  @@ -57,7 +57,6 @@
   import java.util.ArrayList;
   
   import org.xml.sax.Attributes;
  -import org.apache.fop.area.extensions.BookmarkData;
   
   /**
* The outline object for the pdf bookmark extension.
  @@ -116,23 +115,6 @@
   }
   
   /**
  - * Get the bookmark data for this outline.
  - * This creates a bookmark data with the destination
  - * and adds all the data from child outlines.
  - *
  - * @return the new bookmark data
  - */
  -public BookmarkData getData() {
  -BookmarkData data = new BookmarkData(internalDestination);
  -data.setLabel(getLabel());
  -for (int count = 0; count < outlines.size(); count++) {
  -Outline out = (Outline)outlines.get(count);
  -data.addSubData(out.getData());
  -}
  -return data;
  -}
  -
  -/**
* Get the label string.
* This gets the label string from the child label element.
*
  @@ -146,5 +128,16 @@
   fotv.serveVisitor(this);
   }
   
  -}
  +public String getInternalDestination() {
  +return internalDestination;
  +}
  +
  +public String getExternalDestination() {
  +return externalDestination;
  +}
   
  +public ArrayList getOutlines() {
  +return outlines;
  +}
  +
  +}
  
  
  
  1.7   +19 -2 xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerLS.java
  
  Index: LayoutManagerLS.java
  ===
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerLS.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- LayoutManagerLS.java  21 Aug 2003 18:17:49 -  1.6
  +++ LayoutManagerLS.java  21 Aug 2003 19:01:24 -  1.7
  @@ -141,7 +141,7 @@
   BookmarkData data = new BookmarkData();
   for (int count = 0; count < document.getBookmarks().getOutlines().size(); 
count++) {
   Outline out = 
(Outline)(document.getBookmarks().getOutlines()).get(count);
  -data.addSubData(out.getData());
  +data.addSubData(createBookmarkData(out));
   }
   // add data to area tree for resolving and handling
   if (document.getBookmarks().getFOInputHandler() instanceof FOTreeHandler) {
  @@ -151,6 +151,23 @@
   at.addTreeExtension(data);
   data.setAreaTree(at);
   }
  +}
  +
  +/**
  + * Create and return the bookmark data for this outline.
  + * This creates a bookmark data with the destination
  + * and adds all the data from child outlines.
  + *
  + * @return the new bookmark data
  + */
  +public BookmarkData createBookmarkData(Outline outline) {
  +BookmarkData data = new BookmarkData(outline.getInternalDestination());
  +data.setLabel(outline.getLabel());
  +for (int count = 0; count < outline.getOutlines().size(); count++) {
  +Outline out = (Outline)(outline.getOutlines()).get(count);
  +data.addSubData(createBookmarkData(out));
  +}
  +return data;
   }
   
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: xml-fop/src/java/org/apache/fop/fo FOText.java

2003-08-21 Thread vmote
vmote   2003/08/21 22:43:27

  Modified:src/java/org/apache/fop/fo FOText.java
  Log:
  1. remove unused field
  2. some checkstyle/javadoc changes
  
  Revision  ChangesPath
  1.9   +17 -5 xml-fop/src/java/org/apache/fop/fo/FOText.java
  
  Index: FOText.java
  ===
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOText.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FOText.java   19 Aug 2003 00:53:52 -  1.8
  +++ FOText.java   22 Aug 2003 05:43:27 -  1.9
  @@ -52,12 +52,8 @@
   
   // Java
   import java.util.NoSuchElementException;
  -import java.util.List;
   
   // FOP
  -import org.apache.fop.layout.TextState;
  -import org.apache.fop.layoutmgr.LayoutManager;
  -import org.apache.fop.layoutmgr.TextLayoutManager;
   import org.apache.fop.fo.properties.WhiteSpaceCollapse;
   import org.apache.fop.fo.flow.Block;
   import org.apache.fop.fo.pagination.Root;
  @@ -76,11 +72,21 @@
*/
   public class FOText extends FObj {
   
  +/**
  + * the character array containing the text
  + */
   public char[] ca;
   private int start;
  +
  +/**
  + * the length of the character array containing the text
  + */
   public int length;
  +
  +/**
  + * The TextInfo object attached to the text
  + */
   public TextInfo textInfo;
  -private TextState ts;
   
   /**
* Keeps track of the last FOText object created within the current
  @@ -487,6 +493,12 @@
   }
   }
   
  +/**
  + * This is a hook for an FOTreeVisitor subclass to be able to access
  + * this object.
  + * @param fotv the FOTreeVisitor subclass that can access this object.
  + * @see org.apache.fop.fo.FOTreeVisitor
  + */
   public void acceptVisitor(FOTreeVisitor fotv) {
   fotv.serveVisitor(this);
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: xml-fop/src/java/org/apache/fop/fo FObj.java

2003-08-21 Thread vmote
vmote   2003/08/21 22:43:46

  Modified:src/java/org/apache/fop/fo FObj.java
  Log:
  style/javadoc changes only
  
  Revision  ChangesPath
  1.14  +6 -0  xml-fop/src/java/org/apache/fop/fo/FObj.java
  
  Index: FObj.java
  ===
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FObj.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FObj.java 20 Aug 2003 19:46:47 -  1.13
  +++ FObj.java 22 Aug 2003 05:43:45 -  1.14
  @@ -432,6 +432,12 @@
   return this.propMgr;
   }
   
  +/**
  + * This is a hook for an FOTreeVisitor subclass to be able to access
  + * this object.
  + * @param fotv the FOTreeVisitor subclass that can access this object.
  + * @see org.apache.fop.fo.FOTreeVisitor
  + */
   public void acceptVisitor(FOTreeVisitor fotv) {
   fotv.serveVisitor(this);
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: xml-fop/src/java/org/apache/fop/fo FOInputHandler.java

2003-08-21 Thread vmote
vmote   2003/08/21 12:22:21

  Modified:src/java/org/apache/fop/fo FOInputHandler.java
  Log:
  style/javadoc changes only
  
  Revision  ChangesPath
  1.7   +6 -5  xml-fop/src/java/org/apache/fop/fo/FOInputHandler.java
  
  Index: FOInputHandler.java
  ===
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOInputHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FOInputHandler.java   19 Aug 2003 06:54:31 -  1.6
  +++ FOInputHandler.java   21 Aug 2003 19:22:21 -  1.7
  @@ -58,7 +58,6 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   
   // FOP
  -import org.apache.fop.apps.Driver;
   import org.apache.fop.apps.FOPException;
   import org.apache.fop.fo.flow.Block;
   import org.apache.fop.fo.flow.ExternalGraphic;
  @@ -72,7 +71,6 @@
   import org.apache.fop.fo.flow.TableRow;
   import org.apache.fop.fo.pagination.Flow;
   import org.apache.fop.fo.pagination.PageSequence;
  -import org.apache.fop.fo.FOTreeControl;
   
   import org.xml.sax.SAXException;
   
  @@ -94,12 +92,15 @@
*/
   private Set idReferences = new HashSet();
   
  -//public Driver driver = null;
  -
  +/**
  + * The FOTreeControl object that is controlling the FO Tree being built
  + */
   public FOTreeControl foTreeControl = null;
   
   /**
* Main constructor
  + * @param foTreeControl the FOTreeControl implementation that is controlling
  + * the FO Tree being built
*/
   public FOInputHandler(FOTreeControl foTreeControl) {
   this.foTreeControl = foTreeControl;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: control/Document

2003-08-21 Thread J.Pietschmann
Glen Mazza wrote:
Technically speaking, if properties were *inherited*
properly, setting border-width on fo:table-row would
propagate to a child fo:table-cell that didn't have
that property already set, correct?
No. Border properties are not inherited:
http://www.w3.org/TR/xsl/slice7.html#common-border-padding-and-background-properties
It doesn't seem that bad, because we've already
accomplished this at the cell-level.
Someone has to implement the resolution algorithm.

Also, when you say "collapsing", are you just
referring to the "collapsing borders" table model? 
Yes.

According to compliance.xml, we haven't currently
implemented the "border-collapse" property--it appears
we just support the collapsing borders model by
default, and that only partially.
Both collapsed and separated borders are supported, the latter
actually better because collapsing depends on neighboring cells,
which changes at breaks. Extreme settings may even cause
layout oscillations.
J.Pietschmann



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]


Re: fop-0.20.4 download links?

2003-08-21 Thread Clay Leeds
Victor Mote wrote:
Christian Geisert wrote:
BTW any volunteer to write a nice readme.html for the download page like
http://www.apache.org/dist/ant
http://www.apache.org/dist/cocoon/
http://www.apache.org/dist/httpd/
I'll be glad to do it, but have one dumb question -- how?

Victor Mote
Hehe... I didn't know how either. I just copied those from the examples, 
and created an HTML file and submitted it (along with the fop_logo.jpg 
file--as stated in the 'bug' post, we still don't have an SVG version 
yet). I made it fairly long, as I included the "Running FOP" info along 
with the "Release Notes". Feel free to edit (read 'cut') at will! I 
submitted it as Bug 22627:

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22627

Naturally I forgot to add [PATCH] to the SUBJECT. Sorry! (I just changed 
it but we've all got e-mails that don't say [PATCH]).

I'd be interested in knowing as well. I especially like Cocoon's since 
it has content above *&* below the file listing!

Web Maestro Clay

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]


DO NOT REPLY [Bug 22627] - [PATCH] ReadMe file for FOP

2003-08-21 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22627

[PATCH] ReadMe file for FOP

[EMAIL PROTECTED] changed:

   What|Removed |Added

Summary|ReadMe file for FOP |[PATCH] ReadMe file for FOP

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]



RE: fop-0.20.4 download links?

2003-08-21 Thread Victor Mote
Christian Geisert wrote:

> Uhh, I did update the website some time ago and *thought* that someone
> else published it ...

Sorry. I have been changing doc so infrequently that I have fallen out of
the habit of automatic updates. I'll try to get back into the habit of
publishing each weekend to make sure any changes get swept.

> BTW any volunteer to write a nice readme.html for the download page like
> http://www.apache.org/dist/ant
> http://www.apache.org/dist/cocoon/
> http://www.apache.org/dist/httpd/

I'll be glad to do it, but have one dumb question -- how?

Victor Mote


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]



cvs commit: xml-fop/src/java/org/apache/fop/render/pdf PDFRenderer.java

2003-08-21 Thread vmote
vmote   2003/08/21 11:17:49

  Modified:src/java/org/apache/fop/extensions Outline.java
   src/java/org/apache/fop/layoutmgr LayoutManagerLS.java
   src/java/org/apache/fop/render/pdf PDFRenderer.java
  Added:   src/java/org/apache/fop/area/extensions BookmarkData.java
  Removed: src/java/org/apache/fop/extensions BookmarkData.java
  Log:
  move extensions/BookmarkData to area/extensions/BookmarkData
  
  Revision  ChangesPath
  1.1  
xml-fop/src/java/org/apache/fop/area/extensions/BookmarkData.java
  
  Index: BookmarkData.java
  ===
  /*
   * $Id: BookmarkData.java,v 1.1 2003/08/21 18:17:49 vmote Exp $
   * 
   *The Apache Software License, Version 1.1
   * 
   * 
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of source code must retain the above copyright notice,
   *this list of conditions and the following disclaimer.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *this list of conditions and the following disclaimer in the documentation
   *and/or other materials provided with the distribution.
   * 
   * 3. The end-user documentation included with the redistribution, if any, must
   *include the following acknowledgment: "This product includes software
   *developed by the Apache Software Foundation (http://www.apache.org/)."
   *Alternately, this acknowledgment may appear in the software itself, if
   *and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *endorse or promote products derived from this software without prior
   *written permission. For written permission, please contact
   *[EMAIL PROTECTED]
   * 
   * 5. Products derived from this software may not be called "Apache", nor may
   *"Apache" appear in their name, without prior written permission of the
   *Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * 
   * 
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see .
   */ 
  package org.apache.fop.area.extensions;
  
  import org.apache.fop.area.PageViewport;
  import org.apache.fop.area.Resolveable;
  import org.apache.fop.area.TreeExt;
  import org.apache.fop.area.AreaTree;
  
  import java.util.ArrayList;
  import java.util.List;
  import java.util.HashMap;
  
  /**
   * This class holds the PDF bookmark extension data.
   * This implements Resolveable and TreeExt so that it can be
   * added to the area tree as a resolveable tree extension.
   */
  public class BookmarkData implements Resolveable, TreeExt {
  private ArrayList subData = new ArrayList();
  private HashMap idRefs = new HashMap();
  
  // area tree for the top level object to notify when resolved
  private AreaTree areaTree = null;
  
  private String idRef;
  private PageViewport pageRef = null;
  private String label = null;
  
  /**
   * Create a new bookmark data object.
   * This should only be call by the top level element as the
   * id reference will be null.
   */
  public BookmarkData() {
  idRef = null;
  }
  
  /**
   * Create a new pdf bookmark data object.
   * This is used by the outlines to create a data object
   * with a id reference. The id reference is to be resolved.
   *
   * @param id the id reference
   */
  public BookmarkData(String i

DO NOT REPLY [Bug 22627] - ReadMe file for FOP

2003-08-21 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22627

ReadMe file for FOP





--- Additional Comments From [EMAIL PROTECTED]  2003-08-21 14:45 ---
Created an attachment (id=7914)
fop_logo.jpg (place in "images/" dir or change ReadMe)

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]



DO NOT REPLY [Bug 22627] - ReadMe file for FOP

2003-08-21 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22627

ReadMe file for FOP





--- Additional Comments From [EMAIL PROTECTED]  2003-08-21 14:44 ---
Created an attachment (id=7913)
ReadMeFOP.html file

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]



cvs commit: xml-fop/src/java/org/apache/fop/area/extensions - New directory

2003-08-21 Thread vmote
vmote   2003/08/21 11:09:30

  xml-fop/src/java/org/apache/fop/area/extensions - New directory

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: move extensions to fo/extensions?

2003-08-21 Thread Victor Mote
Glen Mazza wrote:

> I'm confused about seeing Bookmarks referenced in
> FOTreeControl.java--I thought our pluggable

FOTreeControl is an abstraction of Document, and (by reference) of Driver so
that the FO Tree construction process can (eventually) be run by any object
that implements that interface. I just added the reference to Bookmarks
yesterday. In the old logic the Bookmarks were added to the Area Tree during
the FO Tree construction (specifically when the end() method for the
Bookmarks element was reached). In the new logic, the end() method stores
the Bookmarks object as an instance variable in the FOTreeControl
implementation, then the LayoutStrategy implementation performs the same
logic that used to be done during end(). Seems to work properly, and
untangles another small piece of layout work from the FO Tree construction.

> FOTreeControl.java--I thought our pluggable
> ElementMappings (including the Bookmark formatting
> object) were designed to run with zero internal
> hardcoding outside that ElementMapping.

I haven't changed anything on ElementMapping at all. The hard-coded logic
for dealing with Bookmarks has simply moved to another location. I don't
think your statement about hardcoding outside the ElementMapping is
*generally* correct. There are some instances (I forget which, but SVG will
probably be one at some point in time) where the foreign XML is basically
passed through FOP intact to the output, and we want to make that capability
generally available with the pluggable ElementMapping. However, there are
other extensions, Bookmarks for example, where to be useful, FOP has to do
something with them.

(BTW, I realized afterward that it would probably have been better to store
the Bookmarks object in the Root object instead of the FOTreeControl
implementation. Since there is a one-to-one between FOTreeControl and Root,
it is no big logical deal, but probably will clean up the FOTreeControl
interface to have it in Root instead. I'll ponder that as I move along).

> This is bringing up an earlier issue--we currently
> allow runtime loading of user-defined and -invented
> ElementMappings, that supposedly can be processed by
> FOP, with zero hardcoding outside of that
> ElementMapping.  For example, a user invents his own
> ElementMapping, places it in a certain directory, runs
> FOP, and FOP will instantly absorb and use the new
> ElementMapping--no hardcoding for it required in Area
> Tree, Layout, Renderers, etc.
>
> I argued for removing that runtime loading capability
> a few months back (when I moved this functionality
> from Driver to FOTreeBuilder) because it just doesn't
> work by itself, i.e., just adding a ElementMapping
> won't work, you still need to hardcode all over the
> application to accomodate the new formatting object.
> (Just like you're doing for Bookmarks, for example.)
> But I wasn't sure on that point, and the team
> disagreed with me here--saying that no such internal
> coding would be needed.

If all cases were like Bookmarks, you would be correct I think. However, the
major premise fails. You'll have to look at the previous thread for the
examples that pass through FOP. (Sorry, I don't use any of them)

> So, are we back to square one with the pluggable
> ElementMappers idea?  Should we rip out that
> functionality from FOTreeBuilder that allows FOP to
> dynamically load brand-new ElementMappings?  I still
> don't see its utility.

IMO, no, and especially not as a result of this refactoring, which really
hasn't changed anything.

Victor Mote


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]



Re: fop-0.20.4 download links?

2003-08-21 Thread Christian Geisert
Clay Leeds schrieb:
I just tried to find the download link for fop-0.20.4. That version has 
been tested and used in production by our staff and clients. 
Unfortunately, there are no download links available. The "old download 
location" listed on the FOP/download page is empty.
Uhh, I did update the website some time ago and *thought* that someone 
else published it ... 
(http://forrestbot.cocoondev.org/sites//xml-fop/download.html , should 
be live in some hours)

Anyway, everything has been moved to www.apache.org/dist/xml/fop and 
some problematic hyphenation patterns have been removed ("a" after the 
version number - see 
http://nagoya.apache.org/wiki/apachewiki.cgi?FOPAudits/March2003 for 
details).

BTW any volunteer to write a nice readme.html for the download page like
http://www.apache.org/dist/ant
http://www.apache.org/dist/cocoon/
http://www.apache.org/dist/httpd/
Is there a link where fop-0.20.4 (binary *&* source) can be downloaded?
http://www.apache.org/dyn/closer.cgi/xml/fop/binaries
http://www.apache.org/dyn/closer.cgi/xml/fop/source
Christian

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]