Package de.FeatureModellingTool.Pattern.UI

Source Code of de.FeatureModellingTool.Pattern.UI.PatternSelection

package de.FeatureModellingTool.Pattern.UI;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;

import javax.swing.Box;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

import de.FeatureModellingTool.FeatureModel.Feature;
import de.FeatureModellingTool.Pattern.ConstantDefinition;
import de.FeatureModellingTool.PatternBase.PatternBase;
import de.FeatureModellingTool.PatternBase.Templete;

public class PatternSelection extends JPanel {

  PatternBase patternBase = null;
 
  PatternExplorerImplementation explorer = null;
 
  JPanel scrollParameter = null;
 
  public Templete template = null;
 
  public PatternSelection(PatternBase patternBase) {
    this.patternBase = patternBase;
   
    this.explorer = new PatternExplorerImplementation();
    this.explorer.getContext().putValue(de.FeatureModellingTool.Pattern.ConstantDefinition.PATTERN_BASE , patternBase);
    this.explorer.addPropertyChangeListener(this.getCurrentTemplateChangeListener());
   
    JScrollPane scrollExplorer = new JScrollPane(this.explorer.getExplorerComponent());
   
    scrollParameter = new JPanel();
   
        GridBagLayout gbl = new GridBagLayout();
        GridBagConstraints gbc = new GridBagConstraints();
        setLayout(gbl);

        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.fill = GridBagConstraints.BOTH;

        gbc.gridwidth = GridBagConstraints.REMAINDER;
      add(Box.createHorizontalStrut(500), gbc);

        gbc.gridwidth = 1;
        gbc.weightx = 1;
        add(scrollExplorer , gbc);

        gbc.gridwidth = GridBagConstraints.REMAINDER;
        add(scrollParameter , gbc);
   }
 
  private Set<Label> sLables = new HashSet<Label>();
  private Hashtable<String , JTextField> htFields = new Hashtable<String , JTextField>();
 
  protected void setTemplate(Templete template) {
    if (this.template==template) {
      return;
    }
   
    this.template = template;
   
    while (this.scrollParameter.getComponentCount()>0) {
      this.scrollParameter.remove(0);
    }
//    for (Iterator<JTextField> itField = this.htFields.values().iterator() ; itField.hasNext() ; ) {
//      this.scrollParameter.remove(itField.next());
//    }
//    this.htFields.clear();
//    for (Iterator<Label> itLabel = this.sLables.iterator() ; itLabel.hasNext() ; ) {
//      this.scrollParameter.remove(itLabel.next());
//    }
    this.sLables.clear();
   
    if (template!=null) {
      GridBagLayout gbl = new GridBagLayout();
          GridBagConstraints gbc = new GridBagConstraints();
          scrollParameter.setLayout(gbl);

          gbc.anchor = GridBagConstraints.NORTHWEST;
          gbc.fill = GridBagConstraints.BOTH;

            gbc.gridwidth = GridBagConstraints.REMAINDER;
            scrollParameter.add(new Label("��ȷ��ģʽ����������������"), gbc);
           
          for (Iterator<Feature> itFeature = (Iterator<Feature>)this.template.getFeatureModel().getAllFeature().values().iterator() ; itFeature.hasNext() ; ) {
            Feature feature = itFeature.next();
            if (this.template.getParameters().getFeatureNum(feature.getID())==0) {
             
              gbc.gridwidth = 1;
              scrollParameter.add(Box.createHorizontalStrut(10), gbc);
              Label lbl = new Label(feature.getName());
              scrollParameter.add(lbl, gbc);
              scrollParameter.add(Box.createHorizontalStrut(15), gbc);
 
                gbc.weightx = 1.0;
                JTextField field = new JTextField(20);
                field.setText("1");
                scrollParameter.add(field, gbc);
 
                gbc.gridwidth = GridBagConstraints.REMAINDER;
                scrollParameter.add(Box.createVerticalStrut(10), gbc);
               
                this.sLables.add(lbl);
                this.htFields.put(feature.getID() , field);
            }
          }
          scrollParameter.updateUI();
    }
   }
 
  private CurrentTemplateChangeListener currentTemplateChangeListener = new CurrentTemplateChangeListener();
 
  private CurrentTemplateChangeListener getCurrentTemplateChangeListener() {
    return this.currentTemplateChangeListener;
  }
 
    protected class CurrentTemplateChangeListener implements PropertyChangeListener {
       
        public void propertyChange(PropertyChangeEvent evt) {
          if (evt.getPropertyName().equals(ConstantDefinition.CURRENT_TEMPLATE)) {
            Templete template = (Templete)evt.getNewValue();
            setTemplate(template);
          }
        }
    }

    public Hashtable<String,Integer> getCloneCount() {
      Hashtable<String,Integer> result = new Hashtable<String,Integer>();
      for (Iterator<Entry<String,JTextField>> itMap = this.htFields.entrySet().iterator() ; itMap.hasNext() ; ) {
        Entry<String,JTextField> entry = itMap.next();
        if (Integer.parseInt(entry.getValue().getText())>1) {
          result.put(entry.getKey() , new Integer(entry.getValue().getText()));
        }
      }
     
      for (Iterator<Feature> itFeature = this.template.getFeatureModel().getAllFeature().values().iterator() ; itFeature.hasNext() ; ) {
        Feature feature = itFeature.next();
        if (!result.containsKey(feature.getID())
            && this.template.getParameters().getFeatureNum(feature.getID())>1) {
          result.put(feature.getID() , this.template.getParameters().getFeatureNum(feature.getID()));
        }
      }
     
      return result;
    }
}
TOP

Related Classes of de.FeatureModellingTool.Pattern.UI.PatternSelection

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.