/*
* OffenePflege
* Copyright (C) 2006-2012 Torsten Löhr
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License V2 as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program; if not, write to
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
* www.offene-pflege.de
* ------------------------
* Auf deutsch (freie Übersetzung. Rechtlich gilt die englische Version)
* Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License,
* wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, gemäß Version 2 der Lizenz.
*
* Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber
* OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN
* BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
*
* Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht,
* schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
*
*/
package op.care.nursingprocess;
import com.jgoodies.forms.factories.CC;
import com.jgoodies.forms.layout.FormLayout;
import com.jidesoft.swing.JideLabel;
import com.jidesoft.swing.JideTabbedPane;
import entity.nursingprocess.InterventionSchedule;
import gui.GUITools;
import op.OPDE;
import op.threads.DisplayMessage;
import op.tools.SYSCalendar;
import op.tools.SYSConst;
import op.tools.SYSTools;
import org.apache.commons.collections.Closure;
import org.joda.time.DateMidnight;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import java.awt.*;
import java.awt.event.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
/**
* @author tloehr
*/
public class PnlSchedule extends JPanel {
public static final String internalClassID = "nursingrecords.nursingprocess.dlgplanung.pnlschedule";
private boolean ignoreEvent = false;
private InterventionSchedule is;
private Closure actionBlock;
private double splitRegularPos;
private final int TAB_DAILY = 0;
private final int TAB_WEEKLY = 1;
private final int TAB_MONTHLY = 2;
private JToggleButton tbFloating;
public PnlSchedule(InterventionSchedule is, Closure actionBlock) {
this.actionBlock = actionBlock;
this.is = is;
initComponents();
initPanel();
}
private void btnToTimeActionPerformed(ActionEvent e) {
splitRegularPos = SYSTools.showSide(splitRegular, SYSTools.RIGHT_LOWER_SIDE, SYSTools.SPEED_NORMAL);
}
private void btnToTimeOfDayActionPerformed(ActionEvent e) {
splitRegularPos = SYSTools.showSide(splitRegular, SYSTools.LEFT_UPPER_SIDE, SYSTools.SPEED_NORMAL);
}
private void panelMainComponentResized(ComponentEvent e) {
// SYSTools.showSide(splitRegular, splitRegularPos);
}
private void cmbUhrzeitItemStateChanged(ItemEvent e) {
// currentSelectedTime = (Date) e.getItem();
// lblUhrzeit.setText("Dosis um " + DateFormat.getTimeInstance(DateFormat.SHORT).format(e.getItem()) + " Uhr");
}
private void btnJedenTagActionPerformed(ActionEvent e) {
spinTaeglich.setValue(1);
}
private void btnJedeWocheActionPerformed(ActionEvent e) {
spinWoche.setValue(1);
}
private void btnJedenMonatActionPerformed(ActionEvent e) {
spinMonat.setValue(1);
}
private void txtMinutesFocusLost(FocusEvent e) {
BigDecimal bd = SYSTools.parseDecimal(txtMinutes.getText());
if (bd == null || bd.compareTo(BigDecimal.ZERO) <= 0) {
txtMinutes.setText(SYSTools.formatBigDecimal(is.getDauer()));
}
}
private void txtLDateFocusLost(FocusEvent evt) {
SYSCalendar.handleDateFocusLost(evt, new DateMidnight(), new DateMidnight().plusWeeks(4));
}
private void txtIntegerFocusLost(FocusEvent e) {
SYSTools.handleIntegerFocusLost(e, 0, 10, 1);
}
private void initPanel() {
pnlBemerkung.setBorder(new TitledBorder(SYSTools.xx("nursingrecords.nursingprocess.dlgplanung.pnlschedule.bordertitle4textfield")));
ArrayList<Date> timelist = SYSCalendar.getTimeList();
cmbUhrzeit.setModel(new DefaultComboBoxModel(timelist.toArray()));
cmbUhrzeit.setRenderer(SYSCalendar.getTimeRenderer());
spinTaeglich.setModel(new SpinnerNumberModel(1, 1, 365, 1));
spinWoche.setModel(new SpinnerNumberModel(1, 1, 52, 1));
spinMonat.setModel(new SpinnerNumberModel(1, 1, 12, 1));
spinMonatTag.setModel(new SpinnerNumberModel(1, 1, 31, 1));
spinTaeglich.setValue(Math.max(is.getTaeglich(), 1));
spinWoche.setValue(Math.max(is.getWoechentlich(), 1));
spinMonat.setValue(Math.max(is.getMonatlich(), 1));
spinMonatTag.setValue(Math.max(is.getTagNum(), 1));
tabWdh.setSelectedIndex(TAB_DAILY);
if (is.getWoechentlich() > 0) {
cbMon.setSelected(is.getMon() > 0);
cbDie.setSelected(is.getDie() > 0);
cbMit.setSelected(is.getMit() > 0);
cbDon.setSelected(is.getDon() > 0);
cbFre.setSelected(is.getFre() > 0);
cbSam.setSelected(is.getSam() > 0);
cbSon.setSelected(is.getSon() > 0);
tabWdh.setSelectedIndex(TAB_WEEKLY);
}
if (is.getMonatlich() > 0) {
if (is.getTagNum() > 0) {
spinMonatTag.setValue(is.getTagNum());
cmbTag.setSelectedIndex(0);
} else {
if (is.getMon() > 0) {
cmbTag.setSelectedIndex(1);
spinMonatTag.setValue(is.getMon());
} else if (is.getDie() > 0) {
cmbTag.setSelectedIndex(2);
spinMonatTag.setValue(is.getDie());
} else if (is.getMit() > 0) {
cmbTag.setSelectedIndex(3);
spinMonatTag.setValue(is.getMit());
} else if (is.getDon() > 0) {
cmbTag.setSelectedIndex(4);
spinMonatTag.setValue(is.getDon());
} else if (is.getFre() > 0) {
cmbTag.setSelectedIndex(5);
spinMonatTag.setValue(is.getFre());
} else if (is.getSam() > 0) {
cmbTag.setSelectedIndex(6);
spinMonatTag.setValue(is.getSam());
} else if (is.getSon() > 0) {
cmbTag.setSelectedIndex(7);
spinMonatTag.setValue(is.getSon());
}
}
tabWdh.setSelectedIndex(TAB_MONTHLY);
}
txtLDate.setText(DateFormat.getDateInstance().format(new Date(Math.max(is.getLDatum().getTime(), new DateMidnight().getMillis()))));
txtNachtMo.setText(is.getNachtMo().toString());
txtMorgens.setText(is.getMorgens().toString());
txtMittags.setText(is.getMittags().toString());
txtNachmittags.setText(is.getNachmittags().toString());
txtAbends.setText(is.getAbends().toString());
txtNachtAb.setText(is.getNachtAb().toString());
txtUhrzeit.setText(is.getUhrzeitAnzahl().toString());
txtMorgens.setBackground(SYSConst.lightblue);
txtMittags.setBackground(SYSConst.gold7);
txtNachmittags.setBackground(SYSConst.melonrindgreen);
txtAbends.setBackground(SYSConst.bermuda_sand);
txtNachtAb.setBackground(SYSConst.bluegrey);
Date now = null;
if (is.getUhrzeitAnzahl() > 0) {
now = is.getUhrzeit();
} else {
now = new Date();
}
for (Date zeit : timelist) {
if (SYSCalendar.compareTime(zeit, now) >= 0) {
now = zeit;
break;
}
}
cmbUhrzeit.setSelectedItem(now);
lblUhrzeit.setText(SYSTools.xx("misc.msg.Number"));
txtBemerkung.setText(is.getBemerkung());
lblMinutes.setText(SYSTools.xx("misc.msg.Minute(s)"));
txtMinutes.setText(SYSTools.formatBigDecimal(is.getDauer())); // https://github.com/tloehr/Offene-Pflege.de/issues/31
tbFloating = GUITools.getNiceToggleButton(SYSTools.xx("nursingrecords.nursingprocess.dlgplanung.pnlschedule.floatinginterventions"));
tbFloating.setSelected(is.isFloating());
panelMain.add(tbFloating, CC.xy(3, 5));
splitRegularPos = SYSTools.showSide(splitRegular, is.getUhrzeit() != null ? SYSTools.RIGHT_LOWER_SIDE : SYSTools.LEFT_UPPER_SIDE);
}
/**
* This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the PrinterForm Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
panelMain = new JPanel();
splitRegular = new JSplitPane();
pnlTageszeit = new JPanel();
jLabel6 = new JideLabel();
jLabel1 = new JideLabel();
jLabel2 = new JideLabel();
jLabel11 = new JideLabel();
jLabel3 = new JideLabel();
jLabel4 = new JideLabel();
txtNachtMo = new JTextField();
txtMorgens = new JTextField();
txtMittags = new JTextField();
txtNachmittags = new JTextField();
txtAbends = new JTextField();
txtNachtAb = new JTextField();
btnToTime = new JButton();
pnlUhrzeit = new JPanel();
lblUhrzeit = new JideLabel();
btnToTimeOfDay = new JButton();
txtUhrzeit = new JTextField();
cmbUhrzeit = new JComboBox();
tabWdh = new JideTabbedPane();
pnlDaily = new JPanel();
label3 = new JLabel();
spinTaeglich = new JSpinner();
jLabel7 = new JLabel();
btnJedenTag = new JButton();
pnlWeekly = new JPanel();
panel3 = new JPanel();
btnJedeWoche = new JButton();
label2 = new JLabel();
spinWoche = new JSpinner();
jLabel8 = new JLabel();
lblUhrzeit2 = new JideLabel();
lblUhrzeit3 = new JideLabel();
lblUhrzeit4 = new JideLabel();
lblUhrzeit5 = new JideLabel();
lblUhrzeit6 = new JideLabel();
lblUhrzeit7 = new JideLabel();
lblUhrzeit8 = new JideLabel();
cbMon = new JCheckBox();
cbDie = new JCheckBox();
cbMit = new JCheckBox();
cbDon = new JCheckBox();
cbFre = new JCheckBox();
cbSam = new JCheckBox();
cbSon = new JCheckBox();
pnlMonthly = new JPanel();
label4 = new JLabel();
spinMonat = new JSpinner();
label6 = new JLabel();
btnJedenMonat = new JButton();
label5 = new JLabel();
spinMonatTag = new JSpinner();
cmbTag = new JComboBox<>();
panel2 = new JPanel();
jLabel13 = new JLabel();
txtLDate = new JTextField();
lblMinutes = new JLabel();
txtMinutes = new JTextField();
pnlBemerkung = new JPanel();
jScrollPane1 = new JScrollPane();
txtBemerkung = new JTextArea();
btnSave = new JButton();
//======== this ========
setLayout(new BorderLayout());
//======== panelMain ========
{
panelMain.setBorder(new LineBorder(Color.black, 2, true));
panelMain.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
panelMainComponentResized(e);
}
});
panelMain.setLayout(new FormLayout(
"$rgap, $lcgap, 223dlu:grow, $lcgap, $rgap",
"$rgap, $lgap, pref, $lgap, default, $lgap, pref, $lgap, default, $lgap, 72dlu:grow, 2*($lgap, default)"));
//======== splitRegular ========
{
splitRegular.setDividerSize(0);
splitRegular.setEnabled(false);
splitRegular.setDividerLocation(150);
splitRegular.setDoubleBuffered(true);
//======== pnlTageszeit ========
{
pnlTageszeit.setFont(new Font("Arial", Font.PLAIN, 14));
pnlTageszeit.setBorder(new EtchedBorder());
pnlTageszeit.setLayout(new FormLayout(
"6*(28dlu, $lcgap), default",
"fill:default, $lgap, fill:default"));
//---- jLabel6 ----
jLabel6.setText("Nachts, fr\u00fch morgens");
jLabel6.setOrientation(1);
jLabel6.setFont(new Font("Arial", Font.PLAIN, 14));
jLabel6.setClockwise(false);
jLabel6.setHorizontalTextPosition(SwingConstants.LEFT);
pnlTageszeit.add(jLabel6, CC.xy(1, 1));
//---- jLabel1 ----
jLabel1.setForeground(new Color(0, 0, 204));
jLabel1.setText("Morgens");
jLabel1.setOrientation(1);
jLabel1.setFont(new Font("Arial", Font.PLAIN, 14));
jLabel1.setClockwise(false);
jLabel1.setHorizontalTextPosition(SwingConstants.LEFT);
pnlTageszeit.add(jLabel1, CC.xy(3, 1));
//---- jLabel2 ----
jLabel2.setForeground(new Color(255, 102, 0));
jLabel2.setText("Mittags");
jLabel2.setOrientation(1);
jLabel2.setFont(new Font("Arial", Font.PLAIN, 14));
jLabel2.setClockwise(false);
jLabel2.setHorizontalTextPosition(SwingConstants.LEFT);
pnlTageszeit.add(jLabel2, CC.xy(5, 1));
//---- jLabel11 ----
jLabel11.setForeground(new Color(0, 153, 51));
jLabel11.setText("Nachmittag");
jLabel11.setOrientation(1);
jLabel11.setFont(new Font("Arial", Font.PLAIN, 14));
jLabel11.setClockwise(false);
jLabel11.setHorizontalTextPosition(SwingConstants.LEFT);
pnlTageszeit.add(jLabel11, CC.xy(7, 1));
//---- jLabel3 ----
jLabel3.setForeground(new Color(255, 0, 51));
jLabel3.setText("Abends");
jLabel3.setOrientation(1);
jLabel3.setFont(new Font("Arial", Font.PLAIN, 14));
jLabel3.setClockwise(false);
jLabel3.setHorizontalTextPosition(SwingConstants.LEFT);
pnlTageszeit.add(jLabel3, CC.xy(9, 1));
//---- jLabel4 ----
jLabel4.setText("Nacht, sp\u00e4t abends");
jLabel4.setOrientation(1);
jLabel4.setFont(new Font("Arial", Font.PLAIN, 14));
jLabel4.setClockwise(false);
jLabel4.setHorizontalTextPosition(SwingConstants.LEFT);
pnlTageszeit.add(jLabel4, CC.xy(11, 1));
//---- txtNachtMo ----
txtNachtMo.setHorizontalAlignment(SwingConstants.RIGHT);
txtNachtMo.setText("0.0");
txtNachtMo.setFont(new Font("Arial", Font.PLAIN, 14));
txtNachtMo.addActionListener(e -> txtNachtMoActionPerformed(e));
txtNachtMo.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlTageszeit.add(txtNachtMo, CC.xy(1, 3));
//---- txtMorgens ----
txtMorgens.setHorizontalAlignment(SwingConstants.RIGHT);
txtMorgens.setText("1.0");
txtMorgens.setFont(new Font("Arial", Font.PLAIN, 14));
txtMorgens.addActionListener(e -> txtMorgensActionPerformed(e));
txtMorgens.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlTageszeit.add(txtMorgens, CC.xy(3, 3));
//---- txtMittags ----
txtMittags.setHorizontalAlignment(SwingConstants.RIGHT);
txtMittags.setText("0.0");
txtMittags.setFont(new Font("Arial", Font.PLAIN, 14));
txtMittags.addActionListener(e -> txtMittagsActionPerformed(e));
txtMittags.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlTageszeit.add(txtMittags, CC.xy(5, 3));
//---- txtNachmittags ----
txtNachmittags.setHorizontalAlignment(SwingConstants.RIGHT);
txtNachmittags.setText("0.0");
txtNachmittags.setFont(new Font("Arial", Font.PLAIN, 14));
txtNachmittags.addActionListener(e -> txtNachmittagsActionPerformed(e));
txtNachmittags.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlTageszeit.add(txtNachmittags, CC.xy(7, 3));
//---- txtAbends ----
txtAbends.setHorizontalAlignment(SwingConstants.RIGHT);
txtAbends.setText("0.0");
txtAbends.setFont(new Font("Arial", Font.PLAIN, 14));
txtAbends.addActionListener(e -> txtAbendsActionPerformed(e));
txtAbends.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlTageszeit.add(txtAbends, CC.xy(9, 3));
//---- txtNachtAb ----
txtNachtAb.setHorizontalAlignment(SwingConstants.RIGHT);
txtNachtAb.setText("0.0");
txtNachtAb.setFont(new Font("Arial", Font.PLAIN, 14));
txtNachtAb.addActionListener(e -> txtNachtAbActionPerformed(e));
txtNachtAb.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlTageszeit.add(txtNachtAb, CC.xy(11, 3));
//---- btnToTime ----
btnToTime.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/1rightarrow.png")));
btnToTime.addActionListener(e -> btnToTimeActionPerformed(e));
pnlTageszeit.add(btnToTime, CC.xy(13, 3));
}
splitRegular.setLeftComponent(pnlTageszeit);
//======== pnlUhrzeit ========
{
pnlUhrzeit.setBorder(new EtchedBorder());
pnlUhrzeit.setLayout(new FormLayout(
"default, $ugap, 75dlu, $ugap, pref",
"default:grow, $rgap, default"));
//---- lblUhrzeit ----
lblUhrzeit.setText("Anzahl Massnahmen");
lblUhrzeit.setOrientation(2);
lblUhrzeit.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit.setClockwise(false);
lblUhrzeit.setHorizontalTextPosition(SwingConstants.LEFT);
lblUhrzeit.setVerticalAlignment(SwingConstants.BOTTOM);
pnlUhrzeit.add(lblUhrzeit, CC.xy(3, 1, CC.DEFAULT, CC.BOTTOM));
//---- btnToTimeOfDay ----
btnToTimeOfDay.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/1leftarrow.png")));
btnToTimeOfDay.addActionListener(e -> btnToTimeOfDayActionPerformed(e));
pnlUhrzeit.add(btnToTimeOfDay, CC.xy(1, 3));
//---- txtUhrzeit ----
txtUhrzeit.setHorizontalAlignment(SwingConstants.RIGHT);
txtUhrzeit.setText("0.0");
txtUhrzeit.setFont(new Font("Arial", Font.PLAIN, 14));
txtUhrzeit.addActionListener(e -> txtUhrzeitActionPerformed(e));
txtUhrzeit.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
txtFocusGained(e);
}
@Override
public void focusLost(FocusEvent e) {
txtIntegerFocusLost(e);
}
});
pnlUhrzeit.add(txtUhrzeit, CC.xy(3, 3));
//---- cmbUhrzeit ----
cmbUhrzeit.addItemListener(e -> cmbUhrzeitItemStateChanged(e));
pnlUhrzeit.add(cmbUhrzeit, CC.xy(5, 3));
}
splitRegular.setRightComponent(pnlUhrzeit);
}
panelMain.add(splitRegular, CC.xy(3, 3));
//======== tabWdh ========
{
//======== pnlDaily ========
{
pnlDaily.setFont(new Font("Arial", Font.PLAIN, 14));
pnlDaily.setLayout(new FormLayout(
"2*(default), $rgap, $lcgap, 40dlu, $rgap, default",
"default, $lgap, pref, $lgap, default"));
//---- label3 ----
label3.setText("alle");
label3.setFont(new Font("Arial", Font.PLAIN, 14));
pnlDaily.add(label3, CC.xy(2, 3));
//---- spinTaeglich ----
spinTaeglich.setFont(new Font("Arial", Font.PLAIN, 14));
spinTaeglich.setModel(new SpinnerNumberModel(1, null, null, 1));
pnlDaily.add(spinTaeglich, CC.xy(5, 3));
//---- jLabel7 ----
jLabel7.setText("Tage");
jLabel7.setFont(new Font("Arial", Font.PLAIN, 14));
pnlDaily.add(jLabel7, CC.xy(7, 3));
//---- btnJedenTag ----
btnJedenTag.setText("Jeden Tag");
btnJedenTag.addActionListener(e -> btnJedenTagActionPerformed(e));
pnlDaily.add(btnJedenTag, CC.xywh(2, 5, 6, 1));
}
tabWdh.addTab("T\u00e4glich", pnlDaily);
//======== pnlWeekly ========
{
pnlWeekly.setFont(new Font("Arial", Font.PLAIN, 14));
pnlWeekly.setLayout(new FormLayout(
"default, 7*(13dlu), $lcgap, default:grow",
"$ugap, $lgap, default, $lgap, pref, default:grow, $lgap, $rgap"));
//======== panel3 ========
{
panel3.setLayout(new FormLayout(
"default, $rgap, 40dlu, $rgap, 2*(default), $lcgap, default, $lcgap",
"default:grow, $lgap, default"));
//---- btnJedeWoche ----
btnJedeWoche.setText("Jede Woche");
btnJedeWoche.setFont(new Font("Arial", Font.PLAIN, 14));
btnJedeWoche.addActionListener(e -> btnJedeWocheActionPerformed(e));
panel3.add(btnJedeWoche, CC.xywh(3, 3, 3, 1));
//---- label2 ----
label2.setText("alle");
label2.setFont(new Font("Arial", Font.PLAIN, 14));
panel3.add(label2, CC.xy(1, 1));
panel3.add(spinWoche, CC.xy(3, 1));
//---- jLabel8 ----
jLabel8.setText("Wochen am");
jLabel8.setFont(new Font("Arial", Font.PLAIN, 14));
panel3.add(jLabel8, CC.xy(5, 1));
}
pnlWeekly.add(panel3, CC.xywh(2, 3, 9, 1));
//---- lblUhrzeit2 ----
lblUhrzeit2.setText("montags");
lblUhrzeit2.setOrientation(1);
lblUhrzeit2.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit2.setClockwise(false);
lblUhrzeit2.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit2, CC.xy(2, 5, CC.CENTER, CC.BOTTOM));
//---- lblUhrzeit3 ----
lblUhrzeit3.setText("dienstags");
lblUhrzeit3.setOrientation(1);
lblUhrzeit3.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit3.setClockwise(false);
lblUhrzeit3.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit3, CC.xy(3, 5, CC.CENTER, CC.BOTTOM));
//---- lblUhrzeit4 ----
lblUhrzeit4.setText("mittwochs");
lblUhrzeit4.setOrientation(1);
lblUhrzeit4.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit4.setClockwise(false);
lblUhrzeit4.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit4, CC.xy(4, 5, CC.CENTER, CC.BOTTOM));
//---- lblUhrzeit5 ----
lblUhrzeit5.setText("donnerstags");
lblUhrzeit5.setOrientation(1);
lblUhrzeit5.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit5.setClockwise(false);
lblUhrzeit5.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit5, CC.xy(5, 5, CC.CENTER, CC.BOTTOM));
//---- lblUhrzeit6 ----
lblUhrzeit6.setText("freitags");
lblUhrzeit6.setOrientation(1);
lblUhrzeit6.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit6.setClockwise(false);
lblUhrzeit6.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit6, CC.xy(6, 5, CC.CENTER, CC.BOTTOM));
//---- lblUhrzeit7 ----
lblUhrzeit7.setText("samstags");
lblUhrzeit7.setOrientation(1);
lblUhrzeit7.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit7.setClockwise(false);
lblUhrzeit7.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit7, CC.xy(7, 5, CC.CENTER, CC.BOTTOM));
//---- lblUhrzeit8 ----
lblUhrzeit8.setText("sonntags");
lblUhrzeit8.setOrientation(1);
lblUhrzeit8.setFont(new Font("Arial", Font.PLAIN, 14));
lblUhrzeit8.setClockwise(false);
lblUhrzeit8.setHorizontalTextPosition(SwingConstants.LEFT);
pnlWeekly.add(lblUhrzeit8, CC.xy(8, 5, CC.CENTER, CC.BOTTOM));
//---- cbMon ----
cbMon.setBorder(BorderFactory.createEmptyBorder());
cbMon.setMargin(new Insets(0, 0, 0, 0));
cbMon.addActionListener(e -> cbMonActionPerformed(e));
pnlWeekly.add(cbMon, CC.xy(2, 6, CC.CENTER, CC.DEFAULT));
//---- cbDie ----
cbDie.setBorder(BorderFactory.createEmptyBorder());
cbDie.setMargin(new Insets(0, 0, 0, 0));
cbDie.addActionListener(e -> cbDieActionPerformed(e));
pnlWeekly.add(cbDie, CC.xy(3, 6, CC.CENTER, CC.DEFAULT));
//---- cbMit ----
cbMit.setBorder(BorderFactory.createEmptyBorder());
cbMit.setMargin(new Insets(0, 0, 0, 0));
cbMit.addActionListener(e -> cbMitActionPerformed(e));
pnlWeekly.add(cbMit, CC.xy(4, 6, CC.CENTER, CC.DEFAULT));
//---- cbDon ----
cbDon.setBorder(BorderFactory.createEmptyBorder());
cbDon.setMargin(new Insets(0, 0, 0, 0));
cbDon.addActionListener(e -> cbDonActionPerformed(e));
pnlWeekly.add(cbDon, CC.xy(5, 6, CC.CENTER, CC.DEFAULT));
//---- cbFre ----
cbFre.setBorder(BorderFactory.createEmptyBorder());
cbFre.setMargin(new Insets(0, 0, 0, 0));
cbFre.addActionListener(e -> cbFreActionPerformed(e));
pnlWeekly.add(cbFre, CC.xy(6, 6, CC.CENTER, CC.DEFAULT));
//---- cbSam ----
cbSam.setBorder(BorderFactory.createEmptyBorder());
cbSam.setMargin(new Insets(0, 0, 0, 0));
cbSam.addActionListener(e -> cbSamActionPerformed(e));
pnlWeekly.add(cbSam, CC.xy(7, 6, CC.CENTER, CC.DEFAULT));
//---- cbSon ----
cbSon.setBorder(BorderFactory.createEmptyBorder());
cbSon.setMargin(new Insets(0, 0, 0, 0));
cbSon.addActionListener(e -> cbSonActionPerformed(e));
pnlWeekly.add(cbSon, CC.xy(8, 6, CC.CENTER, CC.DEFAULT));
}
tabWdh.addTab("W\u00f6chentlich", pnlWeekly);
//======== pnlMonthly ========
{
pnlMonthly.setFont(new Font("Arial", Font.PLAIN, 14));
pnlMonthly.setLayout(new FormLayout(
"default, $lcgap, pref, $lcgap, 40dlu, $lcgap, pref, $lcgap, 61dlu",
"3*(default, $lgap), default"));
//---- label4 ----
label4.setText("jeden");
label4.setFont(new Font("Arial", Font.PLAIN, 14));
label4.setHorizontalAlignment(SwingConstants.TRAILING);
pnlMonthly.add(label4, CC.xy(3, 3));
//---- spinMonat ----
spinMonat.setFont(new Font("Arial", Font.PLAIN, 14));
pnlMonthly.add(spinMonat, CC.xy(5, 3));
//---- label6 ----
label6.setText("Monat");
label6.setFont(new Font("Arial", Font.PLAIN, 14));
pnlMonthly.add(label6, CC.xy(7, 3));
//---- btnJedenMonat ----
btnJedenMonat.setText("Jeden Monat");
btnJedenMonat.setFont(new Font("Arial", Font.PLAIN, 14));
btnJedenMonat.addActionListener(e -> btnJedenMonatActionPerformed(e));
pnlMonthly.add(btnJedenMonat, CC.xywh(3, 5, 5, 1));
//---- label5 ----
label5.setText("jeweils am");
label5.setFont(new Font("Arial", Font.PLAIN, 14));
label5.setHorizontalAlignment(SwingConstants.TRAILING);
pnlMonthly.add(label5, CC.xy(3, 7));
//---- spinMonatTag ----
spinMonatTag.setFont(new Font("Arial", Font.PLAIN, 14));
spinMonatTag.addChangeListener(e -> spinMonatTagStateChanged(e));
pnlMonthly.add(spinMonatTag, CC.xy(5, 7));
//---- cmbTag ----
cmbTag.setModel(new DefaultComboBoxModel<>(new String[]{
"Tag des Monats",
"Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag",
"Samstag",
"Sonntag"
}));
cmbTag.setFont(new Font("Arial", Font.PLAIN, 14));
pnlMonthly.add(cmbTag, CC.xywh(7, 7, 3, 1));
}
tabWdh.addTab("Monatlich", pnlMonthly);
}
panelMain.add(tabWdh, CC.xy(3, 7, CC.FILL, CC.FILL));
//======== panel2 ========
{
panel2.setLayout(new FormLayout(
"default, $lcgap, default:grow, $ugap, default, $lcgap, default:grow",
"default:grow"));
//---- jLabel13 ----
jLabel13.setText("Erst einplanen ab dem");
jLabel13.setFont(new Font("Arial", Font.PLAIN, 14));
panel2.add(jLabel13, CC.xy(1, 1));
//---- txtLDate ----
txtLDate.setFont(new Font("Arial", Font.PLAIN, 14));
txtLDate.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
txtLDateFocusLost(e);
}
});
panel2.add(txtLDate, CC.xy(3, 1));
//---- lblMinutes ----
lblMinutes.setText("text");
lblMinutes.setFont(new Font("Arial", Font.PLAIN, 14));
panel2.add(lblMinutes, CC.xy(5, 1));
//---- txtMinutes ----
txtMinutes.setFont(new Font("Arial", Font.PLAIN, 14));
txtMinutes.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
txtMinutesFocusLost(e);
}
});
panel2.add(txtMinutes, CC.xy(7, 1));
}
panelMain.add(panel2, CC.xy(3, 9));
//======== pnlBemerkung ========
{
pnlBemerkung.setBorder(new TitledBorder(null, "Kommentar zur Anwendung (Erscheint im DFN)", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION,
new Font("Arial", Font.PLAIN, 14)));
pnlBemerkung.setLayout(new BoxLayout(pnlBemerkung, BoxLayout.X_AXIS));
//======== jScrollPane1 ========
{
//---- txtBemerkung ----
txtBemerkung.setColumns(20);
txtBemerkung.setRows(5);
jScrollPane1.setViewportView(txtBemerkung);
}
pnlBemerkung.add(jScrollPane1);
}
panelMain.add(pnlBemerkung, CC.xy(3, 11, CC.FILL, CC.FILL));
//---- btnSave ----
btnSave.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/apply.png")));
btnSave.addActionListener(e -> btnSaveActionPerformed(e));
panelMain.add(btnSave, CC.xy(3, 13, CC.RIGHT, CC.DEFAULT));
}
add(panelMain, BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
// @Override
// public void cleanup() {
// SYSTools.unregisterListeners(this);
//// jdcLDatum.removePropertyChangeListener(jdcpcl);
// jdcLDatum.cleanup();
// }
private void cbSonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbSonActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbSonActionPerformed
private void cbSamActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbSamActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbSamActionPerformed
private void cbFreActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbFreActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbFreActionPerformed
private void cbDonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbDonActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbDonActionPerformed
private void cbMitActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbMitActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbMitActionPerformed
private void cbDieActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbDieActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbDieActionPerformed
private void cbMonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cbMonActionPerformed
if (!(cbSon.isSelected() || cbSam.isSelected() || cbFre.isSelected() || cbDon.isSelected() || cbMit.isSelected() || cbDie.isSelected() || cbMon.isSelected())) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.needoneweekday")));
((JCheckBox) evt.getSource()).setSelected(true);
}
}//GEN-LAST:event_cbMonActionPerformed
// private void spinMonatWTagStateChanged(ChangeEvent evt) {//GEN-FIRST:event_spinMonatWTagStateChanged
//
// int monat = Integer.parseInt(spinMonat.getValue().toString());
// if (monat == 0) {
// spinMonat.setValue(1);
// }
//
// }//GEN-LAST:event_spinMonatWTagStateChanged
private void spinMonatTagStateChanged(ChangeEvent evt) {//GEN-FIRST:event_spinMonatTagStateChanged
int wert = Integer.parseInt(spinMonat.getValue().toString());
if (wert > 5) {
if (cmbTag.getSelectedIndex() > 0) { // Einstellung steht auf Wochentag. Das passt nicht zum Wert > 5.
cmbTag.setSelectedIndex(0);
}
}
}//GEN-LAST:event_spinMonatTagStateChanged
private void btnSaveActionPerformed(ActionEvent evt) {//GEN-FIRST:event_btnSaveActionPerformed
try {
save();
actionBlock.execute(is);
} catch (NumberFormatException nfe) {
OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("nursingrecords.nursingprocess.dlgplanung.pnlschedule.parseerror") + nfe.getLocalizedMessage(), 2));
}
}//GEN-LAST:event_btnSaveActionPerformed
public void save() throws NumberFormatException {
boolean splitSetToTime = splitRegularPos == 0d;
if (!isAtLeastOneTxtFieldNotZero() && Double.parseDouble(txtUhrzeit.getText()) == 0d) {
throw new NumberFormatException("Anzahl der Durchführungen steht auf null.");
}
is.setNachtMo(splitSetToTime ? (short) 0 : Short.parseShort(txtNachtMo.getText()));
is.setMorgens(splitSetToTime ? (short) 0 : Short.parseShort(txtMorgens.getText()));
is.setMittags(splitSetToTime ? (short) 0 : Short.parseShort(txtMittags.getText()));
is.setNachmittags(splitSetToTime ? (short) 0 : Short.parseShort(txtNachmittags.getText()));
is.setAbends(splitSetToTime ? (short) 0 : Short.parseShort(txtAbends.getText()));
is.setNachtAb(splitSetToTime ? (short) 0 : Short.parseShort(txtNachtAb.getText()));
is.setUhrzeitAnzahl(!splitSetToTime ? (short) 0 : Short.parseShort(txtUhrzeit.getText()));
is.setUhrzeit(!splitSetToTime ? null : (Date) cmbUhrzeit.getSelectedItem());
is.setTaeglich(tabWdh.getSelectedIndex() == TAB_DAILY ? Short.parseShort(spinTaeglich.getValue().toString()) : (short) 0);
is.setWoechentlich(tabWdh.getSelectedIndex() == TAB_WEEKLY ? Short.parseShort(spinWoche.getValue().toString()) : (short) 0);
is.setMonatlich(tabWdh.getSelectedIndex() == TAB_MONTHLY ? Short.parseShort(spinMonat.getValue().toString()) : (short) 0);
DateMidnight day;
try {
day = new DateMidnight(SYSCalendar.parseDate(txtLDate.getText()));
} catch (NumberFormatException ex) {
day = new DateMidnight();
}
is.setLDatum(day.toDate());
is.setMon(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbMon.isSelected() ? (short) 1 : (short) 0);
is.setDie(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbDie.isSelected() ? (short) 1 : (short) 0);
is.setMit(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbMit.isSelected() ? (short) 1 : (short) 0);
is.setDon(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbDon.isSelected() ? (short) 1 : (short) 0);
is.setFre(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbFre.isSelected() ? (short) 1 : (short) 0);
is.setSam(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbSam.isSelected() ? (short) 1 : (short) 0);
is.setSon(tabWdh.getSelectedIndex() == TAB_WEEKLY && cbSon.isSelected() ? (short) 1 : (short) 0);
if (tabWdh.getSelectedIndex() == TAB_MONTHLY) {
short s = Short.parseShort(spinMonatTag.getValue().toString());
is.setTagNum(cmbTag.getSelectedIndex() == 0 ? s : (short) 0);
if (cmbTag.getSelectedIndex() == 1) {
is.setMon(s);
} else if (cmbTag.getSelectedIndex() == 2) {
is.setDie(s);
} else if (cmbTag.getSelectedIndex() == 3) {
is.setMit(s);
} else if (cmbTag.getSelectedIndex() == 4) {
is.setDon(s);
} else if (cmbTag.getSelectedIndex() == 5) {
is.setFre(s);
} else if (cmbTag.getSelectedIndex() == 6) {
is.setSam(s);
} else if (cmbTag.getSelectedIndex() == 7) {
is.setSon(s);
}
}
is.setFloating(tbFloating.isSelected());
is.setBemerkung(txtBemerkung.getText());
is.setDauer(SYSTools.parseDecimal(txtMinutes.getText()));
if (!is.isValid()) {
throw new NumberFormatException("Anzahl muss min. 1 sein");
}
}
private void txtFocusGained(FocusEvent evt) {//GEN-FIRST:event_txtFocusGained
SYSTools.markAllTxt((JTextField) evt.getSource());
}//GEN-LAST:event_txtFocusGained
private void txtMaxTimesCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_txtMaxTimesCaretUpdate
if (ignoreEvent) {
return;
}
try {
Integer.parseInt(((JTextField) evt.getSource()).getText());
btnSave.setEnabled(true);
} catch (NumberFormatException nfe) {
btnSave.setEnabled(false);
}
}//GEN-LAST:event_txtMaxTimesCaretUpdate
private boolean isAtLeastOneTxtFieldNotZero() {
BigDecimal result = SYSTools.parseDecimal(txtNachtMo.getText()).add(
SYSTools.parseDecimal(txtMorgens.getText())
).add(
SYSTools.parseDecimal(txtMittags.getText())
).add(
SYSTools.parseDecimal(txtNachmittags.getText())
).add(
SYSTools.parseDecimal(txtAbends.getText())
).add(
SYSTools.parseDecimal(txtNachtAb.getText())
);
return result.compareTo(BigDecimal.ZERO) > 0;
}
private void txtNachtMoActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtNachtMoActionPerformed
txtMorgens.requestFocus();
}//GEN-LAST:event_txtNachtMoActionPerformed
private void txtMorgensActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtMorgensActionPerformed
txtMittags.requestFocus();
}//GEN-LAST:event_txtMorgensActionPerformed
private void txtMittagsActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtMittagsActionPerformed
txtNachmittags.requestFocus();
}//GEN-LAST:event_txtMittagsActionPerformed
private void txtNachmittagsActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtNachmittagsActionPerformed
txtAbends.requestFocus();
}//GEN-LAST:event_txtNachmittagsActionPerformed
private void txtAbendsActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtAbendsActionPerformed
txtNachtAb.requestFocus();
}//GEN-LAST:event_txtAbendsActionPerformed
private void txtNachtAbActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtNachtAbActionPerformed
txtNachtMo.requestFocus();
}//GEN-LAST:event_txtNachtAbActionPerformed
private void txtUhrzeitActionPerformed(ActionEvent evt) {//GEN-FIRST:event_txtUhrzeitActionPerformed
}//GEN-LAST:event_txtUhrzeitActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private JPanel panelMain;
private JSplitPane splitRegular;
private JPanel pnlTageszeit;
private JideLabel jLabel6;
private JideLabel jLabel1;
private JideLabel jLabel2;
private JideLabel jLabel11;
private JideLabel jLabel3;
private JideLabel jLabel4;
private JTextField txtNachtMo;
private JTextField txtMorgens;
private JTextField txtMittags;
private JTextField txtNachmittags;
private JTextField txtAbends;
private JTextField txtNachtAb;
private JButton btnToTime;
private JPanel pnlUhrzeit;
private JideLabel lblUhrzeit;
private JButton btnToTimeOfDay;
private JTextField txtUhrzeit;
private JComboBox cmbUhrzeit;
private JideTabbedPane tabWdh;
private JPanel pnlDaily;
private JLabel label3;
private JSpinner spinTaeglich;
private JLabel jLabel7;
private JButton btnJedenTag;
private JPanel pnlWeekly;
private JPanel panel3;
private JButton btnJedeWoche;
private JLabel label2;
private JSpinner spinWoche;
private JLabel jLabel8;
private JideLabel lblUhrzeit2;
private JideLabel lblUhrzeit3;
private JideLabel lblUhrzeit4;
private JideLabel lblUhrzeit5;
private JideLabel lblUhrzeit6;
private JideLabel lblUhrzeit7;
private JideLabel lblUhrzeit8;
private JCheckBox cbMon;
private JCheckBox cbDie;
private JCheckBox cbMit;
private JCheckBox cbDon;
private JCheckBox cbFre;
private JCheckBox cbSam;
private JCheckBox cbSon;
private JPanel pnlMonthly;
private JLabel label4;
private JSpinner spinMonat;
private JLabel label6;
private JButton btnJedenMonat;
private JLabel label5;
private JSpinner spinMonatTag;
private JComboBox<String> cmbTag;
private JPanel panel2;
private JLabel jLabel13;
private JTextField txtLDate;
private JLabel lblMinutes;
private JTextField txtMinutes;
private JPanel pnlBemerkung;
private JScrollPane jScrollPane1;
private JTextArea txtBemerkung;
private JButton btnSave;
// End of variables declaration//GEN-END:variables
}