Package de.FeatureModellingTool.ElementInfoEditor

Source Code of de.FeatureModellingTool.ElementInfoEditor.ElementPropertiesView2$FeatureModelPropertyChangeListener

package de.FeatureModellingTool.ElementInfoEditor;

import de.reuse.ContextImplementation;
import de.reuse.Context;
import de.reuse.TextPaneCellRenderer;
import de.FeatureModellingTool.FeatureModel.FeatureModel;
import de.FeatureModellingTool.FeatureModel.Feature;
import de.FeatureModellingTool.FeatureModel.FeatureRelation;
import de.FeatureModellingTool.FeatureModel.FeatureProperties;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.util.List;
import java.util.Iterator;

import research.DrawingEditor;
import org.jdesktop.swingx.JXTable;


public class ElementPropertiesView2 extends JXTable implements PropertyChangeListener {

    protected final ContextImplementation context = new ContextImplementation();
    private FeatureModel featureModel = null;
    protected final FeatureModelPropertyChangeListener featureModelPropertyChangeListener = new FeatureModelPropertyChangeListener();

    protected final DefaultTableModel tableModel = new DefaultTableModel();

    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 ElementPropertiesView2() {
        tableModel.addColumn("Element");
        tableModel.addColumn("Description");
        this.setModel(tableModel);
        this.setRowHeightEnabled(true);

        int width = this.getColumnModel().getTotalColumnWidth();
        this.getColumnModel().getColumn(0).setWidth(width / 4);
        this.getColumnModel().getColumn(1).setWidth(width * 3 / 4);

        this.getColumnModel().getColumn(1).setCellRenderer(new TextPaneCellRenderer());
        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) {

        int rowCount = tableModel.getRowCount();
        for (int i = rowCount - 1; i >= 0; i--) {
            tableModel.removeRow(i);
        }

        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);

            if (feature != null) {
                tableModel.addRow(new Object[]{feature.getName(), feature.getDescription()});
            } else if (relation != null) {
                tableModel.addRow(new Object[]{relation.getName(), ""});
            } else {
                tableModel.addRow(new Object[]{"", ""});
            }
        }

    }

    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) {
        Object source = e.getSource();
        String property = e.getPropertyName();
        if (!(source instanceof Feature) || !property.equals(FeatureProperties.DESCRIPTION))
            return;
        Feature feature = (Feature) source;
        //--todo: ���༭ijfeature��description�󣬸���propertiesView�е���ʾ
        int rowCount = tableModel.getRowCount();
        for (int i = rowCount - 1; i >= 0; i--) {
            tableModel.removeRow(i);
        }
        tableModel.addRow(new Object[]{feature.getName(), feature.getDescription()});
    }
}

TOP

Related Classes of de.FeatureModellingTool.ElementInfoEditor.ElementPropertiesView2$FeatureModelPropertyChangeListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.