blob: 2040a84c3a073df7210314c6c0e7adce6bc9f7ed [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 20087 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.edit.util;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.epf.uma.MethodElement;
import org.eclipse.epf.uma.MethodElementProperty;
/**
* Class managing method element properties
*
* @author Weiping Lu - May 10, 2008
* @since 1.5
*/
public class MethodElementPropertyMgr {
private static MethodElementPropertyMgr instance = new MethodElementPropertyMgr();
private Map<MethodElement, MethodElementProperties> registeredMap =
new HashMap<MethodElement, MethodElementProperties>();
private ListenerList listeners = new ListenerList();
private MethodElementPropertyMgr() {
}
public static MethodElementPropertyMgr getInstance() {
return instance;
}
public MethodElementProperties register(MethodElement element,
String[] propNames) {
MethodElementProperties props = new MethodElementProperties(element, propNames);
register(element, props);
return props;
}
public void register(MethodElement element,
MethodElementProperties props) {
unregister(element);
registeredMap.put(element, props);
}
public MethodElementProperties unregister(MethodElement element) {
MethodElementProperties props = registeredMap.remove(element);
if (props != null) {
props.dispose();
}
return props;
}
public MethodElementProperty getProperty(MethodElement e, String propName) {
MethodElementProperties props = registeredMap.get(e);
if (props != null && props.propNameRegistered(propName)) {
return props.getProperty(propName);
}
return MethodElementPropertyHelper.getProperty(e, propName);
}
public void setProperty(MethodElement e, String propName, String propValue) {
MethodElementProperties props = registeredMap.get(e);
if (props != null && props.propNameRegistered(propName)) {
props.setProperty(propName, propValue);
} else {
MethodElementPropertyHelper.setProperty(e, propName, propValue);
}
}
public void addListener(ChangeEventListener listener) {
listeners.add(listener);
}
public void removeListener(ChangeEventListener listener) {
listeners.remove(listener);
}
public static class ChangeEventListener {
public void notifyChange(ChangeEvent event) {
}
}
public static class ChangeEvent {
public String propName;
public MethodElementProperty propElement;
public String oldValue;
public String newValue;
public ChangeEvent(String propName, String oldValue, String newValue) {
this.propElement = propElement;
this.oldValue = oldValue;
this.newValue = newValue;
}
public ChangeEvent(MethodElementProperty propElement, String oldValue, String newValue) {
this(propElement == null ? null : propElement.getName(), oldValue, newValue);
this.propElement = propElement;
}
}
}