package com.plugtree.solrmeter.view;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import com.plugtree.solrmeter.controller.ExtractFromLogFileController;
public class ExtractFromLogFilePanelContainer extends JPanel {
private static final long serialVersionUID = -8081960658969356885L;
private JPanel buttonPanel;
private JButton buttonExtract;
private JButton buttonCancel;
private JTextPane textPaneExtractionDetails;
private ExtractFromLogFileController controller;
private JProgressBar progressBar;
public ExtractFromLogFilePanelContainer(Window parent) {
super();
controller = new ExtractFromLogFileController(this, parent);
this.initGUI();
}
private void initGUI() {
buttonPanel = this.createButtonPanel();
GridBagLayout layout = new GridBagLayout();
this.setLayout(layout);
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.gridwidth =4;
constraints.gridheight = 1;
constraints.insets = new Insets(5,10,0,10);
int row = 0;
constraints.gridx = 0;
constraints.gridy = row;
// constraints.weighty = 1.0;
constraints.weightx = 1.0;
this.add(new ExtractFromLogFilePanel(controller), constraints);
row++;
constraints.gridx = 0;
constraints.gridy = row;
// constraints.insets = new Insets(5,10,0,10);
// constraints.weighty = 1.0;
// constraints.weightx = 0.8;
this.progressBar = new JProgressBar(0,100);
this.progressBar.setVisible(false);
this.add(this.progressBar, constraints);
row++;
constraints.gridx = 0;
constraints.gridy = row;
constraints.weighty = 1.0;
// constraints.weightx = 0.0;
// constraints.ipadx= 10;
// constraints.insets = new Insets(5,10,0,10);
this.textPaneExtractionDetails = new JTextPane();
this.textPaneExtractionDetails.setVisible(false);
this.textPaneExtractionDetails.setEditable(false);
this.textPaneExtractionDetails.setEnabled(true);
this.add(new JScrollPane(this.textPaneExtractionDetails), constraints);
row++;
//
constraints.gridx = 0;
constraints.gridy = row;
constraints.weighty = 0.0;
constraints.insets = new Insets(0,0,0,0);
// constraints.weightx = 1.0;
this.add(buttonPanel, constraints);
}
private JPanel createButtonPanel() {
JPanel panel = new JPanel();
panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 40));
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(Box.createHorizontalGlue());
buttonExtract = new JButton(I18n.get("tools.extract.do"));
buttonExtract.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controller.extract();
}
});
panel.add(buttonExtract);
panel.add(Box.createRigidArea(new Dimension(5, 5)));
buttonCancel = new JButton(I18n.get("tools.extract.cancel"));
buttonCancel.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controller.cancel();
}
});
panel.add(buttonCancel);
return panel;
}
public void beginExtraction() {
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
buttonExtract.setEnabled(false);
textPaneExtractionDetails.setVisible(false);
}
public void succed(File outputFile) {
this.endExtraction("tools.extract.result.success");
textPaneExtractionDetails.setText(I18n.get("tools.extract.result.success.details") +" "+ outputFile.getAbsolutePath());
}
public void error(Exception e) {
this.endExtraction("tools.extract.result.error");
textPaneExtractionDetails.setText(I18n.get("tools.extract.result.error.details") +" "+ e.getMessage());
}
private void endExtraction(String message) {
progressBar.setIndeterminate(false);
progressBar.setValue(100);
progressBar.setString(I18n.get(message));
textPaneExtractionDetails.setVisible(true);
buttonExtract.setEnabled(true);
}
}