/******************************************************************************* * See the NOTICE file distributed with this work for additional information * regarding copyright ownership. * * 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 hr.fer.zemris.vhdllab.applets.editor.schema2.enums; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; public enum EPropertyChange { /** * Bilo koja promjena - u slucaju promjene se obavjestavaju * svi listeneri registrirani na sve EPropertyChange * vrijednosti osim ANY_CHANGE i NO_CHANGE. */ ANY_CHANGE() { @Override public void assignListenerToSupport(PropertyChangeListener listener, PropertyChangeSupport support) { support.addPropertyChangeListener(ALL_CHANGES_KEY, listener); } @Override public void firePropertyChanges(PropertyChangeSupport support, Object oldval, Object newval) { for (EPropertyChange epc : EPropertyChange.values()) { if (epc == NO_CHANGE || epc == ANY_CHANGE) continue; support.firePropertyChange(epc.toString(), oldval, newval); } support.firePropertyChange(ALL_CHANGES_KEY, oldval, newval); } @Override public String toString() { return "ANY_CHANGE"; } }, /** * Bilo kakva promjena nad rasporedom ili razmjestajem komponenti, pinova, * ili zica, ili segmenata zice, ali <b>ne</b> promjena koja obuhvaca * <b>iskljucivo</b> promjenu vrijednosti parametara. */ CANVAS_CHANGE() { @Override public String toString() { return "CANVAS_CHANGE"; } }, /** * Bilo kakva promjena vrijednosti parametara zice, komponente na shemi * ili modelirane komponente. */ PROPERTY_CHANGE() { @Override public String toString() { return "COMPONENT_PROPERTY_CHANGE"; } }, /** * Bilo kakva promjena u kolekciji prototipova. */ PROTOTYPES_CHANGE() { @Override public String toString() { return "PROTOTYPES_CHANGE"; } }, /** * Nikakva promjena u modelu. */ NO_CHANGE() { @Override public void assignListenerToSupport(PropertyChangeListener listener, PropertyChangeSupport support) { // notify nobody } }; /** * Za sve listenere koji slusaju sve promjene. */ private static final String ALL_CHANGES_KEY = "EVERY_CHANGE"; /** * Ovisno o tipu svojstva cija se promjena ocekuje, * PropertyChange postavlja listener na support. * * @param listener * @param support */ public void assignListenerToSupport(PropertyChangeListener listener, PropertyChangeSupport support) { support.addPropertyChangeListener(this.toString(), listener); } /** * Ovisno o tipu svojstva cija se promjena desila, * pobuduje odgovarajuci event nad supportom. * * @param support */ public void firePropertyChanges(PropertyChangeSupport support, Object oldval, Object newval) { support.firePropertyChange(this.toString(), oldval, newval); support.firePropertyChange(ALL_CHANGES_KEY, oldval, newval); } }