/*FreeMind - A Program for creating and viewing Mindmaps
*Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others.
*
*See COPYING for Details
*
*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, write to the Free Software
*Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
* Created on 18.06.2005
* Copyright (C) 2005 Dimitri Polivaev
*/
package freemind.modes.attributes;
import freemind.controller.filter.util.SortedComboBoxModel;
import freemind.main.XMLElement;
import freemind.modes.XMLElementAdapter;
/**
* @author Dimitri Polivaev 18.06.2005
*/
public class AttributeRegistryElement {
private class RegisteredAttributeValues extends SortedComboBoxModel {
public AttributeRegistry getRegistry() {
return registry;
}
public String getKey() {
return key;
}
public void add(Object element) {
registry.getAttributeController().performRegistryAttributeValue(
getKey(), element.toString());
}
public void _add(Object element) {
super.add(element);
}
public void remove(Object element) {
registry.getAttributeController().performRemoveAttributeValue(
getKey(), element.toString());
}
public void _remove(Object element) {
super.remove(element);
}
public void replace(Object oldO, Object newO) {
registry.getAttributeController().performReplaceAttributeValue(
getKey(), oldO.toString(), newO.toString());
}
public void _replace(Object oldO, Object newO) {
super.replace(oldO, newO);
}
}
private String key;
private RegisteredAttributeValues values;
private AttributeRegistry registry;
private boolean isVisible;
private boolean isRestricted;
private Boolean visibilityModel;
private Boolean restrictionModel;
public AttributeRegistryElement(AttributeRegistry registry, String key) {
super();
this.key = key;
this.registry = registry;
values = new RegisteredAttributeValues();
isVisible = false;
visibilityModel = new Boolean(isVisible);
isRestricted = false;
restrictionModel = new Boolean(isRestricted);
}
public boolean isVisible() {
return isVisible;
}
public SortedComboBoxModel getValues() {
return values;
}
public void addValue(String s) {
values._add(s);
registry.fireAttributesChanged();
}
public void removeAllValues() {
values.clear();
registry.fireAttributesChanged();
}
public void removeValue(String s) {
values._remove(s);
registry.fireAttributesChanged();
}
public boolean isRestricted() {
return isRestricted;
}
public Comparable getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
/**
*/
public XMLElement save() {
XMLElement element = new XMLElement();
if (isVisible()) {
element.setAttribute("VISIBLE", "true");
}
if (isRestricted()) {
element.setAttribute("RESTRICTED", "true");
for (int i = 0; i < values.getSize(); i++) {
XMLElement value = new XMLElement();
value.setName(XMLElementAdapter.XML_NODE_REGISTERED_ATTRIBUTE_VALUE);
value.setAttribute("VALUE", values.getElementAt(i).toString());
element.addChild(value);
}
}
element.setName(XMLElementAdapter.XML_NODE_REGISTERED_ATTRIBUTE_NAME);
element.setAttribute("NAME", key.toString());
return element;
}
public void setVisibility(boolean isVisible) {
if (this.isVisible != isVisible) {
this.isVisible = isVisible;
visibilityModel = Boolean.valueOf(isVisible);
if (isVisible)
registry.incrementVisibleElementsNumber();
else
registry.decrementVisibleElementsNumber();
registry.fireAttributeLayoutChanged();
}
}
public void setRestriction(boolean isRestricted) {
this.isRestricted = isRestricted;
restrictionModel = Boolean.valueOf(isRestricted);
registry.fireAttributesChanged();
}
Boolean getRestriction() {
return restrictionModel;
}
void setRestrictionModel(Boolean restrictionModel) {
this.restrictionModel = restrictionModel;
}
Boolean getVisibilityModel() {
return visibilityModel;
}
void setVisibilityModel(Boolean visibilityModel) {
this.visibilityModel = visibilityModel;
}
public void replaceValue(String oldValue, String newValue) {
values._replace(oldValue, newValue);
registry.fireAttributesChanged();
}
}