Package org.freeplane.features.icon

Source Code of org.freeplane.features.icon.IconBuilder$IconProperties

/*
*  Freeplane - mind map editor
*  Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
*
*  This file is modified by Dimitry Polivaev in 2008.
*
*  This program is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 2 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.freeplane.features.icon;

import java.io.IOException;
import java.util.Collection;

import org.freeplane.core.io.IAttributeHandler;
import org.freeplane.core.io.IElementDOMHandler;
import org.freeplane.core.io.IElementWriter;
import org.freeplane.core.io.ITreeWriter;
import org.freeplane.core.io.ReadManager;
import org.freeplane.core.io.WriteManager;
import org.freeplane.features.map.MapWriter;
import org.freeplane.features.map.NodeBuilder;
import org.freeplane.features.map.NodeModel;
import org.freeplane.features.map.NodeWriter;
import org.freeplane.n3.nanoxml.XMLElement;

class IconBuilder implements IElementDOMHandler, IElementWriter {
  private final IconStore store;
  public IconBuilder(final IconController iconController, final IconStore icons) {
    store = icons;
  }

  static class IconProperties {
    String iconName;
  }

  public Object createElement(final Object parent, final String tag, final XMLElement attributes) {
    if (tag.equals("icon")) {
      return new IconProperties();
    }
    return null;
  }

  public void endElement(final Object parent, final String tag, final Object userObject, final XMLElement dom) {
    if (parent instanceof NodeModel && tag.equals("icon")) {
      final NodeModel node = (NodeModel) parent;
      final IconProperties ip = (IconProperties) userObject;
      node.addIcon(store.getMindIcon(ip.iconName));
      return;
    }
  }

  private void registerAttributeHandlers(final ReadManager reader) {
    reader.addAttributeHandler("icon", "BUILTIN", new IAttributeHandler() {
      public void setAttribute(final Object userObject, final String value) {
        final IconProperties ip = (IconProperties) userObject;
        ip.iconName = value;
      }
    });
  }

  /**
   */
  public void registerBy(final ReadManager reader, final WriteManager writer) {
    reader.addElementHandler("icon", this);
    registerAttributeHandlers(reader);
    writer.addElementWriter(NodeBuilder.XML_NODE, this);
    writer.addElementWriter(NodeBuilder.XML_STYLENODE, this);
  }

  public void setAttributes(final String tag, final Object node, final XMLElement attributes) {
  }

  public void writeContent(final ITreeWriter writer, final Object element, final String tag) throws IOException {
    if(! NodeWriter.shouldWriteSharedContent(writer))
      return;
    final boolean forceFormatting = Boolean.TRUE.equals(writer.getHint(MapWriter.WriterHint.FORCE_FORMATTING));
    final NodeModel node = (NodeModel) element;
    final Collection<MindIcon> icons = forceFormatting ? IconController.getController().getIcons(node) : node.getIcons();
    for (MindIcon icon : icons) {
      final XMLElement iconElement = new XMLElement();
      iconElement.setName("icon");
      iconElement.setAttribute("BUILTIN", icon.getName());
      writer.addElement(node, iconElement);
    }
  }
}
TOP

Related Classes of org.freeplane.features.icon.IconBuilder$IconProperties

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.