Package de.spindler.duplicatefinder

Source Code of de.spindler.duplicatefinder.DuplicateFinderFrame

package de.spindler.duplicatefinder;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.ListSelectionModel;
import javax.swing.border.EtchedBorder;

import de.spindler.duplicatefinder.DuplicateFinder.DuplicateFoundListener;

public class DuplicateFinderFrame extends JFrame implements ActionListener {

  private static final long serialVersionUID = -4907316288272609039L;

  private static final String COMMAND_CLOSE = "close";

  private static final String COMMAND_START = "start";

  private JProgressBar progressBar;

  private PropertyInputPanel propInputPanel;

  private DuplicateTableModel tableModel;


  public DuplicateFinderFrame() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setTitle(Messages.FRAME_TITLE);
    setIconImage(new ImageIcon(this.getClass().getResource("edit_copy.png")).getImage());
    getContentPane().setLayout(new BorderLayout(0, 0));

    createToolBar();
    createContents();
  }

  private void createContents() {
    JPanel pnlContainer = new JPanel();
    getContentPane().add(pnlContainer, BorderLayout.CENTER);
    GridBagLayout gbl_pnlContainer = new GridBagLayout();
    gbl_pnlContainer.rowWeights = new double[] { 0.0, 1.0, 0.0 };
    gbl_pnlContainer.columnWeights = new double[] { 0.0, 1.0 };
    pnlContainer.setLayout(gbl_pnlContainer);

    GridBagConstraints gbc_dirChooserPanel = new GridBagConstraints();
    gbc_dirChooserPanel.gridy = 0;
    gbc_dirChooserPanel.gridx = 0;
    gbc_dirChooserPanel.gridwidth = 2;
    gbc_dirChooserPanel.fill = GridBagConstraints.HORIZONTAL;
    // Choose directory panel
    propInputPanel = new PropertyInputPanel();
    pnlContainer.add(propInputPanel, gbc_dirChooserPanel);

    GridBagConstraints gbc_table = new GridBagConstraints();
    gbc_table.gridwidth = 2;
    gbc_table.insets = new Insets(0, 5, 0, 5);
    gbc_table.fill = GridBagConstraints.BOTH;
    gbc_table.gridx = 0;
    gbc_table.gridy = 1;
    // Table for results
    tableModel = new DuplicateTableModel();
    JTable table = new JTable(tableModel);
    table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    table.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
//    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    JScrollPane jScrollPane = new JScrollPane(table);
    pnlContainer.add(jScrollPane, gbc_table);

    GridBagConstraints gbc_btnStart = new GridBagConstraints();
    gbc_btnStart.fill = GridBagConstraints.HORIZONTAL;
    gbc_btnStart.insets = new Insets(5, 5, 5, 5);
    gbc_btnStart.gridx = 0;
    gbc_btnStart.gridy = 2;
    // Start button
    JButton btnStart = new JButton(Messages.START);
    btnStart.setActionCommand(COMMAND_START);
    btnStart.addActionListener(this);
    pnlContainer.add(btnStart, gbc_btnStart);

    GridBagConstraints gbc_progressBar = new GridBagConstraints();
    gbc_progressBar.insets = new Insets(5, 5, 5, 5);
    gbc_progressBar.fill = GridBagConstraints.HORIZONTAL;
    gbc_progressBar.gridx = 1;
    gbc_progressBar.gridy = 2;
    // ProgressBar
    progressBar = new JProgressBar();
    pnlContainer.add(progressBar, gbc_progressBar);

    pack();
//    setColumnWeights(table, new float[] { 0.1f, 0.45f, 0.45f });
  }

  private void setColumnWeights(JTable table, float[] weights) {
    float tWidth = (float) (getBounds().width);
    for (int i = 0; i < weights.length; i++) {
      float w = weights[i];
      table.getColumnModel().getColumn(i).setPreferredWidth((int) (tWidth * w));
    }
  }

  /**
   * Creates the applications toolbar.
   */
  private void createToolBar() {
    JToolBar toolBar = new JToolBar();
    toolBar.setFloatable(false);
    getContentPane().add(toolBar, BorderLayout.NORTH);

    JButton btnClose = new JButton(Messages.CLOSE);
    btnClose.setIcon(new ImageIcon(this.getClass().getResource("delete.gif")));
    btnClose.setActionCommand(COMMAND_CLOSE);
    btnClose.addActionListener(this);
    toolBar.add(btnClose);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    String cmd = e.getActionCommand();
    if (COMMAND_CLOSE.equals(cmd)) {
      System.exit(0);
    } else if (COMMAND_START.equals(cmd)) {
      SearchProperties properties = propInputPanel.getProperties();

      DuplicateFinder finder = new DuplicateFinder(properties);
      finder.addListener(new DuplicateFoundListener() {

        @Override
        public void duplicateFound(Duplicate duplicate) {
          tableModel.addDuplicate(duplicate);
        }

      });
      finder.start(progressBar.getModel());
    }
  }

  /**
   * Main method.
   *
   * @param args
   */
  public static void main(String[] args) {

    UIToolkit.setSystemLookandFeel();

    DuplicateFinderFrame frame = new DuplicateFinderFrame();
    frame.setBounds(UIToolkit.getCenteredPosition(0.9f, 0.75f));
    frame.setVisible(true);

  }

}
TOP

Related Classes of de.spindler.duplicatefinder.DuplicateFinderFrame

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.