|
|
|
|
Re: GlazedLists & EMF [message #912915 is a reply to message #904017] |
Fri, 14 September 2012 11:47 |
Ludwig Moser Messages: 476 Registered: July 2009 |
Senior Member |
|
|
late reply, sorry
i defined an interface:
* <copyright>
package lumo.ecore.emf;
import java.beans.PropertyChangeEvent;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Java Bean Support</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link formTest.JavaBeanSupport#getListeners <em>Listeners</em>}</li>
* </ul>
* </p>
*
* @see formTest.FormTestPackage#getJavaBeanSupport()
* @model
* @generated
*/
public interface JavaBeanSupport extends EObject {
/**
* Returns the value of the '<em><b>Listeners</b></em>' attribute list.
* The list contents are of type {@link java.beans.PropertyChangeListener}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Listeners</em>' attribute list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Listeners</em>' attribute list.
* @see formTest.FormTestPackage#getJavaBeanSupport_Listeners()
* @model dataType="formTest.PropertyChangeListener"
* @generated
*/
EList<PropertyChangeListener> getListeners();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model listenerDataType="formTest.PropertyChangeListener"
* @generated
*/
void addPropertyChangeListener(PropertyChangeListener listener);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model listenerDataType="formTest.PropertyChangeListener"
* @generated
*/
void removePropertyChangeListener(PropertyChangeListener listener);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model evtDataType="formTest.PropertyChangeEvent"
* @generated
*/
void propertyChange(PropertyChangeEvent evt);
} // JavaBeanSupport
and then implemented it:
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collection;
import lumo.ecore.emf.JavaBeanSupport;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
import formTest.FormTestPackage;
/**
* <!-- begin-user-doc --> An implementation of the model object '
* <em><b>Java Bean Support</b></em>'. <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link formTest.impl.JavaBeanSupportImpl#getListeners <em>Listeners</em>}
* </li>
* </ul>
* </p>
*
* @generated
*/
public class JavaBeanSupportImpl extends EObjectImpl implements JavaBeanSupport {
/**
* The cached value of the '{@link #getListeners() <em>Listeners</em>}'
* attribute list. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getListeners()
* @generated
* @ordered
*/
protected EList<PropertyChangeListener> listeners;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
Adapter adapter = new AdapterImpl() {
public void notifyChanged(Notification n) {
System.out
.println("Notfication received from the data model. Data model has changed!!!");
System.out.println("n.getFeature().getClass().getSimpleName() = "
+ n.getFeature().getClass().getSimpleName());
EStructuralFeature feature = (EStructuralFeature) n.getFeature();
if (feature == null) {
return;
}
String propertyName = feature.getName();
// System.out.println("n.getFeature(): "+attr.getName());
PropertyChangeEvent evt = new PropertyChangeEvent(n.getNotifier(),
propertyName, n.getOldValue(), n.getNewValue());
getBean().propertyChange(evt);
}
};
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public JavaBeanSupportImpl() {
super();
}
protected JavaBeanSupport getBean() {
return this;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return FormTestPackage.Literals.JAVA_BEAN_SUPPORT;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public EList<PropertyChangeListener> getListeners() {
if (listeners == null) {
listeners = new EDataTypeUniqueEList<PropertyChangeListener>(
PropertyChangeListener.class, this,
FormTestPackage.JAVA_BEAN_SUPPORT__LISTENERS);
}
return listeners;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
public void addPropertyChangeListener(PropertyChangeListener listener) {
getListeners().add(listener);
eAdapters().add(adapter);
// throw new UnsupportedOperationException();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
public void removePropertyChangeListener(PropertyChangeListener listener) {
getListeners().remove(listener);
eAdapters().remove(adapter);
// throw new UnsupportedOperationException();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void propertyChange(PropertyChangeEvent evt) {
// TODO: implement this method
// Ensure that you remove @generated or mark it @generated NOT
throw new UnsupportedOperationException();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case FormTestPackage.JAVA_BEAN_SUPPORT__LISTENERS:
return getListeners();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case FormTestPackage.JAVA_BEAN_SUPPORT__LISTENERS:
getListeners().clear();
getListeners().addAll(
(Collection<? extends PropertyChangeListener>) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case FormTestPackage.JAVA_BEAN_SUPPORT__LISTENERS:
getListeners().clear();
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case FormTestPackage.JAVA_BEAN_SUPPORT__LISTENERS:
return listeners != null && !listeners.isEmpty();
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public String toString() {
if (eIsProxy())
return super.toString();
StringBuffer result = new StringBuffer(super.toString());
result.append(" (listeners: ");
result.append(listeners);
result.append(')');
return result.toString();
}
} // JavaBeanSupportImpl
there is some unneeded console log but it should work
let me know if it helped
EDIT: referring to this forum post this solution is not perfect. (but hey, its one!)
http://www.eclipse.org/forums/index.php/m/902757/#msg_902757
[Updated on: Fri, 14 September 2012 11:53] Report message to a moderator
|
|
|
Powered by
FUDForum. Page generated in 0.03223 seconds