/*
 * Copyright (c) 2008-2012, Matthias Mann
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *     * Redistributions of source code must retain the above copyright notice,
 *       this list of conditions and the following disclaimer.
 *     * 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.
 *     * Neither the name of Matthias Mann nor the names of its contributors may
 *       be used to endorse or promote products derived from this software
 *       without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS 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 COPYRIGHT OWNER OR
 * 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.
 */
package de.matthiasmann.twlthemeeditor.datamodel;

import de.matthiasmann.twl.model.TreeTableNode;
import de.matthiasmann.twlthemeeditor.datamodel.operations.CreateChildOperation;
import de.matthiasmann.twlthemeeditor.dom.Element;
import java.io.IOException;
import java.util.List;

/**
 *
 * @author Matthias Mann
 */
public final class Include extends ThemeTreeNode {

    private final ThemeFile includedThemeFile;

    public Include(TreeTableNode parent, Element element, final ThemeFile themeFile) throws IOException {
        super(themeFile, parent, element);

        this.includedThemeFile = themeFile.createThemeFile(getFileName());
    }
    
    @Override
    public String getName() {
        return getFileName();
    }

    @Override
    protected String getIcon() {
        return "include";
    }

    public Kind getKind() {
        return Kind.NONE;
    }

    @Override
    protected boolean isModified() {
        return includedThemeFile.isModified();
    }

    public String getFileName() {
        return element.getAttributeValue("filename");
    }

    public void addChildren() throws IOException {
        includedThemeFile.addChildren(this);
    }

    public void addToXPP(DomXPPParser xpp) {
        xpp.addElement(this, element);
    }

    public ThemeFile getIncludedThemeFile() {
        return includedThemeFile;
    }

    @Override
    public List<CreateChildOperation> getCreateChildOperations() {
        List<CreateChildOperation> operations = super.getCreateChildOperations();
        includedThemeFile.addCreateOperations(operations, this);
        return operations;
    }

}

@@ -21,17 +21,17 @@
 2008-201
-2
+3
 , Matthi
@@ -2163,16 +2163,72 @@
 lement);
+%0A        element.removeContentListener(contentListener);
 %0A%0A      
@@ -2296,16 +2296,101 @@
 ame());%0A
+        this.includedThemeFile.getRootElement().addContentListener(contentListener);%0A
     %7D%0A  
@@ -2577,24 +2577,24 @@
 getKind() %7B%0A
-
         retu
@@ -2606,32 +2606,114 @@
 nd.NONE;%0A    %7D%0A%0A
+    @Override%0A    public boolean childrenNeedName() %7B%0A        return true;%0A    %7D%0A%0A
     @Override%0A  

add contentListener to included file and not to include element