/* * $Id$ * This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc * * Copyright (c) 2000-2012 Stephane GALLAND. * Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports, * Universite de Technologie de Belfort-Montbeliard. * Copyright (c) 2013-2016 The original authors, and other authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.arakhne.afc.math.geometry.d2.dfx; import javafx.beans.property.ReadOnlyObjectPropertyBase; /** * A convenient class to define read-only properties for unit vectors. It * creates two properties that are synchronized. One property is read-only * and can be passed to external users. The other property is read- and * writable and should be used internally only. * * @author $Author: sgalland$ * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ * @since 13.0 */ public class ReadOnlyUnitVectorWrapper extends UnitVectorProperty { private ReadOnlyPropertyImpl readOnlyProperty; /** Construct a property. * * @param bean the owner of the property. * @param name the name of the property. * @param factory the factory used by this wrapper. */ public ReadOnlyUnitVectorWrapper(Object bean, String name, GeomFactory2dfx factory) { super(bean, name, factory); } /** * Returns the read-only property, that is synchronized with this * {@code ReadOnlyUnitVectorPropertyWrapper}. * * @return the read-only property. */ public ReadOnlyUnitVectorProperty getReadOnlyProperty() { if (this.readOnlyProperty == null) { this.readOnlyProperty = new ReadOnlyPropertyImpl(); } return this.readOnlyProperty; } @Override protected void fireValueChangedEvent() { super.fireValueChangedEvent(); if (this.readOnlyProperty != null) { this.readOnlyProperty.fireValueChangedEvent(); } } /** Internal implementation. * * @author $Author: sgalland$ * @version $Name$ $Revision$ $Date$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ private class ReadOnlyPropertyImpl extends ReadOnlyObjectPropertyBase<Vector2dfx> implements ReadOnlyUnitVectorProperty { ReadOnlyPropertyImpl() { // } @Override protected void fireValueChangedEvent() { super.fireValueChangedEvent(); } @Override public Vector2dfx get() { return ReadOnlyUnitVectorWrapper.this.get(); } @Override public Object getBean() { return ReadOnlyUnitVectorWrapper.this.getBean(); } @Override public String getName() { return ReadOnlyUnitVectorWrapper.this.getName(); } @Override public double getX() { return ReadOnlyUnitVectorWrapper.this.getX(); } @Override public double getY() { return ReadOnlyUnitVectorWrapper.this.getY(); } } }