/*
* Created by JFormDesigner on Fri Aug 03 14:53:03 CEST 2012
*/
package op.care.nursingprocess;
import com.jgoodies.forms.factories.CC;
import com.jgoodies.forms.layout.FormLayout;
import entity.info.ResidentTools;
import entity.nursingprocess.NursingProcess;
import entity.nursingprocess.NursingProcessTools;
import entity.system.SYSPropsTools;
import gui.GUITools;
import op.tools.MyJDialog;
import op.tools.SYSTools;
import org.apache.commons.collections.Closure;
import org.jdesktop.swingx.JXSearchField;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.*;
/**
* @author Torsten Löhr
*/
public class PnlTemplate extends MyJDialog {
public static final String internalClassID = "nursingrecords.nursingprocess.pnltemplate";
private JToggleButton tbInactive;
private Closure actionBlock;
public PnlTemplate(Closure actionBlock) {
super(false);
this.actionBlock = actionBlock;
initComponents();
initPanel();
pack();
}
private void initPanel() {
txtSearch.setPrompt(SYSTools.xx("nursingrecords.nursingprocess.pnltemplate.searchtopic"));
tbInactive = GUITools.getNiceToggleButton(SYSTools.xx("nursingrecords.nursingprocess.pnltemplate.inactive"));
SYSPropsTools.restoreState("nursingrecords.nursingprocess.pnltemplate.tbInactive", tbInactive);
tbInactive.addItemListener(e -> {
SYSPropsTools.storeState("nursingrecords.nursingprocess.pnltemplate:tbInactive", tbInactive);
refreshDisplay();
});
lstTemplates.setCellRenderer(getListCellRenderer());
lstTemplates.addListSelectionListener(e -> {
if (!e.getValueIsAdjusting() && lstTemplates.getSelectedValue() != null) {
txtContent.setText(SYSTools.toHTML(NursingProcessTools.getAsHTML((NursingProcess) lstTemplates.getSelectedValue(), true, false, false, false)));
}
});
add(tbInactive, CC.xy(3, 7, CC.LEFT, CC.DEFAULT));
refreshDisplay();
}
private void refreshDisplay() {
java.util.List<NursingProcess> list = NursingProcessTools.getTemplates(txtSearch.getText(), tbInactive.isSelected());
lstTemplates.setModel(SYSTools.list2dlm(list));
}
private void txtSearchActionPerformed(ActionEvent e) {
refreshDisplay();
}
private void lstTemplatesMouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
dispose();
actionBlock.execute(lstTemplates.getSelectedValue());
}
}
private ListCellRenderer getListCellRenderer() {
return new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList jList, Object o, int i, boolean isSelected, boolean b1) {
if (o instanceof NursingProcess) {
NursingProcess np = (NursingProcess) o;
setText("<html>" + (np.isClosed() ? "<s>" : "") + np.getTopic() + (np.isClosed() ? "</s>" : "") + " (" + ResidentTools.getTextCompact(((NursingProcess) o).getResident()) + ")" + "</html>");
}
setForeground(Color.black);
if (isSelected) {
setBackground(new Color(200, 210, 220));
} else {
setBackground(Color.white);
}
return this;
}
};
}
private void btnApplyActionPerformed(ActionEvent e) {
dispose();
actionBlock.execute(lstTemplates.getSelectedValue());
}
private void btnCancelActionPerformed(ActionEvent e) {
dispose();
actionBlock.execute(null);
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
txtSearch = new JXSearchField();
scrollTemplates = new JScrollPane();
lstTemplates = new JList();
scrollPane1 = new JScrollPane();
txtContent = new JTextPane();
panel1 = new JPanel();
btnCancel = new JButton();
btnApply = new JButton();
//======== this ========
Container contentPane = getContentPane();
contentPane.setLayout(new FormLayout(
"default, $lcgap, 150dlu, $rgap, [250dlu,min]:grow, $lcgap, default",
"2*(default, $lgap), [220dlu,min]:grow, 3*($lgap, default)"));
//---- txtSearch ----
txtSearch.setFont(new Font("Arial", Font.PLAIN, 14));
txtSearch.setPromptFontStyle(null);
txtSearch.setInstantSearchDelay(1000);
txtSearch.addActionListener(e -> txtSearchActionPerformed(e));
contentPane.add(txtSearch, CC.xywh(3, 3, 3, 1));
//======== scrollTemplates ========
{
//---- lstTemplates ----
lstTemplates.setFont(new Font("Arial", Font.PLAIN, 14));
lstTemplates.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lstTemplates.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
lstTemplatesMouseClicked(e);
}
});
scrollTemplates.setViewportView(lstTemplates);
}
contentPane.add(scrollTemplates, CC.xy(3, 5, CC.FILL, CC.FILL));
//======== scrollPane1 ========
{
//---- txtContent ----
txtContent.setContentType("text/html");
scrollPane1.setViewportView(txtContent);
}
contentPane.add(scrollPane1, CC.xy(5, 5, CC.FILL, CC.FILL));
//======== panel1 ========
{
panel1.setLayout(new BoxLayout(panel1, BoxLayout.LINE_AXIS));
//---- btnCancel ----
btnCancel.setText(null);
btnCancel.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/cancel.png")));
btnCancel.addActionListener(e -> btnCancelActionPerformed(e));
panel1.add(btnCancel);
//---- btnApply ----
btnApply.setText(null);
btnApply.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/apply.png")));
btnApply.addActionListener(e -> btnApplyActionPerformed(e));
panel1.add(btnApply);
}
contentPane.add(panel1, CC.xy(5, 9, CC.RIGHT, CC.DEFAULT));
setSize(830, 530);
setLocationRelativeTo(getOwner());
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JXSearchField txtSearch;
private JScrollPane scrollTemplates;
private JList lstTemplates;
private JScrollPane scrollPane1;
private JTextPane txtContent;
private JPanel panel1;
private JButton btnCancel;
private JButton btnApply;
// JFormDesigner - End of variables declaration //GEN-END:variables
}