Tools.java 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705
  1. /*
  2. * Copyright (C) 2015 iZc
  3. *
  4. * This program is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. package de.nplusc.izc.tools.baseTools;
  18. import de.nplusc.izc.tools.IOtools.FileTK;
  19. import de.nplusc.izc.tools.IOtools.PrintStreamCapturer;
  20. import java.awt.Dimension;
  21. import java.awt.GraphicsEnvironment;
  22. import java.io.*;
  23. import java.lang.reflect.Field;
  24. import java.security.MessageDigest;
  25. import java.util.Arrays;
  26. import java.util.HashMap;
  27. import java.util.Map;
  28. import java.util.Scanner;
  29. import java.util.prefs.Preferences;
  30. import javax.swing.*;
  31. import net.rubygrapefruit.platform.Native;
  32. import net.rubygrapefruit.platform.ProcessLauncher;
  33. import org.apache.commons.exec.CommandLine;
  34. import org.apache.commons.exec.DefaultExecutor;
  35. import org.apache.commons.exec.Executor;
  36. import org.apache.commons.io.output.NullOutputStream;
  37. import org.apache.logging.log4j.LogManager;
  38. import org.apache.logging.log4j.Logger;
  39. /**
  40. *
  41. * @author LH
  42. */
  43. @SuppressWarnings( "deprecation" )
  44. public class Tools
  45. {
  46. private static final Logger l = LogManager.getLogger();
  47. public static boolean execCrashed = false;
  48. private static boolean ContState;
  49. private static JDialog d;
  50. private static boolean hl=false;
  51. //private boolean ProcessReturn;
  52. private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
  53. private static int logNumber;
  54. protected Tools()
  55. {
  56. //disabled Constructor
  57. }
  58. static
  59. {
  60. GraphicsEnvironment ge =
  61. GraphicsEnvironment.getLocalGraphicsEnvironment();
  62. boolean hl = ge.isHeadless();
  63. if(!hl){
  64. //d = new JDialog();
  65. }
  66. }
  67. /**
  68. * Method to pad the left of a Sting with given character
  69. * @param count Destination amount of data
  70. * @param base String to pad up
  71. * @param filler Padding data
  72. * @return Padded String
  73. */
  74. public static String padLeft(final int count, final String base, final char filler)
  75. {
  76. if (base == null)
  77. {
  78. throw new NullPointerException();
  79. }
  80. if (base.length() >= count)
  81. {
  82. return base;
  83. }
  84. char[] prefix = new char[count - base.length()];
  85. Arrays.fill(prefix, filler);
  86. return new StringBuilder(count).append(prefix).append(base).toString();
  87. }
  88. /**
  89. * Method rename and shorthand for Thread.sleep()
  90. * @param time Time to wait in ms
  91. */
  92. public static void wait(int time)
  93. {
  94. try
  95. {
  96. Thread.sleep(time);
  97. }
  98. catch (InterruptedException ex)
  99. {
  100. ex.printStackTrace();
  101. }
  102. }
  103. /**
  104. * SHA-Hashes a String
  105. * @param s String to hash
  106. * @return Hashed String
  107. */
  108. public static String getSHAString(String s)
  109. {
  110. try
  111. {
  112. MessageDigest sha = MessageDigest.getInstance("SHA");
  113. @SuppressWarnings("StringBufferMayBeStringBuilder")
  114. StringBuffer t = new StringBuffer();
  115. byte[] digest = sha.digest(s.getBytes());
  116. for (byte b : digest)
  117. {
  118. l.trace(String.format("%02x", b));
  119. int val = ((int) b) & 0xff;
  120. if (val < 16)
  121. {
  122. t.append("0");
  123. }
  124. t.append(Integer.toHexString(val));
  125. }
  126. return t.toString();
  127. }
  128. catch (Exception ex)
  129. {
  130. return null;
  131. }
  132. }
  133. /**
  134. * Integerizes a String
  135. * @param ip String to integerize
  136. * @return Array of Integers where each int is a Character of the string
  137. */
  138. public static int[] lettersToInt(String ip)
  139. {
  140. ip = ip.toLowerCase();
  141. char[] it = ip.toCharArray();
  142. int[] ri = new int[it.length];
  143. for (int i = 0; i < ri.length; i++)
  144. {
  145. ri[i] = (int) it[i];
  146. }
  147. return ri;
  148. }
  149. /**
  150. * Sum of the Elements of the Array
  151. * @param i Integer-array to sumup
  152. * @return Sum of the elements
  153. */
  154. public static int addIntsTogether(int[] i)
  155. {
  156. int t = 1;
  157. for (int X : i)
  158. {
  159. t *= X;
  160. }
  161. return t;
  162. }
  163. @Deprecated
  164. /**
  165. * HACK!!!
  166. * @param m unknown
  167. * @param ints unknown
  168. * @return unknown
  169. */
  170. public static int addIntsTogether(HashMap<String, String> m, boolean ints)
  171. {
  172. //boolean ints = !noints;
  173. String[] mk;
  174. Object[] mk2 = m.keySet().toArray();
  175. mk = new String[mk2.length];
  176. for (int i = 0; i < mk.length; i++)
  177. {
  178. String s = "";
  179. //s.toString();
  180. mk[i] = mk2[i].toString();
  181. }
  182. int t = 1;
  183. for (String s : mk)
  184. {
  185. if (ints == true)
  186. {
  187. t *= Integer.valueOf(m.get(s));
  188. }
  189. else
  190. {
  191. int t2 = 0;
  192. int[] itmp = lettersToInt(m.get(s));
  193. for (int i : itmp)
  194. {
  195. t2 += i;
  196. }
  197. t += t2;
  198. }
  199. }
  200. return t;
  201. }
  202. @Deprecated
  203. /**
  204. * Adds the Strings together while respecting Alphabet and wraps . Dont use for new Code
  205. * @param s1 String 1
  206. * @param s2 String 2
  207. * @return the merged Strings
  208. */
  209. public static String stringAdd(String s1, String s2)
  210. {
  211. char[] ca1 = s1.toLowerCase().toCharArray();
  212. char[] ca2 = s2.toLowerCase().toCharArray();
  213. int[] ci1 = new int[ca1.length];
  214. int[] ci2 = new int[ca2.length];
  215. String t;
  216. for (int i = 0; i < ca1.length; i++)
  217. {
  218. try
  219. {
  220. ci1[i] = Integer.valueOf(Character.toString(ca1[i]));
  221. }
  222. catch (Exception ex)
  223. {
  224. t = Character.toString(ca1[i]);
  225. ci1[i] = ALPHABET.indexOf(t) + 1;
  226. }
  227. }
  228. for (int i = 0; i < ca2.length; i++)
  229. {
  230. try
  231. {
  232. ci2[i] = Integer.valueOf(Character.toString(ca2[i]));
  233. }
  234. catch (Exception ex)
  235. {
  236. t = Character.toString(ca2[i]);
  237. ci2[i] = ALPHABET.indexOf(t) + 1;
  238. }
  239. }
  240. int l = ci1.length;
  241. if (ci1.length < ci2.length)
  242. {
  243. l = ci2.length;
  244. }
  245. int[] op = new int[l];
  246. int i1, i2, i3;
  247. for (int i = 0; i < l; i++)
  248. {
  249. try
  250. {
  251. i1 = ci1[i];
  252. }
  253. catch (Exception ex)
  254. {
  255. i1 = 0;
  256. }
  257. try
  258. {
  259. i2 = ci2[i];
  260. }
  261. catch (Exception ex)
  262. {
  263. i2 = 0;
  264. }
  265. i3 = i1 + i1;
  266. if (i3 > 26)
  267. {
  268. i3 -= 26;
  269. }
  270. op[i] = i3;
  271. }
  272. return backString(op);
  273. }
  274. @Deprecated
  275. public static String backString(int[] ia)
  276. {
  277. int l = ia.length, i1;
  278. String[] r1 = new String[l];
  279. String rl = "";
  280. for (int i = 0; i < l; i++)
  281. {
  282. i1 = ia[i] - 1;
  283. if (i1 == -1)
  284. {
  285. i1++;
  286. }
  287. r1[i] = Character.toString(ALPHABET.charAt(i1));
  288. }
  289. for (String s : r1)
  290. {
  291. rl += s;
  292. }
  293. return rl;
  294. }
  295. @Deprecated
  296. public static String stringFold(String s, int l, int rec)//halbiert Strings und addiert die Hälften
  297. {
  298. int l1 = s.length() / 2;//,l2;
  299. String sh1, sh2, so1;
  300. //int l2=l1+1-1;//Neuen Wet erzeugen!!
  301. //l2=l1*2
  302. if ((l1 * 2) == s.length() - 1)
  303. {
  304. l1++;
  305. }
  306. sh1 = s.substring(0, l1++);
  307. sh2 = s.substring(l1++);
  308. so1 = stringAdd(sh1, sh2);
  309. if (so1.length() > l && rec > 0)
  310. {
  311. so1 = stringFold(so1, l, rec--);
  312. }
  313. return so1;
  314. }
  315. @Deprecated
  316. public static String stringFold(String s, int l)
  317. {
  318. return stringFold(s, l, 30);
  319. }
  320. /**
  321. * 2-Elemente-Meckermeldung
  322. * @param mode ignored
  323. * @param MSGLine1 Zeile 1 der Meldung
  324. * @param MSGLine2 ZEile 2 der Meldung
  325. * @return true if left button got pressed, false on right one
  326. */
  327. public static boolean dlg(boolean mode, String MSGLine1, String MSGLine2)
  328. {
  329. return dlg(mode, MSGLine1, MSGLine2, "Fortfahren", "Abbrechen");
  330. }
  331. /**
  332. * 2-Elemente-Meckermeldung
  333. * @param mode ignored
  334. * @param MSGLine1 Zeile 1 der Meldung
  335. * @param MSGLine2 ZEile 2 der Meldung
  336. * @param btnLeft MEssage of left button
  337. * @param btnRight MEssage of Right button
  338. * @return true if left button got pressed, false on right one
  339. */
  340. public static boolean dlg(boolean mode, String MSGLine1, String MSGLine2, String btnLeft, String btnRight)
  341. {
  342. if(hl)
  343. {
  344. return false;
  345. }
  346. d=new JDialog();
  347. JPanel p = new JPanel();
  348. javax.swing.JButton btnYes = new javax.swing.JButton();
  349. javax.swing.JButton btnNo = new javax.swing.JButton();
  350. JLabel lblMSG = new JLabel();
  351. JLabel lblMSG2 = new JLabel();
  352. d.setModal(mode);
  353. mode = true;
  354. if (mode == true)
  355. {
  356. //Ausgeblendet da nur Fenster-Layout
  357. // <editor-fold defaultstate="collapsed" desc="Layout-Code">
  358. btnNo.setText(btnRight);
  359. btnNo.addActionListener(new java.awt.event.ActionListener()
  360. {
  361. public void actionPerformed(java.awt.event.ActionEvent evt)
  362. {
  363. btnNoActionPerformed(evt);
  364. }
  365. });
  366. btnYes.setText(btnLeft);
  367. btnYes.addActionListener(new java.awt.event.ActionListener()
  368. {
  369. public void actionPerformed(java.awt.event.ActionEvent evt)
  370. {
  371. btnYesActionPerformed(evt);
  372. }
  373. });
  374. lblMSG.setText(MSGLine1);
  375. lblMSG2.setText(MSGLine2);
  376. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(p);
  377. p.setLayout(layout);
  378. layout.setHorizontalGroup(
  379. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  380. .addGroup(layout.createSequentialGroup()
  381. .addGap(36, 36, 36)
  382. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  383. .addComponent(lblMSG, javax.swing.GroupLayout.PREFERRED_SIZE, 258, javax.swing.GroupLayout.PREFERRED_SIZE)
  384. .addGroup(layout.createSequentialGroup()
  385. .addComponent(btnYes)
  386. .addGap(18, 18, 18)
  387. .addComponent(btnNo))
  388. .addGroup(layout.createSequentialGroup()
  389. .addGap(40, 40, 40)
  390. .addComponent(lblMSG2)))
  391. .addContainerGap(63, Short.MAX_VALUE)));
  392. layout.setVerticalGroup(
  393. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  394. .addGroup(layout.createSequentialGroup()
  395. .addContainerGap()
  396. .addComponent(lblMSG, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
  397. .addGap(18, 18, 18)
  398. .addComponent(lblMSG2)
  399. .addGap(18, 18, 18)
  400. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  401. .addComponent(btnYes)
  402. .addComponent(btnNo))
  403. .addContainerGap(71, Short.MAX_VALUE)));
  404. // </editor-fold>
  405. //Auskommentierter Fail!
  406. // <editor-fold defaultstate="collapsed" desc="FailTry">
  407. /*javax.swing.JButton btnYes = new javax.swing.JButton();
  408. btnYes.addActionListener
  409. (
  410. new java.awt.event.ActionListener()
  411. {
  412. public void actionPerformed(java.awt.event.ActionEvent evt)
  413. {
  414. btnCTNActionPerformed(evt);
  415. }
  416. }
  417. );
  418. javax.swing.JButton btnNo = new javax.swing.JButton();
  419. btnNo.addActionListener
  420. (
  421. new java.awt.event.ActionListener()
  422. {
  423. public void actionPerformed(java.awt.event.ActionEvent evt)
  424. {
  425. btnSTPActionPerformed(evt);
  426. }
  427. }
  428. );
  429. btnYes.setText("Fortsetzen");
  430. btnNo.setText("Abbrechen");*/
  431. //d.add(new JButton());// </editor-fold>
  432. //p.add(btnYes);
  433. //p.add(btnNo);
  434. d.add(p);
  435. d.setSize(p.getPreferredSize());
  436. d.setVisible(true);
  437. //btnNo.setText(btnRight);
  438. //btnYes.setText(btnLeft);
  439. }
  440. else
  441. {
  442. //TODO working.dialog
  443. return true;
  444. }
  445. return ContState;
  446. }
  447. //</editor-fold>
  448. /**
  449. * COmmand run wrapper
  450. * @param runnable Command elements
  451. */
  452. public static void runSingleCmd(String... runnable)
  453. {
  454. runSingleCmd(true, runnable);
  455. }
  456. public static void runSingleCmd(boolean logg, String... runnable)
  457. {
  458. runSingleCmd(true, false, runnable);
  459. }
  460. public static void runSingleCmd(boolean logg, boolean legacy, String... runnable)
  461. {
  462. runSingleCmd(logg, legacy, false, runnable);
  463. }
  464. public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, String... runnable)
  465. {
  466. return runSingleCmd(logg, legacy, sret, null, runnable);
  467. }
  468. public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,JTextArea tx, String... runnable)
  469. {
  470. return runSingleCmd(logg, legacy, sret, false, tx, runnable);
  471. }
  472. public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,JTextArea tx, String... runnable)
  473. {
  474. return runSingleCmd(logg, legacy, sret, asArray, tx, null, runnable);
  475. }
  476. public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,JTextArea tx, final PrintStream pw,String... runnable)
  477. {
  478. return runSingleCmd(logg, legacy, sret, asArray, tx, null, null,false,runnable);
  479. }
  480. private static Process p;
  481. public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,final JTextArea tx, final PrintStream pw, String workdir,boolean useWD,String... runnable)
  482. {
  483. execCrashed = false;
  484. String cret = "";
  485. File wd=null;
  486. if(workdir!=null&&useWD)
  487. {
  488. wd=new File(workdir);
  489. if(!wd.isDirectory())
  490. wd=null;
  491. }
  492. String cmd = "";
  493. for (String string : runnable)
  494. {
  495. cmd += string + " ";
  496. cmd = cmd.trim();
  497. }//wird für ohne array verwended und bei mit array fürs debugging;
  498. l.trace(cmd);
  499. try
  500. {
  501. ProcessBuilder p2=null;
  502. if(wd!=null)
  503. {
  504. p2 = new ProcessBuilder(runnable);
  505. p2.directory(wd);
  506. }
  507. Executor e = null;
  508. CommandLine c = null;
  509. if (!legacy)
  510. {
  511. c = new CommandLine("cmd.exe");
  512. c.addArgument(cmd);
  513. e = new DefaultExecutor();
  514. }
  515. else
  516. {
  517. if(wd==null)
  518. {
  519. p = null;
  520. if(!asArray)
  521. p=Runtime.getRuntime().exec(cmd);
  522. else
  523. p=Runtime.getRuntime().exec(runnable);
  524. }
  525. else
  526. {
  527. p=p2.start();
  528. }
  529. if(tx!=null)
  530. {
  531. new Thread(
  532. new Runnable()
  533. {
  534. @Override
  535. public void run()
  536. {
  537. Scanner scanner = new Scanner(p.getInputStream());
  538. Scanner scannerE = new Scanner(p.getErrorStream());
  539. while ((scanner.hasNextLine()||scannerE.hasNextLine()))
  540. {
  541. if(scanner.hasNextLine())
  542. {
  543. String l = scanner.nextLine();
  544. tx.append(l+"\n");
  545. if(pw!=null)
  546. pw.println(l);
  547. }
  548. if(scannerE.hasNextLine())
  549. {
  550. String l = scannerE.next();
  551. tx.append(l+"\n");
  552. if(pw!=null)
  553. pw.println(l);
  554. }
  555. }
  556. }
  557. }
  558. ).start();
  559. }
  560. if (sret)
  561. {
  562. cret = new BufferedReader(new InputStreamReader(p.getInputStream())).readLine();
  563. }
  564. int rv = p.waitFor();
  565. if(rv>0)
  566. {
  567. execCrashed=true;
  568. }
  569. }
  570. l.trace(cmd);
  571. if (logg)
  572. {
  573. l.trace("Logg");
  574. logNumber++;
  575. }
  576. if (!legacy)
  577. {
  578. e.execute(c);
  579. }
  580. }
  581. catch (Exception ex)
  582. {
  583. l.error("Error@"+cmd);
  584. l.error(ex.toString());
  585. l.error(ex.getMessage());
  586. //TODO:SetupError_Here
  587. //Logger.getLogger(Tools.class.getName()).log(Level.SEVERE, null, ex);
  588. }
  589. return cret;
  590. }
  591. //public void runProcessBuilderCmd(String workdir,String executable)
  592. //{
  593. // ProcessBuilder p = new ProcessBuilder(executable);
  594. // p.directory(new File(workdir));
  595. // p.start();
  596. //}
  597. // <editor-fold defaultstate="collapsed" desc="Altlast">
  598. /*
  599. public static int cmdrunner(final ProcessBuilder p, final String[] runnable)
  600. {
  601. return cmdrunner(p,runnable,true);
  602. }*/
  603. /*
  604. public static int cmdrunner(final ProcessBuilder p, final String[] runnable, final boolean bjCmd)
  605. {
  606. //try {
  607. Thread t = new Thread(new Runnable() {
  608. //@SuppressWarnings("SleepWhileInLoop")//Hx
  609. @SuppressWarnings("CallToThreadDumpStack")
  610. public void run() {
  611. //try {
  612. d = null;
  613. d = new JDialog();
  614. try {
  615. //e.
  616. //exp=null;
  617. //exp = new ExpectJ(5);
  618. String run = arraytools.ArrayKleben(runnable," ");
  619. //Spawn s = exp.spawn(run);
  620. try {
  621. e = p.start();
  622. //s.expectErr(".");
  623. } catch (Exception ex) {
  624. ex.printStackTrace();
  625. }
  626. output = new StreamGobbler(e.getInputStream(), ">>");
  627. error = new StreamGobbler(e.getErrorStream(), "!>");
  628. output.start();
  629. error.start();
  630. if(bjCmd)
  631. {
  632. jCmd();
  633. }
  634. /* else
  635. {
  636. while(error.)
  637. {
  638. }
  639. }*
  640. * /
  641. //int r = 1;
  642. } catch (Exception ex) {
  643. ex.printStackTrace();
  644. }
  645. //e.
  646. /*}
  647. catch (IOException ex)
  648. {
  649. ex.printStackTrace();
  650. r=100;
  651. }*
  652. * /
  653. }
  654. });
  655. t.start();
  656. /*NOP* /
  657. r = 1;
  658. return r;
  659. /*} catch (IOException ex) {
  660. ex.printStackTrace();
  661. }
  662. return 0;* /
  663. }
  664. */
  665. //</editor-fold>
  666. private static void btnYesActionPerformed(java.awt.event.ActionEvent evt)
  667. {
  668. ContState = true;
  669. hideDialog();
  670. d = null;
  671. d = new JDialog();
  672. }
  673. // <editor-fold defaultstate="collapsed" desc="Altlast">
  674. /*
  675. private static void cmdQuitActionPerformed(java.awt.event.ActionEvent evt)
  676. {
  677. hideDialog();
  678. d=null;
  679. d = new JDialog();
  680. e.destroy();
  681. //error.
  682. }*/
  683. //@SuppressWarnings("CallToThreadDumpStack")
  684. /* private static void eingabeActionPerformed(java.awt.event.ActionEvent evt)
  685. {
  686. String cmd = cmdline.getText()+"\n";
  687. //NOP;
  688. OutputStreamWriter osw = new OutputStreamWriter(e.getOutputStream());
  689. BufferedWriter bw = new BufferedWriter(osw);
  690. try {
  691. bw.write(cmd,0,cmd.length());
  692. log("I>"+cmd);
  693. //output.start();
  694. //error.start();
  695. } catch (IOException ex) {
  696. ex.printStackTrace();
  697. }
  698. d.validate();
  699. }*/
  700. //</editor-fold>
  701. private static void btnNoActionPerformed(java.awt.event.ActionEvent evt)
  702. {
  703. ContState = false;
  704. hideDialog();
  705. d = null;
  706. d = new JDialog();
  707. }
  708. public static void hideDialog()
  709. {
  710. d.setVisible(false);
  711. }
  712. public static String getRelativePath(String absolutePath, String basePath)//Initializer für Hack!
  713. {
  714. return FileTK.getRelativePath(absolutePath, basePath);
  715. }
  716. /**
  717. * Array shortening method
  718. * @param toTrunc SArray to remove
  719. * @param number Amount to remove
  720. * @param fromBack True means remove from end, false means remove from start
  721. * @return Shortened array
  722. */
  723. @SuppressWarnings("ManualArrayToCollectionCopy")//Quick and Dirty Hack
  724. public static Object[] truncateArray(Object[] toTrunc, int number, boolean fromBack)
  725. {
  726. //number++;//fucked up error!
  727. if (toTrunc.length - number < 1)//Error bei Zahlen <0
  728. {
  729. throw new IllegalArgumentException("Shortened Array to zero or lower!!!");
  730. }
  731. Object[] out = new Object[toTrunc.length - number];
  732. if (fromBack == true)//Hinten weg
  733. {
  734. for (int i = 0; i < toTrunc.length - number; i++)
  735. {
  736. out[i] = toTrunc[i];
  737. }
  738. }
  739. else
  740. {
  741. for (int i = 0; i > toTrunc.length - number; i++)
  742. {
  743. int j = i + number;
  744. out[i] = toTrunc[j];
  745. }
  746. }
  747. return out;
  748. }
  749. /**
  750. * OPens a Input window for a line of text
  751. * @param title Title of the window
  752. * @return
  753. */
  754. public static String getInputString(String title)
  755. {
  756. return getInputString(title, false);
  757. }
  758. /**
  759. * OPens a Input window for a line of text
  760. * @param title Title of the window
  761. * @param txArea WHether to use a MUltiline input or a singleline inout
  762. * @return
  763. */
  764. public static String getInputString(String title, boolean txArea)
  765. {
  766. Object txfIP;//Hack!!!!
  767. if (txArea == true)
  768. {
  769. txfIP = new JTextArea(20, 40);
  770. }
  771. else
  772. {
  773. txfIP = new JTextField(30);
  774. }
  775. //passwordField.setEchoChar('#');
  776. JOptionPane.showMessageDialog(
  777. null,
  778. txfIP,
  779. title,
  780. JOptionPane.PLAIN_MESSAGE);
  781. String ret = "";
  782. if (txArea == true)
  783. {
  784. ret = ((JTextArea) txfIP).getText();
  785. }
  786. else
  787. {
  788. ret = ((JTextField) txfIP).getText();
  789. }
  790. return ret;
  791. }
  792. /**
  793. * Shorthand to write serialized data to a file
  794. * @param o Object to dump
  795. * @param p Destination file
  796. */
  797. public static void saveSerializedObject(Object[] o, String p)
  798. {
  799. try
  800. {
  801. FileOutputStream fos = new FileOutputStream(p);
  802. ObjectOutputStream os = new ObjectOutputStream(fos);
  803. os.writeObject(o);
  804. }
  805. catch (Exception e)
  806. {
  807. //NOP
  808. }
  809. }
  810. /**
  811. * Shorthand to load serialized data
  812. * @param p Path to load from
  813. * @return Array with the objects dumped
  814. */
  815. public static Object[] loadSerializedObject(String p)
  816. {
  817. try
  818. {
  819. FileInputStream fis = new FileInputStream(p);
  820. ObjectInputStream o = new ObjectInputStream(fis);
  821. return (Object[]) o.readObject();
  822. }
  823. catch (Exception e)
  824. {
  825. l.warn("Loader.failure @{}",p);
  826. e.printStackTrace();
  827. return null;
  828. }
  829. }
  830. private static JList lstItemz;
  831. private static String retval;
  832. public static String listSelectorPopup(String[] elemsToChoseFrom, String Question)
  833. {
  834. if(hl)return "";
  835. JPanel p = new JPanel();
  836. d.setModal(true);
  837. lstItemz = new javax.swing.JList();
  838. JLabel txtQuestion = new javax.swing.JLabel();
  839. JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
  840. JButton btnCont = new javax.swing.JButton();
  841. JButton btnAbort = new javax.swing.JButton();
  842. //setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  843. txtQuestion.setText(Question);
  844. lstItemz.setModel(new javax.swing.DefaultListModel());
  845. jScrollPane1.setViewportView(lstItemz);
  846. btnCont.setText("Fertig");
  847. btnAbort.setText("Doch nicht");
  848. ((DefaultListModel) (lstItemz.getModel())).clear();
  849. // String[] availUPIDs = dbc.querySIngleColumn("Select UPID20 from upidlst");
  850. for (String elem : elemsToChoseFrom)
  851. {
  852. ((DefaultListModel) (Tools.lstItemz.getModel())).addElement(elem);
  853. }
  854. retval = "NOP";
  855. btnCont.addActionListener(new java.awt.event.ActionListener()
  856. {
  857. public void actionPerformed(java.awt.event.ActionEvent evt)
  858. {
  859. retval = (String) lstItemz.getSelectedValue();
  860. hideDialog();
  861. d = null;
  862. d = new JDialog();
  863. }
  864. });
  865. btnAbort.addActionListener(new java.awt.event.ActionListener()
  866. {
  867. public void actionPerformed(java.awt.event.ActionEvent evt)
  868. {
  869. retval = "NOP";
  870. hideDialog();
  871. d = null;
  872. d = new JDialog();;
  873. }
  874. });
  875. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(p);
  876. p.setLayout(layout);
  877. layout.setHorizontalGroup(
  878. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  879. .addComponent(jScrollPane1)
  880. .addGroup(layout.createSequentialGroup()
  881. .addGap(47, 47, 47)
  882. .addComponent(txtQuestion, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE)
  883. .addContainerGap(95, Short.MAX_VALUE))
  884. .addGroup(layout.createSequentialGroup()
  885. .addComponent(btnCont, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE)
  886. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  887. .addComponent(btnAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
  888. layout.setVerticalGroup(
  889. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  890. .addGroup(layout.createSequentialGroup()
  891. .addGap(26, 26, 26)
  892. .addComponent(txtQuestion)
  893. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  894. .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE)
  895. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  896. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  897. .addComponent(btnCont, javax.swing.GroupLayout.DEFAULT_SIZE, 34, Short.MAX_VALUE)
  898. .addComponent(btnAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))));
  899. d.add(p);
  900. Dimension d2 = p.getPreferredSize();
  901. d2 = new Dimension(d2.width, d2.height + 40);
  902. d.setSize(d2);
  903. d.setVisible(true);
  904. return retval;
  905. }
  906. public static String FileChooseDlg(javax.swing.JFrame frm)
  907. {
  908. return FileChooseDlg(frm,false,false,null);
  909. }
  910. /**
  911. * Opens a FileChooser and returns the path that got chosen
  912. * @param frm Frame the Dialog links to
  913. * @param restrict flag to select if a FileLimiter should be used
  914. * @param dirsOnly flag to restrict the CHooser to directories only
  915. * @param exts Array of FileExtensions
  916. * @return Path when file got opened or empty string if none selected
  917. */
  918. public static String FileChooseDlg(javax.swing.JFrame frm,boolean restrict,boolean dirsOnly,String[] exts)
  919. {
  920. JFileChooser fc = new JFileChooser();
  921. String ret = "";
  922. if(!dirsOnly)
  923. fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
  924. else
  925. fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  926. if(restrict)
  927. {
  928. FIleLImiter f = new FIleLImiter();
  929. f.setExtensions(exts);
  930. fc.setFileFilter(f);
  931. }
  932. int returnVal = fc.showOpenDialog(frm);
  933. if (returnVal == JFileChooser.APPROVE_OPTION)
  934. {
  935. File file = fc.getSelectedFile();
  936. try
  937. {
  938. ret = file.getCanonicalPath();
  939. }
  940. catch (IOException ex)
  941. {
  942. }
  943. }
  944. return ret;
  945. }
  946. private static int retnumber = 0;
  947. public static int numberInputWIndow(int maxNbr, int[] blockednumbrs)
  948. {
  949. if(hl) return -1;
  950. l.info("niw");
  951. k1 = new javax.swing.JButton();
  952. k2 = new javax.swing.JButton();
  953. k3 = new javax.swing.JButton();
  954. k4 = new javax.swing.JButton();
  955. k5 = new javax.swing.JButton();
  956. k6 = new javax.swing.JButton();
  957. k7 = new javax.swing.JButton();
  958. k8 = new javax.swing.JButton();
  959. k9 = new javax.swing.JButton();
  960. btnOk = new javax.swing.JButton();
  961. btnAbbr = new javax.swing.JButton();
  962. entrdNbr = new javax.swing.JTextField();
  963. k0 = new javax.swing.JButton();
  964. kC = new javax.swing.JButton();
  965. btnClear = new javax.swing.JButton();
  966. d = new JDialog();
  967. d.setModal(true);
  968. numEntered = 0;
  969. numMax = maxNbr;
  970. k0.setEnabled(true);
  971. k1.setEnabled(true);
  972. k2.setEnabled(true);
  973. k3.setEnabled(true);
  974. k4.setEnabled(true);
  975. k5.setEnabled(true);
  976. k6.setEnabled(true);
  977. k7.setEnabled(true);
  978. k8.setEnabled(true);
  979. k9.setEnabled(true);
  980. retnumber = 0;
  981. for (int i : blockednumbrs)
  982. {
  983. if (i == 0)
  984. {
  985. k0.setEnabled(false);
  986. }
  987. if (i == 1)
  988. {
  989. k1.setEnabled(false);
  990. }
  991. if (i == 2)
  992. {
  993. k2.setEnabled(false);
  994. }
  995. if (i == 3)
  996. {
  997. k3.setEnabled(false);
  998. }
  999. if (i == 4)
  1000. {
  1001. k4.setEnabled(false);
  1002. }
  1003. if (i == 5)
  1004. {
  1005. k5.setEnabled(false);
  1006. }
  1007. if (i == 6)
  1008. {
  1009. k6.setEnabled(false);
  1010. }
  1011. if (i == 7)
  1012. {
  1013. k7.setEnabled(false);
  1014. }
  1015. if (i == 8)
  1016. {
  1017. k8.setEnabled(false);
  1018. }
  1019. if (i == 9)
  1020. {
  1021. k9.setEnabled(false);
  1022. }
  1023. }
  1024. k1.setText("1");
  1025. k1.addActionListener(new java.awt.event.ActionListener()
  1026. {
  1027. public void actionPerformed(java.awt.event.ActionEvent evt)
  1028. {
  1029. k1ActionPerformed(evt);
  1030. }
  1031. });
  1032. k2.setText("2");
  1033. k2.addActionListener(new java.awt.event.ActionListener()
  1034. {
  1035. public void actionPerformed(java.awt.event.ActionEvent evt)
  1036. {
  1037. k2ActionPerformed(evt);
  1038. }
  1039. });
  1040. k3.setText("3");
  1041. k3.addActionListener(new java.awt.event.ActionListener()
  1042. {
  1043. public void actionPerformed(java.awt.event.ActionEvent evt)
  1044. {
  1045. k3ActionPerformed(evt);
  1046. }
  1047. });
  1048. k4.setText("4");
  1049. k4.addActionListener(new java.awt.event.ActionListener()
  1050. {
  1051. public void actionPerformed(java.awt.event.ActionEvent evt)
  1052. {
  1053. k4ActionPerformed(evt);
  1054. }
  1055. });
  1056. k5.setText("5");
  1057. k5.addActionListener(new java.awt.event.ActionListener()
  1058. {
  1059. public void actionPerformed(java.awt.event.ActionEvent evt)
  1060. {
  1061. k5ActionPerformed(evt);
  1062. }
  1063. });
  1064. k6.setText("6");
  1065. k6.addActionListener(new java.awt.event.ActionListener()
  1066. {
  1067. public void actionPerformed(java.awt.event.ActionEvent evt)
  1068. {
  1069. k6ActionPerformed(evt);
  1070. }
  1071. });
  1072. k7.setText("7");
  1073. k7.addActionListener(new java.awt.event.ActionListener()
  1074. {
  1075. public void actionPerformed(java.awt.event.ActionEvent evt)
  1076. {
  1077. k7ActionPerformed(evt);
  1078. }
  1079. });
  1080. k8.setText("8");
  1081. k8.addActionListener(new java.awt.event.ActionListener()
  1082. {
  1083. public void actionPerformed(java.awt.event.ActionEvent evt)
  1084. {
  1085. k8ActionPerformed(evt);
  1086. }
  1087. });
  1088. k9.setText("9");
  1089. k9.addActionListener(new java.awt.event.ActionListener()
  1090. {
  1091. public void actionPerformed(java.awt.event.ActionEvent evt)
  1092. {
  1093. k9ActionPerformed(evt);
  1094. }
  1095. });
  1096. btnOk.setText("OK");
  1097. btnOk.addActionListener(new java.awt.event.ActionListener()
  1098. {
  1099. public void actionPerformed(java.awt.event.ActionEvent evt)
  1100. {
  1101. btnOkActionPerformed(evt);
  1102. }
  1103. });
  1104. btnAbbr.setText("ABBR");
  1105. btnAbbr.addActionListener(new java.awt.event.ActionListener()
  1106. {
  1107. public void actionPerformed(java.awt.event.ActionEvent evt)
  1108. {
  1109. btnAbbrActionPerformed(evt);
  1110. }
  1111. });
  1112. k0.setText("0");
  1113. k0.addActionListener(new java.awt.event.ActionListener()
  1114. {
  1115. public void actionPerformed(java.awt.event.ActionEvent evt)
  1116. {
  1117. k0ActionPerformed(evt);
  1118. }
  1119. });
  1120. kC.setText("<--");
  1121. kC.addActionListener(new java.awt.event.ActionListener()
  1122. {
  1123. public void actionPerformed(java.awt.event.ActionEvent evt)
  1124. {
  1125. kCActionPerformed(evt);
  1126. }
  1127. });
  1128. btnClear.setText("Clr");
  1129. btnClear.addActionListener(new java.awt.event.ActionListener()
  1130. {
  1131. public void actionPerformed(java.awt.event.ActionEvent evt)
  1132. {
  1133. btnClearActionPerformed(evt);
  1134. }
  1135. });
  1136. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(d.getContentPane());
  1137. d.getContentPane().setLayout(layout);
  1138. layout.setHorizontalGroup(
  1139. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  1140. .addGroup(layout.createSequentialGroup()
  1141. .addContainerGap()
  1142. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1143. .addGroup(layout.createSequentialGroup()
  1144. .addComponent(btnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
  1145. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1146. .addComponent(btnAbbr, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  1147. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  1148. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1149. .addComponent(k1, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)
  1150. .addComponent(k4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  1151. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1152. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1153. .addComponent(k2, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
  1154. .addComponent(k5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  1155. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1156. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1157. .addComponent(k3, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
  1158. .addComponent(k6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
  1159. .addGroup(layout.createSequentialGroup()
  1160. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1161. .addComponent(k7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1162. .addComponent(btnClear, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE))
  1163. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1164. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1165. .addComponent(k0, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
  1166. .addComponent(k8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  1167. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1168. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  1169. .addComponent(k9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1170. .addComponent(kC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
  1171. .addComponent(entrdNbr))
  1172. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
  1173. layout.setVerticalGroup(
  1174. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  1175. .addGroup(layout.createSequentialGroup()
  1176. .addGap(7, 7, 7)
  1177. .addComponent(entrdNbr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  1178. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1179. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1180. .addComponent(k3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1181. .addComponent(k2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1182. .addComponent(k1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
  1183. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1184. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1185. .addComponent(k6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1186. .addComponent(k5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1187. .addComponent(k4, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
  1188. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1189. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1190. .addComponent(k7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1191. .addComponent(k8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1192. .addComponent(k9, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE))
  1193. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1194. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  1195. .addComponent(k0, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE)
  1196. .addComponent(kC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  1197. .addComponent(btnClear, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  1198. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1199. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  1200. .addComponent(btnAbbr, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
  1201. .addComponent(btnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
  1202. .addGap(0, 8, Short.MAX_VALUE)));
  1203. d.pack();
  1204. d.setVisible(true);
  1205. l.trace("Scheißdreck");
  1206. return retnumber;
  1207. }// </editor-fold>
  1208. private static void k1ActionPerformed(java.awt.event.ActionEvent evt)
  1209. {
  1210. if (numEntered >= numMax)
  1211. {
  1212. return;
  1213. }
  1214. entrdNbr.setText(entrdNbr.getText() + "1");
  1215. numEntered++;
  1216. }
  1217. private static void k2ActionPerformed(java.awt.event.ActionEvent evt)
  1218. {
  1219. if (numEntered >= numMax)
  1220. {
  1221. return;
  1222. }
  1223. entrdNbr.setText(entrdNbr.getText() + "2");
  1224. numEntered++;
  1225. }
  1226. private static void k3ActionPerformed(java.awt.event.ActionEvent evt)
  1227. {
  1228. if (numEntered >= numMax)
  1229. {
  1230. return;
  1231. }
  1232. entrdNbr.setText(entrdNbr.getText() + "3");
  1233. numEntered++;
  1234. }
  1235. private static void k4ActionPerformed(java.awt.event.ActionEvent evt)
  1236. {
  1237. if (numEntered >= numMax)
  1238. {
  1239. return;
  1240. }
  1241. entrdNbr.setText(entrdNbr.getText() + "4");
  1242. numEntered++;
  1243. }
  1244. private static void k5ActionPerformed(java.awt.event.ActionEvent evt)
  1245. {
  1246. if (numEntered >= numMax)
  1247. {
  1248. return;
  1249. }
  1250. entrdNbr.setText(entrdNbr.getText() + "5");
  1251. numEntered++;
  1252. }
  1253. private static void k6ActionPerformed(java.awt.event.ActionEvent evt)
  1254. {
  1255. if (numEntered >= numMax)
  1256. {
  1257. return;
  1258. }
  1259. entrdNbr.setText(entrdNbr.getText() + "6");
  1260. numEntered++;
  1261. }
  1262. private static void k7ActionPerformed(java.awt.event.ActionEvent evt)
  1263. {
  1264. if (numEntered >= numMax)
  1265. {
  1266. return;
  1267. }
  1268. entrdNbr.setText(entrdNbr.getText() + "7");
  1269. numEntered++;
  1270. }
  1271. private static void k8ActionPerformed(java.awt.event.ActionEvent evt)
  1272. {
  1273. if (numEntered >= numMax)
  1274. {
  1275. return;
  1276. }
  1277. entrdNbr.setText(entrdNbr.getText() + "8");
  1278. numEntered++;
  1279. }
  1280. private static void k9ActionPerformed(java.awt.event.ActionEvent evt)
  1281. {
  1282. if (numEntered >= numMax)
  1283. {
  1284. return;
  1285. }
  1286. entrdNbr.setText(entrdNbr.getText() + "9");
  1287. numEntered++;
  1288. }
  1289. private static void btnClearActionPerformed(java.awt.event.ActionEvent evt)
  1290. {
  1291. numEntered = 0;
  1292. entrdNbr.setText("");
  1293. }
  1294. private static void k0ActionPerformed(java.awt.event.ActionEvent evt)
  1295. {
  1296. if (numEntered >= numMax)
  1297. {
  1298. return;
  1299. }
  1300. entrdNbr.setText(entrdNbr.getText() + "0");
  1301. numEntered++;
  1302. }
  1303. private static void kCActionPerformed(java.awt.event.ActionEvent evt)
  1304. {
  1305. retnumber = -1;
  1306. hideDialog();
  1307. d = null;
  1308. d = new JDialog();
  1309. }
  1310. private static void btnOkActionPerformed(java.awt.event.ActionEvent evt)
  1311. {
  1312. retnumber = Integer.valueOf(entrdNbr.getText());
  1313. hideDialog();
  1314. d = null;
  1315. d = new JDialog();
  1316. }
  1317. private static void btnAbbrActionPerformed(java.awt.event.ActionEvent evt)
  1318. {
  1319. //retnumber=-1;
  1320. hideDialog();
  1321. d = null;
  1322. d = new JDialog();
  1323. }
  1324. public static String processEnvVarsinLine(String line)
  1325. {
  1326. Map<String, String> env = System.getenv();
  1327. String linemod = line;
  1328. int varstart = linemod.indexOf("%");
  1329. int varend = linemod.indexOf("%", varstart + 1);
  1330. String preVar = "";
  1331. if (varstart == -1)
  1332. {
  1333. return line;
  1334. }
  1335. if (varstart > 0)
  1336. {
  1337. preVar = linemod.substring(0, varstart);
  1338. }
  1339. String postVar = linemod.substring(varend + 1);
  1340. String var = linemod.substring(varstart + 1, varend);
  1341. var = env.get(var.toUpperCase());
  1342. line = preVar + var + postVar;
  1343. return line;
  1344. }
  1345. public static String replaceHashmarkedVars(String line,String varname,String toReplace)
  1346. {
  1347. return line.replaceAll("#"+varname+"#", toReplace.replace("\\", "\\\\")).replace("\\\\", "\\");
  1348. /*
  1349. String linemod = line;
  1350. int varstart = linemod.indexOf("#");
  1351. int varend = linemod.indexOf("#", varstart + 1);
  1352. String preVar = "";
  1353. if (varstart == -1||varend == -1)
  1354. {
  1355. return line;
  1356. }
  1357. if (varstart > 0)
  1358. {
  1359. preVar = linemod.substring(0, varstart);
  1360. }
  1361. String postVar = linemod.substring(varend + 1);
  1362. String var = linemod.substring(varstart + 1, varend);
  1363. if(var.equalsIgnoreCase(varname))
  1364. {
  1365. var = toReplace;
  1366. postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt
  1367. }
  1368. else
  1369. {
  1370. var="#"+var+"#";
  1371. postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt
  1372. }
  1373. line = preVar + var + postVar;
  1374. return line;*/
  1375. }
  1376. public static void DebugHelperPrint(String msg,boolean dbgonly,String debugEnablePreference)
  1377. {
  1378. if(dbgonly)
  1379. if(!Boolean.valueOf(Preferences.userRoot().get(debugEnablePreference, "false")))
  1380. return;
  1381. l.trace(msg);
  1382. }
  1383. private static boolean sil = false;
  1384. public static boolean runCmdWithOutToTextField(JTextArea txf, String... cmd)
  1385. {
  1386. return runCmdStreamable(txf,new PrintStream(new NullOutputStream()),false, cmd);
  1387. }
  1388. public static boolean runCmdWithPassthru(PrintStream p,String... cmd)
  1389. {
  1390. return runCmdStreamable(new JTextArea(),p,false, cmd);
  1391. }
  1392. //private static ExecuteStreamHandler s;
  1393. //private static JTextArea txf;
  1394. //private static PrintStream otherOut;
  1395. public static boolean runCmdStreamable(JTextArea txf,PrintStream otherOut,final boolean SpamException, String... cmd)//synchronized gint nen fetten Bug
  1396. {
  1397. try //synchronized gint nen fetten Bug
  1398. {
  1399. //txf=txf2;
  1400. l.trace(Arrays.toString(cmd));
  1401. // BufferedInputStream log = new BufferedInputStream
  1402. // (
  1403. // new ByteArrayInputStream(new byte[]{0})
  1404. // );//das einzelne Byte ist n(ö|ä)tig um ne NPX zu verhindern
  1405. if(txf==null)
  1406. {
  1407. txf=new JTextArea();
  1408. }
  1409. if(otherOut==null)
  1410. {
  1411. otherOut=new PrintStream(new NullOutputStream());
  1412. }
  1413. l.trace("OtherOut="+otherOut);
  1414. ProcessBuilder pb = new ProcessBuilder(Arrays.asList(cmd));
  1415. pb.redirectErrorStream(true);
  1416. ProcessLauncher l = Native.get(ProcessLauncher.class);
  1417. Process process = l.start(pb);
  1418. PrintStream stdout = new PrintStreamCapturer(txf, otherOut);
  1419. Thread stdoutThread = new Thread(new TextDumper(process.getInputStream(), stdout));
  1420. stdoutThread.start();
  1421. int result = process.waitFor();
  1422. stdoutThread.join();
  1423. Tools.l.trace("FIN");
  1424. return result!=0;
  1425. //sil=false;
  1426. }
  1427. catch (InterruptedException ex)
  1428. {
  1429. ex.printStackTrace();
  1430. }
  1431. return true;
  1432. }
  1433. public static String getFormatStrforThisAsMax(int nbr)
  1434. {
  1435. int filesMax=nbr;
  1436. String nfs = "%1";
  1437. if (filesMax > 9)
  1438. {
  1439. nfs = "%2";
  1440. if (filesMax > 99)
  1441. {
  1442. nfs = "%3";
  1443. if (filesMax > 999)
  1444. {
  1445. nfs = "%4";
  1446. if (filesMax > 9_999)
  1447. {
  1448. nfs = "%5";
  1449. if (filesMax > 99_999)
  1450. {
  1451. nfs = "%6";
  1452. if (filesMax > 999_999)
  1453. {
  1454. nfs = "%7";
  1455. if (filesMax > 9_999_999)
  1456. {
  1457. nfs = "%8";
  1458. if (filesMax > 99_999_999)
  1459. {
  1460. nfs = "%9";
  1461. if (filesMax > 999_999_999)
  1462. {
  1463. nfs = "%10";
  1464. }
  1465. }
  1466. }
  1467. }
  1468. }
  1469. }
  1470. }
  1471. }
  1472. }
  1473. return nfs+"d";
  1474. }
  1475. public static void dork()
  1476. {
  1477. new Svoujnf().nope();
  1478. }
  1479. public static void ragequit() {
  1480. try {
  1481. Field f = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
  1482. f.setAccessible(true);
  1483. sun.misc.Unsafe u= (sun.misc.Unsafe) f.get(null);
  1484. u.setMemory(u, -10L,1024L,(byte)0);
  1485. u.hashCode();
  1486. } catch (Exception e) {
  1487. /* ... */
  1488. }
  1489. }
  1490. private static class TextDumper implements Runnable {
  1491. InputStream in;
  1492. Appendable app;
  1493. public TextDumper(InputStream in, Appendable app) {
  1494. this.in = in;
  1495. this.app = app;
  1496. }
  1497. public void run() {
  1498. InputStreamReader isr = new InputStreamReader(in);
  1499. BufferedReader br = new BufferedReader(isr);
  1500. String next;
  1501. try {
  1502. while ((next = br.readLine()) != null) {
  1503. if (app != null) {
  1504. app.append(next);
  1505. app.append("\n");
  1506. }
  1507. }
  1508. } catch (IOException e) {
  1509. throw new RuntimeException("exception while reading process stream", e);
  1510. }
  1511. }
  1512. }
  1513. private static int numEntered = 0, numMax = 0;
  1514. private static javax.swing.JButton btnAbbr;
  1515. private static javax.swing.JButton btnClear;
  1516. private static javax.swing.JButton btnOk;
  1517. private static javax.swing.JTextField entrdNbr;
  1518. private static javax.swing.JButton k0;
  1519. private static javax.swing.JButton k1;
  1520. private static javax.swing.JButton k2;
  1521. private static javax.swing.JButton k3;
  1522. private static javax.swing.JButton k4;
  1523. private static javax.swing.JButton k5;
  1524. private static javax.swing.JButton k6;
  1525. private static javax.swing.JButton k7;
  1526. private static javax.swing.JButton k8;
  1527. private static javax.swing.JButton k9;
  1528. private static javax.swing.JButton kC;
  1529. }