From a2572015db832fb07c35af1a55aa16692ac24a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 27 Oct 2009 23:01:39 +0100 Subject: [PATCH] ItEr32S12CUAsignacionGrupoRecursosAPlanificacionItEr31S15: Adding State class --- .../java/org/zkoss/ganttz/adapters/State.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 ganttzk/src/main/java/org/zkoss/ganttz/adapters/State.java diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/State.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/State.java new file mode 100644 index 000000000..c4bedd7db --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/State.java @@ -0,0 +1,83 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.zkoss.ganttz.adapters; + +import java.util.ArrayList; +import java.util.List; + +/** + * Represents a value that can be changed. It notifies the interested + * {@link IValueChangeListener listeners} when the value is changed + * @author Óscar González Fernández + */ +public class State { + + public interface IValueChangeListener { + public void hasChanged(State state); + } + + public static State create(T value) { + return new State(value); + } + + public static State create() { + return new State(); + } + + private List> listeners = new ArrayList>(); + private T value; + private boolean isVoid = false; + + private State(T value) { + this.value = value; + } + + private State() { + this.value = null; + isVoid = true; + } + + public T getValue() { + return value; + } + + public void changeValueTo(T value) { + if (!isVoid && this.value == value) { + return; + } + this.value = value; + fireChange(); + } + + private void fireChange() { + for (IValueChangeListener listener : listeners) { + listener.hasChanged(this); + } + } + + public void addListener(IValueChangeListener listener) { + listeners.add(listener); + } + + public void removeListener(IValueChangeListener listener) { + listeners.remove(listener); + } + +}