package husacct.define.presentation;
import husacct.ServiceProvider;
import husacct.common.Resource;
import husacct.common.help.presentation.HelpableJInternalFrame;
import husacct.common.locale.ILocaleService;
import husacct.common.services.IServiceListener;
import husacct.control.ILocaleChangeListener;
import husacct.define.domain.services.WarningMessageService;
import husacct.define.presentation.jdialog.WarningTableJDialog;
import husacct.define.presentation.jpanel.DefinitionJPanel;
import husacct.define.presentation.utils.MessagePanel;
import husacct.define.presentation.utils.ReportToHTML;
import husacct.define.task.DefinitionController;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URISyntaxException;
import java.util.Locale;
import java.util.Observable;
import java.util.Observer;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.WindowConstants;
public class DefineInternalFrame extends HelpableJInternalFrame implements
ILocaleChangeListener, Observer, IServiceListener {
private static final long serialVersionUID = 6858870868564931134L;
private JPanel overviewPanel;
private DefinitionJPanel definitionPanel;
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
private JButton warningButton, reportButton;
private WarningTableJDialog warnings = new WarningTableJDialog();
private ReportToHTML report = new ReportToHTML();
public DefineInternalFrame() {
super();
initUi();
}
private void initUi() {
try {
WarningMessageService.getInstance().addObserver(this);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
ServiceProvider.getInstance().getDefineService().addServiceListener(this);
overviewPanel = new JPanel();
BorderLayout borderLayout = new BorderLayout();
overviewPanel.setLayout(borderLayout);
definitionPanel = new DefinitionJPanel();
overviewPanel.add(definitionPanel);
getContentPane().add(this.overviewPanel, BorderLayout.CENTER);
addToolBar();
} catch (Exception e) {
e.printStackTrace();
}
}
public void addNewDefinitionPanel() {
DefinitionController.getInstance().clearObserversWithinDefine();
this.overviewPanel.removeAll();
definitionPanel = new DefinitionJPanel();
this.overviewPanel.add(definitionPanel);
this.revalidate();
DefinitionController.getInstance().notifyObservers();
}
public DefinitionJPanel getDefinitionPanel() {
return definitionPanel;
}
private void addToolBar() {
JSplitPane splitPane = new JSplitPane();
splitPane.setDividerLocation(300);
splitPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
warningButton = new JButton();
warningButton.addActionListener(toolbarActionListener);
warningButton.setText("Warnings");
Dimension d = warningButton.getPreferredSize();
d.width = 150;
warningButton.setMinimumSize(new Dimension(50, 50));
warningButton.setMaximumSize(d);
Icon icon = new ImageIcon(Resource.get(Resource.ICON_VALIDATE));
warningButton.setIcon(icon);
warningButton.setEnabled(false); // Disabled 2014-06-11, since the shown warnings in the warnings dialogue are not correct
ImageIcon browserIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage(Resource.get(Resource.ICON_BROWSER)));
reportButton = new JButton(localeService.getTranslatedString("ReportTitle"));
reportButton.setIcon(browserIcon);
reportButton.setToolTipText(localeService.getTranslatedString("?Report"));
reportButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
report.createReport();
} catch (URISyntaxException e1) {
e1.printStackTrace();
}
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(warningButton);
buttonPanel.add(reportButton);
splitPane.add(buttonPanel, JSplitPane.LEFT);
splitPane.add(MessagePanel.getInstance(""), JSplitPane.RIGHT);
getContentPane().add(splitPane, BorderLayout.SOUTH);
}
private ActionListener toolbarActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == warningButton) {
warnings.refresh();
warnings.setVisible(true);
}
}
};
@Override // From ILocaleChangeListener
public void update(Locale newLocale) {
}
@Override
public void update(Observable o, Object arg) {
if (WarningMessageService.getInstance().hasWarnings()) {
Icon icon = new ImageIcon(Resource.get(Resource.ICON_VALIDATE));
warningButton.setIcon(icon);
} else {
warningButton.repaint();
}
}
@Override
public void update() {
// Do nothing
}
}