/* * This software copyright by various authors including the RPTools.net * development team, and licensed under the LGPL Version 3 or, at your option, * any later version. * * Portions of this software were originally covered under the Apache Software * License, Version 1.1 or Version 2.0. * * See the file LICENSE elsewhere in this distribution for license details. */ package net.rptools.maptool.client.ui.assetpanel; import java.awt.image.ImageObserver; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class AssetPanelModel implements PropertyChangeListener { private final ImageFileTreeModel imageFileTreeModel; private final List<ImageObserver> observerList = new CopyOnWriteArrayList<ImageObserver>(); public AssetPanelModel() { imageFileTreeModel = new ImageFileTreeModel(); } public ImageFileTreeModel getImageFileTreeModel() { return imageFileTreeModel; } public void removeRootGroup(Directory dir) { imageFileTreeModel.removeRootGroup(dir); dir.removePropertyChangeListener(this); } public void addRootGroup(Directory dir) { if (imageFileTreeModel.containsRootGroup(dir)) { return; } dir.addPropertyChangeListener(this); imageFileTreeModel.addRootGroup(dir); } public void addImageUpdateObserver(ImageObserver observer) { if (!observerList.contains(observer)) { observerList.add(observer); } } public void removeImageUpdateObserver(ImageObserver observer) { observerList.remove(observer); } // PROPERTY CHANGE LISTENER public void propertyChange(PropertyChangeEvent evt) { for (ImageObserver observer : observerList) { observer.imageUpdate(null, ImageObserver.ALLBITS, 0, 0, 0, 0); } } }