001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.wicket.markup;
018:
019: /**
020: * Holds markup as a resource (the stream that the markup came from) and a list
021: * of MarkupElements (the markup itself).
022: *
023: * @see MarkupElement
024: * @see ComponentTag
025: * @see org.apache.wicket.markup.RawMarkup
026: *
027: * @author Jonathan Locke
028: * @author Juergen Donnerstag
029: */
030: public abstract interface IMarkup {
031: /** Placeholder that indicates no markup */
032: public static final MarkupResourceData NO_MARKUP = new MarkupResourceData();
033:
034: /**
035: * Find the markup element index of the component with 'path'
036: *
037: * @param path
038: * The component path expression
039: * @param id
040: * The component's id to search for
041: * @return -1, if not found
042: */
043: int findComponentIndex(final String path, final String id);
044:
045: /**
046: * For Wicket it would be sufficient for this method to be package
047: * protected. However to allow wicket-bench easy access to the information
048: * ...
049: *
050: * @param index
051: * Index into markup list
052: * @return Markup element
053: */
054: MarkupElement get(final int index);
055:
056: /**
057: * Gets the markup encoding. A markup encoding may be specified in a markup
058: * file with an XML encoding specifier of the form <?xml ...
059: * encoding="..." ?>.
060: *
061: * @return Encoding, or null if not found.
062: */
063: String getEncoding();
064:
065: /**
066: * Gets the resource that contains this markup
067: *
068: * @return The resource where this markup came from
069: */
070: MarkupResourceStream getResource();
071:
072: /**
073: * Get the wicket namespace valid for this specific markup
074: *
075: * @return wicket namespace
076: */
077: String getWicketNamespace();
078:
079: /**
080: * Return the XML declaration string, in case if found in the markup.
081: *
082: * @return Null, if not found.
083: */
084: String getXmlDeclaration();
085:
086: /**
087: * For Wicket it would be sufficient for this method to be package
088: * protected. However to allow wicket-bench easy access to the information
089: * ...
090: *
091: * @return Number of markup elements
092: */
093: int size();
094:
095: /**
096: * @return String representation of markup list
097: */
098: String toDebugString();
099:
100: /**
101: * @return String representation of markup list
102: */
103: String toString();
104: }
|