/******************************************************************************* * Copyright (c) 2006-2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * IBM Research *******************************************************************************/ package com.ibm.research.tours; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; class PaletteModel implements IPaletteModel { private Map<String,IPaletteEntry> fPaletteEntries; private List<IPaletteModelListener> fModelListeners; protected Map<String,IPaletteEntry> getPaletteEntryMap() { if(fPaletteEntries == null) fPaletteEntries = new HashMap<String,IPaletteEntry>(); return fPaletteEntries; } protected List<IPaletteModelListener> getPaletteModelListeners() { if(fModelListeners == null) fModelListeners = new ArrayList<IPaletteModelListener>(); return fModelListeners; } public void addPaletteEntry(final IPaletteEntry entry) { if(entry.getId() == null) return; if(!getPaletteEntryMap().keySet().contains(entry.getId())) { getPaletteEntryMap().put(entry.getId(),entry); ToursPlugin.getDefault().getEventDispatcher().dispatch(new Runnable() { public void run() { for(IPaletteModelListener listener :getPaletteModelListeners()) listener.entriesAdded(new IPaletteEntry[]{entry}); } }); } } public IPaletteEntry[] getPaletteEntries() { return getPaletteEntryMap().values().toArray(new IPaletteEntry[0]); } public void addPaletteModelListener(IPaletteModelListener listener) { if(!getPaletteModelListeners().contains(listener)) { getPaletteModelListeners().add(listener); ToursPlugin.getDefault().getEventDispatcher().dispatch(new Runnable() { public void run() { for(IPaletteModelListener listener :getPaletteModelListeners()) listener.entriesAdded(getPaletteEntries()); } }); } } public void removePaletteModelListener(IPaletteModelListener listener) { getPaletteModelListeners().remove(listener); } public IPaletteEntry getPaletteEntry(String id) { return getPaletteEntryMap().get(id); } }