/* * 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; import com.jidesoft.pane.CollapsiblePane; import com.jidesoft.pane.CollapsiblePanes; import com.jidesoft.swing.JideBoxLayout; import com.jidesoft.swing.JideButton; import entity.EntityTools; import entity.files.SYSFilesTools; import entity.info.ResInfoTools; import entity.info.Resident; import gui.GUITools; import op.OPDE; import op.threads.DisplayMessage; import op.tools.NursingRecordsPanel; import op.tools.SYSConst; import op.tools.SYSTools; import org.jdesktop.swingx.VerticalLayout; import javax.swing.*; import java.awt.*; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.beans.PropertyVetoException; import java.util.concurrent.ExecutionException; /** * @author tloehr */ public class PnlResOverview extends NursingRecordsPanel { private Resident resident; private CollapsiblePanes searchPanes; private JScrollPane jspSearch; private JToggleButton tbMedi, tbBilanz, tbBerichte; private ItemListener itemListener; private MouseAdapter mouseAdapter; private boolean initPhase = false; @Override public String getInternalClassID() { return internalClassID; } /** * Creates new form PnlResOverview */ public PnlResOverview(Resident resident, JScrollPane jspSearch) { super("nursingrecords.overview"); initComponents(); this.jspSearch = jspSearch; initPanel(); prepareSearchArea(); switchResident(resident); } private void initPanel() { txtUebersicht.setContentType("text/html"); itemListener = itemEvent -> reloadDisplay(); mouseAdapter = GUITools.getHyperlinkStyleMouseAdapter(); } @Override public void cleanup() { super.cleanup(); SYSTools.unregisterListeners(this); } @Override public void reload() { reloadDisplay(); } @Override public void switchResident(Resident res) { this.resident = EntityTools.find(Resident.class, res.getRID()); GUITools.setResidentDisplay(resident); reloadDisplay(); } /** * 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() { jspHTML = new JScrollPane(); txtUebersicht = new JTextPane(); //======== this ======== setLayout(new CardLayout()); //======== jspHTML ======== { //---- txtUebersicht ---- txtUebersicht.setEditable(false); jspHTML.setViewportView(txtUebersicht); } add(jspHTML, "card1"); }// </editor-fold>//GEN-END:initComponents public void reloadDisplay() { final boolean withworker = true; if (withworker) { initPhase = true; OPDE.getMainframe().setBlocked(true); OPDE.getDisplayManager().setProgressBarMessage(new DisplayMessage(SYSTools.xx("misc.msg.wait"), -1, 100)); SwingWorker worker = new SwingWorker() { @Override protected Object doInBackground() throws Exception { return SYSTools.toHTML(ResInfoTools.getTXReport(resident, false, tbMedi.isSelected(), tbBilanz.isSelected(), tbBerichte.isSelected(), true, false, false, true, false)); } @Override protected void done() { try { txtUebersicht.setText(get().toString()); txtUebersicht.repaint(); SwingUtilities.invokeLater(() -> GUITools.scroll2show(jspHTML, 0, null)); initPhase = false; OPDE.getDisplayManager().setProgressBarMessage(null); OPDE.getMainframe().setBlocked(false); } catch (InterruptedException e) { OPDE.fatal(e); } catch (ExecutionException e) { OPDE.fatal(e); } } }; worker.execute(); } else { initPhase = true; OPDE.getMainframe().setBlocked(true); OPDE.getDisplayManager().setProgressBarMessage(new DisplayMessage(SYSTools.xx("misc.msg.wait"), -1, 100)); // txtUebersicht.repaint(); SwingUtilities.invokeLater(() -> { String html = SYSTools.toHTML(ResInfoTools.getTXReport(resident, false, tbMedi.isSelected(), tbBilanz.isSelected(), tbBerichte.isSelected(), true, false, false, true, false)); txtUebersicht.setText(html); // jspHTML.getVerticalScrollBar().setValue(0); GUITools.scroll2show(jspHTML, 0, null); initPhase = false; OPDE.getDisplayManager().setProgressBarMessage(null); OPDE.getMainframe().setBlocked(false); }); } OPDE.getMainframe().setBlocked(true); OPDE.getDisplayManager().setProgressBarMessage(new DisplayMessage(SYSTools.xx("misc.msg.wait"), -1, 100)); SwingWorker worker = new SwingWorker() { String html = ""; @Override protected Object doInBackground() throws Exception { html = SYSTools.toHTML(ResInfoTools.getTXReport(resident, false, tbMedi.isSelected(), tbBilanz.isSelected(), tbBerichte.isSelected(), true, false, false, true, false)); return null; } @Override protected void done() { txtUebersicht.setText(html); txtUebersicht.repaint(); jspHTML.getVerticalScrollBar().setValue(0); initPhase = false; OPDE.getDisplayManager().setProgressBarMessage(null); OPDE.getMainframe().setBlocked(false); } }; worker.execute(); } private CollapsiblePane addFilters() { JPanel labelPanel = new JPanel(); labelPanel.setBackground(Color.WHITE); labelPanel.setLayout(new VerticalLayout(3)); CollapsiblePane panelFilter = new CollapsiblePane(SYSTools.xx("misc.msg.Filter")); panelFilter.setStyle(CollapsiblePane.PLAIN_STYLE); panelFilter.setCollapsible(false); tbMedi = GUITools.getNiceToggleButton(SYSTools.xx("nursingrecords.prescription")); tbMedi.addItemListener(e -> { if (initPhase) return; // SYSPropsTools.storeState(internalClassID + ":tbMedi", tbMedi); reloadDisplay(); }); tbMedi.setHorizontalAlignment(SwingConstants.LEFT); labelPanel.add(tbMedi); // SYSPropsTools.restoreState(internalClassID + ":tbMedi", tbMedi); tbBerichte = GUITools.getNiceToggleButton(SYSTools.xx("nursingrecords.reports")); tbBerichte.addItemListener(e -> { if (initPhase) return; // SYSPropsTools.storeState(internalClassID + ":tbBerichte", tbBerichte); reloadDisplay(); }); tbBerichte.setHorizontalAlignment(SwingConstants.LEFT); labelPanel.add(tbBerichte); // SYSPropsTools.restoreState(internalClassID + ":tbBerichte", tbBerichte); tbBilanz = GUITools.getNiceToggleButton(SYSTools.xx("misc.msg.liquid.result")); tbBilanz.addItemListener(e -> { if (initPhase) return; // SYSPropsTools.storeState(internalClassID + ":tbBilanz", tbBilanz); reloadDisplay(); }); tbBilanz.setHorizontalAlignment(SwingConstants.LEFT); labelPanel.add(tbBilanz); // SYSPropsTools.restoreState(internalClassID + ":tbBilanz", tbBilanz); // tbBWInfo = GUITools.getNiceToggleButton(SYSTools.xx(PnlInfo.internalClassID)); // tbBWInfo.addItemListener(new ItemListener() { // @Override // public void itemStateChanged(ItemEvent e) { // if (initPhase) return; // SYSPropsTools.storeState(internalClassID + ":tbBWInfo", tbBWInfo); // reloadDisplay(); // } // }); // tbBilanz.setHorizontalAlignment(SwingConstants.LEFT); // labelPanel.add(tbBWInfo); // SYSPropsTools.restoreState(internalClassID + ":tbBWInfo", tbBWInfo); panelFilter.setContentPane(labelPanel); return panelFilter; } private void prepareSearchArea() { initPhase = true; searchPanes = new CollapsiblePanes(); searchPanes.setLayout(new JideBoxLayout(searchPanes, JideBoxLayout.Y_AXIS)); CollapsiblePane searchPane = new CollapsiblePane(SYSTools.xx(internalClassID)); searchPane.setSlidingDirection(SwingConstants.SOUTH); searchPane.setStyle(CollapsiblePane.PLAIN_STYLE); searchPane.setCollapsible(false); try { searchPane.setCollapsed(false); } catch (PropertyVetoException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } JPanel mypanel = new JPanel(); mypanel.setLayout(new VerticalLayout(3)); mypanel.setBackground(Color.WHITE); JideButton printButton = GUITools.createHyperlinkButton("Drucken", SYSConst.icon22print2, actionEvent -> SYSFilesTools.print(ResInfoTools.getTXReport(resident, true, false, tbMedi.isSelected(), tbBilanz.isSelected(), tbBerichte.isSelected(), true, false, true, true), true)); mypanel.add(printButton); searchPane.setContentPane(mypanel); searchPanes.add(searchPane); searchPanes.add(addFilters()); searchPanes.addExpansion(); jspSearch.setViewportView(searchPanes); initPhase = false; } // Variables declaration - do not modify//GEN-BEGIN:variables private JScrollPane jspHTML; private JTextPane txtUebersicht; // End of variables declaration//GEN-END:variables }