*** empty log message ***
[thera-pi.git] / Reha / src / hauptFenster / Reha.java
blob45bc1b3ff6c380d02ba976ec74d1d487262ed4df
1 package hauptFenster;
3 import java.awt.AWTEvent;
4 import java.awt.AlphaComposite;
5 import java.awt.BorderLayout;
6 import java.awt.Color;
7 import java.awt.Component;
8 import java.awt.Cursor;
9 import java.awt.Dimension;
10 import java.awt.Event;
11 import java.awt.FlowLayout;
12 import java.awt.Font;
13 import java.awt.GradientPaint;
14 import java.awt.Graphics;
15 import java.awt.Graphics2D;
16 import java.awt.Image;
17 import java.awt.LinearGradientPaint;
18 import java.awt.Toolkit;
19 import java.awt.datatransfer.DataFlavor;
20 import java.awt.datatransfer.StringSelection;
21 import java.awt.datatransfer.Transferable;
22 import java.awt.dnd.DnDConstants;
23 import java.awt.dnd.DragGestureEvent;
24 import java.awt.dnd.DragGestureListener;
25 import java.awt.dnd.DragGestureRecognizer;
26 import java.awt.dnd.DragSource;
27 import java.awt.dnd.DropTarget;
28 import java.awt.dnd.DropTargetDragEvent;
29 import java.awt.dnd.DropTargetDropEvent;
30 import java.awt.dnd.DropTargetEvent;
31 import java.awt.dnd.DropTargetListener;
32 import java.awt.event.AWTEventListener;
33 import java.awt.event.ActionEvent;
34 import java.awt.event.ActionListener;
35 import java.awt.event.ComponentEvent;
36 import java.awt.event.ComponentListener;
37 import java.awt.event.ContainerEvent;
38 import java.awt.event.ContainerListener;
39 import java.awt.event.FocusEvent;
40 import java.awt.event.FocusListener;
41 import java.awt.event.KeyEvent;
42 import java.awt.event.KeyListener;
43 import java.awt.event.MouseAdapter;
44 import java.awt.event.MouseEvent;
45 import java.awt.event.MouseListener;
46 import java.awt.event.MouseMotionListener;
47 import java.awt.event.WindowEvent;
48 import java.awt.event.WindowListener;
49 import java.awt.event.WindowStateListener;
50 import java.awt.geom.Point2D;
51 import java.beans.PropertyChangeEvent;
52 import java.beans.PropertyChangeListener;
53 import java.io.BufferedReader;
54 import java.io.File;
55 import java.io.IOException;
56 import java.io.InputStream;
57 import java.io.InputStreamReader;
58 import java.io.OutputStream;
59 import java.net.ServerSocket;
60 import java.net.Socket;
61 import java.sql.Connection;
62 import java.sql.DriverManager;
63 import java.sql.SQLException;
64 import java.util.Date;
65 import java.util.HashMap;
66 import java.util.HashSet;
67 import java.util.Iterator;
68 import java.util.TimerTask;
69 import java.util.TooManyListenersException;
70 import java.util.Vector;
72 import javax.media.CannotRealizeException;
73 import javax.media.CaptureDeviceInfo;
74 import javax.media.Manager;
75 import javax.media.MediaLocator;
76 import javax.media.NoPlayerException;
77 import javax.media.Player;
78 import javax.media.format.YUVFormat;
79 import javax.swing.BorderFactory;
80 import javax.swing.ImageIcon;
81 import javax.swing.JComponent;
82 import javax.swing.JDesktopPane;
83 import javax.swing.JFrame;
84 import javax.swing.JInternalFrame;
85 import javax.swing.JLabel;
86 import javax.swing.JMenu;
87 import javax.swing.JMenuBar;
88 import javax.swing.JMenuItem;
89 import javax.swing.JOptionPane;
90 import javax.swing.JProgressBar;
91 import javax.swing.JScrollPane;
92 import javax.swing.JSplitPane;
93 import javax.swing.KeyStroke;
94 import javax.swing.SwingConstants;
95 import javax.swing.SwingUtilities;
96 import javax.swing.Timer;
97 import javax.swing.TransferHandler;
98 import javax.swing.UIDefaults;
99 import javax.swing.UIManager;
100 import javax.swing.UnsupportedLookAndFeelException;
101 import javax.swing.plaf.FontUIResource;
102 import javax.swing.plaf.basic.BasicSplitPaneUI;
104 import krankenKasse.KassenPanel;
105 import menus.TerminMenu;
106 import oOorgTools.OOTools;
107 import ocf.OcKVK;
108 import opencard.core.service.CardServiceException;
109 import opencard.core.terminal.CardTerminalException;
111 import org.jdesktop.swingworker.SwingWorker;
112 import org.jdesktop.swingx.JXFrame;
113 import org.jdesktop.swingx.JXPanel;
114 import org.jdesktop.swingx.JXStatusBar;
115 import org.jdesktop.swingx.JXTitledPanel;
116 import org.jdesktop.swingx.border.DropShadowBorder;
117 import org.jdesktop.swingx.painter.CompoundPainter;
118 import org.jdesktop.swingx.painter.MattePainter;
119 import org.thera_pi.updates.TestForUpdates;
120 import org.therapi.reha.patient.LadeProg;
121 import org.therapi.reha.patient.PatientHauptPanel;
123 import rechteTools.Rechte;
124 import rehaInternalFrame.JRehaInternal;
125 import rehaInternalFrame.OOODesktopManager;
126 import roogle.RoogleFenster;
127 import CommonTools.ExUndHop;
128 import systemEinstellungen.SystemConfig;
129 import systemEinstellungen.SystemInit;
130 import systemEinstellungen.SystemPreislisten;
131 import CommonTools.Colors;
132 import CommonTools.FileTools;
133 import CommonTools.JRtaTextField;
134 import systemTools.RehaPainters;
135 import systemTools.RezeptFahnder;
136 import systemTools.TestePatStamm;
137 import terminKalender.DatFunk;
138 import terminKalender.ParameterLaden;
139 import terminKalender.TerminFenster;
140 import urlaubBeteiligung.Beteiligung;
141 import urlaubBeteiligung.Urlaub;
142 import verkauf.VerkaufTab;
143 import wecker.Wecker;
144 import CommonTools.FireRehaError;
145 import CommonTools.INIFile;
146 import CommonTools.INITool;
147 import CommonTools.SqlInfo;
148 import CommonTools.StartOOApplication;
149 import abrechnung.AbrechnungGKV;
150 import abrechnung.AbrechnungReha;
151 import ag.ion.bion.officelayer.application.IOfficeApplication;
152 import ag.ion.bion.officelayer.application.OfficeApplicationException;
153 import anmeldungUmsatz.Anmeldungen;
154 import anmeldungUmsatz.Umsaetze;
155 import arztFenster.ArztPanel;
156 import barKasse.Barkasse;
157 import benutzerVerwaltung.BenutzerRechte;
159 import com.jgoodies.forms.layout.CellConstraints;
160 import com.jgoodies.forms.layout.FormLayout;
161 import com.jgoodies.looks.HeaderStyle;
162 import com.jgoodies.looks.Options;
163 import com.sun.star.uno.Exception;
165 import dialoge.RehaSmartDialog;
166 import dta301.Dta301;
167 import entlassBerichte.EBerichtPanel;
168 import CommonTools.RehaEvent;
169 import CommonTools.RehaEventClass;
170 import CommonTools.RehaEventListener;
171 import geraeteInit.BarCodeScanner;
173 public class Reha implements FocusListener,ComponentListener,ContainerListener,MouseListener,MouseMotionListener,KeyListener,RehaEventListener, WindowListener, WindowStateListener, ActionListener {
175 public PatientHauptPanel patpanel = null;
176 public EBerichtPanel eberichtpanel = null;
177 public KassenPanel kassenpanel = null;
178 public ArztPanel arztpanel = null;
179 public TerminFenster terminpanel = null;
180 public RoogleFenster rooglepanel = null;
181 public AbrechnungGKV abrechnungpanel = null;
182 public Anmeldungen anmeldungenpanel = null;
183 public Umsaetze umsaetzepanel = null;
184 public Beteiligung beteiligungpanel = null;
185 public Urlaub urlaubpanel = null;
186 public VerkaufTab verkaufpanel = null;
187 public Barkasse barkassenpanel = null;
188 public AbrechnungReha rehaabrechnungpanel = null;
189 public BenutzerRechte benutzerrechtepanel = null;
190 public SystemInit systeminitpanel = null;
191 public Dta301 dta301panel = null;
193 public final int patiddiff = 5746;
194 private JXFrame jFrame = null;
196 private JMenuBar jJMenuBar = null;
197 private JMenu fileMenu = null;
198 private JMenu stammMenu = null;
199 private JMenu abrechnungMenu = null;
200 private JMenu statistikMenu = null;
201 private JMenu toolsMenu = null;
202 private JMenu bueroMenu = null;
203 private JMenu verkaufMenu = null;
204 private JMenu urlaubMenu = null;
205 private JMenu helpMenu = null;
206 private JMenuItem exitMenuItem = null;
207 private JMenuItem aboutMenuItem = null;
208 public JXStatusBar jXStatusBar = null;
209 private int dividerLocLR = 0;
210 public JLabel shiftLabel = null;
211 public static boolean dividerOk = false;
212 public JLabel messageLabel = null;
213 public JLabel dbLabel = null;
214 public JXPanel versionbar = null;
215 public JLabel mousePositionLabel = null;
216 public JXPanel jxPinContainer = null;
217 public JXPanel jxCopyContainer = null;
218 public JLabel copyLabel = null;
220 public JXPanel jxLinks = null;
221 public JXPanel jxRechts = null;
222 public JXPanel jxRechtsOben = null;
223 public JXPanel jxRechtsUnten = null;
224 public UIFSplitPane jSplitLR = null;
225 public UIFSplitPane jSplitRechtsOU = null;
226 public JXTitledPanel jxTitelOben = null;
227 public JXTitledPanel jxTitelUnten = null;
228 public static Reha thisClass; // @jve:decl-index=0:
229 public static JXFrame thisFrame;
231 public JXPanel jInhaltOben = null;
232 public JXPanel jInhaltUnten = null;
233 public JXPanel jEventTargetOben = null;
234 public JXPanel jEventTargetUnten = null;
235 public JXPanel jContainerOben = null;
236 public JXPanel jContainerUnten = null;
237 public JXPanel jLeerOben = null;
238 public JXPanel jLeerUnten = null;
240 public boolean initok = false;
241 public boolean splashok = false;
243 public RehaSmartDialog splash = null;
245 public Connection conn = null;
246 public Connection hilfeConn = null;
248 public static boolean DbOk = false;
249 public static boolean HilfeDbOk = false;
251 public static String progRechte = "0123";
253 public final static String Titel = "Thera-\u03C0";
255 public boolean KollegenOk = false;
256 public static String aktLookAndFeel = "";
257 public static SystemConfig sysConf = null;
258 public static IOfficeApplication officeapplication;
260 public static BarCodeScanner barcodeScanner = null;
262 public static RehaSockServer RehaSock = null;
263 @SuppressWarnings("rawtypes")
264 public static CompoundPainter[] RehaPainter = {null,null,null,null,null};
265 public Vector<Object> aktiveFenster = new Vector<Object>();
266 public static String proghome = "";
267 public static String userHome = "";
268 public final String NULL_DATE = " . . ";
269 public static boolean warten=true;
270 public static String aktIK = "000000000";
271 public static String aktMandant = "Ãœbungs-Mandant";
272 public static String aktUser = "";
273 public static String kalMin = "";
274 public static String kalMax = "";
275 public static String Titel2;
276 public static String osVersion = "";
277 public int vollsichtbar = 0;
278 public JDesktopPane deskrechts = new JDesktopPane();
279 public JDesktopPane[] desktops = {null,null,null,null};
280 public JDesktopPane desktopUnten = new JDesktopPane();
281 public JXPanel jpOben = null;
282 public JXPanel jpUnten = null;
284 public static boolean patientFirstStart = true;
285 public static boolean terminFirstStart = true;
286 public static boolean kassenFirstStart = true;
287 public static boolean arztFirstStart = true;
288 public static boolean iconsOk = false;
289 public static ImageIcon rehaBackImg = null;
290 public JLabel bunker = null;
291 public JProgressBar Rehaprogress = null;
292 public final Cursor wartenCursor = new Cursor(Cursor.WAIT_CURSOR);
293 public final Cursor normalCursor = new Cursor(Cursor.DEFAULT_CURSOR);
294 public final Cursor kreuzCursor = new Cursor(Cursor.CROSSHAIR_CURSOR);
295 public final Cursor cmove = new Cursor(Cursor.MOVE_CURSOR); // @jve:decl-index=0:
296 public final Cursor cnsize = new Cursor(Cursor.N_RESIZE_CURSOR); // @jve:decl-index=0:
297 public final Cursor cnwsize = new Cursor(Cursor.NW_RESIZE_CURSOR); // @jve:decl-index=0:
298 public final Cursor cnesize = new Cursor(Cursor.NE_RESIZE_CURSOR); // @jve:decl-index=0:
299 public final Cursor cswsize = new Cursor(Cursor.SW_RESIZE_CURSOR); // @jve:decl-index=0:
300 public final Cursor cwsize = new Cursor(Cursor.W_RESIZE_CURSOR); // @jve:decl-index=0:
301 public final Cursor csesize = new Cursor(Cursor.SE_RESIZE_CURSOR); // @jve:decl-index=0:
302 public final Cursor cssize = new Cursor(Cursor.S_RESIZE_CURSOR); // @jve:decl-index=0:
303 public final Cursor cesize = new Cursor(Cursor.E_RESIZE_CURSOR); // @jve:decl-index=0:
304 public final Cursor cdefault = new Cursor(Cursor.DEFAULT_CURSOR); // @jve:decl-index=0:
307 public GradientPaint gp1 = new GradientPaint(0,0,new Color(112,141,255),0,25,Color.WHITE,true);
308 public GradientPaint gp2 = new GradientPaint(0,0,new Color(112,141,120),0,25,Color.WHITE,true);
309 public HashMap<String,CompoundPainter<Object>> compoundPainter = new HashMap<String,CompoundPainter<Object>>();
310 /**************************/
311 public JXPanel desktop = null;
312 public ProgLoader progLoader =null;
314 public static boolean demoversion = false;
315 public static boolean vollbetrieb = true;
317 public static String aktuelleVersion = "2015-12-08-DB=";
319 public static Vector<Vector<Object>> timerVec = new Vector<Vector<Object>>();
320 public static Timer fangoTimer = null;
321 public static boolean timerLaeuft = false;
322 public static boolean timerInBearbeitung = false;
324 public static java.util.Timer nachrichtenTimer = null;
325 public static boolean nachrichtenLaeuft = false;
326 public static boolean nachrichtenInBearbeitung = false;
327 //final public JProgressBar rehaNachrichtenprogress = new JProgressBar();
329 public static boolean updatesBereit = false;
330 public static boolean updatesChecken = true;
331 public static int toolsDlgRueckgabe = -1;
333 public RehaIOServer rehaIOServer = null;
334 public static int xport = 6000;
335 public static boolean isStarted = false;
336 public static int divider1 = -1;
337 public static int divider2 = -1;
339 public static int zugabex = 20;
340 public static int zugabey = 20;
342 public OcKVK ocKVK = null;
344 public CaptureDeviceInfo device = null;
345 public MediaLocator ml = null;
346 public Player player = null;
348 public static JComponent dragDropComponent = null;
350 public int lastSelectedPat = -1;
351 public String lastSelectedValue = "";
352 public int lastSelectedFloskel = -1;
354 public boolean isLibreOffice = false;
355 public SqlInfo sqlInfo = null;
356 public static int nachladenDB = 0;
357 public static int dbLoadError = 1;
359 public static String lastCommId = "";
360 public static String lastCommAction = "";
361 public boolean lastCommActionConfirmed = true;
363 public RehaCommServer rehaCommServer = null;
364 public static boolean phoneOk = false;
366 public static Vector<Vector<String>> vRGAFoffen;
367 public static boolean bRGAFoffen;
368 public static boolean bHatMerkmale;
371 * Einschalten für Geschwindigkeitstests
372 * zusätzlich in der Terminkalender.java die Zeilen
373 * 2670, 2671,2714,2928,2929
374 public static int datecounts = 0;
375 public static long startmillis = 0;
378 @SuppressWarnings({ "unchecked", "rawtypes" })
379 public static void main(String[] args) {
380 String prog = java.lang.System.getProperty("user.dir");
381 String homedir = java.lang.System.getProperty("user.home");
382 osVersion = System.getProperty("os.name");
383 if(osVersion.contains("Linux")){
384 proghome = "/opt/RehaVerwaltung/";
385 }else if(osVersion.contains("Windows")){
386 proghome = prog.substring(0, 2)+"/RehaVerwaltung/";
387 }else if(osVersion.contains("Mac OS X")){
388 System.out.println("Vermutlich MAC, Output = "+osVersion);
389 proghome = homedir+"/RehaVerwaltung/";
392 //Reha.proghome = "C:/RehaVerwaltung/";
393 System.out.println("Programmverzeichnis = "+Reha.proghome);
396 String javaPfad = java.lang.System.getProperty("java.home").replaceAll("\\\\","/");
398 INITool.setDBInis(new String[] {"preisgruppen.ini","terminkalender.ini","gruppen.ini","icons.ini","fristen.ini","color.ini",
399 "dta301.ini","firmen.ini","gutachten.ini","ktraeger.ini","offeneposten.ini","oprgaf.ini","sqlmodul.ini","thbericht.ini"});
402 if(args.length > 0){
403 String[] split = args[0].split("@");
404 aktIK = split[0];
405 aktMandant = split[1];
406 if(args.length > 1){
407 for(int i = 1; i < args.length;i++){
408 try{
409 aktMandant += " "+args[i];
410 }catch(NullPointerException ex){
411 aktMandant = split[1];
415 }else{
416 INIFile inif = new INIFile(Reha.proghome+"ini/mandanten.ini");
417 int DefaultMandant = inif.getIntegerProperty("TheraPiMandanten", "DefaultMandant");
418 aktIK = inif.getStringProperty("TheraPiMandanten", "MAND-IK"+DefaultMandant);
419 aktMandant = inif.getStringProperty("TheraPiMandanten", "MAND-NAME"+DefaultMandant);
421 INITool.init(proghome+"ini/"+aktIK+"/");
422 System.out.println("Insgesamt sind "+Integer.toString(INITool.getDBInis().length)+" INI-Dateien in der Tabelle inidatei abgelegt");
424 Titel2 = " --> [Mandant: "+aktMandant+"]";
425 //System.out.println(Titel2);
426 /**************************/
427 new Thread(){
428 public void run(){
429 try {
430 RehaSock = new RehaSockServer();
431 } catch (IOException e) {
432 System.out.println("Kann RehaSocket-Server nicht starten");
433 e.printStackTrace();
436 }.start();
437 /**************************/
438 new Thread(){
439 public void run(){
440 Process process;
441 try {
442 System.out.println("Starte RehaxSwing.jar");
443 process = new ProcessBuilder("java","-Djava.net.preferIPv4Stack=true", "-jar",proghome+"RehaxSwing.jar").start();
444 InputStream is = process.getInputStream();
446 InputStreamReader isr = new InputStreamReader(is);
447 BufferedReader br = new BufferedReader(isr);
449 while ((br.readLine()) != null) {
450 //System.out.println(br.readLine());
452 is.close();
453 isr.close();
454 br.close();
455 System.out.println("RehaxSwing beendet");
456 } catch (IOException e) {
457 e.printStackTrace();
460 }.start();
461 int i=0;
462 while(warten && i < 50){
463 try {
464 Thread.sleep(100);
465 i++;
466 } catch (InterruptedException e) {
467 e.printStackTrace();
471 * War nur bis WinXP sinnvoll einsetzbar
472 new SocketClient().setzeInitStand("Überprüfe Dateisystem");
473 File f = null;
474 if(osVersion.contains("Windows")){
475 f = new File(javaPfad+"/bin/win32com.dll");
476 if(! f.exists()){
477 new SocketClient().setzeInitStand("Kopiere win32com.dll");
478 try {
479 FileTools.copyFile(new File(proghome+"Libraries/lib/serial/win32com.dll"),f, 4096, false);
480 } catch (IOException e) {
481 e.printStackTrace();
483 }else{
484 ////System.out.println("Systemdateien win32com.dll existiert bereits, kopieren nicht erforderlich");
487 f = new File(javaPfad+"/lib/ext/comm.jar");
488 if(! f.exists()){
489 try {
490 new SocketClient().setzeInitStand("Kopiere comm.jar");
491 FileTools.copyFile(new File(proghome+"Libraries/lib/serial/comm.jar"),f, 4096, false);
492 } catch (IOException e) {
493 e.printStackTrace();
495 }else{
496 ////System.out.println("Systemdateien comm.jar existiert bereits, kopieren nicht erforderlich");
498 f = new File(javaPfad+"/lib/javax.comm.properties");
499 if(! f.exists()){
500 try {
501 new SocketClient().setzeInitStand("Kopiere javax.comm.properties");
502 FileTools.copyFile(new File(proghome+"Libraries/lib/serial/javax.comm.properties"),f, 4096, false);
503 } catch (IOException e) {
504 e.printStackTrace();
506 }else{
507 ////System.out.println("Systemdateien javax.comm.properties existiert bereits, kopieren nicht erforderlich");
510 new Thread(){
511 public void run(){
513 new SocketClient().setzeInitStand("System-Icons laden");
515 while(! Reha.DbOk){
516 try {
517 Thread.sleep(25);
518 } catch (InterruptedException e) {
519 e.printStackTrace();
522 SystemConfig.SystemIconsInit();
523 iconsOk = true;
524 new SocketClient().setzeInitStand("System-Config initialisieren");
526 }.start();
528 /*********/
530 SystemConfig sysConf = new SystemConfig();
532 setSystemConfig(sysConf);
534 sysConf.SystemStart(Reha.proghome);
536 sysConf.SystemInit(1);
538 sysConf.SystemInit(2);
540 try {
541 UIManager.setLookAndFeel((aktLookAndFeel = SystemConfig.aHauptFenster.get(4)));
542 } catch (ClassNotFoundException e1) {
543 e1.printStackTrace();
544 } catch (InstantiationException e1) {
545 e1.printStackTrace();
546 } catch (IllegalAccessException e1) {
547 e1.printStackTrace();
548 } catch (UnsupportedLookAndFeelException e1) {
549 e1.printStackTrace();
551 /***********************/
552 Color c = UIManager.getColor("Button.disabledForeground");
553 if (c != null) {
554 UIManager.put("Button.disabledText", new Color(112,126,106)/*original = Color.BLACK*/);
555 }else{
556 UIManager.put("Button.disabledText", new Color(112,126,106)/*original = Color.BLACK*/);
557 UIManager.put("Button.disabledForeground",new Color(112,126,106)/*original = Color.BLACK*/);
559 UIManager.put("ComboBox.disabledForeground", Color.RED);
561 /***********************/
563 javax.swing.plaf.FontUIResource fontUIDresource = new FontUIResource("Tahoma", Font.PLAIN, 11);
565 Font fon= new Font("Tahoma", Font.PLAIN, 11);
566 Attribute[] attr = (Attribute[]) fontUIDresource.getAvailableAttributes();
567 Map attrMap = fontUIDresource.getAttributes();
568 for(int i2 = 0; i2 < attr.length;i2++){
569 System.out.println("Key = "+attr[i2]);
570 System.out.println("Wert = "+attrMap.get(attr[i2]));
574 //String name = "Tahoma";
575 //int size = 10;
576 //PLAIN=0, BOLD=1, ITALIC=2
577 //Font[] fonts = {new Font(name, 0, size), new Font(name, 1, size),
578 //new Font(name, 2, size), new Font(name, 3, size)};
579 UIDefaults defs = (UIDefaults) UIManager.getLookAndFeelDefaults().clone();
581 for(Iterator ii = new HashSet(defs.keySet()).iterator(); ii.hasNext(); ) {
582 Object key = ii.next();
583 if(key.equals("FormattedTextField.font")){
584 UIManager.put(key, fontUIDresource);
586 if(key.equals("TextField.font")){
587 UIManager.put(key, fontUIDresource);
589 if(key.equals("Label.font")){
590 UIManager.put(key, fontUIDresource);
592 if(key.equals("Button.font")){
593 UIManager.put(key, fontUIDresource);
595 if(key.equals("Table.font")){
596 UIManager.put(key, fontUIDresource);
598 if(key.equals("ComboBox.font")){
599 UIManager.put(key, fontUIDresource);
602 //new ListUIManagerValues();
603 SwingUtilities.invokeLater(new Runnable() {
604 public void run() {
605 try{
606 Reha application = new Reha();
607 application.sqlInfo = new SqlInfo();
608 application.sqlInfo.setDieseMaschine(SystemConfig.dieseMaschine);
609 rehaBackImg = new ImageIcon(Reha.proghome+"icons/therapieMT1.gif");
610 thisClass = application;
611 RehaEventClass rehaEvent = new RehaEventClass();
612 rehaEvent.addRehaEventListener(thisClass);
613 //new DatenbankStarten().run();
614 new Thread(new DatenbankStarten()).start();
615 application.getJFrame();
618 Reha.thisFrame.setIconImage( Toolkit.getDefaultToolkit().getImage( Reha.proghome+"icons/Pi_1_0.png" ) );
620 if(!dividerOk){
621 //Reha.thisClass.setDivider(5);
625 Reha.thisClass.doCompoundPainter();
626 Reha.thisClass.starteTimer();
627 if(SystemConfig.timerdelay > 0){
628 Reha.thisClass.starteNachrichtenTimer();
631 SwingUtilities.invokeLater(new Runnable(){
632 public void run(){
633 try{
634 Reha.thisClass.rehaIOServer = new RehaIOServer(6000);
635 System.out.println("RehaIOServer wurde initialisiert");
636 SystemConfig.AktiviereLog();
637 try{
638 if(SystemConfig.activateSMS){
639 Reha.thisClass.rehaCommServer = new RehaCommServer(Integer.parseInt(SystemConfig.hmSMS.get("COMM")));
641 }catch(NullPointerException ex){
642 Reha.thisClass.rehaCommServer = null;
644 }catch(NullPointerException ex){
645 System.out.println("RehaCommServer = null");
649 }catch(NullPointerException ex){
650 ex.printStackTrace();
651 System.out.println("Fehler beim Systemstart");
659 public void setzeInitEnde(){
660 new SwingWorker<Void,Void>(){
661 @Override
662 protected Void doInBackground() throws java.lang.Exception {
663 new SocketClient().setzeInitStand("INITENDE");
665 try{
666 //nur zum Test
667 System.out.println("Abfeuern des ErrorEvents");
668 new FireRehaError(this, RehaEvent.ERROR_EVENT,new String[] {"Reha","Blödsinn\nBlödsinn"});
669 }catch(NullPointerException ex){
670 ex.printStackTrace();
673 return null;
675 }.execute();
677 public void ende() {
678 try {
679 Runtime.getRuntime().exec("cmd /c start.bat");
680 } catch (IOException e) {
681 e.printStackTrace();
683 try{
684 INIFile inif = INITool.openIni(Reha.proghome+"ini/"+Reha.aktIK+"/", "rehajava.ini");
685 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider1",(Object)jSplitLR.getDividerLocation(),null );
686 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider2",(Object)jSplitRechtsOU.getDividerLocation(),null );
687 SystemConfig.UpdateIni(inif, "HauptFenster", "TP1Offen",(Object)(LinkeTaskPane.tp1.isCollapsed() ? "1" : "0"),null );
688 SystemConfig.UpdateIni(inif, "HauptFenster", "TP2Offen",(Object)(LinkeTaskPane.tp4.isCollapsed() ? "1" : "0"),null );
689 SystemConfig.UpdateIni(inif, "HauptFenster", "TP3Offen",(Object)(LinkeTaskPane.tp3.isCollapsed() ? "1" : "0"),null );
690 SystemConfig.UpdateIni(inif, "HauptFenster", "TP4Offen",(Object)(LinkeTaskPane.tp5.isCollapsed() ? "1" : "0"),null );
691 SystemConfig.UpdateIni(inif, "HauptFenster", "TP5Offen",(Object)(LinkeTaskPane.tp2.isCollapsed() ? "1" : "0"),null );
692 SystemConfig.UpdateIni(inif, "HauptFenster", "TP6Offen",(Object)(LinkeTaskPane.tp6.isCollapsed() ? "1" : "0"),null );
693 }catch(NullPointerException ex){
694 JOptionPane.showMessageDialog(null,"Fehler beim Speichern der aktuellen Fensteranordnung!");
696 System.exit(0);
698 public void beendeSofort(){
699 this.jFrame.removeWindowListener(this);
700 if(Reha.thisClass.conn != null){
701 try {
702 Reha.thisClass.conn.close();
703 System.out.println("Datenbankverbindung geschlossen");
704 } catch (SQLException e1) {
705 e1.printStackTrace();
708 if(Reha.barcodeScanner != null){
709 try{
710 BarCodeScanner.serialPort.close();
711 Reha.barcodeScanner = null;
712 System.out.println("Serielle-Schnittstelle geschlossen");
713 }catch(NullPointerException ex){
717 if(Reha.timerLaeuft){
718 Reha.fangoTimer.stop();
719 Reha.timerLaeuft = false;
721 if(Reha.nachrichtenTimer != null){
722 Reha.nachrichtenTimer.cancel();
723 Reha.nachrichtenLaeuft = false;
724 Reha.nachrichtenTimer = null;
726 if(rehaIOServer != null){
727 try {
728 rehaIOServer.serv.close();
729 System.out.println("RehaIO-SocketServer geschlossen");
730 } catch (IOException e) {
731 e.printStackTrace();
734 if(rehaCommServer != null){
735 try {
736 rehaCommServer.serv.close();
737 System.out.println("RehaComm-SocketServer geschlossen");
738 } catch (IOException e) {
739 e.printStackTrace();
742 if(SystemConfig.sReaderAktiv.equals("1") && Reha.thisClass.ocKVK != null){
743 try{
744 Reha.thisClass.ocKVK.TerminalDeaktivieren();
745 System.out.println("Card-Terminal deaktiviert");
746 }catch(NullPointerException ex){
750 try{
751 INIFile inif = INITool.openIni(Reha.proghome+"ini/"+Reha.aktIK+"/", "rehajava.ini");
752 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider1",(Object)jSplitLR.getDividerLocation(),null );
753 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider2",(Object)jSplitRechtsOU.getDividerLocation(),null );
754 SystemConfig.UpdateIni(inif, "HauptFenster", "TP1Offen",(Object)(LinkeTaskPane.tp1.isCollapsed() ? "1" : "0"),null );
755 SystemConfig.UpdateIni(inif, "HauptFenster", "TP2Offen",(Object)(LinkeTaskPane.tp4.isCollapsed() ? "1" : "0"),null );
756 SystemConfig.UpdateIni(inif, "HauptFenster", "TP3Offen",(Object)(LinkeTaskPane.tp3.isCollapsed() ? "1" : "0"),null );
757 SystemConfig.UpdateIni(inif, "HauptFenster", "TP4Offen",(Object)(LinkeTaskPane.tp5.isCollapsed() ? "1" : "0"),null );
758 SystemConfig.UpdateIni(inif, "HauptFenster", "TP5Offen",(Object)(LinkeTaskPane.tp2.isCollapsed() ? "1" : "0"),null );
759 SystemConfig.UpdateIni(inif, "HauptFenster", "TP6Offen",(Object)(LinkeTaskPane.tp6.isCollapsed() ? "1" : "0"),null );
760 }catch(NullPointerException ex){
761 JOptionPane.showMessageDialog(null,"Fehler beim Speichern der aktuellen Fensteranordnung!");
763 System.exit(0);
766 private void doCompoundPainter(){
767 new SwingWorker<Void,Void>(){
769 @Override
770 protected Void doInBackground() throws Exception {
771 try{
772 CompoundPainter<Object> cp = null;
773 MattePainter mp = null;
774 LinearGradientPaint p = null;
775 /*****************/
776 Point2D start = new Point2D.Float(0, 0);
777 Point2D end = new Point2D.Float(960,100);
778 float[] dist = {0.0f, 0.75f};
779 Color[] colors = {Color.WHITE,Colors.PiOrange.alpha(0.25f)};
780 p = new LinearGradientPaint(start, end, dist, colors);
781 mp = new MattePainter(p);
782 cp = new CompoundPainter<Object>(mp);
783 Reha.thisClass.compoundPainter.put("PatNeuanlage",cp);
784 /*****************/
785 start = new Point2D.Float(0, 0);
786 end = new Point2D.Float(0,100);
787 dist = new float[] {0.0f, 0.75f};
788 colors = new Color[] {Color.WHITE,new Color(231,120,23)};
789 p = new LinearGradientPaint(start, end, dist, colors);
790 mp = new MattePainter(p);
791 cp = new CompoundPainter<Object>(mp);
792 Reha.thisClass.compoundPainter.put("SuchePanel",cp);
793 /*****************/
794 start = new Point2D.Float(0, 0);
795 end = new Point2D.Float(0,15);//vorher 45
796 dist = new float[] {0.0f, 0.75f};
797 colors = new Color[] {Colors.PiOrange.alpha(0.5f),Color.WHITE};
798 p = new LinearGradientPaint(start, end, dist, colors);
799 mp = new MattePainter(p);
800 cp = new CompoundPainter<Object>(mp);
801 Reha.thisClass.compoundPainter.put("ButtonPanel",cp);
802 /*****************/
803 start = new Point2D.Float(0, 0);
804 end = new Point2D.Float(0,40);
805 dist = new float[] {0.0f, 1.00f};
806 colors = new Color[] {Colors.PiOrange.alpha(0.5f),Color.WHITE};
807 p = new LinearGradientPaint(start, end, dist, colors);
808 mp = new MattePainter(p);
809 cp = new CompoundPainter<Object>(mp);
810 Reha.thisClass.compoundPainter.put("StammDatenPanel",cp);
811 /*****************/
812 start = new Point2D.Float(0, 0);
813 end = new Point2D.Float(0,100);
814 dist = new float[] {0.0f, 0.75f};
815 colors = new Color[] {Colors.PiOrange.alpha(0.70f),Color.WHITE};
816 p = new LinearGradientPaint(start, end, dist, colors);
817 mp = new MattePainter(p);
818 cp = new CompoundPainter<Object>(mp);
819 Reha.thisClass.compoundPainter.put("AnredePanel",cp);
820 /*****************/
821 start = new Point2D.Float(0, 0);
822 end = new Point2D.Float(0,150);
823 dist = new float[] {0.0f, 0.75f};
824 colors = new Color[] {Color.WHITE,Colors.PiOrange.alpha(0.5f)};
825 p = new LinearGradientPaint(start, end, dist, colors);
826 mp = new MattePainter(p);
827 cp = new CompoundPainter<Object>(mp);
828 Reha.thisClass.compoundPainter.put("HauptPanel",cp);
829 /*****************/
830 start = new Point2D.Float(0, 0);
831 end = new Point2D.Float(0,150);
832 dist = new float[] {0.0f, 0.75f};
833 colors = new Color[] {Color.WHITE,Colors.PiOrange.alpha(0.5f)};
834 p = new LinearGradientPaint(start, end, dist, colors);
835 mp = new MattePainter(p);
836 cp = new CompoundPainter<Object>(mp);
837 Reha.thisClass.compoundPainter.put("FliessText",cp);
838 /*****************/
839 start = new Point2D.Float(0, 0);
840 end = new Point2D.Float(0,150);
841 dist = new float[] {0.0f, 0.75f};
842 colors = new Color[] {Color.WHITE,Colors.PiOrange.alpha(0.5f)};
843 p = new LinearGradientPaint(start, end, dist, colors);
844 mp = new MattePainter(p);
845 cp = new CompoundPainter<Object>(mp);
846 Reha.thisClass.compoundPainter.put("getTabs",cp);
847 /*****************/
848 start = new Point2D.Float(0, 0);
849 end = new Point2D.Float(0,450);
850 dist = new float[] {0.0f, 0.75f};
851 colors = new Color[] {Colors.PiOrange.alpha(0.25f),Color.WHITE};
852 p = new LinearGradientPaint(start, end, dist, colors);
853 mp = new MattePainter(p);
854 cp = new CompoundPainter<Object>(mp);
855 Reha.thisClass.compoundPainter.put("getTabs2",cp);
856 /*****************/
857 start = new Point2D.Float(0, 0);
858 end = new Point2D.Float(350,290);
859 dist = new float[] {0.0f, 0.75f};
860 colors = new Color[] {Color.WHITE,Colors.Yellow.alpha(0.05f)};
861 p = new LinearGradientPaint(start, end, dist, colors);
862 mp = new MattePainter(p);
863 cp = new CompoundPainter<Object>(mp);
864 Reha.thisClass.compoundPainter.put("RezeptGebuehren",cp);
865 /*****************/
866 start = new Point2D.Float(0, 0);
867 end = new Point2D.Float(400,550);
868 dist = new float[] {0.0f, 0.75f};
869 colors = new Color[] {Color.WHITE,Colors.Gray.alpha(0.15f)};
870 p = new LinearGradientPaint(start, end, dist, colors);
871 mp = new MattePainter(p);
872 cp = new CompoundPainter<Object>(mp);
873 Reha.thisClass.compoundPainter.put("EBerichtPanel",cp);
874 /*****************/
875 start = new Point2D.Float(0, 0);
876 end = new Point2D.Float(600,350);
877 dist = new float[] {0.0f, 0.75f};
878 colors = new Color[] {Color.WHITE,Colors.Yellow.alpha(0.25f)};
879 p = new LinearGradientPaint(start, end, dist, colors);
880 mp = new MattePainter(p);
881 cp = new CompoundPainter<Object>(mp);
882 Reha.thisClass.compoundPainter.put("ArztBericht",cp);
883 /*****************/
884 start = new Point2D.Float(0, 0);
885 end = new Point2D.Float(600,750);
886 dist = new float[] {0.0f, 0.75f};
887 colors = new Color[] {Color.WHITE,Colors.Yellow.alpha(0.05f)};
888 p = new LinearGradientPaint(start, end, dist, colors);
889 mp = new MattePainter(p);
890 cp = new CompoundPainter<Object>(mp);
891 Reha.thisClass.compoundPainter.put("RezNeuanlage",cp);
892 /*****************/
893 start = new Point2D.Float(0, 0);
894 end = new Point2D.Float(300,100);
895 dist = new float[] {0.0f, 0.75f};
896 colors = new Color[] {Color.WHITE,Colors.Gray.alpha(0.05f)};
897 p = new LinearGradientPaint(start, end, dist, colors);
898 mp = new MattePainter(p);
899 cp = new CompoundPainter<Object>(mp);
900 Reha.thisClass.compoundPainter.put("ScannerUtil",cp);
901 /*****************/
902 start = new Point2D.Float(0, 0);
903 end = new Point2D.Float(0,400);
904 dist = new float[] {0.0f, 0.75f};
905 colors = new Color[] {Color.WHITE,Colors.TaskPaneBlau.alpha(0.45f)};
906 p = new LinearGradientPaint(start, end, dist, colors);
907 mp = new MattePainter(p);
908 cp = new CompoundPainter<Object>(mp);
909 Reha.thisClass.compoundPainter.put("ArztAuswahl",cp);
910 /*****************/
911 start = new Point2D.Float(0, 0);
912 end = new Point2D.Float(0,400);
913 dist = new float[] {0.0f, 0.75f};
914 colors = new Color[] {Color.WHITE,Colors.Green.alpha(0.45f)};
915 p = new LinearGradientPaint(start, end, dist, colors);
916 mp = new MattePainter(p);
917 cp = new CompoundPainter<Object>(mp);
918 Reha.thisClass.compoundPainter.put("KassenAuswahl",cp);
919 /*****************/
920 start = new Point2D.Float(0, 0);
921 end = new Point2D.Float(900,100);
922 dist = new float[] {0.0f, 0.75f};
923 colors = new Color[] {Color.WHITE,Colors.PiOrange.alpha(0.25f)};
924 p = new LinearGradientPaint(start, end, dist, colors);
925 mp = new MattePainter(p);
926 cp = new CompoundPainter<Object>(mp);
927 Reha.thisClass.compoundPainter.put("KVKRohDaten",cp);
928 /*****************/
929 start = new Point2D.Float(0, 0);
930 end = new Point2D.Float(600,550);
931 dist = new float[] {0.0f, 0.75f};
932 colors = new Color[] {Color.WHITE,Colors.TaskPaneBlau.alpha(0.45f)};
933 p = new LinearGradientPaint(start, end, dist, colors);
934 mp = new MattePainter(p);
935 cp = new CompoundPainter<Object>(mp);
936 Reha.thisClass.compoundPainter.put("ArztPanel",cp);
937 /*****************/
938 start = new Point2D.Float(0, 0);
939 end = new Point2D.Float(400,100);
940 dist = new float[]{0.0f, 0.75f};
941 colors = new Color[] {Color.WHITE,Colors.Blue.alpha(0.15f)};
942 p = new LinearGradientPaint(start, end, dist, colors);
943 mp = new MattePainter(p);
944 cp = new CompoundPainter<Object>(mp);
945 Reha.thisClass.compoundPainter.put("ArztNeuanlage",cp);
946 /*****************/
947 start = new Point2D.Float(0, 0);
948 end = new Point2D.Float(400,100);
949 dist = new float[] {0.0f, 0.75f};
950 colors = new Color[] {Color.WHITE,Colors.Green.alpha(0.25f)};
951 p = new LinearGradientPaint(start, end, dist, colors);
952 mp = new MattePainter(p);
953 cp = new CompoundPainter<Object>(mp);
954 Reha.thisClass.compoundPainter.put("KasseNeuanlage",cp);
955 /*****************/
956 start = new Point2D.Float(0, 0);
957 end = new Point2D.Float(600,550);
958 dist = new float[] {0.0f, 0.75f};
959 colors = new Color[] {Color.WHITE,Colors.Green.alpha(0.5f)};
960 p = new LinearGradientPaint(start, end, dist, colors);
961 mp = new MattePainter(p);
962 cp = new CompoundPainter<Object>(mp);
963 Reha.thisClass.compoundPainter.put("KassenPanel",cp);
964 /*****************/
965 start = new Point2D.Float(0, 0);
966 end = new Point2D.Float(200,120);
967 dist = new float[] {0.0f, 0.5f};
968 colors = new Color[] {Colors.TaskPaneBlau.alpha(1.0f), Color.WHITE};
969 p = new LinearGradientPaint(start, end, dist, colors);
970 mp = new MattePainter(p);
971 cp = new CompoundPainter<Object>(mp);
972 Reha.thisClass.compoundPainter.put("SuchenSeite",cp);
973 /*****************/
974 start = new Point2D.Float(0, 0);
975 end = new Point2D.Float(300,270);
976 dist = new float[] {0.0f, 0.75f};
977 colors = new Color[] {Color.WHITE,Colors.Gray.alpha(0.15f)};
978 p = new LinearGradientPaint(start, end, dist, colors);
979 mp = new MattePainter(p);
980 cp = new CompoundPainter<Object>(mp);
981 Reha.thisClass.compoundPainter.put("GutachtenWahl",cp);
982 /*****************/
983 start = new Point2D.Float(0, 0);
984 end = new Point2D.Float(900,100);
985 dist = new float[] {0.0f, 0.75f};
986 colors = new Color[] {Color.WHITE,Colors.Yellow.alpha(0.05f)};
987 p = new LinearGradientPaint(start, end, dist, colors);
988 mp = new MattePainter(p);
989 cp = new CompoundPainter<Object>(mp);
990 Reha.thisClass.compoundPainter.put("VorBerichte",cp);
991 /*****************/
992 start = new Point2D.Float(0, 0);
993 end = new Point2D.Float(0,600);
994 dist = new float[] {0.0f, 0.75f};
995 colors = new Color[] {Colors.Yellow.alpha(0.15f),Color.WHITE};
996 p = new LinearGradientPaint(start, end, dist, colors);
997 mp = new MattePainter(p);
998 cp = new CompoundPainter<Object>(mp);
999 Reha.thisClass.compoundPainter.put("TextBlock",cp);
1000 /*****************/
1001 start = new Point2D.Float(0, 0);
1002 end = new Point2D.Float(200,120);
1003 dist = new float[] {0.0f, 0.5f};
1004 colors = new Color[] {Colors.TaskPaneBlau.alpha(1.0f), Color.WHITE};
1005 p = new LinearGradientPaint(start, end, dist, colors);
1006 mp = new MattePainter(p);
1007 cp = new CompoundPainter<Object>(mp);
1008 Reha.thisClass.compoundPainter.put("TagWahlNeu",cp);
1009 /*****************/
1010 start = new Point2D.Float(0, 0);
1011 end = new Point2D.Float(390,180);
1012 dist = new float[] {0.0f, 0.5f};
1013 colors = new Color[] {Colors.TaskPaneBlau.alpha(1.0f), Color.WHITE};
1014 p = new LinearGradientPaint(start, end, dist, colors);
1015 mp = new MattePainter(p);
1016 cp = new CompoundPainter<Object>(mp);
1017 Reha.thisClass.compoundPainter.put("Zeitfenster",cp);
1018 /*****************/
1019 start = new Point2D.Float(0, 0);
1020 end = new Point2D.Float(400,500);
1021 dist = new float[] {0.0f, 0.5f};
1022 colors = new Color[] {Color.WHITE,Colors.Gray.alpha(0.15f)};
1023 p = new LinearGradientPaint(start, end, dist, colors);
1024 mp = new MattePainter(p);
1025 cp = new CompoundPainter<Object>(mp);
1026 Reha.thisClass.compoundPainter.put("SystemInit",cp);
1028 /*****************/
1029 progLoader = new ProgLoader();
1031 }catch(NullPointerException ex){
1032 ex.printStackTrace();
1034 return null;
1037 }.execute();
1041 /***************************************/
1042 private void starteNachrichtenTimer(){
1043 Reha.nachrichtenTimer = new java.util.Timer();
1044 TimerTask task = new TimerTask() {
1045 public void run() {
1046 if(!nachrichtenInBearbeitung){
1047 //nur wenn das Nachrichtentool nich läuft
1048 if(!RehaIOServer.rehaMailIsActive){
1049 nachrichtenInBearbeitung = true;
1050 /**************/
1051 if( (!Reha.aktUser.equals("")) && (checkForMails()) && (Reha.officeapplication != null)){
1052 nachrichtenRegeln();
1054 /*************/
1056 nachrichtenInBearbeitung = false;
1060 //start des Timers:
1061 Reha.nachrichtenTimer.scheduleAtFixedRate(task, SystemConfig.timerdelay, SystemConfig.timerdelay);
1063 public static void nachrichtenRegeln(){
1064 //System.out.println(Reha.aktUser);
1065 boolean newmail = checkForMails();
1066 if((!Reha.aktUser.trim().startsWith("Therapeut")) && RehaIOServer.rehaMailIsActive && newmail){
1067 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaMailreversePort, "Reha#"+RehaIOMessages.MUST_CHANGEUSER+"#"+Reha.aktUser);
1068 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaMailreversePort,"Reha#"+RehaIOMessages.MUST_GOTOFRONT);
1069 }else if((!Reha.aktUser.trim().startsWith("Therapeut")) && RehaIOServer.rehaMailIsActive && (!newmail)){
1070 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaMailreversePort, "Reha#"+RehaIOMessages.MUST_CHANGEUSER+"#"+Reha.aktUser);
1071 }else{
1072 if((!Reha.aktUser.trim().startsWith("Therapeut")) && Reha.checkForMails()){
1073 if(Reha.isStarted){
1074 new LadeProg(Reha.proghome+"RehaMail.jar"+" "+Reha.proghome+" "+Reha.aktIK+" "+Reha.xport+" "+Reha.aktUser.replace(" ", "#"));
1079 public static boolean checkForMails(){
1080 if(!SqlInfo.holeEinzelFeld("select gelesen from pimail where empfaenger_person ='"+
1081 Reha.aktUser+"' and gelesen='F' LIMIT 1").trim().equals("") ) {
1082 return true;
1084 return false;
1086 /***************************************/
1087 public void aktiviereNaechsten(int welchen){
1088 JInternalFrame[] frame = desktops[welchen].getAllFrames();
1089 if(frame.length > 0){
1090 for(int i = 0; i < frame.length ;i++){
1091 ////System.out.println("InternalFrames übrig = "+frame[i].getTitle());
1092 ((JRehaInternal)frame[i]).toFront();
1093 ((JRehaInternal)frame[i]).setActive(true);
1094 ((JRehaInternal)frame[i]).getContent().requestFocus();
1095 if(i==0){
1096 break;
1099 }else{
1100 if(welchen==0){
1101 frame = desktops[1].getAllFrames();
1102 for(int i = 0; i < frame.length;i++){
1103 ((JRehaInternal)frame[i]).toFront();
1104 ((JRehaInternal)frame[i]).setActive(true);
1105 ((JRehaInternal)frame[i]).getContent().requestFocus();
1106 ProgLoader.containerHandling(1);
1107 if(i==0){
1108 break;
1111 }else{
1112 frame = desktops[0].getAllFrames();
1113 for(int i = 0; i < frame.length;i++){
1114 ((JRehaInternal)frame[i]).toFront();
1115 ((JRehaInternal)frame[i]).setActive(true);
1116 ((JRehaInternal)frame[i]).getContent().requestFocus();
1117 ProgLoader.containerHandling(0);
1118 if(i==0){
1119 break;
1127 public void aktiviereNachNamen(String winname){
1130 public void aktiviereNachWinnum(int winnum){
1133 public void setzeDivider(){
1137 @SuppressWarnings("rawtypes")
1138 private JXFrame getJFrame() {
1139 if (jFrame == null) {
1140 jFrame = new JXFrame();/*{
1142 private static final long serialVersionUID = 1L;
1144 //@Override
1145 public void setVisible(final boolean visible) {
1146 if(!isStarted){return;}
1147 if(getState()!=JFrame.NORMAL) { setState(JFrame.NORMAL); }
1149 if (!visible || !isVisible()) {
1150 super.setVisible(visible);
1153 if (visible) {
1154 int state = super.getExtendedState();
1155 state &= ~JFrame.ICONIFIED;
1156 super.setExtendedState(state);
1157 super.setAlwaysOnTop(true);
1158 super.toFront();
1159 super.requestFocus();
1160 super.setAlwaysOnTop(false);
1164 //@Override
1165 public void toFront() {
1166 super.setVisible(true);
1167 int state = super.getExtendedState();
1168 state &= ~JFrame.ICONIFIED;
1169 super.setExtendedState(state);
1170 super.setAlwaysOnTop(true);
1171 super.toFront();
1172 super.requestFocus();
1173 super.setAlwaysOnTop(false);
1175 };*/
1176 sqlInfo.setFrame(jFrame);
1177 //thisClass = this;
1178 jFrame.addWindowListener(this);
1179 jFrame.addWindowStateListener(this);
1180 jFrame.addComponentListener(this);
1181 jFrame.addContainerListener(this);
1183 new Thread(new SplashStarten()).start();
1185 jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
1188 JDesktopPane desk = new JDesktopPane();
1189 desk.setName("desk");
1190 desk.setOpaque(false);
1191 jFrame.setContentPane(desk);
1193 /*******/
1194 jFrame.setTitle(Titel+Titel2);
1195 jFrame.setJMenuBar(getJJMenuBar());
1196 jFrame.setStatusBar(getJXStatusBar());
1197 Reha.thisClass.shiftLabel.setText("Prog-User ok!");
1198 Reha.RehaPainter[0] = RehaPainters.getBlauPainter();
1199 Reha.RehaPainter[1] = RehaPainters.getSchwarzGradientPainter();
1200 Reha.RehaPainter[2] = RehaPainters.getBlauGradientPainter() ;
1203 * Zuerste die Panels für die linke und rechte Seite erstellen,
1204 * dann die Splitpane generieren und die Panels L+R übergeben
1207 jxLinks = new JXPanel(new BorderLayout());
1208 jxLinks.setDoubleBuffered(true);
1209 jxLinks.setName("LinkesGrundpanel");
1210 jxLinks.setBorder(null);
1211 jxLinks.setBackground(Color.WHITE);
1213 jxRechts = new JXPanel(new BorderLayout());
1214 jxRechts.setDoubleBuffered(true);
1215 jxRechts.setName("RechtesGrundpanel");
1216 jxRechts.setBackground(Color.WHITE);
1217 jxRechts.setBorder(BorderFactory.createEmptyBorder(5,0,5,5));
1219 jSplitLR = UIFSplitPane.createStrippedSplitPane(JSplitPane.HORIZONTAL_SPLIT,
1220 jxRechts,
1221 jxLinks);
1222 jSplitLR.setBackground(Color.WHITE);
1223 jSplitLR.setDividerSize(7);
1224 jSplitLR.addPropertyChangeListener(new PropertyChangeListener(){
1225 @Override
1226 public void propertyChange(PropertyChangeEvent arg0) {
1227 dividerLocLR = jSplitLR.getDividerLocation();
1231 jSplitLR.setDividerBorderVisible(false);
1232 jSplitLR.setName("GrundSplitLinksRechts");
1233 jSplitLR.setOneTouchExpandable(true);
1234 jSplitLR.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().width-250);
1235 ((BasicSplitPaneUI) jSplitLR.getUI()).getDivider().setBackground(Color.WHITE);
1237 desktop = new JXPanel(new BorderLayout());
1238 desktop.add(jSplitLR,BorderLayout.CENTER);
1239 desktop.setSize(2500,2500);
1241 jFrame.getContentPane().add(desktop);
1242 jFrame.getContentPane().addComponentListener(this);
1244 /********* den BackgroundPainter basteln *********/
1245 Point2D start = new Point2D.Float(0, 0);
1246 Point2D end = new Point2D.Float(800,500);
1247 float[] dist = {0.2f, 0.7f, 1.0f};
1248 Color[] colors = {Colors.TaskPaneBlau.alpha(1.0f), Color.WHITE, Colors.TaskPaneBlau.alpha(1.0f)};
1249 LinearGradientPaint p =
1250 new LinearGradientPaint(start, end, dist, colors);
1251 MattePainter mp = new MattePainter(p);
1253 DropShadowBorder dropShadow = new DropShadowBorder(Color.BLACK, 10, 1, 5, false, true, true, true);
1256 * Jetzt die Panels für die rechte Seite oben und unten erstellen,
1257 * dann die Splitpane generieren und die Panels O+U übergeben.
1259 jxRechtsOben = new JXPanel(new BorderLayout());
1260 jxRechtsOben.setDoubleBuffered(true);
1261 jxRechtsOben.setPreferredSize(new Dimension(0,250));
1262 jxRechtsOben.setName("RechtsOben");
1263 jxRechtsOben.setBorder(null);
1264 jxRechtsOben.setBackground(Color.WHITE);
1265 JXPanel jp2 = new JXPanel(new BorderLayout());
1266 jp2.setBackground(Color.WHITE);
1267 jp2.setBorder(dropShadow);
1268 //***
1270 jpOben = new JXPanel(new BorderLayout());
1271 jpOben.setBorder(null);
1272 jpOben.setBackgroundPainter(new CompoundPainter(mp));
1273 jpOben.setName("PanelOben");
1274 jpOben.addComponentListener(this);
1276 desktops[0] = new Hintergrund(Reha.rehaBackImg);
1277 desktops[0].setName("DesktopOben");
1278 desktops[0].setOpaque(false);
1279 desktops[0].setSize(2000,2000);
1280 desktops[0].setDesktopManager(new OOODesktopManager(0));
1281 desktops[0].addFocusListener(this);
1282 desktops[0].addMouseListener(this);
1283 desktops[0].addMouseMotionListener(this);
1284 desktops[0].addComponentListener(this);
1285 desktops[0].addContainerListener(this);
1287 jpOben.add(desktops[0]);
1289 jp2.add(jpOben,BorderLayout.CENTER);
1290 jxRechtsOben.add(jp2,BorderLayout.CENTER);
1291 jxRechtsOben.validate();
1292 jxRechtsOben.updateUI();
1295 /*********************/
1296 jxRechtsUnten = new JXPanel(new BorderLayout());
1297 jxRechtsUnten.setDoubleBuffered(true);
1298 jxRechtsUnten.setPreferredSize(new Dimension(0,250));
1299 jxRechtsUnten.setName("RechtsUnten");
1300 jxRechtsUnten.setBorder(null);
1301 jxRechtsUnten.setBackground(Color.WHITE);
1303 jp2 = new JXPanel(new BorderLayout());
1304 jp2.setBackground(Color.WHITE);
1305 jp2.setBorder(dropShadow);
1306 jp2.addComponentListener(this);
1308 jpUnten = new JXPanel(new BorderLayout());
1309 jpUnten.setBorder(null);
1310 jpUnten.setBackgroundPainter(new CompoundPainter(mp));
1311 jpUnten.setName("PanelUnten");
1312 jpUnten.addComponentListener(this);
1314 desktops[1] = new Hintergrund(Reha.rehaBackImg);
1315 desktops[1].setName("DesktopUnten");
1316 desktops[1].setOpaque(false);
1317 desktops[1].setSize(2000,2000);
1318 desktops[1].setDesktopManager(new OOODesktopManager(1));
1319 desktops[1].addFocusListener(this);
1320 desktops[1].addMouseListener(this);
1321 desktops[1].addMouseMotionListener(this);
1322 desktops[1].addComponentListener(this);
1323 desktops[1].addContainerListener(this);
1325 //desktops[1].add(new WorkFlow("WorkFlow",null,1));
1327 jpUnten.add(desktops[1]);
1328 jp2.add(jpUnten,BorderLayout.CENTER);
1329 jxRechtsUnten.add(jp2,BorderLayout.CENTER);
1330 jxRechtsUnten.validate();
1331 jxRechtsUnten.updateUI();
1332 /********************************/
1334 if(SystemConfig.desktopHorizontal){
1335 jSplitRechtsOU = UIFSplitPane.createStrippedSplitPane(JSplitPane.VERTICAL_SPLIT,
1336 jxRechtsOben,
1337 jxRechtsUnten);
1338 }else{
1339 jSplitRechtsOU = UIFSplitPane.createStrippedSplitPane(JSplitPane.HORIZONTAL_SPLIT,
1340 jxRechtsOben,
1341 jxRechtsUnten);
1344 jSplitRechtsOU.addPropertyChangeListener(new PropertyChangeListener(){
1345 @Override
1346 public void propertyChange(PropertyChangeEvent arg0) {
1347 //dividerLocOU = jSplitRechtsOU.getDividerLocation();
1351 jSplitRechtsOU.setDividerBorderVisible(false);
1352 jSplitRechtsOU.setDividerSize(7);
1353 ((BasicSplitPaneUI) jSplitRechtsOU.getUI()).getDivider().setBackground(Color.WHITE);
1355 jSplitRechtsOU.setBackground(Color.WHITE);
1356 jSplitRechtsOU.setName("RechtsSplitObenUnten");
1357 jSplitRechtsOU.setOneTouchExpandable(true);
1358 jxRechts.add(jSplitRechtsOU,BorderLayout.CENTER); //bislang o.k.
1362 jxRechts.addComponentListener(this);
1363 jxRechts.validate();
1366 * Jetzt erstellen wir die TaskPanes der linken Seite
1368 while((!Reha.iconsOk) ){
1369 try {
1370 Thread.sleep(25);
1371 } catch (InterruptedException e) {
1372 e.printStackTrace();
1375 jxLinks.add(new LinkeTaskPane(),BorderLayout.CENTER);
1376 jxLinks.validate();
1377 jFrame.getContentPane().validate();
1379 new Thread(){
1380 public void run(){
1381 while((!Reha.iconsOk) && (!Reha.DbOk)){
1382 try {
1383 Thread.sleep(25);
1384 } catch (InterruptedException e) {
1385 e.printStackTrace();
1388 jxLinks.add(new LinkeTaskPane(),BorderLayout.CENTER);
1389 jxLinks.validate();
1390 jFrame.getContentPane().validate();
1392 }.start();
1394 new SwingWorker<Void,Void>(){
1395 @Override
1396 protected Void doInBackground() throws java.lang.Exception {
1397 try{
1398 INIFile updateini = null;
1399 File f = new File(Reha.proghome+"ini/tpupdateneu.ini");
1400 if(f.exists()){
1401 updateini = INITool.openIni(Reha.proghome+"ini/", "tpupdateneu.ini");
1402 }else{
1403 updateini = INITool.openIni(Reha.proghome+"ini/", "tpupdate.ini");
1405 try{
1406 if(updateini.getStringProperty("TheraPiUpdates", "ProxyIP") != null && updateini.getStringProperty("TheraPiUpdates", "ProxyPort") != null && updateini.getStringProperty("TheraPiUpdates", "NoProxy") != null &&
1407 updateini.getStringProperty("TheraPiUpdates", "ProxyIP").equals("") && updateini.getStringProperty("TheraPiUpdates", "ProxyPort").equals("") && updateini.getStringProperty("TheraPiUpdates", "NoProxy").equals("")) {
1408 System.setProperty("http.proxyHost", updateini.getStringProperty("TheraPiUpdates", "ProxyIP"));
1409 System.setProperty("http.proxyPort", updateini.getStringProperty("TheraPiUpdates", "ProxyPort"));
1410 System.setProperty("http.nonProxyHosts", updateini.getStringProperty("TheraPiUpdates", "NoProxy"));
1411 System.setProperty("ftp.proxyHost", updateini.getStringProperty("TheraPiUpdates", "ProxyIP"));
1412 System.setProperty("ftp.proxyPort", updateini.getStringProperty("TheraPiUpdates", "ProxyPort"));
1413 System.setProperty("ftp.nonProxyHosts", updateini.getStringProperty("TheraPiUpdates", "NoProxy"));
1415 }catch(NullPointerException ex){
1416 ex.printStackTrace();
1418 try{
1419 Reha.updatesChecken = (updateini.getIntegerProperty("TheraPiUpdates", "UpdateChecken") > 0 ? true : false);
1420 System.out.println("System soll nach Updates suchen = "+Reha.updatesChecken);
1421 }catch(NullPointerException ex){
1422 Reha.updatesChecken = true;
1424 if(!Reha.updatesChecken){
1425 return null;
1427 new Thread(){
1428 public void run(){
1429 try{
1430 TestForUpdates tfupd = null;
1431 tfupd = new TestForUpdates();
1433 Reha.updatesBereit = tfupd.doFtpTest();
1435 if(Reha.updatesBereit){
1436 JOptionPane.showMessageDialog(null, "<html><b><font color='aa0000'>Es existieren Updates für Thera-Pi 1.0.</font></b><br><br>Bitte gehen Sie auf die Seite<br><br><b>System-Initialisierung -> 'Software-Updateservice'</b></html>");
1438 }catch(NullPointerException ex){
1439 System.out.println("Fehler bei der Updatesuche");
1440 ex.printStackTrace();
1443 }.start();
1445 }catch(NullPointerException ex){
1446 StackTraceElement[] element = ex.getStackTrace();
1447 String cmd = "";
1448 for(int i = 0; i < element.length;i++){
1449 cmd = cmd+element[i]+"\n";
1451 JOptionPane.showMessageDialog(null, "Suche nach Updates fehlgeschlagen!\nIst die Internetverbindung o.k.");
1453 return null;
1456 }.execute();
1460 thisFrame = jFrame;
1462 jxLinks.setAlpha(1.0f);
1463 jxRechts.setAlpha(1.0f);
1465 //jxLinks.setAlpha(0.3f);
1466 //jxRechts.setAlpha(0.3f);
1468 //new Thread(new DatenbankStarten()).start();
1470 jFrame.setExtendedState(JXFrame.MAXIMIZED_BOTH);
1472 setKeyboardActions();
1473 setFocusWatcher();
1476 AktiveFenster.Init();
1480 rehaEvent.addRehaEventListener(new RehaEventListener() {
1481 @Override
1482 public void RehaEventOccurred(RehaEvent evt) {
1483 //System.out.println("Event getSource: = "+evt.getSource());
1484 //System.out.println("Event Nachricht: = "+ evt.getRehaEvent());
1489 return jFrame;
1491 public static void setSystemConfig(SystemConfig sysConf){
1492 Reha.sysConf = sysConf;
1495 private JXStatusBar getJXStatusBar() {
1496 if (jXStatusBar == null) {
1497 UIManager.put("Separator.foreground", new Color(231,120,23) );
1499 jXStatusBar = new JXStatusBar();
1501 jXStatusBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
1502 jXStatusBar.putClientProperty(Options.NO_CONTENT_BORDER_KEY,Boolean.TRUE );
1503 jXStatusBar.putClientProperty(Options.HI_RES_GRAY_FILTER_ENABLED_KEY,Boolean.FALSE );
1505 jXStatusBar.setPreferredSize(new Dimension(1280, 30));
1506 jXStatusBar.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
1507 jXStatusBar.setLayout(new BorderLayout());
1509 FormLayout sblay = new FormLayout("10dlu,fill:0:grow(0.16),4dlu,fill:0:grow(0.16),4dlu,fill:0:grow(0.16),4dlu,fill:0:grow(0.16),4dlu,fill:0:grow(0.16),4dlu,fill:0:grow(0.16),10dlu",
1510 "fill:0:grow(0.5),18px,fill:0:grow(0.5)");
1511 CellConstraints sbcc = new CellConstraints();
1512 JXPanel sbkomplett = new JXPanel();
1513 sbkomplett.setBorder(BorderFactory.createEmptyBorder(1,0,1,0));
1514 sbkomplett.setOpaque(false);
1515 sbkomplett.setLayout(sblay);
1517 /*************1 Container*****************************/
1518 JXPanel bar = new JXPanel(new BorderLayout());
1519 bar.setOpaque(false);
1520 bar.setBorder(BorderFactory.createLoweredBevelBorder());
1521 JXPanel versionbar = new JXPanel(new BorderLayout());
1522 versionbar.setOpaque(false);
1523 versionbar.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
1524 dbLabel = new JLabel(" ");
1525 //JLabel lab = new JLabel("Benutzer: Admin");
1526 dbLabel.setVerticalAlignment(JLabel.CENTER);
1527 dbLabel.setHorizontalAlignment(JLabel.LEFT);
1528 versionbar.add(dbLabel);
1529 bar.add(versionbar);
1530 sbkomplett.add(bar,sbcc.xy(2, 2));
1532 /*************2 Container*****************************/
1534 FlowLayout flay = new FlowLayout(FlowLayout.LEFT);
1535 flay.setVgap(1);
1536 jxPinContainer = new JXPanel(flay);
1537 jxPinContainer.setBorder(null);
1538 jxPinContainer.setOpaque(false);
1539 bar = new JXPanel(new BorderLayout());
1540 bar.setOpaque(false);
1541 bar.setBorder(BorderFactory.createLoweredBevelBorder());
1542 JXPanel bar2 = new JXPanel(new BorderLayout());
1543 bar2.setOpaque(false);
1544 bar2.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
1545 messageLabel = new JLabel("starte OpenOffice.org");
1546 messageLabel.setForeground(Color.RED);
1547 messageLabel.setVerticalAlignment(SwingConstants.CENTER);
1548 messageLabel.setHorizontalAlignment(SwingConstants.LEFT);
1549 jxPinContainer.add(messageLabel);
1550 bar2.add(jxPinContainer);
1551 bar.add(bar2);
1552 sbkomplett.add(bar,sbcc.xy(4, 2));
1554 /**************3 Container****************************/
1556 bar = new JXPanel(new BorderLayout());
1557 bar.setOpaque(false);
1558 bar.setBorder(BorderFactory.createLoweredBevelBorder());
1559 bar2 = new JXPanel(new BorderLayout());
1560 bar2.setOpaque(false);
1561 bar2.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
1562 mousePositionLabel = new javax.swing.JLabel("Druckliste = leer");
1563 mousePositionLabel.setHorizontalAlignment(SwingConstants.LEFT);
1564 mousePositionLabel.setVerticalAlignment(SwingConstants.CENTER);
1565 bar2.add(mousePositionLabel);
1566 bar.add(bar2);
1567 sbkomplett.add(bar,sbcc.xy(6, 2));
1569 /**************4 Container****************************/
1571 bar = new JXPanel(new BorderLayout());
1572 bar.setOpaque(false);
1573 bar.setBorder(BorderFactory.createLoweredBevelBorder());
1574 bar2 = new JXPanel(new BorderLayout());
1575 bar2.setOpaque(false);
1576 bar2.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
1577 Rehaprogress = new JProgressBar();
1578 Rehaprogress.setOpaque(false);
1579 Rehaprogress.setIndeterminate(true);
1580 Rehaprogress.setForeground(Color.RED);
1581 Rehaprogress.setBorder(null);
1582 Rehaprogress.setBorderPainted(false);
1584 bar2.add(Rehaprogress);
1585 bar.add(bar2);
1586 sbkomplett.add(bar,sbcc.xy(8, 2));
1588 /***************5 Container***************************/
1590 bar = new JXPanel(new BorderLayout());
1591 bar.setOpaque(false);
1592 bar.setBorder(BorderFactory.createLoweredBevelBorder());
1593 bar2 = new JXPanel(new BorderLayout());
1594 bar2.setOpaque(false);
1595 bar2.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
1597 shiftLabel = new JLabel("Standard User");
1598 shiftLabel.setForeground(Color.RED);
1599 shiftLabel.setVerticalAlignment(SwingConstants.CENTER);
1600 shiftLabel.setHorizontalAlignment(SwingConstants.LEFT);
1601 shiftLabel.setForeground(Color.RED);
1602 bar2.add(shiftLabel,BorderLayout.WEST);
1603 bar.add(bar2);
1604 sbkomplett.add(bar,sbcc.xy(10,2));
1606 /******************************************/
1608 bar = new JXPanel(new BorderLayout());
1609 bar.setOpaque(false);
1610 bar.setBorder(BorderFactory.createLoweredBevelBorder());
1611 bar2 = new JXPanel(new BorderLayout());
1612 bar2.setOpaque(false);
1613 bar2.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
1614 copyLabel = new JLabel("");
1615 copyLabel.setHorizontalAlignment(SwingConstants.LEFT);
1616 copyLabel.setVerticalAlignment(SwingConstants.CENTER);
1617 new SwingWorker<Void,Void>(){
1618 @Override
1619 protected Void doInBackground() throws Exception {
1620 while(! iconsOk){
1621 try {
1622 Thread.sleep(20);
1623 } catch (InterruptedException e) {
1624 e.printStackTrace();
1627 copyLabel.setIcon(SystemConfig.hmSysIcons.get("bunker"));
1628 return null;
1630 }.execute();
1631 DropTarget dndt = new DropTarget();
1632 DropTargetListener dropTargetListener =
1633 new DropTargetListener() {
1634 public void dragEnter(DropTargetDragEvent e) {}
1635 public void dragExit(DropTargetEvent e) {}
1636 public void dragOver(DropTargetDragEvent e) {}
1637 public void drop(DropTargetDropEvent e) {
1638 String mitgebracht = "";
1639 try {
1640 Transferable tr = e.getTransferable();
1641 //Ursprüngliche Routine
1643 DataFlavor[] flavors = tr.getTransferDataFlavors();
1644 for (int i = 0; i < flavors.length; i++){
1645 mitgebracht = String.valueOf((String) tr.getTransferData(flavors[i]).toString());
1648 if(Reha.osVersion.contains("Linux")){
1649 if(Reha.dragDropComponent instanceof JRtaTextField){
1650 mitgebracht = ((JRtaTextField)Reha.dragDropComponent).getText();
1652 }else{
1653 DataFlavor[] flavors = tr.getTransferDataFlavors();
1654 for (int i = 0; i < flavors.length; i++){
1655 mitgebracht = String.valueOf((String) tr.getTransferData(flavors[i]).toString());
1659 if(mitgebracht.indexOf("°") >= 0){
1660 String[] labs = mitgebracht.split("°");
1661 if(labs[0].contains("TERMDAT")){
1662 copyLabel.setText(labs[1]+"°"+labs[2]+"°"+labs[3]);
1663 bunker.setText("TERMDATEXT°"+copyLabel.getText());
1664 e.dropComplete(true);
1665 return;
1666 }else if(labs[0].contains("PATDAT")){
1667 copyLabel.setText("");
1668 bunker.setText("");
1669 e.dropComplete(true);
1670 }else{
1671 copyLabel.setText("");
1672 bunker.setText("");
1673 e.dropComplete(true);
1674 return;
1677 } catch (Throwable t) { t.printStackTrace(); }
1678 e.dropComplete(true);
1680 public void dropActionChanged(
1681 DropTargetDragEvent e) {}
1683 try {
1684 dndt.addDropTargetListener(dropTargetListener);
1685 } catch (TooManyListenersException e1) {
1686 e1.printStackTrace();
1688 copyLabel.setDropTarget(dndt);
1690 final String propertyName = "text";
1691 bunker = new JLabel();
1692 bunker.setName("bunker");
1693 bunker.setTransferHandler(new TransferHandler(propertyName));
1694 copyLabel.setTransferHandler(new TransferHandler(propertyName));
1695 copyLabel.setName("copyLabel");
1696 /*********************/
1697 if(Reha.osVersion.contains("Linux")){
1698 DragGestureListener dragGestureListener = new DragGestureListener() {
1699 public void dragGestureRecognized(
1700 DragGestureEvent e) {
1701 StringSelection selection = new StringSelection(copyLabel.getText());
1702 //if(Reha.osVersion.contains("Linux")){
1703 Reha.dragDropComponent = (JComponent) bunker;
1704 if(!Rechte.hatRecht(Rechte.Kalender_termindragdrop, false)){
1705 return;
1707 JComponent comp = (JComponent)copyLabel;
1708 if( ((JLabel)comp).getText().equals("") ){
1709 return;
1711 if(bunker.getText().startsWith("TERMDAT")){
1712 TerminFenster.setDragMode(0);
1715 e.startDrag(null, selection, null);
1719 DragSource dragSource = new DragSource();
1721 @SuppressWarnings("unused")
1722 DragGestureRecognizer dgr = dragSource.createDefaultDragGestureRecognizer(
1723 copyLabel,
1724 DnDConstants.ACTION_COPY,
1725 dragGestureListener);
1727 /*********************/
1729 copyLabel.addMouseListener(new MouseAdapter() {
1730 public void mousePressed(MouseEvent evt) {
1731 if(!Rechte.hatRecht(Rechte.Kalender_termindragdrop, false)){
1732 return;
1734 JComponent comp = (JComponent)evt.getSource();
1735 if( ((JLabel)comp).getText().equals("") ){
1736 return;
1738 if(bunker.getText().startsWith("TERMDAT")){
1739 TerminFenster.setDragMode(0);
1741 TransferHandler th = bunker.getTransferHandler();
1742 th.exportAsDrag((JComponent) bunker, evt, TransferHandler.COPY);
1745 bar2.add(copyLabel);
1746 bar.add(bar2);
1747 sbkomplett.add(bar,sbcc.xy(12,2));
1748 sbkomplett.validate();
1749 jXStatusBar.add(sbkomplett,BorderLayout.CENTER);
1750 jXStatusBar.validate();
1751 jXStatusBar.setVisible(true);
1754 return jXStatusBar;
1756 public void progressStarten(boolean starten){
1757 final boolean xstarten = starten;
1758 new SwingWorker<Void,Void>(){
1759 @Override
1760 protected Void doInBackground() throws Exception {
1761 new Thread(){
1762 public void run(){
1763 Rehaprogress.setIndeterminate(xstarten);
1765 }.start();
1766 return null;
1768 }.execute();
1771 private JMenuBar getJJMenuBar() {
1773 if (jJMenuBar == null) {
1774 jJMenuBar = new JMenuBar();
1775 jJMenuBar.setFont(new Font("Dialog", Font.PLAIN, 12));
1776 jJMenuBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
1777 jJMenuBar.add(getFileMenu());
1778 jJMenuBar.add(getstammMenu());
1779 jJMenuBar.add(new TerminMenu().getJMenu());
1780 jJMenuBar.add(getabrechnungMenu());
1781 jJMenuBar.add(geturlaubMenu());
1782 jJMenuBar.add(getverkaufMenu());
1783 jJMenuBar.add(getstatistikMenu());
1784 jJMenuBar.add(getbueroMenu());
1785 jJMenuBar.add(gettoolsMenu());
1786 jJMenuBar.add(getHelpMenu());
1788 return jJMenuBar;
1791 private JMenu getFileMenu() {
1792 if (fileMenu == null) {
1793 fileMenu = new JMenu();
1794 fileMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1795 fileMenu.setText("Datei");
1796 fileMenu.add(getExitMenuItem());
1798 return fileMenu;
1801 private JMenu getstammMenu() {
1802 if (stammMenu == null) {
1803 stammMenu = new JMenu();
1804 stammMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1805 stammMenu.setText("Stammdaten");
1806 JMenuItem men = new JMenuItem("Patienten Rezepte etc.");
1807 men.setActionCommand("patient");
1808 men.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK, false));
1809 men.setMnemonic(KeyEvent.VK_P);
1810 men.addActionListener(this);
1811 stammMenu.add(men);
1812 stammMenu.addSeparator();
1813 men = new JMenuItem("Krankenkassen");
1814 men.setActionCommand("kasse");
1815 men.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, Event.CTRL_MASK, false));
1816 men.setMnemonic(KeyEvent.VK_K);
1817 men.addActionListener(this);
1818 stammMenu.add(men);
1819 stammMenu.addSeparator();
1820 men = new JMenuItem("Ärzte");
1821 men.setActionCommand("arzt");
1822 men.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK, false));
1823 men.setMnemonic(KeyEvent.VK_A);
1824 men.addActionListener(this);
1825 stammMenu.add(men);
1828 return stammMenu;
1830 private JMenu getabrechnungMenu() {
1831 if (abrechnungMenu == null) {
1832 abrechnungMenu = new JMenu();
1833 abrechnungMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1834 abrechnungMenu.setText("Abrechnung");
1835 JMenuItem men = new JMenuItem("Heilmittel-Abrechnung nach §302 SGB V");
1836 men.setActionCommand("hmabrechnung");
1837 men.addActionListener(this);
1838 abrechnungMenu.add(men);
1839 abrechnungMenu.addSeparator();
1840 men = new JMenuItem("Reha-Abrechnung");
1841 men.setActionCommand("rehaabrechnung");
1842 men.addActionListener(this);
1843 abrechnungMenu.add(men);
1844 abrechnungMenu.addSeparator();
1845 men = new JMenuItem("Barkasse abrechnen");
1846 men.setActionCommand("barkasse");
1847 men.addActionListener(this);
1848 abrechnungMenu.add(men);
1849 abrechnungMenu.addSeparator();
1850 men = new JMenuItem("Anmeldezahlen ermitteln");
1851 men.setActionCommand("anmeldezahlen");
1852 men.addActionListener(this);
1853 abrechnungMenu.add(men);
1854 men = new JMenuItem("Tagesumsätze ermitteln");
1855 men.setActionCommand("tagesumsatz");
1856 men.addActionListener(this);
1857 abrechnungMenu.add(men);
1858 abrechnungMenu.addSeparator();
1859 men = new JMenuItem("Offene Posten / Mahnwesen");
1860 men.setActionCommand("offeneposten");
1861 men.addActionListener(this);
1862 abrechnungMenu.add(men);
1863 abrechnungMenu.addSeparator();
1864 men = new JMenuItem("Rezeptgebührrechnung/Ausfallrechnung");
1865 men.setActionCommand("rgaffaktura");
1866 men.addActionListener(this);
1867 abrechnungMenu.add(men);
1869 return abrechnungMenu;
1872 private JMenu getstatistikMenu() {
1873 if (statistikMenu == null) {
1874 statistikMenu = new JMenu();
1875 statistikMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1876 statistikMenu.setText("Statistiken");
1877 JMenuItem men = new JMenuItem("LVA/BfA Statistik");
1878 men.setActionCommand("lvastatistik");
1879 men.addActionListener(this);
1880 statistikMenu.add(men);
1882 return statistikMenu;
1885 private JMenu getbueroMenu() {
1886 if (bueroMenu == null) {
1887 bueroMenu = new JMenu();
1888 bueroMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1889 bueroMenu.setText("Büroprogramme");
1891 return bueroMenu;
1894 private JMenu gettoolsMenu() {
1895 if (toolsMenu == null) {
1896 toolsMenu = new JMenu();
1897 toolsMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1898 toolsMenu.setText("Tools");
1899 JMenuItem men = new JMenuItem("Rezeptnummer suchen");
1900 men.setActionCommand("rezeptfahnder");
1901 men.addActionListener(this);
1902 toolsMenu.add(men);
1903 toolsMenu.addSeparator();
1904 men = new JMenuItem("Kassenbuch erstellen");
1905 men.setActionCommand("kassenbuch");
1906 men.addActionListener(this);
1907 toolsMenu.add(men);
1908 toolsMenu.addSeparator();
1909 men = new JMenuItem("Geburtstagsbriefe erstellen");
1910 men.setActionCommand("geburtstagsbriefe");
1911 men.addActionListener(this);
1912 toolsMenu.add(men);
1913 toolsMenu.addSeparator();
1914 men = new JMenuItem("Sql-Modul");
1915 men.setActionCommand("sqlmodul");
1916 men.addActionListener(this);
1917 toolsMenu.add(men);
1919 men = new JMenuItem("INI-Editor");
1920 men.setActionCommand("iniedit");
1921 men.addActionListener(this);
1922 toolsMenu.add(men);
1923 toolsMenu.addSeparator();
1925 men = new JMenuItem("§301 Reha Fall-Steuerung");
1926 men.setActionCommand("fallsteuerung");
1927 men.addActionListener(this);
1928 toolsMenu.add(men);
1929 toolsMenu.addSeparator();
1930 men = new JMenuItem("Work-Flow Manager");
1931 men.setActionCommand("workflow");
1932 men.addActionListener(this);
1933 toolsMenu.add(men);
1934 toolsMenu.addSeparator();
1935 men = new JMenuItem("Heilmittelrichtlinien-Tool");
1936 men.setActionCommand("hmrsearch");
1937 men.addActionListener(this);
1938 toolsMenu.add(men);
1939 men = new JMenuItem("Thera-Pi OCR-Modul");
1940 men.setActionCommand("ocr");
1941 men.addActionListener(this);
1942 toolsMenu.add(men);
1945 return toolsMenu;
1948 private JMenu getverkaufMenu() {
1949 if (verkaufMenu == null) {
1950 verkaufMenu = new JMenu();
1951 verkaufMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1952 verkaufMenu.setText("Verkauf");
1953 JMenuItem men = new JMenuItem("Verkaufsmodul starten");
1954 men.setActionCommand("verkauf");
1955 men.addActionListener(this);
1956 verkaufMenu.add(men);
1958 return verkaufMenu;
1961 private JMenu geturlaubMenu() {
1962 if (urlaubMenu == null) {
1963 urlaubMenu = new JMenu();
1964 urlaubMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1965 urlaubMenu.setText("Urlaub/Ãœberstunden");
1966 JMenuItem men = new JMenuItem("Urlaub-/Ãœberstunden verwalten");
1967 men.setActionCommand("urlaub");
1968 men.addActionListener(this);
1969 urlaubMenu.add(men);
1970 urlaubMenu.addSeparator();
1971 men = new JMenuItem("Umsatzbeteiligung ermitteln");
1972 men.setActionCommand("umsatzbeteiligung");
1973 men.addActionListener(this);
1974 urlaubMenu.add(men);
1976 return urlaubMenu;
1979 private JMenu getHelpMenu() {
1980 if (helpMenu == null) {
1981 helpMenu = new JMenu();
1982 helpMenu.setFont(new Font("Dialog", Font.PLAIN, 12));
1983 helpMenu.setText("Hilfe");
1984 helpMenu.add(getAboutMenuItem());
1986 return helpMenu;
1989 private JMenuItem getExitMenuItem() {
1990 if (exitMenuItem == null) {
1991 exitMenuItem = new JMenuItem();
1992 exitMenuItem.setText("Thera-Pi beenden");
1993 exitMenuItem.addActionListener(new ActionListener() {
1994 public void actionPerformed(ActionEvent e) {
1995 Runtime r = Runtime.getRuntime();
1996 r.gc();
1997 if(JOptionPane.showConfirmDialog(null, "thera-\u03C0 wirklich schließen?", "Bitte bestätigen", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION ) {
1998 if(Reha.DbOk && (Reha.thisClass.conn != null) ){
1999 Date zeit = new Date();
2000 String stx = "Insert into eingeloggt set comp='"+SystemConfig.dieseMaschine+"', zeit='"+zeit.toString()+"', einaus='aus'";
2001 SqlInfo.sqlAusfuehren(stx);
2003 if(Reha.thisClass.conn != null){
2004 try {
2005 Reha.thisClass.conn.close();
2006 System.out.println("Datenbankverbindung geschlossen");
2007 } catch (SQLException e1) {
2008 e1.printStackTrace();
2011 if(Reha.barcodeScanner != null){
2012 try{
2013 BarCodeScanner.serialPort.close();
2014 Reha.barcodeScanner = null;
2015 System.out.println("Serielle-Schnittstelle geschlossen");
2016 }catch(NullPointerException ex){
2020 if(Reha.timerLaeuft){
2021 Reha.fangoTimer.stop();
2022 Reha.timerLaeuft = false;
2024 if(Reha.nachrichtenTimer != null){
2025 Reha.nachrichtenTimer.cancel();
2026 Reha.nachrichtenLaeuft = false;
2027 Reha.nachrichtenTimer = null;
2030 if(rehaIOServer != null){
2031 try {
2032 rehaIOServer.serv.close();
2033 System.out.println("RehaIO-SocketServer geschlossen");
2034 } catch (IOException e2) {
2035 e2.printStackTrace();
2038 if(rehaCommServer != null){
2039 try {
2040 rehaCommServer.serv.close();
2041 System.out.println("RehaComm-SocketServer geschlossen");
2042 } catch (IOException e3) {
2043 e3.printStackTrace();
2047 if(SystemConfig.sReaderAktiv.equals("1") && Reha.thisClass.ocKVK != null){
2048 try{
2049 Reha.thisClass.ocKVK.TerminalDeaktivieren();
2050 System.out.println("Card-Terminal deaktiviert");
2051 }catch(NullPointerException ex){
2055 try{
2056 INIFile inif = INITool.openIni(Reha.proghome+"ini/"+Reha.aktIK+"/", "rehajava.ini");
2057 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider1",(Object)jSplitLR.getDividerLocation(),null );
2058 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider2",(Object)jSplitRechtsOU.getDividerLocation(),null );
2059 SystemConfig.UpdateIni(inif, "HauptFenster", "TP1Offen",(Object)(LinkeTaskPane.tp1.isCollapsed() ? "1" : "0"),null );
2060 SystemConfig.UpdateIni(inif, "HauptFenster", "TP2Offen",(Object)(LinkeTaskPane.tp4.isCollapsed() ? "1" : "0"),null );
2061 SystemConfig.UpdateIni(inif, "HauptFenster", "TP3Offen",(Object)(LinkeTaskPane.tp3.isCollapsed() ? "1" : "0"),null );
2062 SystemConfig.UpdateIni(inif, "HauptFenster", "TP4Offen",(Object)(LinkeTaskPane.tp5.isCollapsed() ? "1" : "0"),null );
2063 SystemConfig.UpdateIni(inif, "HauptFenster", "TP5Offen",(Object)(LinkeTaskPane.tp2.isCollapsed() ? "1" : "0"),null );
2064 SystemConfig.UpdateIni(inif, "HauptFenster", "TP6Offen",(Object)(LinkeTaskPane.tp6.isCollapsed() ? "1" : "0"),null );
2065 }catch(NullPointerException ex){
2066 JOptionPane.showMessageDialog(null,"Fehler beim Speichern der aktuellen Fensteranordnung!");
2068 System.exit(0);
2069 }else{
2070 return;
2076 return exitMenuItem;
2079 private JMenuItem getAboutMenuItem() {
2080 if (aboutMenuItem == null) {
2081 aboutMenuItem = new JMenuItem();
2082 aboutMenuItem.setText("About");
2084 return aboutMenuItem;
2087 public void setzeUi(String sUI,JScrollPane panel){
2088 try {
2089 SystemConfig.UpdateIni("rehajava.ini","HauptFenster","LookAndFeel",sUI);
2090 UIManager.setLookAndFeel((aktLookAndFeel = sUI));
2091 SwingUtilities.updateComponentTreeUI(thisFrame);
2092 SwingUtilities.updateComponentTreeUI(this.jxRechtsOben);
2093 SwingUtilities.updateComponentTreeUI(this.jxRechtsUnten);
2094 SwingUtilities.updateComponentTreeUI(this.jSplitLR);
2095 SwingUtilities.updateComponentTreeUI(this.jxLinks);
2096 SwingUtilities.updateComponentTreeUI(this.jxRechts);
2097 LinkeTaskPane.UpdateUI();
2098 }catch (ClassNotFoundException e1) {
2099 e1.printStackTrace();
2100 } catch (InstantiationException e1) {
2101 e1.printStackTrace();
2102 } catch (IllegalAccessException e1) {
2103 e1.printStackTrace();
2104 } catch (UnsupportedLookAndFeelException e1) {
2105 e1.printStackTrace();
2111 public static void starteOfficeApplication(){
2114 officeapplication = (IOfficeApplication)new StartOOApplication(SystemConfig.OpenOfficePfad,SystemConfig.OpenOfficeNativePfad).start(false);
2115 System.out.println("OpenOffice ist gestartet und aktiv = "+officeapplication.isActive());
2116 Reha.thisClass.Rehaprogress.setIndeterminate(false);
2117 }catch (OfficeApplicationException e) {
2118 e.printStackTrace();
2119 Reha.thisClass.messageLabel = new JLabel("OO.org nicht verfügbar!!!");
2123 final String OPEN_OFFICE_ORG_PATH = SystemConfig.OpenOfficePfad;
2124 try{
2125 if(Reha.isStarted){
2126 JOptionPane.showMessageDialog(null,"Zur Info die UNO-Runtime wird neu gestartet!");
2128 @SuppressWarnings("unused")
2129 String path = OPEN_OFFICE_ORG_PATH;
2131 ILazyApplicationInfo info = OfficeApplicationRuntime.getApplicationAssistant(SystemConfig.OpenOfficeNativePfad).findLocalApplicationInfo(SystemConfig.OpenOfficePfad);
2132 String[] names = info.getProperties().getPropertyNames();
2133 for(int i = 0; i < names.length;i++){
2134 System.out.println(names[i]+" = "+info.getProperties().getPropertyValue(names[i]));
2135 if(info.getProperties().getPropertyValue(names[i]).contains("LibreOffice")){
2136 Reha.thisClass.isLibreOffice = true;
2139 Map <String, Object>config = new HashMap<String, Object>();
2140 config.put(IOfficeApplication.APPLICATION_HOME_KEY, SystemConfig.OpenOfficePfad);
2141 config.put(IOfficeApplication.APPLICATION_TYPE_KEY, IOfficeApplication.LOCAL_APPLICATION);
2142 if(Reha.thisClass.isLibreOffice){
2143 config.put(IOfficeApplication.APPLICATION_ARGUMENTS_KEY,
2144 new String[] {"--nodefault","--nologo",
2145 "--nofirststartwizard",
2146 "--nocrashreport",
2147 "--norestore"
2150 }else{
2151 config.put(IOfficeApplication.APPLICATION_ARGUMENTS_KEY,
2152 new String[] {"-nodefault","-nologo",
2153 "-nofirststartwizard",
2154 "-nocrashreport",
2155 "-norestore"
2159 System.setProperty(IOfficeApplication.NOA_NATIVE_LIB_PATH,SystemConfig.OpenOfficeNativePfad);
2160 try{
2161 officeapplication = OfficeApplicationRuntime.getApplication(config);
2162 }catch(NullPointerException ex){
2163 ex.printStackTrace();
2165 officeapplication.activate();
2166 try{
2167 officeapplication.getDesktopService().addTerminateListener(new VetoTerminateListener() {
2168 public void queryTermination(ITerminateEvent terminateEvent) {
2169 super.queryTermination(terminateEvent);
2170 try {
2171 IDocument[] docs = officeapplication.getDocumentService().getCurrentDocuments();
2172 if (docs.length == 1 ) {
2173 docs[0].close();
2175 }catch (DocumentException e) {
2176 e.printStackTrace();
2177 Reha.thisClass.messageLabel = new JLabel("OO.org nicht Verfügbar!!!");
2178 } catch (OfficeApplicationException e) {
2179 e.printStackTrace();
2180 Reha.thisClass.messageLabel = new JLabel("OO.org nicht Verfügbar!!!");
2184 }catch(NullPointerException ex){
2185 ex.printStackTrace();
2187 Reha.thisClass.Rehaprogress.setIndeterminate(false);
2188 }catch (OfficeApplicationException e) {
2189 Reha.thisClass.messageLabel = new JLabel("OO.org nicht Verfügbar!!!");
2190 e.printStackTrace();
2195 private void setKeyboardActions() {
2196 Toolkit toolkit = Toolkit.getDefaultToolkit();
2197 toolkit.addAWTEventListener(new AWTEventListener() {
2198 public void eventDispatched(AWTEvent event) {
2199 if(event instanceof KeyEvent) {
2200 KeyEvent keyEvent = (KeyEvent) event;
2201 if(progRechte.equals("")){
2202 return;
2204 if(keyEvent.isAltDown() &&
2205 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==88) { // Ctrl-P
2207 if(keyEvent.isControlDown() &&
2208 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==80) { // Ctrl-P
2209 new SwingWorker<Void,Void>(){
2210 @Override
2211 protected Void doInBackground() throws Exception {
2212 Reha.thisFrame.setCursor(Reha.thisClass.wartenCursor);
2213 Reha.thisFrame.setCursor(Reha.thisClass.normalCursor);
2214 return null;
2216 }.execute();
2218 if(keyEvent.isAltDown() && keyEvent.getID()== KeyEvent.KEY_PRESSED
2219 && keyEvent.getKeyCode() == KeyEvent.VK_R){
2220 new RezeptFahnder(true);
2221 return;
2224 if(keyEvent.isAltDown() &&
2225 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==88) { // Ctrl-P
2226 Reha.aktUser = "";
2227 SwingUtilities.invokeLater(new Runnable(){
2228 public void run(){
2229 if(RehaIOServer.rehaMailIsActive){
2230 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaMailreversePort, "Reha#"+RehaIOMessages.MUST_RESET);
2234 ProgLoader.PasswortDialog(0);
2237 if(keyEvent.isControlDown() &&
2238 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==84) { // Ctrl-P
2239 JComponent termin = AktiveFenster.getFensterAlle("TerminFenster");
2240 if(termin == null){
2242 }else{
2243 //ProgLoader.ProgTerminFenster(0,0);//
2246 if(keyEvent.isControlDown() &&
2247 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==79) { // Ctrl-P
2250 if(keyEvent.isControlDown() &&
2251 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==75) { // Ctrl-K
2252 //JComponent kasse = AktiveFenster.getFensterAlle("KrankenKasse");
2255 if(keyEvent.isControlDown() &&
2256 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==65) { // Ctrl-K
2257 //JComponent arzt = AktiveFenster.getFensterAlle("ArztVerwaltung");
2259 Reha.thisFrame.setCursor(Reha.thisClass.wartenCursor);
2260 Reha.thisClass.progLoader.ArztFenster(0,TestePatStamm.PatStammArztID());
2261 Reha.thisFrame.setCursor(Reha.thisClass.normalCursor);
2264 if(keyEvent.isControlDown() &&
2265 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==37) { // Ctrl-Pfeil nach links
2266 setDivider(1);
2267 keyEvent.consume();
2269 if(keyEvent.isControlDown() &&
2270 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==39) { // Ctrl-Pfeil nach rechts
2271 setDivider(2);
2272 keyEvent.consume();
2274 if(keyEvent.isControlDown() &&
2275 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==38) { // Ctrl-Pfeil nach oben
2276 setDivider(3);
2277 keyEvent.consume();
2279 if(keyEvent.isControlDown() &&
2280 keyEvent.getID() == KeyEvent.KEY_PRESSED && keyEvent.getKeyCode()==40) { // Ctrl-Pfeil nach unten
2281 setDivider(4);
2282 keyEvent.consume();
2286 }, AWTEvent.KEY_EVENT_MASK);
2288 toolkit.addAWTEventListener(new AWTEventListener() {
2290 @Override
2291 public void eventDispatched(AWTEvent event) {
2292 // TODO Auto-generated method stub
2293 MouseEvent mouseEvent = (MouseEvent) event;
2294 if(event instanceof MouseEvent) {
2295 //System.out.println("MausEvent = "+event);
2299 }, AWTEvent.MOUSE_EVENT_MASK);
2302 public void setVertDivider(final int variante){
2303 //System.out.println("Variante = "+variante);
2304 //Diese Funktion wäre etwas für Michael Schütt
2306 * Im Grunde würde es genügen wenn Strg+Pfeil-Links/oder Rechts gedrückt wird,
2307 * die Arbeitsflächen entweder hälftig oder voll sichtbar darzustellen
2308 * den Rest müßte man dann einfacht mit der Maus herstellen.
2311 SwingUtilities.invokeLater(new Runnable(){
2312 public void run(){
2313 //links
2314 //System.out.println("Variante = "+variante);
2315 //System.out.println("Vollsichtbar = "+vollsichtbar);
2316 if(variante==1){
2319 if(desktops[0].getWidth() <= 25){
2320 jSplitRechtsOU.setDividerLocation(0);
2321 vollsichtbar = 1;
2322 return;
2323 }else if(desktops[0].getWidth() > 25){
2324 jSplitRechtsOU.setDividerLocation((jSplitRechtsOU.getDividerLocation()-25));
2325 vollsichtbar = -1;
2326 return;
2329 //rechts
2330 }else if(variante==2){
2331 if(desktops[1].getWidth() <= 25){
2332 jSplitRechtsOU.setDividerLocation(jSplitRechtsOU.getWidth()-7);
2333 vollsichtbar = 0;
2334 return;
2335 }else{
2336 jSplitRechtsOU.setDividerLocation((jSplitRechtsOU.getDividerLocation()+25));
2337 vollsichtbar = -1;
2338 return;
2340 }else if(variante==5){
2341 jSplitRechtsOU.setDividerLocation(jSplitRechtsOU.getWidth()-7);
2342 }else if(variante==6){
2344 jSplitRechtsOU.setDividerLocation(0);
2347 vollsichtbar = -1;
2352 public void setDivider(int variante){
2353 final int xvariante = variante;
2354 //System.out.println("Variante = "+variante);
2355 //System.out.println("Vollsichtbar = "+vollsichtbar);
2356 SwingUtilities.invokeLater(new Runnable(){
2357 public void run()
2359 if(!SystemConfig.desktopHorizontal){
2360 setVertDivider(xvariante);
2361 return;
2363 int i;
2364 for(i=0;i<1;i++){
2365 //links
2366 if(xvariante==1){
2367 if(jSplitLR.getDividerLocation()>250){
2368 jSplitLR.setDividerLocation(dividerLocLR-10);
2369 }else{
2370 if(dividerLocLR-10 < 0){
2371 jSplitLR.setDividerLocation(0);
2372 }else{
2373 jSplitLR.setDividerLocation(dividerLocLR-10);
2376 break;
2378 //rechts
2379 if(xvariante==2){
2380 if(jSplitLR.getDividerLocation()<250){
2381 jSplitLR.setDividerLocation(dividerLocLR+10);
2382 }else{
2383 if(dividerLocLR+10 > thisFrame.getRootPane().getWidth()-7){
2384 jSplitLR.setDividerLocation(thisFrame.getRootPane().getWidth()-7);
2385 }else{
2386 jSplitLR.setDividerLocation(dividerLocLR+10);
2389 break;
2391 if(xvariante==3){
2392 // nach oben
2393 if(jSplitRechtsOU.getDividerLocation() > (thisFrame.getRootPane().getHeight()/2)-3){
2394 jSplitRechtsOU.setDividerLocation((jxLinks.getHeight()/2)-3);
2395 vollsichtbar = -1;
2396 }else{
2397 jSplitRechtsOU.setDividerLocation(0);
2398 vollsichtbar = 1;
2401 if(xvariante==4){
2402 // nach unten
2403 if(jSplitRechtsOU.getDividerLocation() < (jxLinks.getHeight()/2)-3 ){
2404 jSplitRechtsOU.setDividerLocation((jxLinks.getHeight()/2)-3);
2405 vollsichtbar = -1;
2406 }else{
2407 jSplitRechtsOU.setDividerLocation(thisFrame.getRootPane().getHeight()-7);
2408 vollsichtbar = 0;
2410 break;
2412 if(xvariante==5){
2413 // oben Vollbild
2414 vollsichtbar = 0;
2415 jSplitRechtsOU.setDividerLocation(thisFrame.getRootPane().getHeight()-7);
2416 break;
2418 if(xvariante==6){
2419 // unten Vollbild
2420 vollsichtbar = 1;
2421 jSplitRechtsOU.setDividerLocation(0);
2422 break;
2424 if(xvariante==7){
2425 vollsichtbar = 1;
2426 jSplitRechtsOU.setDividerLocation(0);
2427 break;
2434 public int getSichtbar(){
2436 System.out.println("\n\nDivider-Location = "+jSplitRechtsOU.getDividerLocation());
2437 System.out.println("Divider-Ok = "+Reha.dividerOk);
2438 System.out.println("Höhe der RootPane = "+thisFrame.getRootPane().getHeight()+"\n");
2439 System.out.println("Höhe von Desktop[0] = "+desktops[0].getHeight());
2440 System.out.println("Höhe von Desktop[1] = "+desktops[1].getHeight());
2441 System.out.println("Breite von Desktop[0] = "+desktops[0].getWidth());
2442 System.out.println("Breite von Desktop[1] = "+desktops[1].getWidth());
2444 if(SystemConfig.desktopHorizontal){
2445 if(desktops[0].getHeight() <= 10){
2446 return 1;
2447 }else if(desktops[1].getHeight() <= 10){
2448 return 0;
2450 }else{
2452 if(desktops[0].getWidth() <= 10){
2453 return 1;
2454 }else if(desktops[1].getWidth() <= 10){
2455 return 0;
2459 return -1;
2461 public void setFocusWatcher() {
2462 long mask = AWTEvent.FOCUS_EVENT_MASK;
2464 AWTEvent.ACTION_EVENT_MASK
2465 | AWTEvent.MOUSE_EVENT_MASK
2466 | AWTEvent.FOCUS_EVENT_MASK
2467 | AWTEvent.MOUSE_MOTION_EVENT_MASK
2468 | AWTEvent.MOUSE_WHEEL_EVENT_MASK
2469 | AWTEvent.TEXT_EVENT_MASK
2470 | AWTEvent.WINDOW_EVENT_MASK
2471 | AWTEvent.WINDOW_FOCUS_EVENT_MASK
2472 | AWTEvent.WINDOW_STATE_EVENT_MASK
2473 | AWTEvent.COMPONENT_EVENT_MASK;
2475 Toolkit toolkit = Toolkit.getDefaultToolkit();
2476 toolkit.addAWTEventListener(new AWTEventListener(){
2478 public void eventDispatched(AWTEvent event) {
2479 if(event instanceof FocusEvent) {
2481 FocusEvent focusEvent = (FocusEvent) event;
2482 System.out.println("\n*************************************************");
2483 System.out.println("***Klasse = "+ ((FocusEvent) event).getComponent().getClass().toString());
2484 System.out.println("***Name = "+ ((FocusEvent) event).getComponent().getName());
2485 System.out.println("***hat Focus = " +((FocusEvent) event).getComponent().hasFocus());
2486 System.out.println("***Name des Focused Windows = "+KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow().getName());
2487 System.out.println("*************************************************");
2491 }, mask);
2494 public void componentHidden(ComponentEvent arg0) {
2498 public void componentMoved(ComponentEvent arg0) {
2502 public void componentResized(ComponentEvent arg0) {
2503 //Größe einstellen
2504 try{
2505 if(((JComponent)arg0.getSource()).getName() != null){
2506 if( ((String)((JComponent)arg0.getSource()).getName()).equals("PanelOben")){
2507 desktops[0].setBounds(0,0,Reha.thisClass.jpOben.getWidth(),
2508 Reha.thisClass.jpOben.getHeight());
2510 if( ((String)((JComponent)arg0.getSource()).getName()).equals("PanelUnten")){
2511 desktops[1].setBounds(0,0,Reha.thisClass.jpUnten.getWidth(),
2512 Reha.thisClass.jpUnten.getHeight() );
2514 JInternalFrame[] frm = Reha.thisClass.desktops[0].getAllFrames();
2515 for(int i = 0;i< frm.length;i++){
2516 if(((JRehaInternal)frm[i]).getImmerGross()){
2517 frm[i].setBounds(2,2,Reha.thisClass.jpOben.getWidth()-2,
2518 Reha.thisClass.jpOben.getHeight()-2);
2520 ((JRehaInternal)frm[i]).setCompOrder(i);
2521 ((JRehaInternal)frm[i]).setzeIcon();
2523 frm = Reha.thisClass.desktops[1].getAllFrames();
2524 for(int i = 0;i< frm.length;i++){
2525 if(((JRehaInternal)frm[i]).getImmerGross()){
2526 frm[i].setBounds(2,2,Reha.thisClass.jpUnten.getWidth()-2,
2527 Reha.thisClass.jpUnten.getHeight()-2);
2529 ((JRehaInternal)frm[i]).setCompOrder(i);
2530 ((JRehaInternal)frm[i]).setzeIcon();
2534 }catch(java.lang.ClassCastException cex){
2537 jSplitLR.validate();
2538 desktop.setBounds(0,0,thisFrame.getContentPane().getWidth(),thisFrame.getContentPane().getHeight());
2539 desktop.validate();
2540 jFrame.getContentPane().validate();
2545 /************Motion Event******************/
2547 public void mouseClicked(MouseEvent arg0) {
2549 public void mouseEntered(MouseEvent arg0) {
2551 public void mouseExited(MouseEvent arg0) {
2553 public void mousePressed(MouseEvent arg0) {
2555 public void mouseReleased(MouseEvent arg0) {
2557 /************Motion für DragEvent******************/
2558 public void mouseDragged(MouseEvent arg0) {
2560 public void mouseMoved(MouseEvent arg0) {
2562 /************KeyListener*************************/
2563 public void keyPressed(KeyEvent arg0) {
2565 public void keyReleased(KeyEvent arg0) {
2567 public void keyTyped(KeyEvent arg0) {
2570 public void rehaEventOccurred(RehaEvent evt) {
2571 //System.out.println("Event angekommen - Event="+evt.getRehaEvent());
2572 if(evt.getRehaEvent().equals("PatSuchen")){
2574 if(evt.getRehaEvent().equals(RehaEvent.ERROR_EVENT)){
2575 String sclass = (evt.getSource()==null ? "NULL" : evt.getSource().getClass().toString());
2576 String module = evt.getDetails()[0];
2577 String errortext = evt.getDetails()[1];
2578 JOptionPane.showMessageDialog(null,"Es ist ein Fehler aufgetreten!\n\nKlasse="+sclass+"\n\nModul="+module+"\n\nFehlertext="+errortext);
2581 static Component WerHatFocus(){
2582 final Component focusOwner = null;
2583 //focusOwner = FocusManager.getCurrentManager.getFocusedWindow();
2584 return focusOwner;
2586 public void ladenach(){
2587 int nochmals = JOptionPane.showConfirmDialog(null,"Die Datenbank konnte nicht gestartet werden, erneuter Versuch?","Wichtige Benuterzinfo",JOptionPane.YES_NO_OPTION);
2588 if(nochmals == JOptionPane.YES_OPTION){
2589 new Thread(new DbNachladen()).start();
2592 public void addSbContainer(String simage,String sname,JComponent jcomponent){
2594 public void setzeInitStand(String stand){
2595 new SocketClient().setzeInitStand(stand);
2597 @Override
2598 public void windowActivated(WindowEvent arg0) {
2599 desktop.setBounds(0,0,thisFrame.getContentPane().getWidth(),thisFrame.getContentPane().getHeight());
2601 @Override
2602 public void windowClosed(WindowEvent arg0) {
2603 if(Reha.barcodeScanner != null){
2604 BarCodeScanner.serialPort.close();
2605 System.out.println("Serielle Schnittstelle wurde geschlossen");
2608 @Override
2609 public void windowClosing(WindowEvent arg0) {
2610 if(JOptionPane.showConfirmDialog(null, "thera-\u03C0 wirklich schließen?", "Bitte bestätigen", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION ) {
2611 if(Reha.DbOk && (Reha.thisClass.conn != null) ){
2612 Date zeit = new Date();
2613 String stx = "Insert into eingeloggt set comp='"+SystemConfig.dieseMaschine+"', zeit='"+zeit.toString()+"', einaus='aus'";
2614 SqlInfo.sqlAusfuehren(stx);
2617 JInternalFrame[] frame = desktops[0].getAllFrames();
2618 for(int i = 0; i < frame.length;i++){
2619 frame[i].dispose();
2620 frame[i] = null;
2622 frame = desktops[1].getAllFrames();
2623 for(int i = 0; i < frame.length;i++){
2624 frame[i].dispose();
2625 frame[i] = null;
2627 if(Reha.thisClass.conn != null){
2628 try {
2629 Reha.thisClass.conn.close();
2630 Reha.thisClass.conn = null;
2631 System.out.println("Datenbankverbindung wurde geschlossen");
2632 } catch (SQLException e) {
2633 e.printStackTrace();
2634 System.exit(0);
2637 if(Reha.barcodeScanner != null){
2638 try{
2639 BarCodeScanner.serialPort.close();
2640 Reha.barcodeScanner = null;
2641 System.out.println("Serielle Schnittstelle wurde geschlossen");
2642 }catch(NullPointerException ex){
2643 System.exit(0);
2646 if(Reha.officeapplication != null){
2648 if(Reha.timerLaeuft){
2649 Reha.fangoTimer.stop();
2650 Reha.timerLaeuft = false;
2652 if(rehaIOServer != null){
2653 try {
2654 rehaIOServer.serv.close();
2655 System.out.println("RehaIO-SocketServer geschlossen");
2656 } catch (IOException e) {
2657 e.printStackTrace();
2660 if(rehaCommServer != null){
2661 try {
2662 rehaCommServer.serv.close();
2663 System.out.println("RehaComm-SocketServer geschlossen");
2664 } catch (IOException e) {
2665 e.printStackTrace();
2668 if(Reha.nachrichtenTimer != null){
2669 Reha.nachrichtenTimer.cancel();
2670 Reha.nachrichtenLaeuft = false;
2671 Reha.nachrichtenTimer = null;
2673 if(SystemConfig.sReaderAktiv.equals("1") && Reha.thisClass.ocKVK != null){
2674 try{
2675 Reha.thisClass.ocKVK.TerminalDeaktivieren();
2676 System.out.println("Card-Terminal deaktiviert");
2677 }catch(NullPointerException ex){
2682 try{
2683 INIFile inif = INITool.openIni(Reha.proghome+"ini/"+Reha.aktIK+"/", "rehajava.ini");
2684 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider1",(Object)jSplitLR.getDividerLocation(),null );
2685 SystemConfig.UpdateIni(inif, "HauptFenster", "Divider2",(Object)jSplitRechtsOU.getDividerLocation(),null );
2686 SystemConfig.UpdateIni(inif, "HauptFenster", "TP1Offen",(Object)(LinkeTaskPane.tp1.isCollapsed() ? "1" : "0"),null );
2687 SystemConfig.UpdateIni(inif, "HauptFenster", "TP2Offen",(Object)(LinkeTaskPane.tp4.isCollapsed() ? "1" : "0"),null );
2688 SystemConfig.UpdateIni(inif, "HauptFenster", "TP3Offen",(Object)(LinkeTaskPane.tp3.isCollapsed() ? "1" : "0"),null );
2689 SystemConfig.UpdateIni(inif, "HauptFenster", "TP4Offen",(Object)(LinkeTaskPane.tp5.isCollapsed() ? "1" : "0"),null );
2690 SystemConfig.UpdateIni(inif, "HauptFenster", "TP5Offen",(Object)(LinkeTaskPane.tp2.isCollapsed() ? "1" : "0"),null );
2691 SystemConfig.UpdateIni(inif, "HauptFenster", "TP6Offen",(Object)(LinkeTaskPane.tp6.isCollapsed() ? "1" : "0"),null );
2693 }catch(NullPointerException ex){
2694 JOptionPane.showMessageDialog(null,"Fehler beim Speichern der aktuellen Fensteranordnung!");
2696 System.exit(0);
2697 }else{
2698 return;
2701 @Override
2702 public void windowDeactivated(WindowEvent arg0) {
2704 @Override
2705 public void windowDeiconified(WindowEvent arg0) {
2707 @Override
2708 public void windowIconified(WindowEvent arg0) {
2710 @Override
2711 public void windowOpened(WindowEvent arg0) {
2713 @Override
2714 public void windowStateChanged(WindowEvent arg0) {
2716 @Override
2717 public void focusGained(FocusEvent e) {
2719 @Override
2720 public void focusLost(FocusEvent e) {
2722 @Override
2723 public void componentShown(ComponentEvent arg0) {
2725 @Override
2726 public void componentAdded(ContainerEvent arg0) {
2728 @Override
2729 public void componentRemoved(ContainerEvent arg0) {
2731 /*******************/
2732 class Hintergrund extends JDesktopPane implements ComponentListener{
2736 private static final long serialVersionUID = 1L;
2737 ImageIcon hgicon;
2738 int icx,icy;
2739 AlphaComposite xac1 = null;
2740 AlphaComposite xac2 = null;
2741 public Hintergrund(ImageIcon icon){
2742 super();
2744 if(icon != null){
2745 hgicon = icon;
2746 icx = hgicon.getIconWidth()/2;
2747 icy = hgicon.getIconHeight()/2;
2748 xac1 = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.15f);
2749 xac2 = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f);
2750 }else{
2751 hgicon = null;
2753 this.setDoubleBuffered(true);
2756 @Override
2757 public void paintComponent( Graphics g ) {
2758 super.paintComponent( g );
2759 Graphics2D g2d = (Graphics2D)g;
2761 if(hgicon != null){
2762 g2d.setComposite(this.xac1);
2763 g2d.drawImage(hgicon.getImage(), (getWidth()/2)-icx , (getHeight()/2)-icy,null);
2764 g2d.setComposite(this.xac2);
2767 @Override
2768 public void componentHidden(ComponentEvent arg0) {
2770 @Override
2771 public void componentMoved(ComponentEvent arg0) {
2773 @Override
2774 public void componentResized(ComponentEvent arg0) {
2775 repaint();
2777 @Override
2778 public void componentShown(ComponentEvent arg0) {
2781 /***************************/
2782 public void starteTimer(){
2783 Reha.fangoTimer = new Timer(60000,this);
2784 Reha.fangoTimer.setActionCommand("testeFango");
2785 Reha.fangoTimer.start();
2786 Reha.timerLaeuft = true;
2788 public static void testeStrictMode(){
2789 try{
2790 String cmd = "show variables like 'sql_mode%'";
2791 Vector<Vector<String>> vecfeld = SqlInfo.holeFelder(cmd);
2792 System.out.println("sql_mode="+vecfeld.get(0).get(1).trim());
2793 if(!vecfeld.get(0).get(1).trim().equals("")){
2794 String meldung = "Achtung der MySql-Server wird im Modus: "+vecfeld.get(0).get(1).trim()+" betrieben!\n"+
2795 "In diesem Modus kann Thera-Pi nicht fehlerfrei betrieben werden.\n\n"+
2796 "Beenden Sie Thera-Pi und stellen Sie in der Datei my.ini (Linux=my.cnf) den Wert sql_mode='' ein\n"+
2797 "Die Datei befindet sich in dem Verzeichnis indem der MySql-Server installiert wurde";;
2798 JOptionPane.showMessageDialog(null,meldung);
2800 }catch(NullPointerException ex){
2801 ex.printStackTrace();
2804 public static void testeMaxAllowed(){
2805 try{
2806 String cmd = "show variables like 'max_allowed_packet%'";
2807 Vector<Vector<String>> vecfeld = SqlInfo.holeFelder(cmd);
2809 int dfeld = (Integer.valueOf(vecfeld.get(0).get(1))/1024)/1024;
2810 System.out.println("max_allowed_packet="+Integer.toString(dfeld)+" MB");
2811 if( dfeld < 16){
2812 String meldung = "Achtung die MySql-Server Einstellung 'max_allowed_packet' ist bei Ihnen auf "+Integer.toString(dfeld)+" MB eingestellt\n"+
2813 "Dieser Wert ist möglicherweise zu niedrig wenn Sie größere Dokumentationen scannen wollen.\n\n"+
2814 "Wir empfehlen Ihnen einen Wert von >= 32MB.\nEingestellt wird dieser Wert in der Datei my.ini (Linux=my.cnf)\n"+
2815 "Diese Datei befindet sich in dem Verzeichnis indem der MySql-Server installiert wurde\n";
2816 JOptionPane.showMessageDialog(null,meldung);
2818 }catch(NullPointerException ex){
2819 ex.printStackTrace();
2823 public static void testeNummernKreis(){
2824 String cmd = "select mandant from nummern LIMIT 1";
2825 Vector<Vector<String>> vecnummern = SqlInfo.holeFelder(cmd);
2826 if(vecnummern.size() <= 0){
2827 cmd = "insert into nummern set pat='1',kg='1',ma='1',er='1',"+
2828 "lo='1',rh='1',rnr='1',esol='1',bericht='1',afrnr='1',rgrnr='1',doku='1',"+
2829 "dfue='1',mandant='"+Reha.aktIK+"'";
2830 //System.out.println(cmd);
2831 SqlInfo.sqlAusfuehren(cmd);
2834 /**********Actions**********/
2835 @Override
2836 public void actionPerformed(ActionEvent arg0) {
2837 String cmd = arg0.getActionCommand();
2838 if(cmd.equals("testeFango")){
2839 new SwingWorker<Void,Void>(){
2840 @Override
2841 protected Void doInBackground() throws java.lang.Exception {
2842 Wecker.testeWecker();
2843 return null;
2845 }.execute();
2847 if(cmd.equals("patient")){
2848 new SwingWorker<Void,Void>(){
2849 @Override
2850 protected Void doInBackground() throws Exception {
2851 progLoader.ProgPatientenVerwaltung(1);
2852 Reha.thisClass.progressStarten(false);
2853 return null;
2855 }.execute();
2856 return;
2858 if(cmd.equals("kasse")){
2859 Reha.thisClass.progLoader.KassenFenster(0,TestePatStamm.PatStammKasseID());
2860 return;
2862 if(cmd.equals("arzt")){
2863 Reha.thisClass.progLoader.ArztFenster(0,TestePatStamm.PatStammArztID());
2864 return;
2866 if(cmd.equals("hmabrechnung")){
2867 try{
2868 if(SystemConfig.hmEmailExtern.get("SenderAdresse") == null || SystemConfig.hmEmailExtern.get("SenderAdresse").trim().equals("")){
2869 JOptionPane.showMessageDialog(null,"<html>Bevor zum ersten Mal mit der GKV abgerechnet wird<br><br><b>muß(!) der Emailaccount in der System-Init konfiguriert werden.</b><br><br></html>");
2870 return;
2872 }catch(NullPointerException ex){
2873 JOptionPane.showMessageDialog(null,"<html>Bevor zum ersten Mal mit der GKV abgerechnet wird<br><br><b>muß(!) der Emailaccount in der System-Init konfiguriert werden.</b><br><br></html>");
2874 return;
2876 Reha.thisClass.progLoader.AbrechnungFenster(1);
2877 return;
2879 if(cmd.equals("rehaabrechnung")){
2880 Reha.thisClass.progLoader.RehaabrechnungFenster(1,"");
2881 return;
2883 if(cmd.equals("barkasse")){
2884 Reha.thisClass.progLoader.BarkassenFenster(1,"");
2885 return;
2887 if(cmd.equals("anmeldezahlen")){
2888 Reha.thisClass.progLoader.AnmeldungenFenster(1,"");
2889 return;
2891 if(cmd.equals("tagesumsatz")){
2892 Reha.thisClass.progLoader.UmsatzFenster(1,"");
2893 return;
2895 if(cmd.equals("verkauf")){
2896 Reha.thisClass.progLoader.VerkaufFenster(1,"");
2897 return;
2899 if(cmd.equals("urlaub")){
2900 if(! Rechte.hatRecht(Rechte.Funktion_urlaubueberstunden, true)){
2901 return;
2903 new LadeProg(Reha.proghome+"RehaUrlaub.jar"+" "+Reha.proghome+" "+Reha.aktIK);
2904 return;
2906 if(cmd.equals("umsatzbeteiligung")){
2907 Reha.thisClass.progLoader.BeteiligungFenster(1,"");
2908 return;
2910 if(cmd.equals("lvastatistik")){
2911 new LadeProg(Reha.proghome+"RehaStatistik.jar"+" "+Reha.proghome+" "+Reha.aktIK);
2912 return;
2914 /*****************************/
2915 if(cmd.equals("offeneposten")){
2916 if(!Rechte.hatRecht(Rechte.Funktion_offeneposten, true)){
2917 return;
2919 if(! RehaIOServer.offenePostenIsActive){
2920 new LadeProg(Reha.proghome+"OffenePosten.jar"+" "+Reha.proghome+" "+Reha.aktIK+" "+Reha.xport);
2921 }else{
2922 new ReverseSocket().setzeRehaNachricht(RehaIOServer.offenePostenreversePort,"Reha#"+RehaIOMessages.MUST_GOTOFRONT);
2924 return;
2926 /*****************************/
2927 if(cmd.equals("rezeptfahnder")){
2928 new RezeptFahnder(true);
2929 return;
2931 /*****************************/
2932 if(cmd.equals("rgaffaktura")){
2933 if(! Rechte.hatRecht(Rechte.Funktion_barkasse, false)){
2934 JOptionPane.showMessageDialog(null, "Keine Berechtigung -> Funktion Ausbuchen RGAF-Faktura");
2935 return;
2937 if(! RehaIOServer.rgAfIsActive){
2938 new LadeProg(Reha.proghome+"OpRgaf.jar"+" "+Reha.proghome+" "+Reha.aktIK+" "+Reha.xport);
2939 }else{
2940 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rgAfreversePort,"Reha#"+RehaIOMessages.MUST_GOTOFRONT);
2942 return;
2944 /*****************************/
2945 if(cmd.equals("kassenbuch")){
2946 if(!Rechte.hatRecht(Rechte.Funktion_kassenbuch, true)){
2947 return;
2949 new LadeProg(Reha.proghome+"RehaKassenbuch.jar"+" "+Reha.proghome+" "+Reha.aktIK);
2950 return;
2952 if(cmd.equals("geburtstagsbriefe")){
2953 if(!Rechte.hatRecht(Rechte.Sonstiges_geburtstagsbriefe, true)){
2954 return;
2956 new LadeProg(Reha.proghome+"GBriefe.jar"+" "+Reha.proghome+" "+Reha.aktIK);
2957 return;
2959 /*****************************/
2960 if(cmd.equals("sqlmodul")){
2961 if(!Rechte.hatRecht(Rechte.Sonstiges_sqlmodul, true)){
2962 return;
2964 if(!RehaIOServer.rehaSqlIsActive){
2965 new LadeProg(Reha.proghome+"RehaSql.jar"+" "+Reha.proghome+" "+Reha.aktIK+" "+String.valueOf(Integer.toString(Reha.xport)));
2966 }else{
2967 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaSqlreversePort,"Reha#"+RehaIOMessages.MUST_GOTOFRONT );
2970 return;
2972 /*****************************/
2973 if(cmd.equals("fallsteuerung")){
2974 if(!Rechte.hatRecht(Rechte.Sonstiges_Reha301, true)){
2975 return;
2977 if(RehaIOServer.reha301IsActive){
2978 JOptionPane.showMessageDialog(null,"Das 301-er Modul läuft bereits");
2979 SwingUtilities.invokeLater(new Runnable(){
2980 public void run(){
2981 new ReverseSocket().setzeRehaNachricht(RehaIOServer.reha301reversePort,"Reha301#"+RehaIOMessages.MUST_GOTOFRONT );
2984 return;
2986 new LadeProg(Reha.proghome+"Reha301.jar "+
2987 " "+Reha.proghome+" "+Reha.aktIK+" "+String.valueOf(Integer.toString(Reha.xport)) );
2988 //Reha.thisFrame.setCursor(Reha.thisClass.wartenCursor);
2989 return;
2991 /*****************************/
2992 if(cmd.equals("workflow")){
2993 if(!Rechte.hatRecht(Rechte.Sonstiges_Reha301, true)){
2994 return;
2996 if(RehaIOServer.rehaWorkFlowIsActive){
2997 SwingUtilities.invokeLater(new Runnable(){
2998 public void run(){
2999 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaWorkFlowreversePort,"ZeigeFrame#"+RehaIOMessages.MUST_GOTOFRONT );
3002 return;
3004 new LadeProg(Reha.proghome+"WorkFlow.jar "+
3005 " "+Reha.proghome+" "+Reha.aktIK+" "+String.valueOf(Integer.toString(Reha.xport)) );
3006 //Reha.thisFrame.setCursor(Reha.thisClass.wartenCursor);
3007 return;
3009 if(cmd.equals("hmrsearch")){
3010 System.out.println("isActive = "+RehaIOServer.rehaHMKIsActive);
3011 if(RehaIOServer.rehaHMKIsActive){
3012 SwingUtilities.invokeLater(new Runnable(){
3013 public void run(){
3014 new ReverseSocket().setzeRehaNachricht(RehaIOServer.rehaHMKreversePort,"Reha#"+RehaIOMessages.MUST_GOTOFRONT );
3017 return;
3019 new LadeProg(Reha.proghome+"RehaHMK.jar "+
3020 " "+Reha.proghome+" "+Reha.aktIK+" "+String.valueOf(Integer.toString(Reha.xport)) );
3021 //Reha.thisFrame.setCursor(Reha.thisClass.wartenCursor);
3022 return;
3024 if(cmd.equals("iniedit")){
3025 if(!Rechte.hatRecht(Rechte.Sonstiges_sqlmodul, true)){
3026 return;
3028 new LadeProg(Reha.proghome+"RehaIniedit.jar "+
3029 " "+Reha.proghome+" "+Reha.aktIK );
3030 return;
3033 if(cmd.equals("ocr")){
3034 new LadeProg(Reha.proghome+"RehaOCR.jar "+
3035 " "+Reha.proghome+" "+Reha.aktIK+" "+String.valueOf(Integer.toString(Reha.xport)) );
3036 return;
3041 /***************/
3042 public void activateWebCam(){
3044 new SwingWorker<Void,Void>(){
3045 @SuppressWarnings("rawtypes")
3046 @Override
3047 protected Void doInBackground() throws java.lang.Exception {
3049 try{
3050 try{
3051 @SuppressWarnings("unused")
3052 Class c = Class.forName("javax.media.Manager");
3053 }catch (ClassNotFoundException e){
3054 SystemConfig.sWebCamActive = "0";
3055 JOptionPane.showMessageDialog(null, "Java Media Framework (JMF) ist nicht installiert"+
3056 "\nWebCam kann nicht gestartet werden");
3059 @SuppressWarnings("unchecked")
3060 Vector<CaptureDeviceInfo> deviceList = (Vector<CaptureDeviceInfo>)javax.media.cdm.CaptureDeviceManager.getDeviceList(new YUVFormat());
3061 if(deviceList == null){
3062 JOptionPane.showMessageDialog(null,"Keine WebCam verfügbar!!");
3063 SystemConfig.sWebCamActive = "0";
3064 return null;
3066 device = (CaptureDeviceInfo) deviceList.firstElement();
3067 ml = device.getLocator();
3068 Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, new Boolean(true));
3069 player = Manager.createRealizedPlayer(ml);
3070 }catch(NullPointerException ex){
3071 ex.printStackTrace();
3072 SystemConfig.sWebCamActive = "0";
3073 }catch (NoPlayerException e) {
3074 e.printStackTrace();
3075 SystemConfig.sWebCamActive = "0";
3076 } catch (CannotRealizeException e) {
3077 e.printStackTrace();
3078 SystemConfig.sWebCamActive = "0";
3079 } catch (IOException e) {
3080 e.printStackTrace();
3081 SystemConfig.sWebCamActive = "0";
3083 System.out.println("Web-Cam erfolgreich gestartet");
3084 return null;
3087 }.execute();
3089 public void mustReloadDb(){
3090 Reha.nachladenDB = JOptionPane.showConfirmDialog(Reha.thisFrame,"Die Datenbank konnte nicht gestartet werden, erneuter Versuch?","Wichtige Benuterzinfo",JOptionPane.YES_NO_OPTION);
3092 new SwingWorker<Void,Void>(){
3093 @Override
3095 protected Void doInBackground() throws java.lang.Exception {
3096 try{
3098 }catch(NullPointerException ex){
3099 ex.printStackTrace();
3101 return null;
3103 }.execute();
3108 /*********************************************/
3112 /**************
3114 * Thread zum Start der Datenbank
3115 * @author admin
3119 final class DatenbankStarten implements Runnable{
3121 private void StarteDB(){
3122 final Reha obj = Reha.thisClass;
3124 final String sDB = "SQL";
3125 if (obj.conn != null){
3126 try{
3127 obj.conn.close();}
3128 catch(final SQLException e){}
3130 try{
3131 if (sDB=="SQL"){
3132 new SocketClient().setzeInitStand("Datenbanktreiber installieren");
3133 Class.forName(SystemConfig.vDatenBank.get(0).get(0)).newInstance();
3136 catch (InstantiationException e) {
3137 e.printStackTrace();
3138 } catch (IllegalAccessException e) {
3139 e.printStackTrace();
3140 } catch (ClassNotFoundException e) {
3141 e.printStackTrace();
3143 try {
3144 if (sDB=="SQL"){
3146 //obj.conn = (Connection) DriverManager.getConnection("jdbc:mysql://194.168.1.8:3306/dbf","entwickler","entwickler");
3147 new SocketClient().setzeInitStand("Datenbank initialisieren und öffnen");
3148 obj.conn = (Connection) DriverManager.getConnection(SystemConfig.vDatenBank.get(0).get(1)+"?jdbcCompliantTruncation=false&zeroDateTimeBehavior=convertToNull",
3149 SystemConfig.vDatenBank.get(0).get(3),SystemConfig.vDatenBank.get(0).get(4));
3151 int nurmaschine = SystemConfig.dieseMaschine.toString().lastIndexOf("/");
3152 obj.sqlInfo.setConnection(obj.conn);
3153 new ExUndHop().setzeStatement("delete from flexlock where maschine like '%"+SystemConfig.dieseMaschine.toString().substring(0, nurmaschine)+"%'");
3154 //geht leider nicht, erfordert root-Rechte
3155 //SqlInfo.sqlAusfuehren("SET GLOBAL sql_mode = ''");
3156 //sql_mode ging zwar mit SET SESSION, aber dann haben wir max_allowed... immer noch nicht gelöst.
3157 //SqlInfo.sqlAusfuehren("SET GLOBAL max_allowed_packet = 32*1024*1024");
3158 String db = SystemConfig.vDatenBank.get(0).get(1).replace("jdbc:mysql://", "");
3159 db = db.substring(0,db.indexOf("/"));
3160 final String xdb = db;
3161 new SwingWorker<Void,Void>(){
3162 @Override
3163 protected Void doInBackground()
3164 throws java.lang.Exception {
3165 try{
3166 while(Reha.thisFrame == null || Reha.thisFrame.getStatusBar()==null || Reha.thisClass.dbLabel == null){
3167 Thread.sleep(25);
3169 Reha.thisClass.dbLabel.setText(Reha.aktuelleVersion+xdb);
3170 }catch(NullPointerException ex){
3171 ex.printStackTrace();
3173 return null;
3176 }.execute();
3179 Reha.DbOk = true;
3180 try{
3181 Reha.testeNummernKreis();
3182 Reha.testeStrictMode();
3183 Reha.testeMaxAllowed();
3185 }catch(java.lang.ArrayIndexOutOfBoundsException ex){
3186 ex.printStackTrace();
3189 }catch (final SQLException ex) {
3190 System.out.println("SQLException: " + ex.getMessage());
3191 Reha.DbOk = false;
3192 Reha.nachladenDB = -1;
3193 System.out.println("Fehler bei der Initialisierung der Datenbank");
3194 new FireRehaError(RehaEvent.ERROR_EVENT,"Datenbankfehler!", new String[] {"Datenabankfehler, Fehlertext:",ex.getMessage()});
3195 try {
3196 Thread.sleep(500);
3197 } catch (InterruptedException e1) {
3199 e1.printStackTrace();
3203 Reha.thisClass.mustReloadDb();
3205 while(Reha.nachladenDB < 0){
3206 try {
3207 Thread.sleep(100);
3208 } catch (InterruptedException e) {
3209 e.printStackTrace();
3214 if(Reha.nachladenDB == JOptionPane.YES_OPTION){
3215 new Thread(new DbNachladen()).start();
3216 }else{
3217 //new FireRehaError(this,"Datenbankfehler",new String[] {"Fehlertext:","Die Datenbank kann nicht gestartet werden"});
3218 new SocketClient().setzeInitStand("Fehler!!!! Datenbank kann nicht gestartet werden - Thera-Pi wird beendet");
3220 try {
3221 Thread.sleep(5000);
3222 } catch (InterruptedException e) {
3223 e.printStackTrace();
3225 new SocketClient().setzeInitStand("INITENDE");
3227 new SwingWorker<Void,Void>(){
3228 @Override
3229 protected Void doInBackground() throws java.lang.Exception {
3230 //JOptionPane.showMessageDialog(null,"Die Datenbank ist nicht erreichbar");
3231 Reha.dbLoadError=0;
3232 return null;
3234 }.execute();
3235 while(Reha.dbLoadError == 1){
3236 try {
3237 Thread.sleep(25);
3238 } catch (InterruptedException e) {
3239 e.printStackTrace();
3243 System.exit(0);
3246 return;
3248 return;
3250 public void run() {
3251 int i=0;
3252 while (!Reha.thisClass.splashok){
3253 i = i+1;
3254 if(i>10){
3255 break;
3257 try {
3258 Thread.sleep(300);
3260 } catch (InterruptedException e) {
3261 e.printStackTrace();
3264 StarteDB();
3265 if (Reha.DbOk){
3266 Date zeit = new Date();
3267 String stx = "Insert into eingeloggt set comp='"+SystemConfig.dieseMaschine+"', zeit='"+zeit.toString()+"', einaus='ein'";
3268 new ExUndHop().setzeStatement(stx);
3269 try {
3270 Thread.sleep(50);
3272 new SocketClient().setzeInitStand("Datenbank starten");
3274 new SocketClient().setzeInitStand("Datenbank ok");
3276 ParameterLaden.Init();
3277 new SocketClient().setzeInitStand("Systemparameter laden");
3280 Reha.sysConf.SystemInit(3);
3281 ParameterLaden.Passwort();
3282 new SocketClient().setzeInitStand("Systemparameter ok");
3286 new SocketClient().setzeInitStand("Native Interface ok");
3288 Reha.sysConf.SystemInit(4);
3290 new SocketClient().setzeInitStand("Emailparameter");
3292 Reha.sysConf.SystemInit(6);
3294 new SocketClient().setzeInitStand("Roogle-Gruppen ok!");
3296 Reha.sysConf.SystemInit(7);
3298 new SocketClient().setzeInitStand("Verzeichnisse");
3300 new SocketClient().setzeInitStand("Mandanten-Daten einlesen");
3302 Reha.sysConf.SystemInit(11);
3304 Reha.sysConf.SystemInit(9);
3306 Thread.sleep(50);
3308 new SocketClient().setzeInitStand("HashMaps initialisieren");
3310 SystemConfig.HashMapsVorbereiten();
3312 Thread.sleep(50);
3314 new SocketClient().setzeInitStand("Desktop konfigurieren");
3316 SystemConfig.DesktopLesen();
3318 Thread.sleep(50);
3320 new SocketClient().setzeInitStand("Patientenstamm init");
3322 SystemConfig.PatientLesen();
3324 Thread.sleep(50);
3326 new SocketClient().setzeInitStand("Gerätetreiber initialiseieren");
3328 SystemConfig.GeraeteInit();
3330 Thread.sleep(50);
3332 new SocketClient().setzeInitStand("Arztgruppen einlesen");
3334 SystemConfig.ArztGruppenInit();
3336 Thread.sleep(50);
3338 new SocketClient().setzeInitStand("Rezeptparameter einlesen");
3340 SystemConfig.RezeptInit();
3342 new SocketClient().setzeInitStand("Bausteine für Therapie-Berichte laden");
3344 SystemConfig.TherapBausteinInit();
3346 //SystemConfig.compTest();
3348 new SocketClient().setzeInitStand("Fremdprogramme überprüfen");
3350 SystemConfig.FremdProgs();
3352 new SocketClient().setzeInitStand("Geräteliste erstellen");
3354 SystemConfig.GeraeteListe();
3356 SystemConfig.CompanyInit();
3358 FileTools.deleteAllFiles(new File(SystemConfig.hmVerzeichnisse.get("Temp")));
3359 if(SystemConfig.sBarcodeAktiv.equals("1")){
3360 try {
3361 Reha.barcodeScanner = new BarCodeScanner(SystemConfig.sBarcodeCom);
3362 } catch (Exception e) {
3363 ////System.out.println("Barcode-Scanner konnte nicht installiert werden");
3364 } catch (java.lang.Exception e) {
3365 e.printStackTrace();
3368 new SocketClient().setzeInitStand("Firmendaten einlesen");
3370 Vector<Vector<String>> vec = SqlInfo.holeFelder("select min(datum),max(datum) from flexkc");
3372 Reha.kalMin = DatFunk.sDatInDeutsch( ((String)((Vector<String>)vec.get(0)).get(0)) );
3374 Reha.kalMax = DatFunk.sDatInDeutsch( ((String)((Vector<String>)vec.get(0)).get(1)) );
3376 SystemConfig.FirmenDaten();
3378 new SocketClient().setzeInitStand("Gutachten Parameter einlesen");
3380 SystemConfig.GutachtenInit();
3382 SystemConfig.AbrechnungParameter();
3384 SystemConfig.BedienungIni_ReadFromIni();
3386 SystemConfig.OffenePostenIni_ReadFromIni();
3388 SystemConfig.JahresUmstellung();
3390 SystemConfig.Feiertage();
3392 //notwendig bis alle Ãœberhangsrezepte der BKK-Gesundheit abgearbeitet sind.
3393 SystemConfig.ArschGeigenTest();
3395 SystemConfig.EigeneDokuvorlagenLesen();
3397 SystemConfig.IcalSettings();
3399 new Thread(new PreisListenLaden()).start();
3401 if(SystemConfig.sWebCamActive.equals("1")){
3402 Reha.thisClass.activateWebCam();
3406 }catch (InterruptedException e1) {
3407 e1.printStackTrace();
3408 }catch (NullPointerException e2) {
3409 e2.printStackTrace();
3411 }else{
3412 new SwingWorker<Void,Void>(){
3413 @Override
3414 protected Void doInBackground() throws java.lang.Exception {
3415 new SocketClient().setzeInitStand("INITENDE");
3416 return null;
3418 }.execute();
3424 final class DbNachladen implements Runnable{
3425 public void run(){
3426 final String sDB = "SQL";
3427 final Reha obj = Reha.thisClass;
3428 if(Reha.thisClass.conn != null){
3429 try {
3430 Reha.thisClass.conn.close();
3431 } catch (SQLException e) {
3432 e.printStackTrace();
3436 try {
3437 if (sDB=="SQL"){
3438 new SocketClient().setzeInitStand("Datenbank initialisieren und öffnen");
3439 obj.conn = (Connection) DriverManager.getConnection(SystemConfig.vDatenBank.get(0).get(1)+"?jdbcCompliantTruncation=false",
3440 SystemConfig.vDatenBank.get(0).get(3),SystemConfig.vDatenBank.get(0).get(4));
3442 int nurmaschine = SystemConfig.dieseMaschine.toString().lastIndexOf("/");
3443 new ExUndHop().setzeStatement("delete from flexlock where maschine like '%"+SystemConfig.dieseMaschine.toString().substring(0, nurmaschine)+"%'");
3444 if(obj.dbLabel != null){
3445 String db = SystemConfig.vDatenBank.get(0).get(1).replace("jdbc:mysql://", "");
3446 db = db.substring(0,db.indexOf("/"));
3447 obj.dbLabel.setText(Reha.aktuelleVersion+db);
3449 obj.sqlInfo.setConnection(obj.conn);
3450 Reha.DbOk = true;
3453 catch (final SQLException ex) {
3454 Reha.DbOk = false;
3455 Reha.nachladenDB = -1;
3456 Reha.thisClass.mustReloadDb();
3458 while(Reha.nachladenDB < 0){
3459 try {
3460 Thread.sleep(25);
3461 } catch (InterruptedException e) {
3462 e.printStackTrace();
3466 if(Reha.nachladenDB == JOptionPane.YES_OPTION){
3467 new Thread(new DbNachladen()).start();
3469 return;
3471 return;
3475 final class ErsterLogin implements Runnable{
3476 private void Login(){
3477 new Thread(){
3478 public void run(){
3479 Reha.starteOfficeApplication();
3480 OOTools.ooOrgAnmelden();
3482 }.start();
3483 ProgLoader.PasswortDialog(0);
3485 public void run() {
3486 Login();
3487 SwingUtilities.invokeLater(new Runnable(){
3488 public void run(){
3489 Reha.thisFrame.setMinimumSize(new Dimension(800,600));
3490 Reha.thisFrame.setPreferredSize(new Dimension(800,600));
3491 Reha.thisFrame.setExtendedState(JXFrame.MAXIMIZED_BOTH);
3492 Reha.thisFrame.setVisible(true);
3493 INIFile inif = INITool.openIni(Reha.proghome+"ini/"+Reha.aktIK+"/", "rehajava.ini");
3494 if(inif.getIntegerProperty("HauptFenster", "Divider1") != null){
3495 Reha.thisClass.jSplitLR.setDividerLocation((Reha.divider1=inif.getIntegerProperty("HauptFenster", "Divider1")));
3496 Reha.thisClass.jSplitRechtsOU.setDividerLocation((Reha.divider2=inif.getIntegerProperty("HauptFenster", "Divider2")));
3497 //System.out.println("Divider gesetzt");
3498 //System.out.println("Divider 1 = "+inif.getIntegerProperty("HauptFenster", "Divider1"));
3499 //System.out.println("Divider 2 = "+inif.getIntegerProperty("HauptFenster", "Divider2")+"\n\n");
3500 Reha.dividerOk= true;
3501 //Hier mußt noch eine funktion getSichtbar() entwickelt werden
3502 //diese ersetzt die nächste Zeile
3503 //System.out.println("Sichtbar Variante = "+Reha.thisClass.getSichtbar());
3504 }else{
3505 //System.out.println("Divider-Angaben sind noch null");
3506 Reha.thisClass.setDivider(5);
3509 Reha.thisFrame.getRootPane().validate();
3510 Reha.isStarted = true;
3512 Reha.thisFrame.setVisible(true);
3515 if(Reha.dividerOk){
3516 Reha.thisClass.vollsichtbar = Reha.thisClass.getSichtbar();
3517 if(!SystemConfig.desktopHorizontal){
3518 Reha.thisClass.jSplitRechtsOU.setDividerLocation((Reha.divider2));
3520 //System.out.println("Wert für Vollsichtbar = "+Reha.thisClass.vollsichtbar);
3523 //Reha.thisFrame.pack();
3524 new SwingWorker<Void,Void>(){
3525 @Override
3526 protected Void doInBackground() throws Exception {
3527 try{
3528 //JOptionPane.showMessageDialog(null,System.getProperty("java.home"));
3529 //JOptionPane.showMessageDialog(null,System.getProperty("java.version"));
3532 //SCR335
3533 //ctpcsc31kv
3535 if(SystemConfig.sReaderAktiv.equals("1")){
3536 try{
3538 System.out.println("Aktiviere Reader: "+SystemConfig.sReaderName+"\n"+
3539 "CT-API Bibliothek: "+SystemConfig.sReaderCtApiLib);
3540 Reha.thisClass.ocKVK = new OcKVK(SystemConfig.sReaderName.trim().replace(" ", "_"),
3541 SystemConfig.sReaderCtApiLib,SystemConfig.sReaderDeviceID,false);
3542 }catch(CardTerminalException ex){
3543 disableReader("Fehlerstufe rc = -8 = CardTerminal reagiert nicht\n"+ex.getMessage());
3544 } catch (CardServiceException e) {
3545 disableReader("Fehlerstufe rc = -2 oder -4 = Karte wird nicht unterstützt\n"+e.getMessage());
3546 } catch (ClassNotFoundException e) {
3547 disableReader("Fehlerstufe rc = -1 = CT-API läßt sich nicht initialisieren\n"+e.getMessage());
3548 } catch (java.lang.Exception e) {
3549 if(e.getMessage().contains("property file")){
3550 disableReader("Anderweitiger Fehler\n"+"Die Datei opencard.properties befindet sich nicht im Java-Verzeichnis ../lib."+
3551 "Das Kartenlesegerät kann nicht verwendet werden.");
3552 }else{
3553 disableReader("Anderweitiger Fehler\n"+e.getMessage());
3556 if(Reha.thisClass.ocKVK != null){
3557 Vector<Vector<String>> vec = Reha.thisClass.ocKVK.getReaderList();
3558 for(int i = 0; i < vec.get(0).size();i++){
3559 System.out.println("*******************");
3560 System.out.println(vec.get(0).get(i)+" - "+
3561 vec.get(1).get(i)+" - "+
3562 vec.get(2).get(i)+" - "+
3563 vec.get(3).get(i));
3567 //KVKWrapper kvw = new KVKWrapper(SystemConfig.sReaderName);
3568 //kvw.KVK_Einlesen();
3570 }catch(NullPointerException ex){
3571 ex.printStackTrace();
3573 return null;
3575 }.execute();
3579 private void disableReader(String error){
3580 SystemConfig.sReaderAktiv = "0";
3581 Reha.thisClass.ocKVK = null;
3582 JOptionPane.showMessageDialog(null, error);
3586 final class PreisListenLaden implements Runnable{
3587 private void Einlesen(){
3590 ParameterLaden.PreiseEinlesen("KG");
3592 ParameterLaden.PreiseEinlesen("MA");
3594 ParameterLaden.PreiseEinlesen("ER");
3596 ParameterLaden.PreiseEinlesen("LO");
3598 ParameterLaden.PreiseEinlesen("RH");
3600 ParameterLaden.PreiseEinlesen("RS");
3602 ParameterLaden.PreiseEinlesen("FT");
3604 MachePreisListe.preiseFuellenNeu();
3607 try{
3609 while(Reha.thisClass == null || Reha.thisClass.jxLinks == null || Reha.thisClass.jxRechts == null){
3610 long zeit = System.currentTimeMillis();
3611 try {
3612 Thread.sleep(50);
3613 if(System.currentTimeMillis()-zeit > 20000){
3614 JOptionPane.showMessageDialog(null,"Fehler beim Starten des Systems ");
3615 System.exit(0);
3617 } catch (InterruptedException e) {
3618 e.printStackTrace();
3621 //Reha.thisClass.jxLinks.setAlpha(1.0f);
3622 //Reha.thisClass.jxRechts.setAlpha(1.0f);
3623 if(isAktiv("Physio")){
3624 new SocketClient().setzeInitStand("Preisliste Physio einlesen");
3625 SystemPreislisten.ladePreise("Physio");
3627 if(isAktiv("Massage")){
3628 new SocketClient().setzeInitStand("Preisliste Massage einlesen");
3629 SystemPreislisten.ladePreise("Massage");
3631 if(isAktiv("Ergo")){
3632 new SocketClient().setzeInitStand("Preisliste Ergo einlesen");
3633 SystemPreislisten.ladePreise("Ergo");
3635 if(isAktiv("Logo")){
3636 new SocketClient().setzeInitStand("Preisliste Logo einlesen");
3637 SystemPreislisten.ladePreise("Logo");
3639 if(isAktiv("Reha")){
3640 new SocketClient().setzeInitStand("Preisliste Reha einlesen");
3641 SystemPreislisten.ladePreise("Reha");
3643 if(isAktiv("Podo")){
3644 new SocketClient().setzeInitStand("Preisliste Podologie einlesen");
3645 SystemPreislisten.ladePreise("Podo");
3647 if(SystemConfig.mitRs){
3648 if(isAktiv("Rsport")){
3649 new SocketClient().setzeInitStand("Preisliste Rehasport einlesen");
3650 SystemPreislisten.ladePreise("Rsport");
3652 if(isAktiv("Ftrain")){
3653 new SocketClient().setzeInitStand("Preisliste Funktionstraining einlesen");
3654 SystemPreislisten.ladePreise("Ftrain");
3658 SystemPreislisten.ladePreise("Common");
3660 System.out.println("Preislisten einlesen abgeschlossen");
3661 }catch(NullPointerException ex){
3662 ex.printStackTrace();
3664 try{
3665 new SocketClient().setzeInitStand("System-Init abgeschlossen!");
3666 Reha.thisClass.setzeInitEnde();
3667 Reha.thisClass.initok = true;
3668 }catch(NullPointerException ex){
3669 ex.printStackTrace();
3673 public boolean isAktiv(String disziplin){
3675 for(int i = 0; i < SystemConfig.rezeptKlassenAktiv.size();i++){
3676 if(SystemConfig.rezeptKlassenAktiv.get(i).get(0).toLowerCase().startsWith(disziplin.toLowerCase()) || (disziplin.equals("Rsport") && SystemConfig.rezeptKlassenAktiv.get(i).get(0).toLowerCase().startsWith("rehasport")) ||
3677 (disziplin.equals("Ftrain") && SystemConfig.rezeptKlassenAktiv.get(i).get(0).toLowerCase().startsWith("funktionstrai"))){
3678 return true;
3681 return false;
3683 public void run() {
3684 Einlesen();
3685 int i=0;
3686 while (!Reha.thisClass.initok){
3687 i = i+1;
3688 if(i>10){
3689 break;
3691 try {
3692 Thread.sleep(100);
3694 } catch (InterruptedException e) {
3695 e.printStackTrace();
3698 new Thread(new ErsterLogin()).start();
3702 final class SplashStarten extends Thread implements Runnable{
3703 private void StarteSplash(){
3705 public void run() {
3706 StarteSplash();
3710 class SocketClient {
3711 String stand = "";
3712 Socket server = null;
3713 public void setzeInitStand(String stand){
3714 this.stand = stand;
3715 run();
3717 public void run() {
3718 try {
3719 serverStarten();
3720 } catch (IOException e) {
3723 private void serverStarten() throws IOException{
3724 try{
3725 this.server = new Socket("localhost",1234);
3726 OutputStream output = (OutputStream) server.getOutputStream();
3727 InputStream input = server.getInputStream();
3729 byte[] bytes = this.stand.getBytes();
3731 output.write(bytes);
3732 output.flush();
3733 int zahl = input.available();
3734 if (zahl > 0){
3735 byte[] lesen = new byte[zahl];
3736 input.read(lesen);
3739 server.close();
3740 input.close();
3741 output.close();
3742 }catch(NullPointerException ex){
3743 ex.printStackTrace();
3744 }catch (IOException e) {
3745 e.printStackTrace();
3749 class MyGradPanel extends JXPanel {
3753 private static final long serialVersionUID = 2882847000287058980L;
3755 public void paint(Graphics g){
3756 Graphics2D g2d = (Graphics2D)g;
3757 Color s1 = Colors.TaskPaneBlau.alpha(1.0f);
3758 Color e = Color.WHITE;
3759 GradientPaint gradient = new GradientPaint(0,0,s1,getWidth(),getHeight(),e);
3762 g2d.setPaint(gradient);
3763 g2d.fillRect(0,0,getWidth(),getHeight());
3764 Image jImage = Reha.rehaBackImg.getImage();
3765 g.drawImage(jImage,((getWidth()/2)-(jImage.getWidth(this)/2)),((getHeight()/2)-(jImage.getHeight(this)/2)), this);
3768 /**************************/
3769 class RehaSockServer{
3770 static ServerSocket serv = null;
3771 RehaSockServer() throws IOException{
3772 try {
3773 serv = new ServerSocket(1235);
3774 } catch (IOException e) {
3775 e.printStackTrace();
3776 return;
3778 Socket client = null;
3779 while(true){
3780 try {
3781 client = serv.accept();
3782 } catch (IOException e) {
3783 e.printStackTrace();
3784 break;
3786 StringBuffer sb = new StringBuffer();
3787 InputStream input = client.getInputStream();
3788 OutputStream output = client.getOutputStream();
3789 int byteStream;
3790 String test = "";
3791 while( (byteStream = input.read()) > -1){
3792 char b = (char)byteStream;
3793 sb.append(b);
3795 test = String.valueOf(sb);
3796 final String xtest = test;
3797 if(xtest.equals("INITENDE")){
3798 byte[] schreib = "ok".getBytes();
3799 output.write(schreib);
3800 output.flush();
3801 output.close();
3802 input.close();
3803 serv.close();
3804 serv = null;
3805 try {
3806 Thread.sleep(1000);
3807 } catch (InterruptedException e) {
3808 e.printStackTrace();
3810 Reha.warten = false;
3811 break;
3812 }else{
3814 byte[] schreib = "ok".getBytes();
3815 output.write(schreib);
3816 output.flush();
3817 output.close();
3818 input.close();
3820 if(serv != null){
3821 serv.close();
3822 serv = null;
3823 ////System.out.println("Socket wurde geschlossen");
3824 }else{
3825 ////System.out.println("Socket war bereits geschlossen");
3827 return;
3830 /*******************************************/
3831 final class HilfeDatenbankStarten implements Runnable{
3833 void StarteDB(){
3834 final Reha obj = Reha.thisClass;
3836 // final String sDB = "SQL";
3837 if (obj.hilfeConn != null){
3838 try{
3839 obj.hilfeConn.close();}
3840 catch(final SQLException e){}
3842 try{
3843 Class.forName(SystemConfig.hmHilfeServer.get("HilfeDBTreiber")).newInstance();
3844 Reha.HilfeDbOk = true;
3845 }catch (InstantiationException e) {
3846 e.printStackTrace();
3847 } catch (IllegalAccessException e) {
3848 e.printStackTrace();
3849 } catch (ClassNotFoundException e) {
3850 e.printStackTrace();
3852 try {
3853 Reha.thisClass.hilfeConn =
3854 (Connection) DriverManager.getConnection(SystemConfig.hmHilfeServer.get("HilfeDBLogin"),
3855 SystemConfig.hmHilfeServer.get("HilfeDBUser"),SystemConfig.hmHilfeServer.get("HilfeDBPassword"));
3856 }catch (final SQLException ex) {
3857 Reha.HilfeDbOk = false;
3858 return;
3860 return;
3862 public void run() {
3863 StarteDB();