Package ru.jnano.swing.panel

Source Code of ru.jnano.swing.panel.SrcDstFileJPanel

package ru.jnano.swing.panel;

import javax.swing.JPanel;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.validation.Severity;
import com.jgoodies.validation.ValidationResultModel;

import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;


import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;

import org.jdesktop.beansbinding.BeanProperty;
import org.jdesktop.beansbinding.AutoBinding;
import org.jdesktop.beansbinding.Bindings;
import org.jdesktop.beansbinding.AutoBinding.UpdateStrategy;

import ru.jnano.swing.valid.GroupSwingValidation;
import ru.jnano.swing.valid.validators.DirExistsValidator;
import ru.jnano.swing.valid.validators.FileExistsValidator;
import ru.jnano.swing.valid.validators.IllegalChartSetInFileNameValidator;

public class SrcDstFileJPanel extends JPanel {
 
  private SrcDstFileModel model;
 
  private JTextField tfSrcFile;
  private JTextField tfDstDir;
  private JTextField tfFileName;
  private JCheckBox chBEquilSrcFileName;
 
  private GroupSwingValidation groupValid;

  public SrcDstFileJPanel(SrcDstFileModel model, ValidationResultModel validationResultModel) {
    if (model==null) model = new SrcDstFileModel();
    this.model=model;
   
    setLayout(new FormLayout(new ColumnSpec[] {
        FormFactory.RELATED_GAP_COLSPEC,
        FormFactory.DEFAULT_COLSPEC,
        FormFactory.RELATED_GAP_COLSPEC,
        ColumnSpec.decode("max(83dlu;default)"),
        FormFactory.RELATED_GAP_COLSPEC,
        ColumnSpec.decode("max(103dlu;default):grow"),
        FormFactory.RELATED_GAP_COLSPEC,
        FormFactory.DEFAULT_COLSPEC,},
      new RowSpec[] {
        FormFactory.RELATED_GAP_ROWSPEC,
        FormFactory.DEFAULT_ROWSPEC,
        FormFactory.RELATED_GAP_ROWSPEC,
        FormFactory.DEFAULT_ROWSPEC,
        FormFactory.RELATED_GAP_ROWSPEC,
        FormFactory.DEFAULT_ROWSPEC,}));
   
    JLabel label = new JLabel("\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0444\u0430\u0439\u043B:");
    add(label, "2, 2");
   
    tfSrcFile = new JTextField();
    tfSrcFile.setEditable(false);
    add(tfSrcFile, "4, 2, 3, 1");
    tfSrcFile.setColumns(10);
    tfSrcFile.getDocument().addDocumentListener(new DocumentListener() {
     
      @Override
      public void removeUpdate(DocumentEvent arg0) {
        if (chBEquilSrcFileName.isSelected()){
          tfFileName.setText(getFileName(tfSrcFile.getText()));
        }
      }
     
      @Override
      public void insertUpdate(DocumentEvent arg0) {
        if (chBEquilSrcFileName.isSelected()){
          tfFileName.setText(getFileName(tfSrcFile.getText()));
        }
       
      }
     
      @Override
      public void changedUpdate(DocumentEvent arg0) {
        if (chBEquilSrcFileName.isSelected()){
          tfFileName.setText(getFileName(tfSrcFile.getText()));
        }
       
      }
    });
   
    JButton btSelectSrcFile = new JButton("...");
    btSelectSrcFile.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        JFileChooser fileChooser = new JFileChooser(tfSrcFile.getText());
        int result = fileChooser.showOpenDialog(null);
        if (result == JFileChooser.APPROVE_OPTION) {
          tfSrcFile.setText(fileChooser.getSelectedFile().getPath());
        }
      }
    });
    add(btSelectSrcFile, "8, 2");
   
    JLabel label_1 = new JLabel("\u041F\u0430\u043F\u043A\u0430 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F:");
    add(label_1, "2, 4");
   
    tfDstDir = new JTextField();
    tfDstDir.setEditable(false);
    add(tfDstDir, "4, 4, 3, 1");
    tfDstDir.setColumns(10);
   
    JButton btSelectDstDir = new JButton("...");
    btSelectDstDir.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JFileChooser fileChooser = new JFileChooser(tfDstDir.getText());
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = fileChooser.showOpenDialog(null);
        if (result == JFileChooser.APPROVE_OPTION) {
          tfDstDir.setText(fileChooser.getSelectedFile().getPath());
        }
      }
    });
    add(btSelectDstDir, "8, 4");
   
    JLabel label_2 = new JLabel("\u0418\u043C\u044F \u0444\u0430\u0439\u043B\u0430:");
    add(label_2, "2, 6");
   
    tfFileName = new JTextField();
    add(tfFileName, "4, 6");
    tfFileName.setColumns(10);
   
    chBEquilSrcFileName = new JCheckBox("\u043A\u0430\u043A \u0443 \u0438\u0441\u0445. \u0444\u0430\u0439\u043B\u0430");
    chBEquilSrcFileName.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent event) {
        if (chBEquilSrcFileName.isSelected()){
          tfFileName.setEditable(false);
          tfFileName.setText(getFileName(tfSrcFile.getText()));
        }else{
          tfFileName.setEditable(true);
        }
       
      }
    });
    add(chBEquilSrcFileName, "6, 6, left, default");
   
    initDataBindings();
   
    if (validationResultModel!=null){
      this.groupValid = new GroupSwingValidation(validationResultModel);
      groupValid.add(tfSrcFile, new FileExistsValidator());
      groupValid.add(tfDstDir, new DirExistsValidator(Severity.WARNING));
      groupValid.add(tfFileName, new IllegalChartSetInFileNameValidator());

      groupValid.validate();
    }
   
  }
  protected void initDataBindings() {
    BeanProperty<SrcDstFileModel, String> srcDstFileModelBeanProperty = BeanProperty.create("srcFile");
    BeanProperty<JTextField, String> jTextFieldBeanProperty = BeanProperty.create("text");
    AutoBinding<SrcDstFileModel, String, JTextField, String> autoBinding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, model, srcDstFileModelBeanProperty, tfSrcFile, jTextFieldBeanProperty);
    autoBinding.bind();
    //
    BeanProperty<SrcDstFileModel, String> srcDstFileModelBeanProperty_1 = BeanProperty.create("dstDir");
    BeanProperty<JTextField, String> jTextFieldBeanProperty_1 = BeanProperty.create("text");
    AutoBinding<SrcDstFileModel, String, JTextField, String> autoBinding_1 = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, model, srcDstFileModelBeanProperty_1, tfDstDir, jTextFieldBeanProperty_1);
    autoBinding_1.bind();
    //
    BeanProperty<SrcDstFileModel, String> srcDstFileModelBeanProperty_2 = BeanProperty.create("nameFile");
    BeanProperty<JTextField, String> jTextFieldBeanProperty_2 = BeanProperty.create("text");
    AutoBinding<SrcDstFileModel, String, JTextField, String> autoBinding_2 = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, model, srcDstFileModelBeanProperty_2, tfFileName, jTextFieldBeanProperty_2);
    autoBinding_2.bind();
  }
 
  private String getFileName(String path){
    File file = new File(path);
    if (file.isDirectory()) return "";
    String fileName = file.getName();
    int index = fileName.lastIndexOf(".");
    if (index!=-1) fileName = fileName.substring(0, index);
   
    return fileName;
  }
}
TOP

Related Classes of ru.jnano.swing.panel.SrcDstFileJPanel

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.