git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268938 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -72,16 +72,32 @@ import com.sun.xml.parser.Resolver; | |||
| * @author Nick Davis<a href="mailto:nick_home_account@yahoo.com">nick_home_account@yahoo.com</a> | |||
| */ | |||
| public class ACSDocumentType extends java.lang.Object { | |||
| /** ID for core elements */ | |||
| public final static int CORE_ELEMENT = 0; | |||
| /** ID for optional elements */ | |||
| public final static int OPTIONAL_ELEMENT = 1; | |||
| /** True if the DTD has been loaded */ | |||
| private boolean isInit = false; | |||
| /** Hold the core DTD elements */ | |||
| private HashMap coreElementMap = new HashMap(); | |||
| /** Hold the optional DTD elements */ | |||
| private HashMap optionalElementMap = new HashMap(); | |||
| /** Hold the DTD elements */ | |||
| private HashMap elementMap = new HashMap(); | |||
| /** XML document used to load the DTD */ | |||
| final static String XMLDOC = | |||
| private HashMap elementMap; | |||
| /** First part of the XML document used to load the DTD */ | |||
| private final static String XMLDOC_1 = | |||
| "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + | |||
| "<!DOCTYPE project SYSTEM \"file:/project.dtd\">" + | |||
| "<project name=\"sample-project\">" + | |||
| "<!DOCTYPE project SYSTEM \"file:/"; | |||
| /** Second part of the XML document used to load the DTD */ | |||
| private final static String XMLDOC_2 = | |||
| "\"><project name=\"sample-project\">" + | |||
| "</project>"; | |||
| /** DTD which holds the core tasks */ | |||
| private final static String DTD_1 = "project.dtd"; | |||
| /** DTD which holds the optional tasks */ | |||
| private final static String DTD_2 = "project-ext.dtd"; | |||
| /** DTD which holds the shared elements */ | |||
| private final static String DTD_SHARE = "share.dtd"; | |||
| /** | |||
| * Standard ctor. | |||
| @@ -114,12 +130,20 @@ public class ACSDocumentType extends java.lang.Object { | |||
| DtdHandler dtdh = new DtdHandler(); | |||
| p.setDTDHandler(dtdh); | |||
| // Create the default xml file | |||
| InputSource xmldoc = new InputSource( | |||
| new ByteArrayInputStream(XMLDOC.getBytes())); | |||
| String coreDoc = XMLDOC_1 + DTD_1 + XMLDOC_2; | |||
| String optionalDoc = XMLDOC_1 + DTD_2 + XMLDOC_2; | |||
| // Parse the document | |||
| p.parse(xmldoc); | |||
| // Parse the core task DTD | |||
| elementMap = coreElementMap; | |||
| InputSource xmldocCore = new InputSource( | |||
| new ByteArrayInputStream(coreDoc.getBytes())); | |||
| p.parse(xmldocCore); | |||
| // Parse the core task DTD | |||
| elementMap = optionalElementMap; | |||
| InputSource xmldocOptional = new InputSource( | |||
| new ByteArrayInputStream(optionalDoc.getBytes())); | |||
| p.parse(xmldocOptional); | |||
| isInit = true; | |||
| } catch (Exception e) { | |||
| @@ -130,10 +154,14 @@ public class ACSDocumentType extends java.lang.Object { | |||
| /** | |||
| * Returns the dtd element. | |||
| * | |||
| * @param elementType CORE_ELEMENT or OPTIONAL_ELEMENT | |||
| * @param name the element name | |||
| */ | |||
| public DtdElement findElement(String name) { | |||
| return (DtdElement) elementMap.get(name); | |||
| public DtdElement findElement(int elementType, String name) { | |||
| if (elementType == OPTIONAL_ELEMENT) { | |||
| return (DtdElement) optionalElementMap.get(name); | |||
| } | |||
| return (DtdElement) coreElementMap.get(name); | |||
| } | |||
| /** | |||
| @@ -247,7 +275,7 @@ public class ACSDocumentType extends java.lang.Object { | |||
| Iterator i = values().iterator(); | |||
| while(i.hasNext()) { | |||
| DtdAttribute a = (DtdAttribute)i.next(); | |||
| if (a.isRequired()) { | |||
| if (!a.isRequired()) { | |||
| list.add(a.getName()); | |||
| } | |||
| } | |||
| @@ -264,7 +292,7 @@ public class ACSDocumentType extends java.lang.Object { | |||
| Iterator i = values().iterator(); | |||
| while(i.hasNext()) { | |||
| DtdAttribute a = (DtdAttribute)i.next(); | |||
| if (!a.isRequired()) { | |||
| if (a.isRequired()) { | |||
| list.add(a.getName()); | |||
| } | |||
| } | |||
| @@ -438,22 +466,30 @@ public class ACSDocumentType extends java.lang.Object { | |||
| String systemId) | |||
| throws SAXException, IOException { | |||
| final String PROJECT = "project.dtd"; | |||
| final String PROJECTEXT = "project-ext.dtd"; | |||
| InputStream result = null; | |||
| // Is it the project.dtd? | |||
| if (systemId.indexOf(PROJECT) != -1) { | |||
| if (systemId.indexOf(DTD_1) != -1) { | |||
| try { | |||
| // Look for it as a resource | |||
| result = getClass().getResourceAsStream(PROJECT); | |||
| result = getClass().getResourceAsStream(DTD_1); | |||
| } catch (Exception e) {} | |||
| } | |||
| // Is it the project-ext.dtd? | |||
| if (systemId.indexOf(PROJECTEXT) != -1) { | |||
| if (systemId.indexOf(DTD_2) != -1) { | |||
| try { | |||
| // Look for it as a resource | |||
| result = getClass().getResourceAsStream(DTD_2); | |||
| } catch (Exception e) {} | |||
| } | |||
| if (result != null) { | |||
| return new InputSource(result); | |||
| } | |||
| // Is it the share.dtd? | |||
| if (systemId.indexOf(DTD_SHARE) != -1) { | |||
| try { | |||
| // Look for it as a resource | |||
| result = getClass().getResourceAsStream(PROJECTEXT); | |||
| result = getClass().getResourceAsStream(DTD_SHARE); | |||
| } catch (Exception e) {} | |||
| } | |||
| if (result != null) { | |||
| @@ -53,6 +53,7 @@ | |||
| */ | |||
| package org.apache.tools.ant.gui.acs; | |||
| import org.apache.tools.ant.gui.command.NewElementCmd; | |||
| import org.apache.tools.ant.gui.util.Collections; | |||
| import org.w3c.dom.*; | |||
| import java.beans.*; | |||
| import java.util.*; | |||
| @@ -181,12 +182,21 @@ implements ACSInfoProvider { | |||
| } | |||
| ACSDocumentType.DtdElement e = | |||
| docType.findElement(name); | |||
| docType.findElement(ACSDocumentType.CORE_ELEMENT, name); | |||
| if (e == null) { | |||
| e = docType.findElement(ACSDocumentType.OPTIONAL_ELEMENT, name); | |||
| } | |||
| if (e != null) { | |||
| // Use the content model (all the possible | |||
| // sub-elements) to create the menu. | |||
| String[] temp = e.getContentModel(); | |||
| // Sort the items | |||
| List list = Collections.fill(null, temp); | |||
| java.util.Collections.sort(list); | |||
| list.toArray(temp); | |||
| int size = (temp.length > 5) ? 5 : temp.length; | |||
| // The project doesn't need a delete menu | |||
| @@ -222,15 +232,17 @@ implements ACSInfoProvider { | |||
| } | |||
| /** | |||
| * Retuns a string array which contains this elements | |||
| * possible children. It is created from the DTD's | |||
| * content model. | |||
| * Returns a string array which contains this elements | |||
| * possible children. | |||
| * | |||
| * @param childType ACSDocumentType.CORE_ELEMENT or | |||
| * ACSDocumentType.OPTIONAL_ELEMENT | |||
| */ | |||
| public String[] getPossibleChildren() { | |||
| public String[] getPossibleChildren(int childType) { | |||
| String name = getTagName(); | |||
| ACSDocumentType.DtdElement e = | |||
| docType.findElement(name); | |||
| docType.findElement(childType, name); | |||
| if (e != null) { | |||
| return e.getContentModel(); | |||
| } | |||
| @@ -266,7 +278,13 @@ implements ACSInfoProvider { | |||
| } | |||
| String name = getNodeName(); | |||
| _dtdElement = docType.findElement(name); | |||
| _dtdElement = docType.findElement(ACSDocumentType.CORE_ELEMENT, name); | |||
| if (_dtdElement == null) { | |||
| _dtdElement = docType.findElement( | |||
| ACSDocumentType.OPTIONAL_ELEMENT, name); | |||
| } | |||
| return _dtdElement; | |||
| } | |||
| } | |||
| @@ -1,34 +1,255 @@ | |||
| <?xml version="1.0" encoding="iso-8859-1"?> | |||
| <!-- | |||
| Copyright (c) 2000 Michel CASABIANCA. All Rights Reserved. | |||
| Permission to use, copy, modify, and distribute this software and its | |||
| documentation for any purpose and without fee or royalty is hereby | |||
| granted, provided that both the above copyright notice and this | |||
| permission notice appear in all copies of the software and | |||
| documentation or portions thereof, including modifications, that you | |||
| make. | |||
| THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO | |||
| REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, | |||
| BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR | |||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR | |||
| THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY | |||
| THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. | |||
| COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE | |||
| OR DOCUMENTATION. | |||
| The Apache Software License, Version 1.1 | |||
| Copyright (c) 1999, 2000 The Apache Software Foundation. All rights | |||
| reserved. | |||
| Redistribution and use in source and binary forms, with or without | |||
| modification, 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 acknowlegement: | |||
| "This product includes software developed by the | |||
| Apache Software Foundation (http://www.apache.org/)." | |||
| Alternately, this acknowlegement may appear in the software itself, | |||
| if and wherever such third-party acknowlegements normally appear. | |||
| 4. The names "The Jakarta Project", "Ant", 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 apache@apache.org. | |||
| 5. Products derived from this software may not be called "Apache" | |||
| nor may "Apache" appear in their names without prior written | |||
| permission of the Apache Group. | |||
| 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 (INCLUDING, 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. For more | |||
| information on the Apache Software Foundation, please see | |||
| <http://www.apache.org/>. | |||
| --> | |||
| <!-- @author Michel CASABIANCA --> | |||
| <!-- @version $Revision$ --> | |||
| <!ENTITY % share-file SYSTEM "file:/share.dtd"> | |||
| %share-file; | |||
| <!ELEMENT target (p4sync | p4label | p4have | p4submit | p4edit | p4change | junit | ddcreator | ejbc | wlrun | wlstop | ejbjar | weblogic | TOPLink | PropertyFile)*> | |||
| <!-- *********** PERFORCE ************** --> | |||
| <!ELEMENT p4sync EMPTY> | |||
| <!ATTLIST p4sync | |||
| view CDATA #IMPLIED | |||
| label CDATA #IMPLIED | |||
| force CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT p4change EMPTY> | |||
| <!ELEMENT p4edit EMPTY> | |||
| <!ATTLIST p4edit | |||
| view CDATA #REQUIRED | |||
| change CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT p4submit EMPTY> | |||
| <!ATTLIST p4submit | |||
| change CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT p4have EMPTY> | |||
| <!ELEMENT p4label EMPTY> | |||
| <!ATTLIST p4label | |||
| name CDATA #REQUIRED | |||
| view CDATA #IMPLIED | |||
| desc CDATA #IMPLIED | |||
| > | |||
| <!-- *********** JUNIT ************** --> | |||
| <!-- project ext DTD for Ant --> | |||
| <!-- 2000-04-03 --> | |||
| <!ELEMENT junit (jvmarg | batchtest | test | formatter | sysproperty)*> | |||
| <!ATTLIST junit | |||
| printsummary CDATA #IMPLIED | |||
| fork CDATA #IMPLIED | |||
| haltonerror CDATA #IMPLIED | |||
| haltonfailure CDATA #IMPLIED | |||
| timeout CDATA #IMPLIED | |||
| maxmemory CDATA #IMPLIED | |||
| jvm CDATA #IMPLIED | |||
| dir CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT jvmarg EMPTY> | |||
| <!ATTLIST jvmarg | |||
| value CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT sysproperty EMPTY> | |||
| <!ATTLIST sysproperty | |||
| key CDATA #REQUIRED | |||
| value CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT formatter EMPTY> | |||
| <!ATTLIST formatter | |||
| type CDATA #IMPLIED | |||
| classname CDATA #IMPLIED | |||
| extension CDATA #REQUIRED | |||
| usefile CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT test EMPTY> | |||
| <!ATTLIST test | |||
| name CDATA #REQUIRED | |||
| fork CDATA #IMPLIED | |||
| haltonerror CDATA #IMPLIED | |||
| haltonfailure CDATA #IMPLIED | |||
| todir CDATA #IMPLIED | |||
| outfile CDATA #IMPLIED | |||
| if CDATA #IMPLIED | |||
| unless CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT batchtest EMPTY> | |||
| <!ATTLIST batchtest | |||
| fork CDATA #IMPLIED | |||
| haltonerror CDATA #IMPLIED | |||
| haltonfailure CDATA #IMPLIED | |||
| todir CDATA #IMPLIED | |||
| if CDATA #IMPLIED | |||
| unless CDATA #IMPLIED | |||
| > | |||
| <!ENTITY % ext "| xt"> | |||
| <!-- *********** EJB ************** --> | |||
| <!ELEMENT xt EMPTY> | |||
| <!ATTLIST xt | |||
| xml CDATA #REQUIRED | |||
| xsl CDATA #REQUIRED | |||
| out CDATA #REQUIRED> | |||
| <!ELEMENT ddcreator (include | exclude)*> | |||
| <!ATTLIST ddcreator | |||
| descriptors CDATA #REQUIRED | |||
| dest CDATA #REQUIRED | |||
| classpath CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT ejbc (include | exclude)*> | |||
| <!ATTLIST ejbc | |||
| descriptors CDATA #REQUIRED | |||
| manifest CDATA #REQUIRED | |||
| dest CDATA #REQUIRED | |||
| src CDATA #REQUIRED | |||
| classpath CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT wlrun (classpath | wlclasspath)*> | |||
| <!ATTLIST wlrun | |||
| beahome CDATA #REQUIRED | |||
| home CDATA #REQUIRED | |||
| Domain CDATA #REQUIRED | |||
| classpath CDATA #IMPLIED | |||
| wlclasspath CDATA #IMPLIED | |||
| properties CDATA #IMPLIED | |||
| name CDATA #IMPLIED | |||
| policy CDATA #IMPLIED | |||
| username CDATA #IMPLIED | |||
| password CDATA #IMPLIED | |||
| pkPassword CDATA #IMPLIED | |||
| jvmargs CDATA #IMPLIED | |||
| args CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT wlstop (classpath)*> | |||
| <!ATTLIST wlstop | |||
| beahome CDATA #REQUIRED | |||
| classpath CDATA #REQUIRED | |||
| user CDATA #REQUIRED | |||
| password CDATA #REQUIRED | |||
| url CDATA #IMPLIED | |||
| delay CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT ejbjar (classpath | dtd | support)*> | |||
| <!ATTLIST ejbjar | |||
| descriptordir CDATA #IMPLIED | |||
| srcdir CDATA #REQUIRED | |||
| destdir CDATA #REQUIRED | |||
| basejarname CDATA #IMPLIED | |||
| basenameterminator CDATA #IMPLIED | |||
| genericjarsuffix CDATA #IMPLIED | |||
| classpath CDATA #IMPLIED | |||
| latdestdir CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT dtd EMPTY> | |||
| <!ATTLIST dtd | |||
| publicId CDATA #REQUIRED | |||
| location CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT support (include | exclude)*> | |||
| <!ATTLIST support | |||
| dir CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT weblogic (classpath | dtd | support)*> | |||
| <!ATTLIST weblogic | |||
| destdir CDATA #IMPLIED | |||
| genericjarsuffix CDATA #IMPLIED | |||
| suffix CDATA #IMPLIED | |||
| wlclasspath CDATA #IMPLIED | |||
| keepgeneric CDATA #IMPLIED | |||
| compiler CDATA #IMPLIED | |||
| rebuild CDATA #IMPLIED | |||
| keepgenerated CDATA #IMPLIED | |||
| args CDATA #IMPLIED | |||
| weblogicdtd CDATA #IMPLIED | |||
| wldtd CDATA #IMPLIED | |||
| ejbdtd CDATA #IMPLIED | |||
| newCMP CDATA #IMPLIED | |||
| oldCMP CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT TOPLink (classpath | dtd | support)*> | |||
| <!ATTLIST TOPLink | |||
| destdir CDATA #IMPLIED | |||
| genericjarsuffix CDATA #IMPLIED | |||
| suffix CDATA #IMPLIED | |||
| wlclasspath CDATA #IMPLIED | |||
| keepgeneric CDATA #IMPLIED | |||
| compiler CDATA #IMPLIED | |||
| rebuild CDATA #IMPLIED | |||
| keepgenerated CDATA #IMPLIED | |||
| args CDATA #IMPLIED | |||
| weblogicdtd CDATA #IMPLIED | |||
| wldtd CDATA #IMPLIED | |||
| ejbdtd CDATA #IMPLIED | |||
| newCMP CDATA #IMPLIED | |||
| oldCMP CDATA #IMPLIED | |||
| toplinkdescriptor CDATA #IMPLIED | |||
| toplinkdtd CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT wlclasspath (pathelement | path | fileset)*> | |||
| <!ATTLIST wlclasspath | |||
| id CDATA #IMPLIED | |||
| refid CDATA #IMPLIED | |||
| > | |||
| <!-- *********** PERFORCE ************** --> | |||
| <!ELEMENT PropertyFile (entry)*> | |||
| <!ATTLIST PropertyFile | |||
| file CDATA #REQUIRED | |||
| comment CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT entry EMPTY> | |||
| <!ATTLIST entry | |||
| key CDATA #REQUIRED | |||
| value CDATA #REQUIRED | |||
| type CDATA #IMPLIED | |||
| operation CDATA #IMPLIED | |||
| default CDATA #IMPLIED | |||
| pattern CDATA #IMPLIED | |||
| > | |||
| @@ -1,80 +1,84 @@ | |||
| <?xml version="1.0" encoding="iso-8859-1"?> | |||
| <!-- | |||
| Copyright (c) 2000 Michel CASABIANCA. All Rights Reserved. | |||
| The Apache Software License, Version 1.1 | |||
| Permission to use, copy, modify, and distribute this software and its | |||
| documentation for any purpose and without fee or royalty is hereby | |||
| granted, provided that both the above copyright notice and this | |||
| permission notice appear in all copies of the software and | |||
| documentation or portions thereof, including modifications, that you | |||
| make. | |||
| Copyright (c) 1999, 2000 The Apache Software Foundation. All rights | |||
| reserved. | |||
| THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO | |||
| REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, | |||
| BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR | |||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR | |||
| THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY | |||
| THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. | |||
| COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE | |||
| OR DOCUMENTATION. | |||
| Redistribution and use in source and binary forms, with or without | |||
| modification, 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 acknowlegement: | |||
| "This product includes software developed by the | |||
| Apache Software Foundation (http://www.apache.org/)." | |||
| Alternately, this acknowlegement may appear in the software itself, | |||
| if and wherever such third-party acknowlegements normally appear. | |||
| 4. The names "The Jakarta Project", "Ant", 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 apache@apache.org. | |||
| 5. Products derived from this software may not be called "Apache" | |||
| nor may "Apache" appear in their names without prior written | |||
| permission of the Apache Group. | |||
| 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 (INCLUDING, 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. For more | |||
| information on the Apache Software Foundation, please see | |||
| <http://www.apache.org/>. | |||
| --> | |||
| <!-- project DTD for Ant --> | |||
| <!-- 2000-04-03 --> | |||
| <!ENTITY % ext-file SYSTEM "file:/project-ext.dtd"> | |||
| %ext-file; | |||
| <!ELEMENT project (target | property | path)*> | |||
| <!ATTLIST project | |||
| name CDATA #REQUIRED | |||
| default CDATA #REQUIRED | |||
| basedir CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT target (ant | available | chmod | copy | cvs | delete | deltree | echo | exec | expand | filter | get | gzip | fixcrlf | jar | java | javac | javadoc | keysubst | mkdir | property | rename | replace | rmic | tar | taskdef | tstamp | zip | path | classpath)*> | |||
| <!-- @author Michel CASABIANCA --> | |||
| <!-- @version $Revision$ --> | |||
| <!ENTITY % share-file SYSTEM "file:/share.dtd"> | |||
| %share-file; | |||
| <!ELEMENT target (ant | antcall | available | chmod | copy | cvs | delete | deltree | echo | exec | expand | filter | get | gzip | fixcrlf | jar | java | javac | javadoc | keysubst | mkdir | property | recorder | rename | replace | rmic | tar | taskdef | tstamp | zip | path | classpath | mail)*> | |||
| <!ATTLIST target | |||
| name CDATA #REQUIRED | |||
| depends CDATA #IMPLIED | |||
| if CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT path (pathelement | path)*> | |||
| <!ATTLIST path | |||
| id CDATA #IMPLIED | |||
| refid CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT classpath (pathelement | path | fileset)*> | |||
| <!ATTLIST classpath | |||
| id CDATA #IMPLIED | |||
| refid CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT fileset (include | exclude)*> | |||
| <!ATTLIST fileset | |||
| dir CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT exclude EMPTY> | |||
| <!ATTLIST exclude | |||
| name CDATA #REQUIRED | |||
| unless CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT include EMPTY> | |||
| <!ATTLIST include | |||
| name CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT pathelement EMPTY> | |||
| <!ATTLIST pathelement | |||
| location CDATA #IMPLIED | |||
| path CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT property EMPTY> | |||
| <!ATTLIST property | |||
| name CDATA #IMPLIED | |||
| value CDATA #IMPLIED | |||
| resource CDATA #IMPLIED | |||
| file CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT ant EMPTY> | |||
| <!ELEMENT ant (property)*> | |||
| <!ATTLIST ant | |||
| antfile CDATA #IMPLIED | |||
| dir CDATA #REQUIRED | |||
| target CDATA #IMPLIED | |||
| output CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT antcall (param)*> | |||
| <!ATTLIST antcall | |||
| target CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT param EMPTY> | |||
| <!ATTLIST param | |||
| name CDATA #REQUIRED | |||
| value CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT available EMPTY> | |||
| <!ATTLIST available | |||
| @@ -88,11 +92,16 @@ | |||
| src CDATA #REQUIRED | |||
| perm CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT copy (fileset)*> | |||
| <!ELEMENT copy (fileset | mapper)*> | |||
| <!ATTLIST copy | |||
| file CDATA #IMPLIED | |||
| todir CDATA #IMPLIED | |||
| todir CDATA #IMPLIED | |||
| preservelastmodified CDATA #IMPLIED | |||
| overwrite CDATA #IMPLIED | |||
| filtering CDATA #IMPLIED | |||
| flatten CDATA #IMPLIED | |||
| includeEmptyDirs CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT cvs EMPTY> | |||
| <!ATTLIST cvs | |||
| @@ -101,9 +110,18 @@ | |||
| package CDATA #REQUIRED | |||
| tag CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT delete EMPTY> | |||
| <!ELEMENT delete (fileset)*> | |||
| <!ATTLIST delete | |||
| file CDATA #REQUIRED | |||
| file CDATA #IMPLIED | |||
| dir CDATA #IMPLIED | |||
| verbose CDATA #IMPLIED | |||
| quiet CDATA #IMPLIED | |||
| includeEmptyDirs CDATA #IMPLIED | |||
| includes CDATA #IMPLIED | |||
| includesfile CDATA #IMPLIED | |||
| excludes CDATA #IMPLIED | |||
| excludesfile CDATA #IMPLIED | |||
| defaultexcludes CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT deltree EMPTY> | |||
| <!ATTLIST deltree | |||
| @@ -233,10 +251,35 @@ | |||
| sep CDATA #IMPLIED | |||
| keys CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT mail EMPTY> | |||
| <!ATTLIST mail | |||
| from CDATA #REQUIRED | |||
| tolist CDATA #REQUIRED | |||
| message CDATA #REQUIRED | |||
| files CDATA #IMPLIED | |||
| mailhost CDATA #IMPLIED | |||
| subject CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT mapper EMPTY> | |||
| <!ATTLIST mapper | |||
| type CDATA #REQUIRED | |||
| from CDATA #REQUIRED | |||
| to CDATA #REQUIRED | |||
| classname CDATA #IMPLIED | |||
| classpath CDATA #IMPLIED | |||
| classpathref CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT mkdir EMPTY> | |||
| <!ATTLIST mkdir | |||
| dir CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT recorder EMPTY> | |||
| <!ATTLIST recorder | |||
| name CDATA #REQUIRED | |||
| action CDATA #IMPLIED | |||
| append CDATA #IMPLIED | |||
| loglevel CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT rename EMPTY> | |||
| <!ATTLIST rename | |||
| src CDATA #REQUIRED | |||
| @@ -263,12 +306,12 @@ | |||
| excludes CDATA #IMPLIED | |||
| defaultexcludes CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT taskdef EMPTY> | |||
| <!ATTLIST taskdef | |||
| name CDATA #REQUIRED | |||
| classname CDATA #REQUIRED | |||
| <!ELEMENT tstamp (format)*> | |||
| <!ELEMENT format EMPTY> | |||
| <!ATTLIST format | |||
| property CDATA #REQUIRED | |||
| pattern CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT tstamp EMPTY> | |||
| <!ELEMENT zip EMPTY> | |||
| <!ATTLIST zip | |||
| zipfile CDATA #REQUIRED | |||
| @@ -0,0 +1,118 @@ | |||
| <?xml version="1.0" encoding="iso-8859-1"?> | |||
| <!-- | |||
| The Apache Software License, Version 1.1 | |||
| Copyright (c) 1999, 2000 The Apache Software Foundation. All rights | |||
| reserved. | |||
| Redistribution and use in source and binary forms, with or without | |||
| modification, 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 acknowlegement: | |||
| "This product includes software developed by the | |||
| Apache Software Foundation (http://www.apache.org/)." | |||
| Alternately, this acknowlegement may appear in the software itself, | |||
| if and wherever such third-party acknowlegements normally appear. | |||
| 4. The names "The Jakarta Project", "Ant", 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 apache@apache.org. | |||
| 5. Products derived from this software may not be called "Apache" | |||
| nor may "Apache" appear in their names without prior written | |||
| permission of the Apache Group. | |||
| 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 (INCLUDING, 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. For more | |||
| information on the Apache Software Foundation, please see | |||
| <http://www.apache.org/>. | |||
| --> | |||
| <!-- @author Michel CASABIANCA --> | |||
| <!-- @version $Revision$ --> | |||
| <!ELEMENT project (target | property | path | taskdef | patternset | fileset)*> | |||
| <!ATTLIST project | |||
| name CDATA #REQUIRED | |||
| default CDATA #REQUIRED | |||
| basedir CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT property EMPTY> | |||
| <!ATTLIST property | |||
| name CDATA #IMPLIED | |||
| value CDATA #IMPLIED | |||
| resource CDATA #IMPLIED | |||
| file CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT path (pathelement | path)*> | |||
| <!ATTLIST path | |||
| id CDATA #IMPLIED | |||
| refid CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT classpath (pathelement | path | fileset)*> | |||
| <!ATTLIST classpath | |||
| id CDATA #IMPLIED | |||
| refid CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT fileset (include | exclude)*> | |||
| <!ATTLIST fileset | |||
| id CDATA #IMPLIED | |||
| refid CDATA #IMPLIED | |||
| dir CDATA #REQUIRED | |||
| defaultexcludes CDATA #IMPLIED | |||
| includes CDATA #IMPLIED | |||
| includesfile CDATA #IMPLIED | |||
| excludes CDATA #IMPLIED | |||
| excludesfile CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT patternset (include | exclude)*> | |||
| <!ATTLIST patternset | |||
| id CDATA #REQUIRED | |||
| refid CDATA #IMPLIED | |||
| includes CDATA #IMPLIED | |||
| includesfile CDATA #IMPLIED | |||
| excludes CDATA #IMPLIED | |||
| excludesfile CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT exclude EMPTY> | |||
| <!ATTLIST exclude | |||
| name CDATA #REQUIRED | |||
| unless CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT include EMPTY> | |||
| <!ATTLIST include | |||
| name CDATA #REQUIRED | |||
| > | |||
| <!ELEMENT pathelement EMPTY> | |||
| <!ATTLIST pathelement | |||
| location CDATA #IMPLIED | |||
| path CDATA #IMPLIED | |||
| > | |||
| <!ELEMENT taskdef EMPTY> | |||
| <!ATTLIST taskdef | |||
| name CDATA #REQUIRED | |||
| classname CDATA #REQUIRED | |||
| > | |||
| @@ -124,7 +124,9 @@ public class NewElementCmd extends AbstractCommand { | |||
| ACSDtdDefinedElement dtde = (ACSDtdDefinedElement) e; | |||
| NewElementDlg dlg = new NewElementDlg( | |||
| getContext().getParentFrame(), true); | |||
| dlg.setList(dtde.getPossibleChildren()); | |||
| dlg.setLists( | |||
| dtde.getPossibleChildren(ACSDocumentType.CORE_ELEMENT), | |||
| dtde.getPossibleChildren(ACSDocumentType.OPTIONAL_ELEMENT) ); | |||
| dlg.pack(); | |||
| WindowUtils.centerWindow(dlg); | |||
| dlg.setTitle("Select the new element type"); | |||
| @@ -54,6 +54,9 @@ | |||
| package org.apache.tools.ant.gui.command; | |||
| import javax.swing.*; | |||
| import java.util.List; | |||
| import java.util.ArrayList; | |||
| import org.apache.tools.ant.gui.util.Collections; | |||
| /** | |||
| * A Dialog which asks for a new xml element's type. | |||
| @@ -67,6 +70,7 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| private javax.swing.JPanel _buttonPanel; | |||
| private javax.swing.JButton _buttonOK; | |||
| private javax.swing.JButton _buttonCancel; | |||
| private javax.swing.JCheckBox _optionalButton; | |||
| private javax.swing.JPanel _selectPanel; | |||
| private javax.swing.JPanel _panelData; | |||
| private javax.swing.JLabel _label; | |||
| @@ -77,11 +81,17 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| private boolean _cancel = true; | |||
| /** holds the element type */ | |||
| private String _elementName; | |||
| /** list of core tasks */ | |||
| private List _coreElements; | |||
| /** list of optional tasks */ | |||
| private List _optionalElements; | |||
| /** list of tasks to display */ | |||
| private List _elements; | |||
| /** | |||
| * Creates new form NewElementDlg | |||
| */ | |||
| public NewElementDlg(java.awt.Frame parent,boolean modal) { | |||
| public NewElementDlg(java.awt.Frame parent, boolean modal) { | |||
| super(parent, modal); | |||
| initComponents(); | |||
| enableButtons(); | |||
| @@ -90,12 +100,54 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| /** | |||
| * Fills the listbox with the input list. | |||
| */ | |||
| public void setList(String[] list) { | |||
| if (list == null || list.length == 0) { | |||
| public void setLists(String[] coreElements, String[] optionalElements) { | |||
| // Are there any items to display? | |||
| if ( (coreElements == null || coreElements.length == 0) && | |||
| (optionalElements == null || optionalElements.length == 0 ) ) { | |||
| // Hide the list | |||
| _listScrollPane.setVisible(false); | |||
| _optionalButton.setVisible(false); | |||
| } else { | |||
| _elementList.setListData(list); | |||
| // Are there any core elements? | |||
| if (coreElements == null) { | |||
| _coreElements = new ArrayList(); | |||
| // Display the optional elements | |||
| _optionalButton.setSelected(true); | |||
| _optionalButton.setVisible(false); | |||
| } else { | |||
| // Create a sorted list of the core elements | |||
| List temp = Collections.fill(null, coreElements); | |||
| java.util.Collections.sort(temp); | |||
| _coreElements = temp; | |||
| } | |||
| // Are there any optional elements? | |||
| if (optionalElements == null) { | |||
| _optionalElements = new ArrayList(); | |||
| // Display the core elements | |||
| _optionalButton.setSelected(false); | |||
| _optionalButton.setVisible(false); | |||
| } else { | |||
| // Create a sorted list of the optional elements | |||
| List temp = Collections.fill(null, optionalElements); | |||
| java.util.Collections.sort(temp); | |||
| _optionalElements = temp; | |||
| } | |||
| // Are the lists the same? | |||
| if (_optionalElements.containsAll(_coreElements) && | |||
| _coreElements.containsAll(_optionalElements) ) { | |||
| // Hide the button | |||
| _optionalButton.setVisible(false); | |||
| } | |||
| } | |||
| enableButtons(); | |||
| } | |||
| /** | |||
| @@ -116,11 +168,26 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| * Enable or disable buttons | |||
| */ | |||
| private void enableButtons() { | |||
| // Enable the OK button? | |||
| if (isInputValid()) { | |||
| _buttonOK.setEnabled(true); | |||
| } else { | |||
| _buttonOK.setEnabled(false); | |||
| } | |||
| // Display the core or optional elements? | |||
| Object oldList = _elements; | |||
| if (_optionalButton.isSelected()) { | |||
| _elements = _optionalElements; | |||
| } else { | |||
| _elements = _coreElements; | |||
| } | |||
| // Did the list change? | |||
| if (oldList != _elements) { | |||
| _elementList.setListData(_elements.toArray()); | |||
| } | |||
| } | |||
| /** | |||
| @@ -159,6 +226,8 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| return true; | |||
| else if (c == '>') | |||
| return false; | |||
| else if (c >= '0' && c <= '9') | |||
| return true; | |||
| else if (c == '.' || c == '-' || c == '_' || c == ':') | |||
| return true; | |||
| else | |||
| @@ -193,6 +262,8 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| _elementText = new javax.swing.JTextField(); | |||
| _listScrollPane = new javax.swing.JScrollPane(); | |||
| _elementList = new javax.swing.JList(); | |||
| _optionalButton = new javax.swing.JCheckBox( | |||
| "show optional elements", false); | |||
| getContentPane().setLayout(new java.awt.BorderLayout(10, 10)); | |||
| addWindowListener(new java.awt.event.WindowAdapter() { | |||
| public void windowClosing(java.awt.event.WindowEvent evt) { | |||
| @@ -272,7 +343,16 @@ public class NewElementDlg extends javax.swing.JDialog { | |||
| } | |||
| ); | |||
| _listScrollPane.setViewportView(_elementList); | |||
| _optionalButton.setMargin(new java.awt.Insets(2, 2, 2, 2)); | |||
| _optionalButton.addActionListener(new java.awt.event.ActionListener() { | |||
| public void actionPerformed(java.awt.event.ActionEvent evt) { | |||
| enableButtons(); | |||
| } | |||
| } | |||
| ); | |||
| _selectPanel.add(_optionalButton, java.awt.BorderLayout.NORTH); | |||
| _selectPanel.add(_listScrollPane, java.awt.BorderLayout.CENTER); | |||
| getContentPane().add(_selectPanel, java.awt.BorderLayout.CENTER); | |||
| pack(); | |||