/**
* @file: ElementPropertiesView.java
* @author: tlc
* @date: 2006-11-10
* @version: 1.0.0
*/
package de.FeatureModellingTool.ElementInfoEditor;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Iterator;
import java.util.List;
import javax.swing.*;
import research.DrawingEditor;
import de.FeatureModellingTool.FeatureModel.Feature;
import de.FeatureModellingTool.FeatureModel.FeatureModel;
import de.FeatureModellingTool.FeatureModel.FeatureProperties;
import de.FeatureModellingTool.FeatureModel.FeatureRelation;
import de.reuse.Context;
import de.reuse.ContextImplementation;
public class ElementPropertiesView extends JList implements PropertyChangeListener {
protected final ContextImplementation context = new ContextImplementation();
private FeatureModel featureModel = null;
protected final FeatureModelPropertyChangeListener featureModelPropertyChangeListener = new FeatureModelPropertyChangeListener();
protected final DefaultListModel listModel = new DefaultListModel();
protected class ContextChangeListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent e) {
contextChange(e);
}
}
protected class FeatureModelPropertyChangeListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
featureModelPropertyChange(evt);
}
}
public ElementPropertiesView() {
this.setModel(listModel);
context.addContextChangeListener(new ContextChangeListener());
}
public void propertyChange(PropertyChangeEvent e) {
if (!e.getPropertyName().equals(DrawingEditor.SELECTION_CHANGED))
return;
List selections = (List)e.getNewValue();
showElementProperties(selections);
}
protected void showElementProperties(List selections) {
listModel.clear();
if (selections == null)
return;
Iterator it = selections.iterator();
while (it.hasNext()) {
String id = (String)it.next();
if (id == null)
continue;
Feature feature = featureModel.getFeature(id);
FeatureRelation relation = featureModel.getFeatureRelation(id);
String info = "";
if (feature != null) {
info = feature.getName() + ": " + feature.getDescription();
} else if (relation != null) {
info = relation.getName();
} else {
info = id;
}
listModel.addElement(info);
}
}
public Context getContext() {
return context;
}
private void contextChange(PropertyChangeEvent e) {
String property = e.getPropertyName();
if (!property.equals(de.FeatureModellingTool.ElementInfoEditor.ConstantDefinition.FEATURE_MODEL))
return;
if (featureModel != null)
featureModel.removePropertyChangeListener(featureModelPropertyChangeListener);
featureModel = (FeatureModel) e.getNewValue();
if (featureModel != null)
featureModel.addPropertyChangeListener(featureModelPropertyChangeListener);
}
private void featureModelPropertyChange(PropertyChangeEvent e) {
String property = e.getPropertyName();
if (!property.equals(FeatureProperties.DESCRIPTION))
return;
Feature feature = (Feature) e.getSource();
//--todo: ���༭ijfeature��description����propertiesView�е���ʾ
listModel.clear();
String info = feature.getName() + ": " + feature.getDescription();
listModel.addElement(info);
}
}