package com.dedupeer.gui.component.dialog; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import com.dedupeer.gui.component.Legend; import com.dedupeer.gui.component.ModificationBar; import com.dedupeer.utils.Range; /** * @author Paulo Fernando (pf@paulofernando.net.br) */ public class AnalyzeDialog { private JDialog dialog; private JPanel mainPanel; private ArrayList<Range> ranges; private long fileLength; private long chunkWithContent; private long chunkWithoutContent; private long defaultChunkSize; private int maximumHeight = 130; public AnalyzeDialog(JFrame parentFrame, ArrayList<Range> ranges, long fileLength, String filename, long chunkWithContent, long chunkWithoutContent, int defaultChunkSize) { this.ranges = ranges; this.fileLength = fileLength; this.chunkWithContent = chunkWithContent; this.chunkWithoutContent = chunkWithoutContent; this.defaultChunkSize = defaultChunkSize; this.dialog = new JDialog(parentFrame, "Content Analyzer - [" + filename + "]", true); this.dialog.getContentPane().add(createPane()); this.dialog.pack(); this.dialog.setSize(600, maximumHeight); this.dialog.setLocation(new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (dialog.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (dialog.getHeight() / 2)).intValue()); this.dialog.setVisible(true); } protected Container createPane() { mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); ModificationBar modificationBar = new ModificationBar(ranges, fileLength); JPanel legendsPane = new JPanel(); JPanel labelsPane = new JPanel(); BoxLayout legends = new BoxLayout(legendsPane, BoxLayout.X_AXIS); legendsPane.setLayout(legends); legendsPane.add(new Legend(Legend.TYPE_CHUNK)); legendsPane.add(new JLabel(" ")); legendsPane.add(new Legend(Legend.TYPE_REFERENCE)); BoxLayout labels = new BoxLayout(labelsPane, BoxLayout.X_AXIS); labelsPane.setLayout(labels); labelsPane.add(new JLabel("Chunks with content: " + chunkWithContent)); labelsPane.add(new JLabel(" | References: " + chunkWithoutContent)); labelsPane.add(new JLabel(" | Total chunks: " + (chunkWithContent + chunkWithoutContent))); labelsPane.add(new JLabel(" | Default chunk size: " + defaultChunkSize)); JButton btClose = new JButton("Close"); btClose.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { close(); } }); mainPanel.add(modificationBar, BorderLayout.NORTH); mainPanel.add(legendsPane, BorderLayout.CENTER); mainPanel.add(labelsPane, BorderLayout.SOUTH); return mainPanel; } protected void close() { this.dialog.dispose(); this.dialog.setVisible(false); } }