/* * (c) Copyright 2010-2011 AgileBirds * * This file is part of OpenFlexo. * * OpenFlexo 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 3 of the License, or * (at your option) any later version. * * OpenFlexo 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 OpenFlexo. If not, see <http://www.gnu.org/licenses/>. * */ package org.openflexo.foundation; import org.openflexo.fge.DataBinding; import org.openflexo.fge.GraphicalRepresentation; import org.openflexo.foundation.cg.version.CGVersionIdentifier; import org.openflexo.foundation.dm.DMCardinality; import org.openflexo.foundation.dm.DMPropertyImplementationType; import org.openflexo.foundation.dm.DMVisibilityType; import org.openflexo.foundation.dm.eo.DMEOAdaptorType; import org.openflexo.foundation.dm.eo.DeleteRuleType; import org.openflexo.foundation.dm.eo.JoinSemanticType; import org.openflexo.foundation.ie.util.ClientSideEventType; import org.openflexo.foundation.ie.util.DateFormatType; import org.openflexo.foundation.ie.util.DropDownType; import org.openflexo.foundation.ie.util.FolderType; import org.openflexo.foundation.ie.util.HyperlinkActionType; import org.openflexo.foundation.ie.util.HyperlinkType; import org.openflexo.foundation.ie.util.IEControlOperator; import org.openflexo.foundation.ie.util.TDCSSType; import org.openflexo.foundation.ie.util.TRCSSType; import org.openflexo.foundation.ie.util.TextCSSClass; import org.openflexo.foundation.ie.util.TextFieldClass; import org.openflexo.foundation.ie.util.TextFieldFormatType; import org.openflexo.foundation.ie.util.TextFieldType; import org.openflexo.foundation.rm.ResourceType; import org.openflexo.foundation.utils.FlexoCSS; import org.openflexo.foundation.utils.FlexoDocFormat; import org.openflexo.foundation.utils.FlexoFont; import org.openflexo.foundation.utils.FlexoProjectFile; import org.openflexo.foundation.wkf.node.ActionType; import org.openflexo.foundation.wkf.node.LoopType; import org.openflexo.foundation.wkf.node.NodeType; import org.openflexo.kvc.KVCObject; import org.openflexo.localization.Language; import org.openflexo.toolbox.Duration; import org.openflexo.toolbox.FileFormat; import org.openflexo.toolbox.FlexoVersion; import org.openflexo.toolbox.RectangleConverter; import org.openflexo.xmlcode.StringEncoder; /** * This class intented to be root class for all objects representing data (in the context of Model/View/Controller scheme) in Flexo<br> * Instances if this class implements Key/Value-coding and wrapers String values to some objects of Flexo Foundation * * @author sguerin */ public abstract class FlexoObject extends KVCObject { private static boolean isInitialized = false; static { initialize(true); } public static void initialize(boolean force) { if (!isInitialized || force) { initialize(StringEncoder.getDefaultInstance()); isInitialized = true; } } public static void initialize(StringEncoder encoder) { // Ce qui suit (date format) est très important: utilise par le RM: ne pas toucher encoder._setDateFormat("HH:mm:ss dd/MM/yyyy"); encoder._addConverter(Language.languageConverter); encoder._addConverter(ResourceType.resourceTypeConverter); encoder._addConverter(FileFormat.fileFormatConverter); encoder._addConverter(CodeType.codeTypeConverter); encoder._addConverter(NodeType.nodeTypeConverter); encoder._addConverter(ActionType.actionTypeConverter); encoder._addConverter(LoopType.loopTypeConverter); encoder._addConverter(FlexoFont.flexoFontConverter); encoder._addConverter(FlexoCSS.flexoCSSConverter); encoder._addConverter(DropDownType.dropdownTypeConverter); encoder._addConverter(HyperlinkType.hyperlinkTypeConverter); encoder._addConverter(ClientSideEventType.ClientSideEventTypeConverter); encoder._addConverter(TDCSSType.tdCSSTypeConverter); encoder._addConverter(TextCSSClass.textCSSClassConverter); encoder._addConverter(TextFieldFormatType.textFieldFormatTypeConverter); encoder._addConverter(TextFieldType.textFieldTypeConverter); encoder._addConverter(TRCSSType.trCSSTypeConverter); encoder._addConverter(TextFieldClass.textFieldClassConverter); encoder._addConverter(DMCardinality.cardinalityConverter); encoder._addConverter(DMPropertyImplementationType.propertyImplementationTypeConverter); encoder._addConverter(DMVisibilityType.visibilityTypeConverter); encoder._addConverter(DMEOAdaptorType.adaptorTypeConverter); encoder._addConverter(DeleteRuleType.deleteRuleTypeConverter); encoder._addConverter(JoinSemanticType.joinSemanticTypeConverter); encoder._addConverter(HyperlinkActionType.hyperlinkActionTypeConverter); encoder._addConverter(IEControlOperator.controlOperatorConverter); encoder._addConverter(FlexoDocFormat.flexoDocFormatConverter); encoder._addConverter(FolderType.folderTypeConverter); encoder._addConverter(DateFormatType.DateFormatTypeConverter); encoder._addConverter(RectangleConverter.instance); encoder._addConverter(FlexoProjectFile.converter); encoder._addConverter(FlexoVersion.converter); encoder._addConverter(CGVersionIdentifier.converter); encoder._addConverter(Duration.converter); encoder._addConverter(DataBinding.CONVERTER); encoder._addConverter(GraphicalRepresentation.POINT_CONVERTER); encoder._addConverter(GraphicalRepresentation.RECT_POLYLIN_CONVERTER); } @Override public synchronized String valueForKey(String key) { return super.valueForKey(key); } @Override public synchronized void setValueForKey(String valueAsString, String key) { super.setValueForKey(valueAsString, key); } }