1 package org
.therapi
.reha
.patient
;
6 import generalSplash
.RehaSplash
;
7 import geraeteInit
.ScannerUtil
;
8 import hauptFenster
.Reha
;
10 import java
.awt
.AlphaComposite
;
11 import java
.awt
.BorderLayout
;
12 import java
.awt
.Color
;
13 import java
.awt
.Component
;
14 import java
.awt
.Dimension
;
15 import java
.awt
.FlowLayout
;
17 import java
.awt
.Graphics
;
18 import java
.awt
.Graphics2D
;
19 import java
.awt
.Image
;
20 import java
.awt
.MediaTracker
;
21 import java
.awt
.Point
;
22 import java
.awt
.Toolkit
;
23 import java
.awt
.event
.ActionEvent
;
24 import java
.awt
.event
.ActionListener
;
25 import java
.awt
.event
.KeyAdapter
;
26 import java
.awt
.event
.KeyEvent
;
27 import java
.awt
.event
.MouseAdapter
;
28 import java
.awt
.event
.MouseEvent
;
29 import java
.awt
.event
.MouseListener
;
30 import java
.awt
.image
.BufferedImage
;
31 import java
.beans
.PropertyChangeEvent
;
32 import java
.beans
.PropertyChangeListener
;
33 import java
.io
.BufferedReader
;
35 import java
.io
.FileNotFoundException
;
36 import java
.io
.FileOutputStream
;
37 import java
.io
.IOException
;
38 import java
.io
.InputStream
;
39 import java
.io
.InputStreamReader
;
40 import java
.net
.MalformedURLException
;
41 import java
.sql
.ResultSet
;
42 import java
.sql
.SQLException
;
43 import java
.sql
.Statement
;
44 import java
.util
.Arrays
;
45 import java
.util
.HashMap
;
46 import java
.util
.List
;
48 import java
.util
.Vector
;
50 import javax
.imageio
.ImageIO
;
51 import javax
.swing
.BorderFactory
;
52 import javax
.swing
.ImageIcon
;
53 import javax
.swing
.JButton
;
54 import javax
.swing
.JComboBox
;
55 import javax
.swing
.JComponent
;
56 import javax
.swing
.JFileChooser
;
57 import javax
.swing
.JLabel
;
58 import javax
.swing
.JList
;
59 import javax
.swing
.JOptionPane
;
60 import javax
.swing
.JPanel
;
61 import javax
.swing
.JScrollPane
;
62 import javax
.swing
.JToolBar
;
63 import javax
.swing
.ListSelectionModel
;
64 import javax
.swing
.event
.ListSelectionEvent
;
65 import javax
.swing
.event
.ListSelectionListener
;
66 import javax
.swing
.event
.TableModelEvent
;
67 import javax
.swing
.event
.TableModelListener
;
68 import javax
.swing
.filechooser
.FileFilter
;
69 import javax
.swing
.table
.DefaultTableModel
;
70 import javax
.swing
.table
.TableCellEditor
;
71 import javax
.swing
.table
.TableCellRenderer
;
73 import jxTableTools
.TableTool
;
74 import oOorgTools
.OOTools
;
76 import org
.jdesktop
.swingworker
.SwingWorker
;
77 import org
.jdesktop
.swingx
.JXPanel
;
78 import org
.jdesktop
.swingx
.JXTable
;
79 import org
.jdesktop
.swingx
.decorator
.HighlighterFactory
;
80 import org
.jdesktop
.swingx
.renderer
.DefaultTableRenderer
;
81 import org
.jdesktop
.swingx
.renderer
.IconValues
;
82 import org
.jdesktop
.swingx
.renderer
.MappedValue
;
83 import org
.jdesktop
.swingx
.renderer
.StringValues
;
85 import patientenFenster
.KeinRezept
;
86 import patientenFenster
.MyAccessory
;
87 import rechteTools
.Rechte
;
88 import CommonTools
.ExUndHop
;
89 import CommonTools
.SqlInfo
;
90 import systemEinstellungen
.SystemConfig
;
91 import CommonTools
.Colors
;
92 import CommonTools
.FileTools
;
93 import systemTools
.GrafikTools
;
94 import systemTools
.IconListRenderer
;
95 import CommonTools
.JCompTools
;
96 import terminKalender
.DatFunk
;
97 import uk
.co
.mmscomputing
.device
.scanner
.Scanner
;
98 import uk
.co
.mmscomputing
.device
.scanner
.ScannerDevice
;
99 import uk
.co
.mmscomputing
.device
.scanner
.ScannerIOException
;
100 import uk
.co
.mmscomputing
.device
.scanner
.ScannerIOMetadata
;
101 import uk
.co
.mmscomputing
.device
.scanner
.ScannerListener
;
102 import uk
.co
.mmscomputing
.device
.twain
.TwainConstants
;
103 import uk
.co
.mmscomputing
.device
.twain
.TwainIOMetadata
;
104 import uk
.co
.mmscomputing
.device
.twain
.TwainImageLayout
;
105 import uk
.co
.mmscomputing
.device
.twain
.TwainSource
;
106 import ag
.ion
.bion
.officelayer
.application
.IOfficeApplication
;
107 import ag
.ion
.bion
.officelayer
.document
.IDocument
;
108 import ag
.ion
.bion
.officelayer
.event
.IDocumentEvent
;
109 import ag
.ion
.bion
.officelayer
.event
.IDocumentListener
;
110 import ag
.ion
.bion
.officelayer
.event
.IEvent
;
111 import ag
.ion
.bion
.officelayer
.spreadsheet
.ISpreadsheetDocument
;
112 import ag
.ion
.bion
.officelayer
.text
.ITextDocument
;
114 import com
.jgoodies
.forms
.builder
.PanelBuilder
;
115 import com
.jgoodies
.forms
.layout
.CellConstraints
;
116 import com
.jgoodies
.forms
.layout
.FormLayout
;
117 import com
.lowagie
.text
.Document
;
118 import com
.lowagie
.text
.DocumentException
;
119 import com
.lowagie
.text
.PageSize
;
120 import com
.lowagie
.text
.Rectangle
;
121 import com
.lowagie
.text
.pdf
.PdfCopy
;
122 import com
.lowagie
.text
.pdf
.PdfReader
;
123 import com
.lowagie
.text
.pdf
.PdfWriter
;
124 import com
.mysql
.jdbc
.PreparedStatement
;
126 import dialoge
.ToolsDialog
;
128 public class Dokumentation
extends JXPanel
implements ActionListener
, TableModelListener
, PropertyChangeListener
, ScannerListener
{
132 private static final long serialVersionUID
= 1L;
133 //public static Dokumentation doku = null;
134 JXPanel leerPanel
= null;
135 //JXPanel vollPanel = null;
136 JXPanel vollPanel
= null;
137 JXPanel wechselPanel
= null;
138 public JLabel anzahlDokus
= null;
139 //public JLabel anzahlRezepte= null;
140 public String aktPanel
= "";
141 public JXTable tabdokus
= null;
142 public MyDoku2TableModel dtblm
;
143 public TableCellEditor tbl
= null;
144 //public boolean rezneugefunden = false;
145 //public boolean neuDlgOffen = false;
146 //public String[] indphysio = null;
147 //public String[] indergo = null;
148 //public String[] indlogo = null;
149 public JXPanel jpan1
= null;
150 public JButton
[] dokubut
= {null,null,null,null,null,null};
151 public JButton
[] pmbut
= {null,null,null,null,null};
152 public static boolean inDokuDaten
= false;
153 public JComboBox seitengroesse
= null;
154 public JComboBox aufloesung
= null;
155 public JComboBox farbe
= null;
156 public Vector
<String
> LabName
= new Vector
<String
>();
158 public Vector
<String
>vecBilderPfad
= new Vector
<String
>();
159 public Vector
<String
>vecBilderFormat
= new Vector
<String
>();
160 public Vector
<String
>vecPdfPfad
= new Vector
<String
>();
161 public Vector
<String
>vecBilderAktion
= new Vector
<String
>();
162 public Vector
<JLabel
>Labels
= new Vector
<JLabel
>();
163 public JXPanel bilderPan
= null;
164 public JScrollPane bildscroll
= null;
165 public JLabel
[] infolab
= {null,null,null,null,null};
166 public JLabel
[] infolabLeer
= {null,null,null,null,null};
167 public MouseListener mlist
= null;
168 public boolean deviceinstalled
= false;
169 public boolean scanaktiv
= false;
170 public int aktivesBild
= 0;
171 public JXPanel plusminus
;
172 public JPanel leerInfo
= null;
173 public String commonName
= "";
174 public String lastPath
= null;
175 public RehaSplash rehaSplash
= null;
176 public ImageIcon
[] tabIcons
= {null,null,null,null};
177 public String aktion
= "";
178 public String quelle
= "";
179 public String nameOOorgDokuNeu
;
180 public ImageIcon pdfplus
;
181 public ImageIcon oowriterplus
;
182 public ImageIcon oocalcplus
;
184 //public JRtaTextField annika = null;
186 public Dokumentation(){
189 scanaktiv
= (SystemConfig
.hmDokuScanner
.get("aktivieren").trim().equals("1") ?
true : false );
191 setLayout(new BorderLayout());
192 /********zuerst das Leere Panel basteln**************/
193 leerPanel
= new KeinRezept("noch keine Dokumentation angelegt für diesen Patient");
194 leerPanel
.setName("leerpanel");
195 leerPanel
.setOpaque(false);
196 leerInfo
= getInfoPanelLeer();
197 leerPanel
.add(leerInfo
,BorderLayout
.SOUTH
);
199 /********dann das volle**************/
200 JXPanel allesrein
= new JXPanel(new BorderLayout());
201 allesrein
.setOpaque(false);
202 allesrein
.setBorder(null);
204 FormLayout lay
= new FormLayout("5dlu,fill:0:grow(1.00),0dlu",
205 "0dlu,p,2dlu,p,2dlu,fill:0:grow(1.00),2dlu");
206 CellConstraints cc
= new CellConstraints();
207 allesrein
.setLayout(lay
);
209 wechselPanel
= new JXPanel(new BorderLayout());
210 wechselPanel
.setOpaque(false);
211 wechselPanel
.setBorder(null);
212 wechselPanel
.add(leerPanel
,BorderLayout
.CENTER
);
213 aktPanel
= "leerPanel";
215 allesrein
.add(getToolbar(),cc
.xy(2, 2));
217 allesrein
.add(wechselPanel
,cc
.xy(2, 6));
219 add(JCompTools
.getTransparentScrollPane(allesrein
),BorderLayout
.CENTER
);
222 new SwingWorker
<Void
,Void
>(){
225 protected Void
doInBackground() throws Exception
{
226 vollPanel
= new JXPanel();
228 FormLayout vplay
= new FormLayout("fill:0:grow(0.60),5dlu,fill:0:grow(0.40),5dlu",
229 "p,2dlu,100dlu,0dlu,fill:0:grow(1.00),0dlu");
230 CellConstraints vpcc
= new CellConstraints();
231 vollPanel
.setLayout(vplay
);
232 vollPanel
.setOpaque(false);
233 vollPanel
.setBorder(null);
235 Font font
= new Font("Tahoma",Font
.PLAIN
,11);
236 anzahlDokus
= new JLabel("Anzahl gespeicherter Dokumentationen: 0");
237 anzahlDokus
.setFont(font
);
238 vollPanel
.add(anzahlDokus
,vpcc
.xy(1,1));
240 vollPanel
.add(getTabelle(),vpcc
.xywh(1,3,3,1));
243 jpan1
= new DokuPanel();
244 jpan1
.setLayout(new BorderLayout());
245 jpan1
.setOpaque(false);
246 jpan1
.add(getToolBereich(),BorderLayout
.CENTER
);
247 vollPanel
.add(jpan1
,vpcc
.xyw(1,5,3));
250 new SwingWorker
<Void
,Void
>(){
252 protected Void
doInBackground() throws Exception
{
257 Image ico
= SystemConfig
.hmSysIcons
.get("pdf").getImage().getScaledInstance(26,26, Image
.SCALE_SMOOTH
);
258 pdfplus
= new ImageIcon(ico
);
259 ico
= SystemConfig
.hmSysIcons
.get("ooowriter").getImage().getScaledInstance(26,26, Image
.SCALE_SMOOTH
);
260 oowriterplus
= new ImageIcon(ico
);
261 ico
= SystemConfig
.hmSysIcons
.get("ooocalc").getImage().getScaledInstance(26,26, Image
.SCALE_SMOOTH
);
262 oocalcplus
= new ImageIcon(ico
);
280 public JXPanel
getToolBereich(){
281 JXPanel tbereich
= new JXPanel();
282 tbereich
.setOpaque(false);
283 FormLayout lay
= new FormLayout("0dlu,fill:0:grow(1.00),0dlu","0dlu,fill:60:grow(1.00),1dlu,42dlu");
284 CellConstraints cc
= new CellConstraints();
285 tbereich
.setLayout(lay
);
287 tbereich
.add(getBildPanel(),cc
.xy(2,2));
289 tbereich
.add(getInfoPanel(),cc
.xy(2,4,CellConstraints
.DEFAULT
,CellConstraints
.BOTTOM
));
293 public JScrollPane
getBildPanel(){
294 bilderPan
= new JXPanel(new FlowLayout(FlowLayout
.LEFT
));
295 //dummy1.setBackground(Color.RED);
296 bilderPan
.setOpaque(false);
297 JScrollPane bildscroll
= JCompTools
.getTransparentScrollPane(bilderPan
);
298 bildscroll
.validate();
301 public JPanel
getInfoPanel(){ // 1 2 3 4 5 6 7 8 9 10
302 FormLayout lay
= new FormLayout("2dlu,p,25dlu,right:max(50dlu;p),2dlu,p,20dlu,right:max(50dlu;p),2dlu,p",
304 " 0dlu,p,0dlu, p,0dlu,p,0dlu,p, 0dlu");
305 CellConstraints cc
= new CellConstraints();
306 PanelBuilder pb
= new PanelBuilder(lay
);
307 //JPanel dummy2 = new JXPanel();
308 //dummy2.setBackground(Color.RED);
309 Font fon
= new Font("Tahoma",Font
.BOLD
,10);
310 JLabel jlab
= new JLabel("Geräte-Info");
311 jlab
.setFont(new Font("Tahoma",Font
.BOLD
,14));
312 jlab
.setForeground(Color
.BLUE
);
313 pb
.add(jlab
,cc
.xy(2,2));
314 pb
.addLabel("aktives Gerät:",cc
.xy(4, 4));
316 infolab
[0] = new JLabel("Scanner nicht aktiviert");
317 infolab
[0].setFont(fon
);
318 pb
.add(infolab
[0],cc
.xy(6,4));
319 return pb
.getPanel();
321 infolab
[0] = new JLabel(SystemConfig
.sDokuScanner
);
322 infolab
[0].setFont(fon
);
323 pb
.add(infolab
[0],cc
.xy(6,4));
324 pb
.addLabel("Scanmodus:",cc
.xy(4, 6));
325 infolab
[1] = new JLabel(SystemConfig
.hmDokuScanner
.get("farben"));
326 infolab
[1].setFont(fon
);
327 pb
.add(infolab
[1],cc
.xy(6,6));
328 pb
.addLabel("Auflösung:",cc
.xy(8, 4));
329 infolab
[2] = new JLabel(SystemConfig
.hmDokuScanner
.get("aufloesung")+"dpi");
330 infolab
[2].setFont(fon
);
331 pb
.add(infolab
[2],cc
.xy(10,4));
332 pb
.addLabel("Seitenformat:",cc
.xy(8, 6));
333 infolab
[3] = new JLabel(SystemConfig
.hmDokuScanner
.get("seiten"));
334 infolab
[3].setFont(fon
);
335 pb
.add(infolab
[3],cc
.xy(10,6));
336 pb
.addLabel("Scannerdialog verwenden:",cc
.xy(8, 8));
337 infolab
[4] = new JLabel( (SystemConfig
.hmDokuScanner
.get("dialog").equals("1") ?
"ja" : "nein"));
338 infolab
[4].setFont(fon
);
339 pb
.add(infolab
[4],cc
.xy(10,8));
340 pb
.getPanel().setOpaque(false);
341 pb
.getPanel().setPreferredSize(new Dimension(500,100));
342 return pb
.getPanel();
344 public JPanel
getInfoPanelLeer(){ // 1 2 3 4 5 6 7 8 9 10
345 FormLayout lay
= new FormLayout("2dlu,p,20dlu,right:max(50dlu;p),2dlu,p,20dlu,right:max(50dlu;p),2dlu,p",
347 "10dlu,p,5dlu,p,1dlu,p,1dlu,p,10dlu");
348 CellConstraints cc
= new CellConstraints();
349 PanelBuilder pb
= new PanelBuilder(lay
);
350 Font fon
= new Font("Tahoma",Font
.BOLD
,10);
351 JLabel jlab
= new JLabel("Geräte-Info");
352 jlab
.setFont(new Font("Tahoma",Font
.BOLD
,14));
353 jlab
.setForeground(Color
.BLUE
);
354 pb
.add(jlab
,cc
.xy(2,2));
355 pb
.addLabel("aktives Gerät:",cc
.xy(4, 4));
357 infolabLeer
[0] = new JLabel("Scanner nicht aktiviert");
358 infolabLeer
[0].setFont(fon
);
359 pb
.add(infolabLeer
[0],cc
.xy(6,4));
360 return pb
.getPanel();
362 infolabLeer
[0] = new JLabel(SystemConfig
.sDokuScanner
);
363 infolabLeer
[0].setFont(fon
);
364 pb
.add(infolabLeer
[0],cc
.xy(6,4));
365 pb
.addLabel("Scanmodus:",cc
.xy(4, 6));
366 infolabLeer
[1] = new JLabel(SystemConfig
.hmDokuScanner
.get("farben"));
367 infolabLeer
[1].setFont(fon
);
368 pb
.add(infolabLeer
[1],cc
.xy(6,6));
369 pb
.addLabel("Auflösung:",cc
.xy(8, 4));
370 infolabLeer
[2] = new JLabel(SystemConfig
.hmDokuScanner
.get("aufloesung")+"dpi");
371 infolabLeer
[2].setFont(fon
);
372 pb
.add(infolabLeer
[2],cc
.xy(10,4));
373 pb
.addLabel("Seitenformat:",cc
.xy(8, 6));
374 infolabLeer
[3] = new JLabel(SystemConfig
.hmDokuScanner
.get("seiten"));
375 infolabLeer
[3].setFont(fon
);
376 pb
.add(infolabLeer
[3],cc
.xy(10,6));
377 pb
.addLabel("Scannerdialog verwenden:",cc
.xy(8, 8));
378 infolabLeer
[4] = new JLabel( (SystemConfig
.hmDokuScanner
.get("dialog").equals("1") ?
"ja" : "nein"));
379 infolabLeer
[4].setFont(fon
);
380 pb
.add(infolabLeer
[4],cc
.xy(10,8));
381 pb
.getPanel().setOpaque(false);
382 pb
.getPanel().setPreferredSize(new Dimension(500,100));
383 return pb
.getPanel();
386 class DokuPanel
extends JXPanel
{
390 private static final long serialVersionUID
= 1L;
393 AlphaComposite xac1
= null;
394 AlphaComposite xac2
= null;
398 hgicon
= SystemConfig
.hmSysIcons
.get("scannergross");
399 icx
= hgicon
.getIconWidth()/2;
400 icy
= hgicon
.getIconHeight()/2;
401 xac1
= AlphaComposite
.getInstance(AlphaComposite
.SRC_OVER
,0.25f
);
402 xac2
= AlphaComposite
.getInstance(AlphaComposite
.SRC_OVER
,1.0f
);
405 public void paintComponent( Graphics g
) {
406 super.paintComponent( g
);
407 Graphics2D g2d
= (Graphics2D
)g
;
410 g2d
.setComposite(this.xac1
);
411 g2d
.drawImage(hgicon
.getImage(), (getWidth()/3)-(icx
+20) , (getHeight()/2)-(icy
-40),null);
412 g2d
.setComposite(this.xac2
);
418 public JXPanel
getTabelle(){
419 JXPanel dummypan
= new JXPanel(new BorderLayout());
420 dummypan
.setOpaque(false);
421 dummypan
.setBorder(null);
422 //System.out.println("Image icon bei Tabellenerstellung = "+(SystemConfig.hmSysIcons.get("pdf")==null));
423 tabIcons
[0]= SystemConfig
.hmSysIcons
.get("pdf");
424 tabIcons
[1]= new ImageIcon(SystemConfig
.hmSysIcons
.get("ooowriter").getImage().getScaledInstance(22, 22, Image
.SCALE_SMOOTH
));
425 tabIcons
[2]= new ImageIcon(SystemConfig
.hmSysIcons
.get("ooocalc").getImage().getScaledInstance(22, 22, Image
.SCALE_SMOOTH
));
427 dtblm
= new MyDoku2TableModel();
428 String
[] column
= {"Doku-Id","Doku-Art","Titel","erfaßt am","von","","",""};
429 dtblm
.setColumnIdentifiers(column
);
430 tabdokus
= new JXTable(dtblm
);
431 tabdokus
.setRowHeight(tabdokus
.getRowHeight()+10);
432 tabdokus
.setHighlighters(HighlighterFactory
.createSimpleStriping(Colors
.PiOrange
.alpha(0.25f
)));
433 tabdokus
.setDoubleBuffered(true);
434 tabdokus
.setEditable(false);
435 tabdokus
.setSortable(false);
436 tabdokus
.getColumn(0).setMaxWidth(50);
437 TableCellRenderer renderer
= new DefaultTableRenderer(new MappedValue(StringValues
.EMPTY
, IconValues
.ICON
), JLabel
.CENTER
);
438 tabdokus
.getColumn(1).setCellRenderer(renderer
);
439 tabdokus
.getColumn(1).setMaxWidth(50);
440 tabdokus
.getColumn(2).setMinWidth(275);
441 tabdokus
.getColumn(3).setMaxWidth(80);
442 //tabhistorie.getColumn(4).setMinWidth(0);
443 //tabhistorie.getColumn(4).setMaxWidth(0);
444 tabdokus
.getColumn(5).setMinWidth(0);
445 tabdokus
.getColumn(5).setMaxWidth(0);
446 tabdokus
.getColumn(6).setMinWidth(0);
447 tabdokus
.getColumn(6).setMaxWidth(0);
448 tabdokus
.getColumn(7).setMinWidth(0);
449 tabdokus
.getColumn(7).setMaxWidth(0);
452 tabdokus
.setName("AktDoku");
453 tabdokus
.setSelectionMode(0);
454 //tabaktrez.addPropertyChangeListener(this);
455 tabdokus
.getSelectionModel().addListSelectionListener( new DokuListSelectionHandler());
456 tabdokus
.addMouseListener(new MouseAdapter(){
457 public void mouseClicked(MouseEvent arg0
) {
458 if(!Rechte
.hatRecht(Rechte
.Doku_open
, true)){
461 if(arg0
.getClickCount()==2){
465 } catch (InterruptedException e
) {
466 // TODO Auto-generated catch block
471 int row
= tabdokus
.getSelectedRow();
472 /***********************/
473 if(! ((String
)tabdokus
.getValueAt(row
, 7)).trim().equals("")){
474 setCursor(Reha
.thisClass
.wartenCursor
);
475 String sid
= (String
)tabdokus
.getValueAt(row
, 6);
476 String sdatei
= SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+(String
)tabdokus
.getValueAt(row
, 7);
477 holeOorg(sdatei
,sid
);
481 /***********************/
482 String sdatei
= SystemConfig
.hmVerzeichnisse
.get("Temp")+"/pdf"+tabdokus
.getValueAt(row
, 0)+".pdf";
483 //System.out.println("Starte doku holen");
484 String sid
= (String
)tabdokus
.getValueAt(row
, 6);
485 File file
= new File(sdatei
);
487 final String xdatei
= sdatei
;
488 new SwingWorker
<Void
,Void
>(){
490 protected Void
doInBackground() throws Exception
{
491 Process process
= new ProcessBuilder(SystemConfig
.hmFremdProgs
.get("AcrobatReader"),"",xdatei
).start();
492 InputStream is
= process
.getInputStream();
493 InputStreamReader isr
= new InputStreamReader(is
);
494 BufferedReader br
= new BufferedReader(isr
);
496 while ((br
.readLine()) != null) {
497 //System.out.println(line);
508 setCursor(Reha
.thisClass
.wartenCursor
);
510 final String xid = sid;
511 new SwingWorker<Void,Void>(){
513 protected Void doInBackground() throws Exception {
514 long zeit = System.currentTimeMillis();
520 holeDoku(sdatei
,sid
);
521 setCursor(Reha
.thisClass
.normalCursor
);
526 tabdokus
.addKeyListener(new KeyAdapter(){
527 public void keyPressed(KeyEvent arg0
) {
528 if(arg0
.getKeyCode()==10){
530 //neuanlageRezept(false,"");
532 if(arg0
.getKeyCode()==27){
538 //tabaktrez.getSelectionModel().addListSelectionListener(this);
539 //dtblm.addTableModelListener(this);
540 //dummypan.setPreferredSize(new Dimension(0,100));
541 JScrollPane aktrezscr
= JCompTools
.getTransparentScrollPane((Component
)tabdokus
);
542 aktrezscr
.validate();
543 aktrezscr
.getVerticalScrollBar().setUnitIncrement(15);
544 dummypan
.add(aktrezscr
,BorderLayout
.CENTER
);
549 public void setzeDokuPanelAufNull(boolean aufnull
){
551 if(aktPanel
.equals("vollPanel")){
552 wechselPanel
.remove(vollPanel
);
553 wechselPanel
.add(leerPanel
);
554 aktPanel
= "leerPanel";
556 dokubut
[2].setEnabled(false);
557 }catch(Exception ex
){}
558 wechselPanel
.validate();
559 wechselPanel
.repaint();
560 for(int i
= 0; i
< 4;i
++){
561 //dokubut[i].setEnabled(false);
565 if(aktPanel
.equals("leerPanel")){
566 wechselPanel
.remove(leerPanel
);
567 wechselPanel
.add(vollPanel
);
568 aktPanel
= "vollPanel";
569 dokubut
[1].setEnabled(true);
571 for(int i = 0; i < 4;i++){
572 //dokubut[i].setEnabled(true);
575 wechselPanel
.validate();
576 wechselPanel
.repaint();
580 ////////////////////////////
581 ////////////////////////////
582 //////////////////////////// Holt Doku aus der Doku-Datenbank
583 ////////////////////////////
584 private Dokumentation
getInstance(){
587 public void holeOorg(String sdatei
,String sid
){
588 Statement stmt
= null;;
591 //System.out.println(sdatei);
594 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
595 ResultSet
.CONCUR_UPDATABLE
);
596 String test
= "select dokublob from doku1 where id='"+sid
+"'";
597 rs
= (ResultSet
) stmt
.executeQuery(test
);
599 FileTools
.ByteArray2File(rs
.getBytes(1), sdatei
);
601 final String xdatei
= sdatei
;
602 final String xid
= sid
;
603 new SwingWorker
<Void
,Void
>(){
605 protected Void
doInBackground() throws Exception
{
607 if(xdatei
.toLowerCase().endsWith("odt")){
608 ITextDocument itext
= new OOTools().starteWriterMitDatei(xdatei
);
609 itext
.addDocumentListener(new OoListener(Reha
.officeapplication
,xdatei
,xid
,getInstance()));
610 }else if(xdatei
.toLowerCase().endsWith("ods")){
611 ISpreadsheetDocument ispread
= new OOTools().starteCalcMitDatei(xdatei
);
612 ispread
.addDocumentListener(new OoListener(Reha
.officeapplication
,xdatei
,xid
,getInstance()));
614 }catch(Exception ex
){
615 ex
.printStackTrace();
617 Reha
.thisClass
.patpanel
.dokumentation
.setCursor(Reha
.thisClass
.normalCursor
);
622 } catch (SQLException e
) {
623 // TODO Auto-generated catch block
630 } catch (SQLException sqlEx
) { // ignore }
637 } catch (SQLException sqlEx
) { // ignore }
647 public void holeDoku(String datei
,String id
){
648 Statement stmt
= null;;
653 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
654 ResultSet
.CONCUR_UPDATABLE
);
655 String test
= "select dokublob from doku1 where id='"+id
+"'";
656 rs
= (ResultSet
) stmt
.executeQuery(test
);
658 FileTools
.ByteArray2File(rs
.getBytes(1), datei
);
661 final String xdatei
= datei
;
662 new SwingWorker
<Void
,Void
>(){
664 protected Void
doInBackground() throws Exception
{
665 Process process
= new ProcessBuilder(SystemConfig
.hmFremdProgs
.get("AcrobatReader"),"",xdatei
).start();
666 InputStream is
= process
.getInputStream();
667 InputStreamReader isr
= new InputStreamReader(is
);
668 BufferedReader br
= new BufferedReader(isr
);
670 while ((br
.readLine()) != null) {
671 //System.out.println(line);
683 } catch (SQLException e
) {
684 // TODO Auto-generated catch block
691 } catch (SQLException sqlEx
) { // ignore }
698 } catch (SQLException sqlEx
) { // ignore }
705 /*****************************
713 public JToolBar
getToolbar(){
714 JToolBar jtb
= new JToolBar();
715 jtb
.setRollover(true);
717 jtb
.setOpaque(false);
719 dokubut
[5] = new JButton();
720 dokubut
[5].setIcon(SystemConfig
.hmSysIcons
.get("delete"));
721 dokubut
[5].setToolTipText("Dokumentation löschen");
722 dokubut
[5].setActionCommand("delete");
723 dokubut
[5].setEnabled(false);
724 dokubut
[5].addActionListener(this);
727 jtb
.addSeparator(new Dimension(10,0));
728 dokubut
[2] = new JButton();
729 dokubut
[2].setIcon(SystemConfig
.hmSysIcons
.get("abbruch"));
730 dokubut
[2].setToolTipText("Kompletten Vorgang abbrechen");
731 dokubut
[2].setActionCommand("Dokuabbruch");
732 dokubut
[2].addActionListener(this);
733 dokubut
[2].setEnabled(false);
736 jtb
.addSeparator(new Dimension(40,0));
738 dokubut
[0] = new JButton();
739 dokubut
[0].setIcon(SystemConfig
.hmSysIcons
.get("scanner"));
740 dokubut
[0].setToolTipText("Papierbericht einscannen");
741 dokubut
[0].setActionCommand("scannen");
742 dokubut
[0].setEnabled(false);
743 dokubut
[0].addActionListener(this);
746 jtb
.addSeparator(new Dimension(40,0));
747 dokubut
[1] = new JButton();
748 dokubut
[1].setIcon(SystemConfig
.hmSysIcons
.get("tools"));
749 dokubut
[1].setToolTipText("Scannereinstellungen ändern");
750 dokubut
[1].setActionCommand("werkzeuge");
751 dokubut
[1].addActionListener(this);
755 dokubut[1] = new JButton();
756 dokubut[1].setIcon(SystemConfig.hmSysIcons.get("tools"));
757 dokubut[1].setToolTipText("Scannereinstellungen ändern");
758 dokubut[1].setActionCommand("scanedit");
759 dokubut[1].addActionListener(this);
762 jtb.addSeparator(new Dimension(40,0));
763 dokubut[3] = new JButton();
764 dokubut[3].setIcon(SystemConfig.hmSysIcons.get("camera"));
765 dokubut[3].setToolTipText("Photo von DigiCam in Doku aufnehmen");
766 dokubut[3].setActionCommand("Digicam");
767 dokubut[3].addActionListener(this);
768 dokubut[3].setEnabled(false);
772 dokubut[4] = new JButton();
773 dokubut[4].setIcon(SystemConfig.hmSysIcons.get("openoffice26"));
774 dokubut[4].setToolTipText("OpenOffice-Dokument (Writer oder Calc) in Doku aufnehmen");
775 dokubut[4].setActionCommand("Oofiles");
776 dokubut[4].addActionListener(this);
777 dokubut[4].setEnabled(false);
788 JLabel jlab = new JLabel("Patienten-Nummer eingeben ");
789 jlab.setOpaque(false);
791 JXPanel tfp = new JXPanel(new FlowLayout(FlowLayout.LEFT));
792 tfp.setOpaque(false);
793 annika = new JRtaTextField("ZAHLEN",true);
794 annika.setPreferredSize(new Dimension(100,25));
800 dokubut
[0].setEnabled(false);
801 dokubut
[1].setEnabled(false);
802 dokubut
[2].setEnabled(false);
806 for(int i
= 0; i
< 4;i
++){
807 //dokubut[i].setEnabled(false);
817 public void macheTabelle(Vector
<?
> vec
){
821 dtblm
.setRowCount(0);
835 public void actionPerformed(ActionEvent arg0
) {
836 // TODO Auto-generated method stub
837 String cmd
= arg0
.getActionCommand();
838 if(cmd
.equals("arztbericht")){
840 }else if(cmd
.equals("scannen")){
841 if(!Rechte
.hatRecht(Rechte
.Doku_scannen
, true)){
844 if(SystemConfig
.sDokuScanner
.equals("Scanner nicht aktiviert!")){
848 if(annika.getText().trim().equals("")){
849 JOptionPane.showMessageDialog(null, "Bitte vor dem Scannen die Patientennummer eingeben");
853 if(aktPanel
.equals("leerPanel")){
854 this.setzeDokuPanelAufNull(false);
857 setzeDokuPanelAufNull(false);
858 // vollpanel.validate();
860 //System.out.println("Neustart des Scannersystems erforderlich");
863 setCursor(Reha
.thisClass
.wartenCursor
);
865 aktion
= "bildgescannt";
866 } catch (ScannerIOException e
) {
867 // TODO Auto-generated catch block
868 //System.out.println("***************Fehler beim scannen*******************");
869 setCursor(Reha
.thisClass
.normalCursor
);
874 }else if(cmd
.equals("scanedit")){
875 if(!Rechte
.hatRecht(Rechte
.Doku_scannen
, true)){
878 Point pt
= ((JComponent
)arg0
.getSource()).getLocationOnScreen();
879 final Point ptx
= pt
;
880 new SwingWorker
<Void
,Void
>(){
882 protected Void
doInBackground() throws Exception
{
883 ScannerUtil su
= new ScannerUtil(new Point(ptx
.x
,ptx
.y
+32));
888 } catch (InterruptedException e
) {
899 }else if(cmd
.equals("Dokusave")){
900 //rehaSplash = new RehaSplash(null,"Erstelle Dokumentation");
901 //rehaSplash.setVisible(true);
902 String value
= (String
)JOptionPane
.showInputDialog(null,
903 "Bitte einen Titel für die Dokumentation eingeben\n\n", "Benutzereingabe erforderlich....", JOptionPane
.PLAIN_MESSAGE
, null,
904 null, "Eingescannte Therapeuten-Doku");
905 if( (value
== null) || (value
.length()==0)){
906 JOptionPane
.showMessageDialog(null, "Kein Titel - kein speichern. Ganz einfach!!");
910 if(annika.getText().trim().equals("")){
911 JOptionPane.showMessageDialog(null, "Ohne Patientennummer kann nicht gespeichert werden");
917 //rehaSplash.dispose();
920 }else if(cmd
.equals("Dokudelete")){
921 if(!Rechte
.hatRecht(Rechte
.Doku_scannen
, true)){
926 }else if(cmd
.equals("Dokuabbruch")){
929 }else if(cmd
.equals("Digicam")){
931 new SwingWorker
<Void
,Void
>(){
933 protected Void
doInBackground() throws Exception
{
939 }else if(cmd
.equals("delete")){
940 if(!Rechte
.hatRecht(Rechte
.Doku_delete
, true)){
943 new SwingWorker
<Void
,Void
>(){
945 protected Void
doInBackground() throws Exception
{
946 int row
= tabdokus
.getSelectedRow();
949 String sdokuid
= (String
)tabdokus
.getValueAt(row
, 0);
950 int frage
= JOptionPane
.showConfirmDialog(null, "Soll die Dokumentation mit der ID-"+sdokuid
+" wirklich gelöscht werden?","Achtung wichtige Benutzeranfrage",JOptionPane
.YES_NO_OPTION
);
951 if(frage
== JOptionPane
.NO_OPTION
){
954 String scmd
= "delete from doku1 where dokuid='"+sdokuid
+"'";
955 new ExUndHop().setzeStatement(scmd
);
956 TableTool
.loescheRow(tabdokus
, row
);
957 if(tabdokus
.getRowCount()==0){
958 if(plusminus
!= null){
961 setzeDokuPanelAufNull(true);
962 dokubut
[5].setEnabled(false);
965 Reha
.thisClass
.patpanel
.getTab().setTitleAt(3,macheHtmlTitel(tabdokus
.getRowCount(),"Dokumentation"));
966 }catch(Exception extiming
){
967 System
.out
.println("Timingprobleme beim setzen des Reitertitels - Reiter: Dokumentation");
973 }else if(cmd
.equals("Oofiles")){
974 setCursor(Reha
.thisClass
.wartenCursor
);
976 setCursor(Reha
.thisClass
.normalCursor
);
977 new SwingWorker
<Void
,Void
>(){
979 protected Void
doInBackground() throws Exception
{
985 }else if(cmd
.equals("werkzeuge")){
986 new ToolsDlgDokumentation("",dokubut
[1].getLocationOnScreen());
989 private void doScanEdit(Point pt
){
990 final Point ptx
= pt
;
991 new SwingWorker
<Void
,Void
>(){
993 protected Void
doInBackground() throws Exception
{
994 ScannerUtil su
= new ScannerUtil(new Point(ptx
.x
,ptx
.y
+32));
999 } catch (InterruptedException e
) {
1000 e
.printStackTrace();
1009 private void doHolePhoto(){
1012 private void doHoleOO(){
1013 setCursor(Reha
.thisClass
.wartenCursor
);
1015 setCursor(Reha
.thisClass
.normalCursor
);
1017 private void ladeOoDocs(){
1018 String
[] bild
= oeffneBild(new String
[] {"odt","ods","???"},false);
1019 if(bild
.length
> 0){
1020 String bildpfad
= bild
[1].replaceAll("\\\\", "/");
1021 if( (bildpfad
.toLowerCase().endsWith(".odt")) ||
1022 (bildpfad
.toLowerCase().endsWith(".ods")) ){
1024 Reha
.thisClass
.patpanel
.dokumentation
.setCursor(Reha
.thisClass
.wartenCursor
);
1025 FileTools
.copyFile(new File(bildpfad
), new File(SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+bild
[0]), 4096*4, true);
1026 File f
= new File(SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+bild
[0]);
1028 int dokuid
= SqlInfo
.erzeugeNummer("doku");
1029 int pat_int
= Integer
.valueOf(Reha
.thisClass
.patpanel
.aktPatID
); //Integer.valueOf(annika.getText().trim());
1035 SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+bild
[0],
1036 (bildpfad
.toLowerCase().endsWith(".odt") ?
1 : 2),
1037 new String
[] {DatFunk
.sDatInSQL(DatFunk
.sHeute()),bild
[0],Reha
.aktUser
,""},
1040 this.holeDokus(Reha
.thisClass
.patpanel
.aktPatID
,Integer
.toString(dokuid
));
1041 setCursor(Reha
.thisClass
.normalCursor
);
1044 } catch (IOException e
) {
1045 // TODO Auto-generated catch block
1046 e
.printStackTrace();
1047 } catch (Exception e
) {
1048 // TODO Auto-generated catch block
1049 e
.printStackTrace();
1053 JOptionPane
.showMessageDialog(null,"Es werden ausschliesslich OpenOffice Writer und Calc Dateien unterstützt");
1059 private void ladeJpeg(){
1060 String
[] bild
= oeffneBild(new String
[] {"jpg","xxx","xxx"},true);
1061 if(bild
.length
> 0){
1062 //System.out.println(bild[0]);
1063 //System.out.println(bild[1].replaceAll("\\\\", "/"));
1064 String bildpfad
= bild
[1].replaceAll("\\\\", "/");
1065 if(! bildpfad
.toLowerCase().endsWith(".jpg")){
1066 JOptionPane
.showMessageDialog(null,"Es werden ausschliesslich JPEG Bilder unterstützt");
1069 if(aktPanel
.equals("leerPanel")){
1070 this.setzeDokuPanelAufNull(false);
1073 //BufferedImage img = null;
1075 setCursor(Reha
.thisClass
.wartenCursor
);
1076 commonName
= Long
.toString(System
.currentTimeMillis());
1077 String fname
= "scan"+commonName
+".jpg";
1080 img = ImageIO.read(new File( bildpfad));
1083 img2 = img.getScaledInstance(50, 65, Image.SCALE_FAST);
1088 img2
= Toolkit
.getDefaultToolkit()
1089 .getImage(bildpfad
).getScaledInstance(50, 65, Image
.SCALE_FAST
);
1090 MediaTracker mediaTracker
= new MediaTracker(this);
1091 mediaTracker
.addImage(img2
, 0);
1092 mediaTracker
.waitForID(0);
1093 } catch (Exception ie
) {
1097 FileTools
.copyFile(new File(bildpfad
), new File(SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+fname
), 4096*5, false);
1099 //final String pfad = bild[1];
1103 quelle
= "bildgeladen";
1104 //vecBilderAktion.add("jpggeladen");
1105 aktion
= "bildgeladen";
1106 zeigeBilder(img2
,SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+fname
,commonName
);
1112 Runtime r
= Runtime
.getRuntime();
1115 //System.out.println("Freier Speicher "+freeMem);
1116 setCursor(Reha
.thisClass
.normalCursor
);
1118 } catch (IOException e
) {
1119 // TODO Auto-generated catch block
1120 setCursor(Reha
.thisClass
.normalCursor
);
1121 e
.printStackTrace();
1122 } catch (OutOfMemoryError ome
) {
1123 setCursor(Reha
.thisClass
.normalCursor
);
1124 String cmd
= "Die Bilder sind (zusammen) zu groß für Arbeitsspeicher.\nSpeichern Sie jedes Bild einzeln als Dokumentation";
1125 JOptionPane
.showMessageDialog(null, cmd
);
1126 //System.err.println("Bild zu gro� f�r Arbeitsspeicher.\nSpeichern Sie nur dieses Bild in einer eigenen Dokumentation");
1130 private String
[] oeffneBild(String
[] pattern
,boolean mitVorschau
){
1132 JFileChooser chooser
= new JFileChooser("Verzeichnis wählen");
1133 chooser
.setDialogType(JFileChooser
.OPEN_DIALOG
);
1134 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1136 chooser
.setAccessory(new MyAccessory(chooser
));
1139 final String
[] xpattern
= pattern
;
1140 chooser
.addChoosableFileFilter(new FileFilter() {
1141 public boolean accept(File f
) {
1142 if (f
.isDirectory()) return true;
1143 if(f
.getName().toLowerCase().endsWith(xpattern
[0]) || f
.getName().toLowerCase().endsWith(xpattern
[1])||
1144 f
.getName().toLowerCase().endsWith(xpattern
[2]) ){
1149 //return f.getName().toLowerCase().endsWith(xpattern);
1151 public String
getDescription () { return ""; }
1157 file
= new File(Reha
.proghome
);
1159 file
= new File(lastPath
);
1162 chooser
.setCurrentDirectory(file
);
1163 PropertyChangeListener pl
= new PropertyChangeListener() {
1164 public void propertyChange(PropertyChangeEvent e
) {
1165 if (e
.getPropertyName().equals(JFileChooser
.SELECTED_FILE_CHANGED_PROPERTY
)
1166 || e
.getPropertyName().equals(JFileChooser
.DIRECTORY_CHANGED_PROPERTY
)) {
1167 @SuppressWarnings("unused")
1168 final File f
= (File
) e
.getNewValue();
1172 chooser
.addPropertyChangeListener(pl
);
1173 chooser
.setVisible(true);
1174 setCursor(Reha
.thisClass
.normalCursor
);
1175 final int result
= chooser
.showOpenDialog(null);
1177 if (result
== JFileChooser
.APPROVE_OPTION
) {
1178 File inputVerzFile
= chooser
.getSelectedFile();
1179 String inputVerzStr
= inputVerzFile
.getPath();
1182 if(inputVerzFile
.getName().trim().equals("")){
1183 sret
= new String
[] {};
1185 Reha
.thisClass
.patpanel
.dokumentation
.setCursor(Reha
.thisClass
.wartenCursor
);
1186 sret
= new String
[] {inputVerzFile
.getName().trim(),inputVerzStr
};
1187 lastPath
= inputVerzFile
.getAbsolutePath();
1190 sret
= new String
[] {}; //vorlagenname.setText(SystemConfig.oTerminListe.NameTemplate);
1192 chooser
.setVisible(false);
1193 chooser
.removePropertyChangeListener(pl
);
1194 chooser
.removeAll();
1200 private void doDokudelete(){
1201 if(this.aktivesBild
<= 0){
1202 JOptionPane
.showMessageDialog(null, "Es wurde keine Seite zum Löschen ausgewählt");
1205 if(vecBilderPfad
.size()==1){
1209 bilderPan
.remove(Labels
.get(aktivesBild
-1));
1210 vecBilderPfad
.removeElementAt(aktivesBild
-1);
1211 vecBilderPfad
.trimToSize();
1212 vecPdfPfad
.removeElementAt(aktivesBild
-1);
1213 vecPdfPfad
.trimToSize();
1215 vecBilderFormat
.removeElementAt(aktivesBild
-1);
1216 vecBilderFormat
.trimToSize();
1217 vecBilderAktion
.removeElementAt(aktivesBild
-1);
1218 vecBilderAktion
.trimToSize();
1219 Labels
.removeElementAt(aktivesBild
-1);
1220 Labels
.trimToSize();
1222 for(int i
= 0;i
< Labels
.size();i
++){
1223 Labels
.get(i
).setText("Seite-"+(i
+1));
1224 Labels
.get(i
).setName("Label-"+(i
+1));
1226 bilderPan
.validate();
1227 bilderPan
.repaint();
1230 private Rectangle
getLowagieForm(String format
){
1231 Rectangle
[] rec
= {PageSize
.A6
,PageSize
.A6
.rotate(),
1232 PageSize
.A5
,PageSize
.A5
.rotate(),PageSize
.A4
,PageSize
.A4
.rotate(),null};
1233 String
[] forms
={"Din A6","Din A6-quer","Din A5","Din A5-quer","Din A4","Din A4-quer","angepasst"};
1234 for(int i
= 0;i
< forms
.length
;i
++){
1235 if(forms
[i
].equals(format
)){
1242 /******************************************/
1243 private void doDokusave(String dokuTitel
){
1244 dokubut
[0].setEnabled(false);
1245 dokubut
[1].setEnabled(false);
1246 setCursor(Reha
.thisClass
.wartenCursor
);
1247 Document document
= null;
1248 FileOutputStream fout
= null;
1249 for(int i
= 0;i
<vecBilderPfad
.size();i
++){
1250 //rehaSplash.setNewText("Erstelle Dokuseite "+(i+1));
1251 //System.out.println("Sende Seitengröße an Funktion "+vecBilderFormat.get(i));
1252 Rectangle format
= null;
1254 com
.lowagie
.text
.Image jpg2
= com
.lowagie
.text
.Image
.getInstance(vecBilderPfad
.get(i
));
1255 if(((String
)vecBilderAktion
.get(i
)).equals("scanner")){
1256 format
= getLowagieForm(vecBilderFormat
.get(i
));
1257 }else if(((String
)vecBilderAktion
.get(i
)).equals("bildgeladen")){
1258 if(jpg2
.getPlainWidth() > jpg2
.getPlainHeight()){
1259 format
= new Rectangle(PageSize
.A4
.rotate());
1261 format
= new Rectangle(PageSize
.A4
);
1266 format
= new Rectangle(jpg2
.getPlainWidth(),jpg2
.getPlainHeight());
1268 //System.out.println("Das Format = "+format);
1269 document
= new Document();
1270 document
.setPageSize(format
);
1271 document
.setMargins(0.0f
, 0.0f
, 0.0f
, 0.0f
);
1272 fout
= new FileOutputStream(SystemConfig
.hmVerzeichnisse
.get("Temp")+"/pdfDokuSeite"+(i
+1)+".pdf");
1273 PdfWriter writer
= PdfWriter
.getInstance(document
, fout
);
1276 if(((String
)vecBilderAktion
.get(i
)).equals("scanner")){
1277 jpg2
.scaleAbsoluteHeight(document
.getPageSize().getHeight());
1278 jpg2
.scaleAbsoluteWidth(document
.getPageSize().getWidth());
1280 }else if(((String
)vecBilderAktion
.get(i
)).equals("bildgeladen")){
1281 jpg2
.scaleAbsoluteHeight(document
.getPageSize().getHeight());
1282 jpg2
.scaleAbsoluteWidth(document
.getPageSize().getWidth());
1292 } catch (FileNotFoundException e
) {
1293 // TODO Auto-generated catch block
1294 e
.printStackTrace();
1295 } catch (DocumentException e
) {
1296 // TODO Auto-generated catch block
1297 e
.printStackTrace();
1298 } catch (MalformedURLException e
) {
1299 // TODO Auto-generated catch block
1300 e
.printStackTrace();
1301 } catch (IOException e
) {
1302 // TODO Auto-generated catch block
1303 e
.printStackTrace();
1304 } catch (InterruptedException e
) {
1305 // TODO Auto-generated catch block
1306 e
.printStackTrace();
1310 PdfReader reader
= null;
1311 PdfCopy copy
= null;
1312 for(int i
= 0;i
<vecBilderPfad
.size();i
++){
1313 //rehaSplash.setNewText("Seiten zusammenf�hren - Seite"+(i+1)+" von "+vecBilderPfad.size());
1314 //Rectangle format = getLowagieForm(vecBilderFormat.get(i)); // vorher eingeschaltet....
1315 //System.out.println("Das Format = "+format);
1318 reader
= new PdfReader(SystemConfig
.hmVerzeichnisse
.get("Temp")+"/pdfDokuSeite"+(i
+1)+".pdf");
1320 document
= new Document(reader
.getPageSizeWithRotation(1));
1321 copy
= new PdfCopy(document
,
1322 new FileOutputStream(SystemConfig
.hmVerzeichnisse
.get("Temp")+"/FertigeDoku.pdf"));
1325 copy
.addPage(copy
.getImportedPage(reader
,1));
1327 } catch (IOException e
) {
1328 // TODO Auto-generated catch block
1329 e
.printStackTrace();
1330 } catch (DocumentException e
) {
1331 // TODO Auto-generated catch block
1332 e
.printStackTrace();
1344 ps.setBytes(1, //dokuid - integer
1345 ps.setBytes(2, //datum - date
1346 ps.setBytes(3, //dokutitel - longtext
1347 ps.setBytes(4, //benutzer - zeichen
1348 ps.setBytes(5, //pat_intern - integer
1349 ps.setBytes(6, //format - integer
1350 ps.setBytes(7, //dokutext - longtext
1351 ps.setBytes(8, //dokublob - longblog /bin�r
1352 public static void doSpeichernDoku(
1360 //System.out.println("Beginne speichern");
1361 //rehaSplash.setNewText("Dokumentation auf Server transferieren");
1362 int dokuid
= SqlInfo
.erzeugeNummer("doku");
1363 int pat_int
= Integer
.valueOf(Reha
.thisClass
.patpanel
.aktPatID
); //Integer.valueOf(annika.getText().trim());
1369 SystemConfig
.hmVerzeichnisse
.get("Temp")+"/FertigeDoku.pdf",
1371 new String
[] {DatFunk
.sDatInSQL(DatFunk
.sHeute()),dokuTitel
,Reha
.aktUser
,""},
1375 dokubut
[0].setEnabled(true);
1376 dokubut
[1].setEnabled(true);
1377 this.holeDokus(Reha
.thisClass
.patpanel
.aktPatID
,Integer
.toString(dokuid
));
1378 setCursor(Reha
.thisClass
.normalCursor
);
1379 JOptionPane
.showMessageDialog(null,"Dokumentation wurde gespeichert für Patient-Nr.: "+pat_int
);
1380 //annika.setText("");
1381 //annika.requestFocus();
1383 } catch (Exception e
) {
1385 dokubut
[0].setEnabled(true);
1386 dokubut
[1].setEnabled(true);
1387 //this.holeDokus(Reha.thisClass.patpanel.aktPatID,Integer.valueOf(dokuid).toString());
1388 setCursor(Reha
.thisClass
.normalCursor
);
1389 JOptionPane
.showMessageDialog(null,"Fehler beim Speichern der Dokumentation \nDoku wurde nicht gespeichert");
1390 //annika.setText("");
1391 //annika.requestFocus();
1392 e
.printStackTrace();
1394 ////System.out.println("Fertig mit speichern");
1396 private void loescheBilderPan(){
1397 //System.out.println(FileTools.delFileWithSuffixAndPraefix(new File(SystemConfig.hmVerzeichnisse.get("Temp")), "scan",".jpg"));
1398 //System.out.println(FileTools.delFileWithSuffixAndPraefix(new File(SystemConfig.hmVerzeichnisse.get("Temp")), "pdf",".pdf"));
1399 for(int i
= 0 ; i
< Labels
.size(); i
++){
1400 bilderPan
.remove(Labels
.get(i
));
1401 Labels
.get(i
).setVisible(false);
1403 bilderPan
.remove(plusminus
);
1404 plusminus
.setVisible(false);
1407 vecBilderPfad
.clear();
1409 vecBilderFormat
.clear();
1410 vecBilderAktion
.clear();
1412 if(scanner
!= null){
1413 scanner
.removeListener(this);
1417 for(int i
= 0 ; i
< Labels
.size(); i
++){
1420 dokubut
[2].setEnabled(false);
1421 bilderPan
.validate();
1422 bilderPan
.repaint();
1425 if(this.dtblm
.getRowCount()==0){
1426 this.setzeDokuPanelAufNull(true);
1430 private void updateInfoLab(){
1433 } catch (InterruptedException e1
) {
1434 // TODO Auto-generated catch block
1435 e1
.printStackTrace();
1437 if(!infolab
[0].getText().equals(SystemConfig
.sDokuScanner
)){
1438 //System.out.println("Dokuscanner = "+SystemConfig.sDokuScanner);
1443 scanner
.select(SystemConfig
.sDokuScanner
);
1446 } catch (ScannerIOException e
) {
1447 e
.printStackTrace();
1449 infolab
[0].setText(SystemConfig
.sDokuScanner
);
1451 infolab
[1].setText(SystemConfig
.hmDokuScanner
.get("farben"));
1452 infolab
[2].setText(SystemConfig
.hmDokuScanner
.get("aufloesung")+"dpi");
1453 infolab
[3].setText(SystemConfig
.hmDokuScanner
.get("seiten"));
1454 infolab
[4].setText( (SystemConfig
.hmDokuScanner
.get("dialog").equals("1") ?
"ja" : "nein"));
1455 bilderPan
.validate();
1457 if(!infolabLeer
[0].getText().equals(SystemConfig
.sDokuScanner
)){
1459 scanner
.select(SystemConfig
.sDokuScanner
);
1460 } catch (ScannerIOException e
) {
1461 e
.printStackTrace();
1463 infolabLeer
[0].setText(SystemConfig
.sDokuScanner
);
1465 infolabLeer
[1].setText(SystemConfig
.hmDokuScanner
.get("farben"));
1466 infolabLeer
[2].setText(SystemConfig
.hmDokuScanner
.get("aufloesung")+"dpi");
1467 infolabLeer
[3].setText(SystemConfig
.hmDokuScanner
.get("seiten"));
1468 infolabLeer
[4].setText( (SystemConfig
.hmDokuScanner
.get("dialog").equals("1") ?
"ja" : "nein"));
1469 leerInfo
.validate();
1474 public void tableChanged(TableModelEvent arg0
) {
1475 // TODO Auto-generated method stub
1479 public void propertyChange(PropertyChangeEvent arg0
) {
1480 // TODO Auto-generated method stub
1484 void setRezeptDaten(){
1485 int row = this.tabdokus.getSelectedRow();
1487 final int xrow = row;
1488 SwingUtilities.invokeLater(new Runnable(){
1490 String reznr = (String)tabdokus.getValueAt(xrow,0);
1491 String id = (String)tabdokus.getValueAt(xrow,6);
1492 //jpan1.setRezeptDaten(reznr,id);
1493 //System.out.println("Aus Bericht....."+reznr+"....."+id);
1500 /**************************************************
1504 public void scanStarten(){
1506 SystemConfig
.sDokuScanner
.equals("") ){
1507 //System.out.println("Scanner = null");
1510 if(scanner
== null){
1511 scanner
= Scanner
.getDevice();
1515 String
[] names
= scanner
.getDeviceNames();
1516 for(int i
= 0; i
< names
.length
;i
++){
1517 if(names
[i
].equals(SystemConfig
.sDokuScanner
)){
1518 deviceinstalled
= true;
1521 if(deviceinstalled
){
1522 scanner
.select(SystemConfig
.sDokuScanner
);
1524 if(infolab
[0] != null){
1525 infolab
[0].setText(scanner
.getSelectedDeviceName());
1528 } catch (ScannerIOException e2
) {
1529 e2
.printStackTrace();
1532 scanner
.addListener( this);
1535 private Double
[] getDims(String seite
){
1536 List
<String
> list
= Arrays
.asList( new String
[] {"Din A6","Din A6-quer","Din A5","Din A5-quer","Din A4","Din A4-quer","angepasst"});
1537 //String[] dims = new String[] {"Din A6","Din A6-quer","Din A5","Din A5-quer","Din A4","Din A4-quer"};
1538 Double
[][] d
= new Double
[][] {{4.23,5.82},{4.23,5.82},{5.82,8.26},{5.82,8.26},{8.26,11.69},{8.26,11.69},{8.26,11.69}};
1539 Double
[] ret
= {8.26,11.69};
1540 ret
= d
[list
.indexOf(seite
)].clone();
1544 public void update( ScannerIOMetadata
.Type type
, ScannerIOMetadata metadata
) {
1546 /*****************************************************/
1547 if ( ScannerIOMetadata
.NEGOTIATE
.equals(type
)){
1548 ScannerDevice device
=metadata
.getDevice();
1549 if(metadata
instanceof TwainIOMetadata
){
1550 Double
[] setDim
= getDims(SystemConfig
.hmDokuScanner
.get("seiten"));
1551 TwainSource source
= ((TwainIOMetadata
)metadata
).getSource();
1553 int dpi
= Integer
.valueOf(SystemConfig
.hmDokuScanner
.get("aufloesung"));
1554 source
.getCapability(TwainConstants
.ICAP_UNITS
,TwainConstants
.MSG_GETCURRENT
).setCurrentValue(TwainConstants
.TWUN_INCHES
);
1555 source
.getCapability(TwainConstants
.ICAP_XRESOLUTION
,TwainConstants
.MSG_GETCURRENT
).setCurrentValue(dpi
);
1556 source
.getCapability(TwainConstants
.ICAP_YRESOLUTION
,TwainConstants
.MSG_GETCURRENT
).setCurrentValue(dpi
);
1558 if(SystemConfig
.hmDokuScanner
.get("farben").equals("Schwarz/Weiß")){
1559 source
.getCapability(TwainConstants
.ICAP_PIXELTYPE
).setCurrentValue(TwainConstants
.TWPT_BW
);
1560 }else if(SystemConfig
.hmDokuScanner
.get("farben").equals("Graustufen")){
1561 source
.getCapability(TwainConstants
.ICAP_PIXELTYPE
).setCurrentValue(TwainConstants
.TWPT_GRAY
);
1563 SystemConfig
.hmDokuScanner
.get("farben").equals("Farbe");
1564 source
.getCapability(TwainConstants
.ICAP_PIXELTYPE
).setCurrentValue(TwainConstants
.TWPT_RGB
);
1567 TwainImageLayout imageLayout
=new TwainImageLayout(source
);
1569 imageLayout
.setLeft(0.0);
1570 imageLayout
.setTop(0.0);
1571 imageLayout
.setRight(setDim
[0]);
1572 imageLayout
.setBottom(setDim
[1]);
1575 device
.setShowUserInterface((SystemConfig
.hmDokuScanner
.get("dialog").equals("1") ?
true :false) );
1576 device
.setShowProgressBar(true);
1577 setCursor(Reha
.thisClass
.normalCursor
);
1578 }catch(Exception e
){
1579 //System.out.println("3\b"+getClass().getName()+".update:\n\tCannot retrieve image information.\n\t"+e);
1582 /*****************************************************/
1583 }else if ( ScannerIOMetadata
.STATECHANGE
.equals(type
)){
1584 if(metadata
.isFinished()){
1585 if(metadata
.getImage() != null){
1586 metadata
.setImage(null);
1587 Runtime r
= Runtime
.getRuntime();
1590 //System.out.println("Freier Speicher "+freeMem);
1591 //System.out.println("finished und nicht null = "+metadata.getStateStr());
1593 //System.out.println("finished aber null = "+metadata.getStateStr());
1594 Runtime r
= Runtime
.getRuntime();
1598 //System.out.println("Scanvorgang wurde beendet");
1599 setCursor(Reha
.thisClass
.normalCursor
);
1601 //System.out.println("nicht finished = "+metadata.getStateStr());
1604 /*****************************************************/
1605 }else if ( type
.equals(ScannerIOMetadata
.EXCEPTION
)){
1606 //System.out.println("Exception in EXEPTION");
1607 if(!metadata
.getException().getMessage().contains("Failed during call to twain source")){
1608 JOptionPane
.showMessageDialog(null,"Bezug des Scans fehlgeschlagen.\nVersuchen Sie es mit einer niedrigeren Auflösung\n\n"+
1609 "Ideale Auflösung für Dokumentation: 150dpi");
1612 scanner
.removeListener(this);
1614 Runtime r
= Runtime
.getRuntime();
1616 setCursor(Reha
.thisClass
.normalCursor
);
1617 /*****************************************************/
1618 }else if ( ScannerIOMetadata
.ACQUIRED
.equals( type
)){
1619 //System.out.println("ACUIRED");
1620 //System.out.println(metadata.getStateStr());
1621 if(metadata
.getStateStr().contains("Transferring Data")){
1622 setCursor(Reha
.thisClass
.wartenCursor
);
1623 if(metadata
.getImage() != null){
1624 commonName
= Long
.toString(System
.currentTimeMillis());
1625 String fname
= "scan"+commonName
+".jpg";
1627 File file
= new File(SystemConfig
.hmVerzeichnisse
.get("Temp"),fname
);
1629 ImageIO
.write( metadata
.getImage(),
1633 //System.out.println("Fertig mit Image schreiben");
1634 final Image img
= metadata
.getImage().getScaledInstance(50, 65,Image
.SCALE_SMOOTH
);
1635 final String pfad
= file
.getAbsolutePath();
1638 zeigeBilder(img
,pfad
,commonName
);
1641 } catch (IOException e
) {
1642 //System.out.println("Exception in Statechange - ACOUIRED");
1643 e
.printStackTrace();
1646 //System.out.println("ImageDate = null");
1648 setCursor(Reha
.thisClass
.normalCursor
);
1653 /**************************************************
1657 public void zeigeBilder(Image imgx
,String datei
,String commonname
){
1661 String name
= "Bildnummer-"+bildnummer
;
1663 if(SystemConfig
.hmDokuScanner
.get("seiten").contains("quer")){
1664 BufferedImage bimage
= new BufferedImage(img
.getWidth(null), img
.getHeight(null), BufferedImage
.TYPE_INT_RGB
);
1665 Graphics g
= bimage
.createGraphics();
1666 g
.drawImage(img
, 0, 0, null);
1668 img
= GrafikTools
.rotate90DX(bimage
).getScaledInstance(img
.getWidth(null), img
.getHeight(null), Image
.SCALE_SMOOTH
);
1670 ImageIcon icon
= new ImageIcon(img
);
1673 JLabel lab
= new JLabel("Seite-"+(vecBilderPfad
.size()+1));
1674 lab
.setBorder(BorderFactory
.createLineBorder(Color
.BLACK
));
1676 lab
.addMouseListener(mlist
);
1678 lab
.setToolTipText("Doppelklick um "+lab
.getText()+" zu öffnen");
1679 lab
.setHorizontalTextPosition(JLabel
.CENTER
);
1680 lab
.setVerticalTextPosition(JLabel
.BOTTOM
);
1683 vecBilderPfad
.add(datei
);
1684 vecBilderFormat
.add(infolabLeer
[3].getText());
1685 vecBilderAktion
.add(quelle
);
1686 String pdfPfad
= "pdf"+commonname
+".pdf";
1687 vecPdfPfad
.add(pdfPfad
);
1688 if(vecBilderPfad
.size()==1){
1689 bilderPan
.add(setzePlusMinus());
1690 dokubut
[2].setEnabled(true);
1691 pmbut
[0].setEnabled(true);
1692 pmbut
[2].setEnabled(false);
1693 pmbut
[3].setEnabled(false);
1694 bilderPan
.validate();
1695 }else if(vecBilderPfad
.size() >1 ){
1696 pmbut
[0].setEnabled(true);
1697 pmbut
[2].setEnabled(false);
1698 pmbut
[3].setEnabled(false);
1702 bilderPan
.validate();
1704 /*********************
1709 public void pdfZeigen(int seite
){
1711 setCursor(Reha
.thisClass
.wartenCursor
);
1713 Document document
= null;
1714 String datname
= "";
1715 //System.out.println("Sende Seitengröße an Funktion "+vecBilderFormat.get(seite));
1716 //Rectangle format = PageSize.A4.rotate();
1717 Rectangle format
= null;
1718 if(((String
)vecBilderAktion
.get(seite
)).equals("scanner")){
1719 format
= getLowagieForm(vecBilderFormat
.get(seite
));
1720 }else if(((String
)vecBilderAktion
.get(seite
)).equals("bildgeladen")){
1725 com
.lowagie
.text
.Image jpg2
= com
.lowagie
.text
.Image
.getInstance(vecBilderPfad
.get(seite
));
1726 if(((String
)vecBilderAktion
.get(seite
)).equals("scanner")){
1727 format
= getLowagieForm(vecBilderFormat
.get(seite
));
1728 }else if(((String
)vecBilderAktion
.get(seite
)).equals("bildgeladen")){
1729 if(jpg2
.getPlainWidth() > jpg2
.getPlainHeight()){
1730 format
= new Rectangle(PageSize
.A4
.rotate());
1732 format
= new Rectangle(PageSize
.A4
);
1734 //format = new Rectangle(jpg2.getPlainWidth(),jpg2.getPlainHeight());
1740 //System.out.println("Das Format = "+format);
1741 document
= new Document();
1742 document
.setPageSize(format
);
1743 document
.setMargins(0.0f
, 0.0f
, 0.0f
, 0.0f
);
1744 datname
= SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+vecPdfPfad
.get(seite
);
1745 FileOutputStream fout
= new FileOutputStream(datname
);
1746 PdfWriter writer
= PdfWriter
.getInstance(document
, fout
);
1748 //System.out.println("Die aktion = "+((String)vecBilderAktion.get(seite)) );
1749 if(((String
)vecBilderAktion
.get(seite
)).equals("scanner")){
1750 jpg2
.scaleAbsoluteHeight(document
.getPageSize().getHeight());
1751 jpg2
.scaleAbsoluteWidth(document
.getPageSize().getWidth());
1753 }else if(((String
)vecBilderAktion
.get(seite
)).equals("bildgeladen")){
1755 //document.setPageSize(new Rectangle(jpg2.getScaledWidth(),jpg2.getScaledHeight()));
1757 //writer.setPageSize(document.getPageSize());
1759 //jpg2.scalePercent(0.25f);
1760 jpg2
.scaleAbsoluteHeight(document
.getPageSize().getHeight());
1761 jpg2
.scaleAbsoluteWidth(document
.getPageSize().getWidth());
1772 } catch (FileNotFoundException e
) {
1773 // TODO Auto-generated catch block
1774 e
.printStackTrace();
1775 } catch (DocumentException e
) {
1776 // TODO Auto-generated catch block
1777 e
.printStackTrace();
1778 } catch (MalformedURLException e
) {
1779 // TODO Auto-generated catch block
1780 e
.printStackTrace();
1781 } catch (IOException e
) {
1782 // TODO Auto-generated catch block
1783 e
.printStackTrace();
1784 } catch (InterruptedException e
) {
1785 // TODO Auto-generated catch block
1786 e
.printStackTrace();
1790 /***************************/
1792 File file
= new File(SystemConfig
.hmFremdProgs
.get("AcrobatReader"));
1794 JOptionPane
.showMessageDialog(null, "Der Pfad zu Ihrem Adobe-Acrobatreader ist nicht korrekt konfiguriert");
1797 //final String xdatname = datname;
1799 new SwingWorker<Void,Void>(){
1801 protected Void doInBackground() throws Exception {
1802 Process process = new ProcessBuilder(SystemConfig.hmFremdProgs.get("AcrobatReader"),"",xdatname).start();
1803 InputStream is = process.getInputStream();
1804 InputStreamReader isr = new InputStreamReader(is);
1805 BufferedReader br = new BufferedReader(isr);
1807 while ((line = br.readLine()) != null) {
1808 //System.out.println(line);
1820 setCursor(Reha
.thisClass
.normalCursor
);
1825 public JXPanel
setzePlusMinus(){
1826 plusminus
= new JXPanel();
1827 FormLayout lay
= new FormLayout("p","p,p,p");
1828 CellConstraints cc
= new CellConstraints();
1829 plusminus
.setLayout(lay
);
1830 plusminus
.setOpaque(false);
1832 JToolBar jtbpm
= new JToolBar();
1833 jtbpm
.setRollover(true);
1834 jtbpm
.setBorder(null);
1835 jtbpm
.setOpaque(false);
1837 pmbut
[0] = new JButton();
1838 pmbut
[0].setIcon(SystemConfig
.hmSysIcons
.get("delete"));
1839 pmbut
[0].setToolTipText("Aktive Dokuseite löschen");
1840 pmbut
[0].setActionCommand("Dokudelete");
1841 pmbut
[0].addActionListener(this);
1842 jtbpm
.add(pmbut
[0]);
1844 pmbut
[1] = new JButton();
1845 pmbut
[1].setIcon(SystemConfig
.hmSysIcons
.get("save"));
1846 pmbut
[1].setToolTipText("Seiten zusammenführen und Dokumentation erstellen");
1847 pmbut
[1].setActionCommand("Dokusave");
1848 pmbut
[1].addActionListener(this);
1849 jtbpm
.add(pmbut
[1]);
1851 jtbpm
.addSeparator(new Dimension(15,0));
1852 plusminus
.add(jtbpm
,cc
.xy(1,1));
1854 jtbpm
= new JToolBar();
1855 jtbpm
.setRollover(true);
1856 jtbpm
.setBorder(null);
1857 jtbpm
.setOpaque(false);
1859 pmbut
[2] = new JButton();
1860 pmbut
[2].setIcon(SystemConfig
.hmSysIcons
.get("links"));
1861 pmbut
[2].setToolTipText("Seiten nach links verschieben");
1862 pmbut
[2].setActionCommand("Dokulinks");
1863 pmbut
[2].addActionListener(this);
1864 pmbut
[2].setEnabled(false);
1865 jtbpm
.add(pmbut
[2]);
1867 pmbut
[3] = new JButton();
1868 pmbut
[3].setIcon(SystemConfig
.hmSysIcons
.get("rechts"));
1869 pmbut
[3].setToolTipText("Seiten nach rechts verschieben");
1870 pmbut
[3].setActionCommand("Dokurechts");
1871 pmbut
[3].addActionListener(this);
1872 pmbut
[3].setEnabled(false);
1873 jtbpm
.add(pmbut
[3]);
1874 plusminus
.add(jtbpm
,cc
.xy(1,2));
1879 public void setzeListener(){
1880 mlist
= new MouseListener(){
1883 public void mousePressed(MouseEvent arg0
) {
1884 if(arg0
.getClickCount()==2){
1885 //System.out.println("LabeName = "+((JComponent)arg0.getSource()).getName());
1886 int seite
= Integer
.valueOf( ((JComponent
)arg0
.getSource()).getName().split("-")[1] );
1889 String grafik
= SystemConfig
.hmFremdProgs
.get("GrafikProg").trim();
1890 if(((String
)vecBilderAktion
.get(seite
-1)).equals("scanner") || grafik
.equals("")){
1892 file
= new File(SystemConfig
.hmFremdProgs
.get("AcrobatReader"));
1894 JOptionPane
.showMessageDialog(null, "Der Pfad zu Ihrem Adobe-Acrobatreader ist nicht korrekt konfiguriert");
1897 datei
= SystemConfig
.hmVerzeichnisse
.get("Temp")+"/"+vecPdfPfad
.get(aktivesBild
-1);
1899 }else if(((String
)vecBilderAktion
.get(seite
-1)).equals("bildgeladen")){
1900 file
= new File(SystemConfig
.hmFremdProgs
.get("GrafikProg"));
1902 JOptionPane
.showMessageDialog(null, "Der Pfad zu Ihrem Bildbearbeitungsprogramm ist nicht korrekt konfiguriert");
1905 datei
= ((String
)vecBilderPfad
.get(aktivesBild
-1));
1910 if(Reha
.osVersion
.contains("Windows")){
1911 datei
= datei
.replaceAll("/", "\\\\");
1913 long zeit1
= System
.currentTimeMillis();
1914 File f
= new File(datei
);
1915 while(!f
.canRead()){
1918 } catch (InterruptedException e
) {
1919 // TODO Auto-generated catch block
1920 e
.printStackTrace();
1922 if((System
.currentTimeMillis()-zeit1
) > 1000){
1927 //System.out.println("Starte :"+file.getAbsolutePath()+" "+datei);
1928 //Runtime.getRuntime().exec(datei.trim());
1929 Runtime
.getRuntime().exec(file
.getAbsolutePath().toString()+" "+datei
.trim());
1930 } catch(IOException e
) {
1931 e
.printStackTrace();
1934 }else if(arg0
.getClickCount()==1){
1935 if(aktivesBild
> 0){
1936 int bild
= Integer
.valueOf( Labels
.get(aktivesBild
-1).getText().split("-")[1]);
1937 Labels
.get(bild
-1).setBorder(BorderFactory
.createLineBorder(Color
.BLACK
));
1939 aktivesBild
= Integer
.valueOf( ((JLabel
)((JComponent
)arg0
.getSource())).getText().split("-")[1] );
1940 Labels
.get(aktivesBild
-1).setBorder(BorderFactory
.createLineBorder(Color
.RED
));
1946 public void mouseEntered(MouseEvent arg0
) {
1951 public void mouseExited(MouseEvent arg0
) {
1957 public void mouseReleased(MouseEvent arg0
) {
1961 public void mouseClicked(MouseEvent arg0
) {
1962 // TODO Auto-generated method stub
1970 class DokuListener
implements ScannerListener
{
1972 public void update(ScannerIOMetadata
.Type type
, ScannerIOMetadata metadata
) {
1973 if ( ScannerIOMetadata
.NEGOTIATE
.equals(type
)){
1975 }else if ( ScannerIOMetadata
.STATECHANGE
.equals(type
)){
1977 }else if ( type
.equals(ScannerIOMetadata
.EXCEPTION
)){
1979 }else if ( ScannerIOMetadata
.ACQUIRED
.equals( type
)){
1985 private String
macheHtmlTitel(int anz
,String titel
){
1987 String ret
= titel
+" - "+Integer
.toString(anz
);
1990 String ret = "<html>"+titel+
1991 (anz > 0 ? " - <font color='#ff0000'>"+Integer.valueOf(anz).toString()+"<font></html>" : " - <font color='#000000'>"+Integer.valueOf(anz).toString()+"</font>");
1995 public void holeDokus(String patint
,String doku
){
1996 final String xpatint
= patint
;
1999 new SwingWorker
<Void
,Void
>(){
2001 protected Void
doInBackground() throws Exception
{
2003 //{"Doku-Id","Doku-Art","Titel","erfa�t am","von","",""};
2004 //String sstmt = "select * from verordn where PAT_INTERN ='"+xpatint+"' ORDER BY REZ_DATUM";
2005 Vector
<Vector
<String
>> vec
= SqlInfo
.holeSaetze("doku1",
2006 "dokuid,format,dokutitel,DATE_FORMAT(datum,'%d.%m.%Y') AS dokudatum," +
2007 "benutzer,pat_intern,id,datei",
2008 "pat_intern='"+xpatint
+"' ORDER BY dokuid DESC", Arrays
.asList(new String
[]{}));
2010 int anz
= vec
.size();
2012 for(int i
= 0; i
< anz
;i
++){
2014 dtblm
.setRowCount(0);
2018 if( ((Vector
<?
>)vec
.get(i
)).get(1) == null){
2020 }else if(!((Vector
<?
>)vec
.get(i
)).get(1).equals("")){
2021 zzbild
= Integer
.valueOf((String
) ((Vector
<?
>)vec
.get(i
)).get(1) );
2023 dtblm
.addRow((Vector
<?
>)vec
.get(i
));
2024 dtblm
.setValueAt(tabIcons
[zzbild
], i
, 1);
2025 //dtblm.setValueAt(Reha.thisClass.patpanel.imgzuzahl[zzbild], i, 1);
2027 Reha
.thisClass
.patpanel
.getTab().setTitleAt(3,macheHtmlTitel(anz
,"Dokumentation"));
2029 setzeDokuPanelAufNull(false);
2030 //int anzeigen = -1;
2031 anzahlDokus
.setText("Anzahl gespeicherter Dokumentationen: "+anz
);
2032 tabdokus
.setRowSelectionInterval(0, 0);
2033 wechselPanel
.revalidate();
2034 wechselPanel
.repaint();
2035 if((!dokubut
[0].isEnabled()) && SystemConfig
.hmDokuScanner
.get("aktivieren").trim().equals("1")){
2036 dokubut
[0].setEnabled(true);
2038 dokubut
[5].setEnabled(true);
2039 dokubut
[1].setEnabled(true);
2041 dokubut[3].setEnabled(true);
2042 dokubut[4].setEnabled(true);
2043 dokubut[5].setEnabled(true);
2047 setzeDokuPanelAufNull(true);
2048 anzahlDokus
.setText("Anzahl gespeicherter Dokumentationen: 0");
2049 wechselPanel
.revalidate();
2050 wechselPanel
.repaint();
2051 dtblm
.setRowCount(0);
2052 if((!dokubut
[0].isEnabled()) && SystemConfig
.hmDokuScanner
.get("aktivieren").trim().equals("1")){
2053 dokubut
[0].setEnabled(true);
2055 dokubut
[1].setEnabled(true);
2056 dokubut
[5].setEnabled(false);
2058 dokubut[3].setEnabled(true);
2059 dokubut[4].setEnabled(true);
2060 dokubut[5].setEnabled(false);
2065 }catch(Exception ex
){
2066 //ex.printStackTrace();
2076 /*************************************************/
2077 class DokuListSelectionHandler
implements ListSelectionListener
{
2079 public void valueChanged(ListSelectionEvent e
) {
2082 rezneugefunden = false;
2086 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
2088 //int firstIndex = e.getFirstIndex();
2089 //int lastIndex = e.getLastIndex();
2090 boolean isAdjusting
= e
.getValueIsAdjusting();
2094 //StringBuffer output = new StringBuffer();
2095 if (lsm
.isSelectionEmpty()) {
2098 int minIndex
= lsm
.getMinSelectionIndex();
2099 int maxIndex
= lsm
.getMaxSelectionIndex();
2100 for (int i
= minIndex
; i
<= maxIndex
; i
++) {
2101 if (lsm
.isSelectedIndex(i
)) {
2104 new SwingWorker
<Void
,Void
>(){
2107 protected Void
doInBackground() throws Exception
{
2109 // TODO Auto-generated method stub
2111 setCursor(Reha
.thisClass
.wartenCursor
);
2112 //holeEinzelTermine(ix,null);
2113 //jpan1.setRezeptDaten((String)tabhistorie.getValueAt(ix, 0),(String)tabhistorie.getValueAt(ix, 6));
2114 ////System.out.println("rezeptdaten akutalisieren in ListSelectionHandler");
2115 setCursor(Reha
.thisClass
.normalCursor
);
2116 inDokuDaten
= false;
2127 ////System.out.println(output.toString());
2132 public static void doSpeichernDoku(int dokuid
,int pat_intern
, String dateiname
,int format
,String
[] str
,boolean neu
) throws Exception
{
2133 Statement stmt
= null;;
2134 ResultSet rs
= null;
2135 PreparedStatement ps
= null;
2136 //boolean ret = false;
2138 //FileInputStream fis = null;
2139 //piTool.app.conn.setAutoCommit(true);
2141 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
2142 ResultSet
.CONCUR_UPDATABLE
);
2144 String select
= "Insert into doku1 set dokuid = ? , datum = ?, dokutitel = ?,"+
2145 "benutzer = ?, pat_intern = ?, format = ?,"+
2146 "dokutext = ?, dokublob = ? , groesse = ? ";
2147 ps
= (PreparedStatement
) Reha
.thisClass
.conn
.prepareStatement(select
);
2150 ps.setBytes(1, //dokuid - integer
2151 ps.setBytes(2, //datum - date
2152 ps.setBytes(3, //dokutitel - longtext
2153 ps.setBytes(4, //benutzer - zeichen
2154 ps.setBytes(5, //pat_intern - integer
2155 ps.setBytes(6, //format - integer
2156 ps.setBytes(7, //dokutext - longtext
2157 ps.setBytes(8, //dokublob - longblog /bin�r
2158 new String[] {datFunk.sDatInSQL(datFunk.sHeute()),"Eingescannte Papierdokumentation",Reha.aktUser,""},
2160 //System.out.println("Setze InputStream "+dateiname);
2161 ps
.setInt(1, dokuid
);
2162 ps
.setString(2, str
[0]);
2163 ps
.setString(3, str
[1]);
2164 ps
.setString(4, str
[2]);
2165 ps
.setInt(5, pat_intern
);
2166 ps
.setInt(6, format
);
2167 ps
.setString(7, str
[3]);
2168 File f
= new File(dateiname
);
2169 byte[] b
= FileTools
.File2ByteArray(f
);
2171 ps
.setInt(9, (int)b
.length
);
2174 } catch (SQLException e
) {
2175 // TODO Auto-generated catch block
2176 e
.printStackTrace();
2189 } catch (SQLException sqlEx
) { // ignore }
2196 } catch (SQLException sqlEx
) { // ignore }
2206 public void oooDokuNeu(int art
, int vecnum
){
2207 String
[] welcheArt
= {"OpenOffice-Writer","OpenOffice-Calc","Eigene Writer-Doku","Eigene Calc-Doku"};
2208 String value
= (String
)JOptionPane
.showInputDialog(null,
2209 "Bitte einen Titel für die Dokumentation eingeben\n\n", "Benutzereingabe erforderlich....", JOptionPane
.PLAIN_MESSAGE
, null,
2210 null, "Neue "+welcheArt
[art
]+" Dokumentation");
2211 if( (value
== null) || (value
.length()==0)){
2212 JOptionPane
.showMessageDialog(null, "Kein Titel - kein speichern. Ganz einfach!!");
2217 String src
= Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/EmptyWriterDoku.ott";
2218 dest
= Reha
.proghome
+"temp/"+Reha
.aktIK
+"/"+value
+".odt";
2221 FileTools
.copyFile(new File(src
), new File(dest
), 8192,true);
2222 ITextDocument itext
= new OOTools().starteWriterMitDatei(dest
);
2223 itext
.addDocumentListener(new OoListener(Reha
.officeapplication
,dest
,"",this));
2224 } catch (IOException e
) {
2225 e
.printStackTrace();
2226 JOptionPane
.showMessageDialog(null, "Fehler kann neues WriterDokument nicht erzeugen");
2229 String src
= Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/EmptyCalcDoku.ots";
2230 dest
= Reha
.proghome
+"temp/"+Reha
.aktIK
+"/"+value
+".ods";
2233 FileTools
.copyFile(new File(src
), new File(dest
), 8192,true);
2234 ISpreadsheetDocument ispread
= new OOTools().starteCalcMitDatei(dest
);
2235 ispread
.addDocumentListener(new OoListener(Reha
.officeapplication
,dest
,"",this));
2237 } catch (IOException e
) {
2238 e
.printStackTrace();
2239 JOptionPane
.showMessageDialog(null, "Fehler kann neues CalcDokument nicht erzeugen");
2242 String src
= Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/"+SystemConfig
.vOwnDokuTemplate
.get(vecnum
).get(1);
2243 dest
= Reha
.proghome
+"temp/"+Reha
.aktIK
+"/"+value
+".odt";
2245 FileTools
.copyFile(new File(src
), new File(dest
), 8192,true);
2246 ITextDocument itext
= new OOTools().starteWriterMitDatei(dest
);
2247 OOTools
.erstzeNurPlatzhalter(itext
);
2248 itext
.addDocumentListener(new OoListener(Reha
.officeapplication
,dest
,"",this));
2249 } catch (IOException e
) {
2250 e
.printStackTrace();
2251 JOptionPane
.showMessageDialog(null, "Fehler kann neues WriterDokument nicht erzeugen");
2254 String src
= Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/"+SystemConfig
.vOwnDokuTemplate
.get(vecnum
).get(1);
2255 dest
= Reha
.proghome
+"temp/"+Reha
.aktIK
+"/"+value
+".ods";
2257 FileTools
.copyFile(new File(src
), new File(dest
), 8192,true);
2258 ISpreadsheetDocument ispread
= new OOTools().starteCalcMitDatei(dest
);
2259 ispread
.addDocumentListener(new OoListener(Reha
.officeapplication
,dest
,"",this));
2261 } catch (IOException e
) {
2262 e
.printStackTrace();
2263 JOptionPane
.showMessageDialog(null, "Fehler kann neues CalcDokument nicht erzeugen");
2268 /**************************************************/
2269 private void pdfSpeichernDoku(){
2271 String
[] doku
= oeffneBild(new String
[] {"pdf","????","???"},false);
2272 if(doku
.length
==0){setCursor(Reha
.thisClass
.normalCursor
);return;}
2273 if(! doku
[0].toLowerCase().endsWith(".pdf")){
2274 setCursor(Reha
.thisClass
.normalCursor
);
2275 JOptionPane
.showMessageDialog(null,"Diese Funktion ist nur für PDF-Dateien geeignet");
2278 doku
[1] = doku
[1].replaceAll("\\\\", "/");
2280 doSpeichernDoku( (dokuid
=SqlInfo
.erzeugeNummer("doku")),
2281 Integer
.valueOf(Reha
.thisClass
.patpanel
.aktPatID
),
2284 new String
[] {DatFunk
.sDatInSQL(DatFunk
.sHeute()),doku
[0],Reha
.aktUser
,""},
2286 } catch (NumberFormatException e
) {
2287 e
.printStackTrace();
2288 } catch (Exception e
) {
2289 e
.printStackTrace();
2291 this.holeDokus(Reha
.thisClass
.patpanel
.aktPatID
,Integer
.toString(dokuid
));
2292 setCursor(Reha
.thisClass
.normalCursor
);
2294 /**************************************************/
2295 public void speichernOoDocs(int dokuid
,int pat_intern
, String dateiname
,int format
,String
[] str
,boolean neu
) throws Exception
{
2296 Statement stmt
= null;;
2297 ResultSet rs
= null;
2298 PreparedStatement ps
= null;
2299 //boolean ret = false;
2301 //FileInputStream fis = null;
2302 //piTool.app.conn.setAutoCommit(true);
2304 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
2305 ResultSet
.CONCUR_UPDATABLE
);
2306 //Dokumentation.speichernOoDocs(Integer.valueOf(id), -1, file, -1, null, false);
2308 String select
= "Insert into doku1 set dokuid = ? , datum = ?, dokutitel = ?,"+
2309 "benutzer = ?, pat_intern = ?, format = ?,"+
2310 "dokutext = ?, dokublob = ? , groesse = ? , datei = ?";
2311 ps
= (PreparedStatement
) Reha
.thisClass
.conn
.prepareStatement(select
);
2314 ps.setBytes(1, //dokuid - integer
2315 ps.setBytes(2, //datum - date
2316 ps.setBytes(3, //dokutitel - longtext
2317 ps.setBytes(4, //benutzer - zeichen
2318 ps.setBytes(5, //pat_intern - integer
2319 ps.setBytes(6, //format - integer
2320 ps.setBytes(7, //dokutext - longtext
2321 ps.setBytes(8, //dokublob - longblog /bin�r
2322 ps.setBytes(9, //groesse - longtext
2323 ps.setBytes(10, //datei - longblog /bin�r
2325 new String[] {datFunk.sDatInSQL(datFunk.sHeute()),"Eingescannte Papierdokumentation",Reha.aktUser,""},
2327 //System.out.println("Setze InputStream "+dateiname);
2328 ps
.setInt(1, dokuid
);
2329 ps
.setString(2, DatFunk
.sDatInSQL(DatFunk
.sHeute()));
2330 ps
.setString(3, dateiname
.substring(dateiname
.replace("\\", "/").lastIndexOf("/")+1));
2331 ps
.setString(4, Reha
.aktUser
);
2332 ps
.setInt(5, Integer
.parseInt(Reha
.thisClass
.patpanel
.patDaten
.get(29).trim()));
2333 ps
.setInt(6, (dateiname
.endsWith(".odt") ?
1 : 2));
2334 ps
.setString(7, dateiname
.substring(dateiname
.replace("\\", "/").lastIndexOf("/")+1));
2335 File f
= new File(dateiname
);
2336 byte[] b
= FileTools
.File2ByteArray(f
);
2338 ps
.setInt(9, (int)b
.length
);
2339 ps
.setString(10, dateiname
.substring(dateiname
.replace("\\", "/").lastIndexOf("/")+1));
2341 //System.out.println("OOOrg-Doku wurde gespeichert");
2342 //String id = SqlInfo.holeEinzelFeld("select id from doku1 where dokuid='"+dokuid+"' LIMIT 1");
2343 ////System.out.println("ID der neuen Doku ist "+id);
2344 holeDokus(Reha
.thisClass
.patpanel
.patDaten
.get(29).trim(),"");
2347 //int dokuid,int pat_intern, String dateiname,int format,String[] str,boolean neu
2348 //Dokumentation.speichernOoDocs(Integer.valueOf(id), -1, file, -1, null, false);
2349 String select
= "update doku1 set dokublob = ?, groesse = ?, datum = ? "+
2351 //System.out.println("Prepared statement: "+select);
2352 ps
= (PreparedStatement
) Reha
.thisClass
.conn
.prepareStatement(select
);
2353 File f
= new File(dateiname
);
2354 byte[] b
= FileTools
.File2ByteArray(f
);
2356 ps
.setInt(2, (int)b
.length
);
2357 ps
.setString(3, DatFunk
.sDatInSQL(DatFunk
.sHeute()));
2358 ps
.setString(4,Integer
.valueOf(dokuid
).toString());
2360 //System.out.println("Fertig mit execute");
2361 //System.out.println("Größe des Datenstroms="+b.length+" Bytes");
2362 //System.out.println("Datei = "+f.getAbsolutePath());
2363 //System.out.println("dokuid = "+Integer.toString(dokuid));
2364 //System.out.println("Dateigröße = "+b.length+" Bytes");
2365 //System.out.println("Datum = "+DatFunk.sDatInSQL(DatFunk.sHeute()));
2367 Reha
.thisClass
.patpanel
.dokumentation
.setCursor(Reha
.thisClass
.normalCursor
);
2370 } catch (SQLException e
) {
2371 // TODO Auto-generated catch block
2372 e
.printStackTrace();
2386 } catch (SQLException sqlEx
) { // ignore }
2394 } catch (SQLException sqlEx
) { // ignore }
2405 private void doEigenDoku(int welchedoku
){
2406 if(SystemConfig
.vOwnDokuTemplate
.get(welchedoku
).get(1).contains(".ods") ||
2407 SystemConfig
.vOwnDokuTemplate
.get(welchedoku
).get(1).contains(".ots")){
2408 oooDokuNeu(3,welchedoku
);
2410 }else if(SystemConfig
.vOwnDokuTemplate
.get(welchedoku
).get(1).contains(".odt") ||
2411 SystemConfig
.vOwnDokuTemplate
.get(welchedoku
).get(1).contains(".ott")){
2412 oooDokuNeu(2,welchedoku
);
2416 /****************************/
2418 class ToolsDlgDokumentation
{
2419 public ToolsDlgDokumentation(String command
,Point pt
){
2421 Map
<Object
, ImageIcon
> icons
= new HashMap
<Object
, ImageIcon
>();
2422 icons
.put("Scanner einstellungen",SystemConfig
.hmSysIcons
.get("scanner"));
2423 icons
.put("Photo von DigiCam holen",SystemConfig
.hmSysIcons
.get("camera"));
2424 icons
.put("Office-Dokument aufnehmen", SystemConfig
.hmSysIcons
.get("openoffice26"));
2425 icons
.put("PDF-Dokument aufnehmen", pdfplus
/*SystemConfig.hmSysIcons.get("pdf")*/);
2426 icons
.put("Neue OO-Writer-Doku erstellen",oowriterplus
/*SystemConfig.hmSysIcons.get("ooowriter")*/);
2427 icons
.put("Neue OO-Calc-Doku erstellen",oocalcplus
/*SystemConfig.hmSysIcons.get("ooocalc")*/);
2428 int owndoku
= SystemConfig
.vOwnDokuTemplate
.size();
2429 for(int i
= 0; i
< owndoku
; i
++){
2430 if(SystemConfig
.vOwnDokuTemplate
.get(i
).get(1).contains(".ods") ||
2431 SystemConfig
.vOwnDokuTemplate
.get(i
).get(1).contains(".ots")){
2432 icons
.put(SystemConfig
.vOwnDokuTemplate
.get(i
).get(0),oocalcplus
/*SystemConfig.hmSysIcons.get("ooocalc")*/);
2434 }else if(SystemConfig
.vOwnDokuTemplate
.get(i
).get(1).contains(".odt") ||
2435 SystemConfig
.vOwnDokuTemplate
.get(i
).get(1).contains(".ott")){
2436 icons
.put(SystemConfig
.vOwnDokuTemplate
.get(i
).get(0),oowriterplus
/*SystemConfig.hmSysIcons.get("ooocalc")*/);
2440 Object
[] obj1
= {"Scanner einstellungen",
2441 "Photo von DigiCam holen",
2442 "Office-Dokument aufnehmen",
2443 "PDF-Dokument aufnehmen",
2444 "Neue OO-Writer-Doku erstellen",
2445 "Neue OO-Calc-Doku erstellen"};
2446 Object
[] obj2
= new Object
[6+owndoku
];
2447 for(int i
= 0; i
< obj2
.length
;i
++){
2451 obj2
[i
] = (Object
) SystemConfig
.vOwnDokuTemplate
.get(i
-6).get(0);
2454 JList list
= new JList(obj2
);
2455 // create a list with some test data
2457 JList list = new JList( new Object[] {"Scanner einstellungen",
2458 "Photo von DigiCam holen",
2459 "Office-Dokument aufnehmen",
2460 "PDF-Dokument aufnehmen",
2461 "Neue OO-Writer-Doku erstellen",
2462 "Neue OO-Calc-Doku erstellen"});
2464 list
.setCellRenderer(new IconListRenderer(icons
));
2465 Reha
.toolsDlgRueckgabe
= -1;
2467 ToolsDialog tDlg
= new ToolsDialog(Reha
.thisFrame
,"Werkzeuge: Dokumentation",list
);
2468 tDlg
.setPreferredSize(new Dimension(240,220+(owndoku
>3 ?
3*20 : owndoku
*20)+
2469 ((Boolean
)SystemConfig
.hmPatientenWerkzeugDlgIni
.get("ToolsDlgShowButton")?
25 : 0) ));
2470 tDlg
.setLocation(pt
.x
-70,pt
.y
+30);
2472 tDlg
.setModal(true);
2473 tDlg
.activateListener();
2474 tDlg
.setVisible(true);
2475 switch(Reha
.toolsDlgRueckgabe
){
2477 if(!Rechte
.hatRecht(Rechte
.Doku_scannen
, true)){
2483 if(Reha
.thisClass
.patpanel
.aktPatID
.equals("")){
2484 keinAtiverPatient();
2488 if(!Rechte
.hatRecht(Rechte
.Doku_ooorg
, true)){
2494 if(Reha
.thisClass
.patpanel
.aktPatID
.equals("")){
2495 keinAtiverPatient();
2499 if(!Rechte
.hatRecht(Rechte
.Doku_ooorg
, true)){
2505 if(Reha
.thisClass
.patpanel
.aktPatID
.equals("")){
2506 keinAtiverPatient();
2510 if(!Rechte
.hatRecht(Rechte
.Doku_ooorg
, true)){
2516 if(Reha
.thisClass
.patpanel
.aktPatID
.equals("")){
2517 keinAtiverPatient();
2521 if(!Rechte
.hatRecht(Rechte
.Doku_ooorg
, true)){
2527 if(Reha
.thisClass
.patpanel
.aktPatID
.equals("")){
2528 keinAtiverPatient();
2532 if(!Rechte
.hatRecht(Rechte
.Doku_ooorg
, true)){
2539 if(Reha
.toolsDlgRueckgabe
> 5){
2540 if(!Rechte
.hatRecht(Rechte
.Doku_ooorg
, true)){
2543 doEigenDoku(Reha
.toolsDlgRueckgabe
-6);
2547 ////System.out.println("Rückgabewert = "+tDlg.rueckgabe);
2549 private void keinAtiverPatient(){
2550 JOptionPane
.showMessageDialog(null,"Kein Patient für Dokumentation ausgewählt");
2557 /*************************************/
2558 /*************************************/
2560 class MyDoku2TableModel
extends DefaultTableModel
{
2564 private static final long serialVersionUID
= 1L;
2566 public Class
<?
> getColumnClass(int columnIndex
) {
2568 return JLabel
.class;}
2570 return String
.class;
2572 //return (columnIndex == 0) ? Boolean.class : String.class;
2575 public boolean isCellEditable(int row
, int col
) {
2576 //Note that the data/cell address is constant,
2577 //no matter where the cell appears onscreen.
2585 }else if(col
== 11){
2594 class MyDokuTermTableModel
extends DefaultTableModel
{
2598 private static final long serialVersionUID
= 1L;
2600 public Class
<?
> getColumnClass(int columnIndex
) {
2601 if(columnIndex
==0){return String
.class;}
2602 /*else if(columnIndex==1){return JLabel.class;}*/
2603 else{return String
.class;}
2604 //return (columnIndex == 0) ? Boolean.class : String.class;
2607 public boolean isCellEditable(int row
, int col
) {
2608 //Note that the data/cell address is constant,
2609 //no matter where the cell appears onscreen.
2616 }else if(col
== 11){
2625 class OoListener
implements IDocumentListener
{
2627 public IOfficeApplication officeAplication
= null;
2628 private String datei
;
2630 private boolean geaendert
= false;
2631 private boolean neu
= false;
2632 public boolean warschoninsave
= false;
2633 private Dokumentation eltern
;
2635 public OoListener(IOfficeApplication officeAplication
,String xdatei
,String xid
,Dokumentation xeltern
) {
2636 this.officeAplication
= officeAplication
;
2648 public void onAlphaCharInput(IDocumentEvent arg0
) {
2649 // TODO Auto-generated method stub
2653 public void onFocus(IDocumentEvent arg0
) {
2654 // TODO Auto-generated method stub
2658 public void onInsertDone(IDocumentEvent arg0
) {
2659 // TODO Auto-generated method stub
2663 public void onInsertStart(IDocumentEvent arg0
) {
2664 // TODO Auto-generated method stub
2668 public void onLoad(IDocumentEvent arg0
) {
2669 // TODO Auto-generated method stub
2673 public void onLoadDone(IDocumentEvent arg0
) {
2674 // TODO Auto-generated method stub
2677 public void onLoadFinished(IDocumentEvent arg0
) {
2678 // TODO Auto-generated method stub
2682 public void onModifyChanged(IDocumentEvent arg0
) {
2683 // TODO Auto-generated method stub
2687 public void onMouseOut(IDocumentEvent arg0
) {
2688 // TODO Auto-generated method stub
2692 public void onMouseOver(IDocumentEvent arg0
) {
2693 // TODO Auto-generated method stub
2697 public void onNew(IDocumentEvent arg0
) {
2698 // TODO Auto-generated method stub
2702 public void onNonAlphaCharInput(IDocumentEvent arg0
) {
2703 // TODO Auto-generated method stub
2707 public void onSave(IDocumentEvent arg0
) {
2708 ////System.out.println("onSave");
2712 public void onSaveAs(IDocumentEvent arg0
) {
2713 // TODO Auto-generated method stub
2717 public void onSaveAsDone(IDocumentEvent arg0
) {
2718 // TODO Auto-generated method stub
2722 public void onSaveDone(IDocumentEvent arg0
) {
2723 // TODO Auto-generated method stub
2724 ////System.out.println("Savedone");
2725 IDocument doc
= arg0
.getDocument();
2729 String file
= arg0
.getDocument().getPersistenceService().getLocation().getPath();
2730 file
= file
.substring(1).replace("%20", " ");
2731 if(datei
.equals(file
)){
2736 @SuppressWarnings("unused")
2737 private void doUebertragen(String file
){
2741 public void onSaveFinished(IDocumentEvent arg0
) {
2742 // TODO Auto-generated method stub
2743 ////System.out.println("SaveFinisched");
2747 public void onUnload(IDocumentEvent arg0
) {
2750 IDocument doc
= arg0
.getDocument();
2752 //System.out.println(geaendert+" - "+datei+" - "+neu+" doc = null ");
2756 String file
= arg0
.getDocument().getPersistenceService().getLocation().getPath();
2757 file
= file
.substring(1).replace("%20", " ");
2758 //System.out.println(geaendert+" - "+datei+" - "+file+" - "+neu);
2759 if(geaendert
&& datei
.equals(file
) && (!neu
)){
2761 final String xfile
= file
;
2762 final int xid
= Integer
.parseInt(id
);
2763 //final IDocumentEvent xarg0 = arg0;
2768 String nurDatei
= datei
.substring(datei
.replace("\\", "/").lastIndexOf("/")+1);
2769 int frage
= JOptionPane
.showConfirmDialog(null, "Die Dokumentationsdatei --> "+nurDatei
+" <-- wurde geändert\n\nWollen Sie die geänderte Fassung in die Patienten-Dokumentation übernehmen?", "Wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
2770 if(frage
== JOptionPane
.YES_OPTION
){
2773 Reha
.thisClass
.patpanel
.dokumentation
.setCursor(Reha
.thisClass
.wartenCursor
);
2774 eltern
.speichernOoDocs(xid
, -1, xfile
, -1, null, neu
);
2775 } catch (Exception e
) {
2776 // TODO Auto-generated catch block
2777 e
.printStackTrace();
2781 }catch(Exception ex
){
2782 ex
.printStackTrace();
2786 arg0
.getDocument().removeDocumentListener(this);
2787 warschoninsave
= true;
2788 }catch(Exception ex
){
2789 ex
.printStackTrace();
2791 }else if(datei
.equals(file
) && !geaendert
){
2792 //System.out.println(geaendert+" - "+datei+" - "+file+" - "+neu);
2793 arg0
.getDocument().removeDocumentListener(this);
2794 //System.out.println("Listener entfernt - Datei nicht geändert"+file);
2795 warschoninsave
= true;
2797 //System.out.println(geaendert+" - "+datei+" - "+file+" - "+neu);
2800 String nurDatei
= datei
.substring(datei
.replace("\\", "/").lastIndexOf("/")+1);
2801 int frage
= JOptionPane
.showConfirmDialog(null, "Die Dokumentationsdatei --> "+nurDatei
+" <-- wurde geändert\n\nWollen Sie die geänderte Fassung in die Patienten-Dokumentation übernehmen?", "Wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
2802 if(frage
== JOptionPane
.YES_OPTION
){
2805 Reha
.thisClass
.patpanel
.dokumentation
.setCursor(Reha
.thisClass
.wartenCursor
);
2806 int nummer
= SqlInfo
.erzeugeNummer("doku");
2807 eltern
.speichernOoDocs(nummer
, -1, datei
, -1, null, neu
);
2808 } catch (Exception e
) {
2809 e
.printStackTrace();
2815 arg0
.getDocument().removeDocumentListener(this);
2817 //System.out.println("else");
2818 //System.out.println("Datei equals(file) = "+datei.equals(file));
2819 //System.out.println("Datei = "+datei);
2820 //System.out.println("File = "+file);
2821 //System.out.println("geändert = "+geaendert);
2822 arg0
.getDocument().removeDocumentListener(this);
2824 } catch (NumberFormatException e
) {
2825 e
.printStackTrace();
2826 } catch (Exception e
) {
2827 e
.printStackTrace();
2832 public void disposing(IEvent arg0
) {
2834 if(!warschoninsave){
2836 IDocument doc = this.document;
2838 //System.out.println("doc=null");
2841 String file = doc.getLocationURL().toString().replaceAll("file:/", "");
2842 if(geaendert && datei.equals(file)){
2843 final String xfile = file;
2844 final int xid = Integer.parseInt(id);
2849 int frage = JOptionPane.showConfirmDialog(null, "Die Dokumentationsdatei "+xfile+" wurde geändert\n\nWollen Sie die geänderte Fassung in die Patienten-Dokumentation übernehmen?", "Wichtige Benutzeranfrage", JOptionPane.YES_NO_OPTION);
2850 if(frage == JOptionPane.YES_OPTION){
2853 Reha.thisClass.patpanel.dokumentation.setCursor(Reha.thisClass.wartenCursor);
2854 Dokumentation.speichernOoDocs(xid, -1, xfile, -1, null, neu);
2855 } catch (Exception e) {
2856 // TODO Auto-generated catch block
2857 e.printStackTrace();
2862 //Reha.officeapplication.getDesktopService().removeDocumentListener(this);
2863 //System.out.println("Listener entfernt - Datei geändert "+xfile);
2866 doc.removeDocumentListener(this);
2867 }else if(datei.equals(file) && !geaendert){
2868 doc.removeDocumentListener(this);
2869 //System.out.println("Listener entfernt - Datei nicht geändert"+file);
2871 warschoninsave = true;
2873 } catch (ag.ion.bion.officelayer.document.DocumentException e) {
2874 e.printStackTrace();
2875 } catch (NumberFormatException e) {
2876 e.printStackTrace();
2877 } catch (Exception e) {
2878 e.printStackTrace();
2882 //System.out.println("warschoninsave = "+warschoninsave);