cc.warlock.core.client.settings.internal.WindowSettingsConfigurationProvider.java Source code

Java tutorial

Introduction

Here is the source code for cc.warlock.core.client.settings.internal.WindowSettingsConfigurationProvider.java

Source

/**
 * Warlock, the open-source cross-platform game client
 *  
 * Copyright 2008, Warlock LLC, and individual contributors as indicated
 * by the @authors tag. 
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package cc.warlock.core.client.settings.internal;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import cc.warlock.core.client.settings.IWindowSettings;
import cc.warlock.core.client.settings.IWindowSettingsProvider;

public class WindowSettingsConfigurationProvider extends ClientConfigurationProvider
        implements IWindowSettingsProvider {

    protected ArrayList<IWindowSettings> windowSettings = new ArrayList<IWindowSettings>();

    public WindowSettingsConfigurationProvider() {
        super("windows");
        setHandleChildren(false);
    }

    public void addWindowSettings(IWindowSettings settings) {
        if (getWindowSettings(settings.getId()) == null)
            windowSettings.add(settings);
    }

    public Collection<? extends IWindowSettings> getWindowSettings() {
        return windowSettings;
    }

    public IWindowSettings getWindowSettings(String windowId) {
        for (IWindowSettings settings : windowSettings) {
            if (settings.getId().equals(windowId))
                return settings;
        }
        return null;
    }

    public void removeWindowSettings(IWindowSettings settings) {
        windowSettings.remove(settings);
    }

    @Override
    protected void parseData() {

    }

    @Override
    protected void parseChild(Element child) {
        if (child.getName().equals("window")) {
            WindowSettings settings = (WindowSettings) getWindowSettings(child.attributeValue("id"));
            boolean add = false;
            if (settings == null) {
                settings = new WindowSettings(this);
                add = true;
            }

            settings.setBackgroundColor(colorValue(child, "background"));
            settings.setForegroundColor(colorValue(child, "foreground"));
            settings.setFont(elementToFont(child.element("font")));
            settings.setColumnFont(elementToFont(child.element("columnFont")));
            settings.setId(child.attributeValue("id"));

            if (add) {
                windowSettings.add(settings);
            }
        }
    }

    @Override
    protected void saveTo(List<Element> elements) {
        Element windows = DocumentHelper.createElement("windows");

        for (IWindowSettings settings : windowSettings) {
            Element window = windows.addElement("window");
            window.addAttribute("id", settings.getId());
            window.addAttribute("background", colorString(settings.getBackgroundColor()));
            window.addAttribute("foreground", colorString(settings.getForegroundColor()));

            window.add(fontToElement(settings.getFont(), "font"));
            window.add(fontToElement(settings.getColumnFont(), "columnFont"));
        }

        elements.add(windows);
    }
}