/*
* Copyright (C) 2015 iZc
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package de.nplusc.izc.tools.baseTools;
import de.nplusc.izc.tools.IOtools.FileTK;
import de.nplusc.izc.tools.IOtools.PrintStreamCapturer;
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.io.*;
import java.lang.reflect.Field;
import java.security.MessageDigest;
import java.util.*;
import java.util.Map.Entry;
import java.util.prefs.Preferences;
import javax.swing.*;
//import net.rubygrapefruit.platform.Native;
//import net.rubygrapefruit.platform.ProcessLauncher;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.Executor;
import org.apache.commons.io.output.NullOutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* @author LH
*/
@SuppressWarnings("deprecation")
public class Tools {
private static final Logger l = LogManager.getLogger();
public static boolean execCrashed = false;
private static boolean ContState;
private static JDialog d;
private static boolean hl = false;
//private boolean ProcessReturn;
private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
private static int logNumber;
protected Tools() {
//disabled Constructor
}
static {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
boolean hl = ge.isHeadless();
if (!hl) {
//d = new JDialog();
}
}
/**
* Method to pad the left of a Sting with given character
*
* @param count Destination amount of data
* @param base String to pad up
* @param filler Padding data
* @return Padded String
*/
public static String padLeft(final int count, final String base, final char filler) {
if (base == null) {
throw new NullPointerException();
}
if (base.length() >= count) {
return base;
}
char[] prefix = new char[count - base.length()];
Arrays.fill(prefix, filler);
return new StringBuilder(count).append(prefix).append(base).toString();
}
/**
* Method rename and shorthand for Thread.sleep()
*
* @param time Time to wait in ms
*/
public static void wait(int time) {
try {
Thread.sleep(time);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
public static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
String hexxit = new String(hexChars).toLowerCase(Locale.ROOT);
//hexxit = hexxit.replaceAll("^0+", "");
return hexxit;
}
/**
* SHA-Hashes a String
*
* @param s String to hash
* @return Hashed String
*/
public static String getSHAString(String s) {
try {
MessageDigest sha = MessageDigest.getInstance("SHA");
@SuppressWarnings("StringBufferMayBeStringBuilder")
StringBuffer t = new StringBuffer();
byte[] digest = sha.digest(s.getBytes());
for (byte b : digest) {
l.trace(String.format("%02x", b));
int val = ((int) b) & 0xff;
if (val < 16) {
t.append("0");
}
t.append(Integer.toHexString(val));
}
return t.toString();
} catch (Exception ex) {
return null;
}
}
/**
* Integerizes a String
*
* @param ip String to integerize
* @return Array of Integers where each int is a Character of the string
*/
public static int[] lettersToInt(String ip) {
ip = ip.toLowerCase();
char[] it = ip.toCharArray();
int[] ri = new int[it.length];
for (int i = 0; i < ri.length; i++) {
ri[i] = (int) it[i];
}
return ri;
}
/**
* Sum of the Elements of the Array
*
* @param i Integer-array to sumup
* @return Sum of the elements
*/
public static int addIntsTogether(int[] i) {
int t = 1;
for (int X : i) {
t *= X;
}
return t;
}
@Deprecated
/**
* HACK!!!
* @param m unknown
* @param ints unknown
* @return unknown
*/
public static int addIntsTogether(HashMap m, boolean ints) {
//boolean ints = !noints;
String[] mk;
Object[] mk2 = m.keySet().toArray();
mk = new String[mk2.length];
for (int i = 0; i < mk.length; i++) {
String s = "";
//s.toString();
mk[i] = mk2[i].toString();
}
int t = 1;
for (String s : mk) {
if (ints == true) {
t *= Integer.valueOf(m.get(s));
} else {
int t2 = 0;
int[] itmp = lettersToInt(m.get(s));
for (int i : itmp) {
t2 += i;
}
t += t2;
}
}
return t;
}
@Deprecated
/**
* Adds the Strings together while respecting Alphabet and wraps . Dont use for new Code
* @param s1 String 1
* @param s2 String 2
* @return the merged Strings
*/
public static String stringAdd(String s1, String s2) {
char[] ca1 = s1.toLowerCase().toCharArray();
char[] ca2 = s2.toLowerCase().toCharArray();
int[] ci1 = new int[ca1.length];
int[] ci2 = new int[ca2.length];
String t;
for (int i = 0; i < ca1.length; i++) {
try {
ci1[i] = Integer.valueOf(Character.toString(ca1[i]));
} catch (Exception ex) {
t = Character.toString(ca1[i]);
ci1[i] = ALPHABET.indexOf(t) + 1;
}
}
for (int i = 0; i < ca2.length; i++) {
try {
ci2[i] = Integer.valueOf(Character.toString(ca2[i]));
} catch (Exception ex) {
t = Character.toString(ca2[i]);
ci2[i] = ALPHABET.indexOf(t) + 1;
}
}
int l = ci1.length;
if (ci1.length < ci2.length) {
l = ci2.length;
}
int[] op = new int[l];
int i1, i2, i3;
for (int i = 0; i < l; i++) {
try {
i1 = ci1[i];
} catch (Exception ex) {
i1 = 0;
}
try {
i2 = ci2[i];
} catch (Exception ex) {
i2 = 0;
}
i3 = i1 + i1;
if (i3 > 26) {
i3 -= 26;
}
op[i] = i3;
}
return backString(op);
}
@Deprecated
public static String backString(int[] ia) {
int l = ia.length, i1;
String[] r1 = new String[l];
String rl = "";
for (int i = 0; i < l; i++) {
i1 = ia[i] - 1;
if (i1 == -1) {
i1++;
}
r1[i] = Character.toString(ALPHABET.charAt(i1));
}
for (String s : r1) {
rl += s;
}
return rl;
}
@Deprecated
public static String stringFold(String s, int l, int rec)//halbiert Strings und addiert die Hälften
{
int l1 = s.length() / 2;//,l2;
String sh1, sh2, so1;
//int l2=l1+1-1;//Neuen Wet erzeugen!!
//l2=l1*2
if ((l1 * 2) == s.length() - 1) {
l1++;
}
sh1 = s.substring(0, l1++);
sh2 = s.substring(l1++);
so1 = stringAdd(sh1, sh2);
if (so1.length() > l && rec > 0) {
so1 = stringFold(so1, l, rec--);
}
return so1;
}
@Deprecated
public static String stringFold(String s, int l) {
return stringFold(s, l, 30);
}
/**
* 2-Elemente-Meckermeldung
*
* @param mode ignored
* @param MSGLine1 Zeile 1 der Meldung
* @param MSGLine2 ZEile 2 der Meldung
* @return true if left button got pressed, false on right one
*/
public static boolean dlg(boolean mode, String MSGLine1, String MSGLine2) {
return dlg(mode, MSGLine1, MSGLine2, "Fortfahren", "Abbrechen");
}
/**
* 2-Elemente-Meckermeldung
*
* @param mode ignored
* @param MSGLine1 Zeile 1 der Meldung
* @param MSGLine2 ZEile 2 der Meldung
* @param btnLeft MEssage of left button
* @param btnRight MEssage of Right button
* @return true if left button got pressed, false on right one
*/
public static boolean dlg(boolean mode, String MSGLine1, String MSGLine2, String btnLeft, String btnRight) {
if (hl) {
return false;
}
d = new JDialog();
JPanel p = new JPanel();
javax.swing.JButton btnYes = new javax.swing.JButton();
javax.swing.JButton btnNo = new javax.swing.JButton();
JLabel lblMSG = new JLabel();
JLabel lblMSG2 = new JLabel();
d.setModal(mode);
mode = true;
if (mode == true) {
//Ausgeblendet da nur Fenster-Layout
//
btnNo.setText(btnRight);
btnNo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNoActionPerformed(evt);
}
});
btnYes.setText(btnLeft);
btnYes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnYesActionPerformed(evt);
}
});
lblMSG.setText(MSGLine1);
lblMSG2.setText(MSGLine2);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(p);
p.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMSG, javax.swing.GroupLayout.PREFERRED_SIZE, 258, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(btnYes)
.addGap(18, 18, 18)
.addComponent(btnNo))
.addGroup(layout.createSequentialGroup()
.addGap(40, 40, 40)
.addComponent(lblMSG2)))
.addContainerGap(63, Short.MAX_VALUE)));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblMSG, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(lblMSG2)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnYes)
.addComponent(btnNo))
.addContainerGap(71, Short.MAX_VALUE)));
//
//p.add(btnYes);
//p.add(btnNo);
d.add(p);
d.setSize(p.getPreferredSize());
d.setVisible(true);
//btnNo.setText(btnRight);
//btnYes.setText(btnLeft);
} else {
//TODO working.dialog
return true;
}
return ContState;
}
//
/**
* COmmand run wrapper
*
* @param runnable Command elements
*/
public static void runSingleCmd(String... runnable) {
runSingleCmd(true, runnable);
}
public static void runSingleCmd(boolean logg, String... runnable) {
runSingleCmd(true, false, runnable);
}
public static void runSingleCmd(boolean logg, boolean legacy, String... runnable) {
runSingleCmd(logg, legacy, false, runnable);
}
public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, String... runnable) {
return runSingleCmd(logg, legacy, sret, null, runnable);
}
public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, JTextArea tx, String... runnable) {
return runSingleCmd(logg, legacy, sret, false, tx, runnable);
}
public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, boolean asArray, JTextArea tx, String... runnable) {
return runSingleCmd(logg, legacy, sret, asArray, tx, null, runnable);
}
public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, boolean asArray, JTextArea tx, final PrintStream pw, String... runnable) {
return runSingleCmd(logg, legacy, sret, asArray, tx, null, null, false, runnable);
}
private static Process p;
public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, boolean asArray, final JTextArea tx, final PrintStream pw, String workdir, boolean useWD, String... runnable) {
execCrashed = false;
String cret = "";
File wd = null;
if (workdir != null && useWD) {
wd = new File(workdir);
if (!wd.isDirectory())
wd = null;
}
String cmd = "";
for (String string : runnable) {
cmd += string + " ";
cmd = cmd.trim();
}//wird für ohne array verwended und bei mit array fürs debugging;
l.trace(cmd);
try {
ProcessBuilder p2 = null;
if (wd != null) {
p2 = new ProcessBuilder(runnable);
p2.directory(wd);
}
Executor e = null;
CommandLine c = null;
if (!legacy) {
c = new CommandLine("cmd.exe");
c.addArgument(cmd);
e = new DefaultExecutor();
} else {
if (wd == null) {
p = null;
if (!asArray)
p = Runtime.getRuntime().exec(cmd);
else
p = Runtime.getRuntime().exec(runnable);
} else {
p = p2.start();
}
if (tx != null) {
new Thread(
new Runnable() {
@Override
public void run() {
Scanner scanner = new Scanner(p.getInputStream());
Scanner scannerE = new Scanner(p.getErrorStream());
while ((scanner.hasNextLine() || scannerE.hasNextLine())) {
if (scanner.hasNextLine()) {
String l = scanner.nextLine();
tx.append(l + "\n");
if (pw != null)
pw.println(l);
}
if (scannerE.hasNextLine()) {
String l = scannerE.next();
tx.append(l + "\n");
if (pw != null)
pw.println(l);
}
}
}
}
).start();
}
if (sret) {
cret = new BufferedReader(new InputStreamReader(p.getInputStream())).readLine();
}
int rv = p.waitFor();
if (rv > 0) {
execCrashed = true;
}
}
l.trace(cmd);
if (logg) {
l.trace("Logg");
logNumber++;
}
if (!legacy) {
e.execute(c);
}
} catch (Exception ex) {
l.error("Error@" + cmd);
l.error(ex.toString());
l.error(ex.getMessage());
//TODO:SetupError_Here
//Logger.getLogger(Tools.class.getName()).log(Level.SEVERE, null, ex);
}
return cret;
}
private static void btnYesActionPerformed(java.awt.event.ActionEvent evt) {
ContState = true;
hideDialog();
d = null;
d = new JDialog();
}
private static void btnNoActionPerformed(java.awt.event.ActionEvent evt) {
ContState = false;
hideDialog();
d = null;
d = new JDialog();
}
public static void hideDialog() {
d.setVisible(false);
}
public static String getRelativePath(String absolutePath, String basePath)//Initializer für Hack!
{
return FileTK.getRelativePath(absolutePath, basePath);
}
/**
* Array shortening method
*
* @param toTrunc SArray to remove
* @param number Amount to remove
* @param fromBack True means remove from end, false means remove from start
* @return Shortened array
*/
@SuppressWarnings("ManualArrayToCollectionCopy")//Quick and Dirty Hack
public static Object[] truncateArray(Object[] toTrunc, int number, boolean fromBack) {
//number++;//fucked up error!
if (toTrunc.length - number < 1)//Error bei Zahlen <0
{
throw new IllegalArgumentException("Shortened Array to zero or lower!!!");
}
Object[] out = new Object[toTrunc.length - number];
if (fromBack == true)//Hinten weg
{
for (int i = 0; i < toTrunc.length - number; i++) {
out[i] = toTrunc[i];
}
} else { //Evil loop :P (linenumber)
for (int i = 0; i > toTrunc.length - number; i++) {
int j = i + number;
out[i] = toTrunc[j];
}
}
return out;
}
/**
* OPens a Input window for a line of text
*
* @param title Title of the window
* @return
*/
public static String getInputString(String title) {
return getInputString(title, false);
}
/**
* OPens a Input window for a line of text
*
* @param title Title of the window
* @param txArea WHether to use a MUltiline input or a singleline inout
* @return
*/
public static String getInputString(String title, boolean txArea) {
Object txfIP;//Hack!!!!
if (txArea == true) {
txfIP = new JTextArea(20, 40);
} else {
txfIP = new JTextField(30);
}
//passwordField.setEchoChar('#');
JOptionPane.showMessageDialog(
null,
txfIP,
title,
JOptionPane.PLAIN_MESSAGE);
String ret = "";
if (txArea == true) {
ret = ((JTextArea) txfIP).getText();
} else {
ret = ((JTextField) txfIP).getText();
}
return ret;
}
/**
* Shorthand to write serialized data to a file
*
* @param o Object to dump
* @param p Destination file
*/
public static void saveSerializedObject(Object[] o, String p) {
try {
FileOutputStream fos = new FileOutputStream(p);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(o);
} catch (Exception e) {
//NOP
}
}
/**
* Shorthand to load serialized data
*
* @param p Path to load from
* @return Array with the objects dumped
*/
public static Object[] loadSerializedObject(String p) {
try {
FileInputStream fis = new FileInputStream(p);
ObjectInputStream o = new ObjectInputStream(fis);
return (Object[]) o.readObject();
} catch (Exception e) {
l.warn("Loader.failure @{}", p);
e.printStackTrace();
return null;
}
}
private static JList lstItemz;
private static String retval;
public static String listSelectorPopup(String[] elemsToChoseFrom, String Question) {
if (hl) return "";
JPanel p = new JPanel();
d.setModal(true);
lstItemz = new javax.swing.JList();
JLabel txtQuestion = new javax.swing.JLabel();
JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
JButton btnCont = new javax.swing.JButton();
JButton btnAbort = new javax.swing.JButton();
//setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
txtQuestion.setText(Question);
lstItemz.setModel(new javax.swing.DefaultListModel());
jScrollPane1.setViewportView(lstItemz);
btnCont.setText("Fertig");
btnAbort.setText("Doch nicht");
((DefaultListModel) (lstItemz.getModel())).clear();
// String[] availUPIDs = dbc.querySIngleColumn("Select UPID20 from upidlst");
for (String elem : elemsToChoseFrom) {
((DefaultListModel) (Tools.lstItemz.getModel())).addElement(elem);
}
retval = "NOP";
btnCont.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
retval = (String) lstItemz.getSelectedValue();
hideDialog();
d = null;
d = new JDialog();
}
});
btnAbort.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
retval = "NOP";
hideDialog();
d = null;
d = new JDialog();
;
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(p);
p.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addGap(47, 47, 47)
.addComponent(txtQuestion, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(95, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(btnCont, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(26, 26, 26)
.addComponent(txtQuestion)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnCont, javax.swing.GroupLayout.DEFAULT_SIZE, 34, Short.MAX_VALUE)
.addComponent(btnAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))));
d.add(p);
Dimension d2 = p.getPreferredSize();
d2 = new Dimension(d2.width, d2.height + 40);
d.setSize(d2);
d.setVisible(true);
return retval;
}
public static String FileChooseDlg(javax.swing.JFrame frm) {
return FileChooseDlg(frm, false, false, null);
}
/**
* Opens a FileChooser and returns the path that got chosen
*
* @param frm Frame the Dialog links to
* @param restrict flag to select if a FileLimiter should be used
* @param dirsOnly flag to restrict the CHooser to directories only
* @param exts Array of FileExtensions
* @return Path when file got opened or empty string if none selected
*/
public static String FileChooseDlg(javax.swing.JFrame frm, boolean restrict, boolean dirsOnly, String[] exts) {
JFileChooser fc = new JFileChooser();
String ret = "";
if (!dirsOnly)
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
else
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (restrict) {
FIleLImiter f = new FIleLImiter();
f.setExtensions(exts);
fc.setFileFilter(f);
}
int returnVal = fc.showOpenDialog(frm);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
try {
ret = file.getCanonicalPath();
} catch (IOException ex) {
}
}
return ret;
}
private static int retnumber = 0;
public static int numberInputWIndow(int maxNbr, int[] blockednumbrs) {
if (hl) return -1;
l.info("niw");
k1 = new javax.swing.JButton();
k2 = new javax.swing.JButton();
k3 = new javax.swing.JButton();
k4 = new javax.swing.JButton();
k5 = new javax.swing.JButton();
k6 = new javax.swing.JButton();
k7 = new javax.swing.JButton();
k8 = new javax.swing.JButton();
k9 = new javax.swing.JButton();
btnOk = new javax.swing.JButton();
btnAbbr = new javax.swing.JButton();
entrdNbr = new javax.swing.JTextField();
k0 = new javax.swing.JButton();
kC = new javax.swing.JButton();
btnClear = new javax.swing.JButton();
d = new JDialog();
d.setModal(true);
numEntered = 0;
numMax = maxNbr;
k0.setEnabled(true);
k1.setEnabled(true);
k2.setEnabled(true);
k3.setEnabled(true);
k4.setEnabled(true);
k5.setEnabled(true);
k6.setEnabled(true);
k7.setEnabled(true);
k8.setEnabled(true);
k9.setEnabled(true);
retnumber = 0;
for (int i : blockednumbrs) {
if (i == 0) {
k0.setEnabled(false);
}
if (i == 1) {
k1.setEnabled(false);
}
if (i == 2) {
k2.setEnabled(false);
}
if (i == 3) {
k3.setEnabled(false);
}
if (i == 4) {
k4.setEnabled(false);
}
if (i == 5) {
k5.setEnabled(false);
}
if (i == 6) {
k6.setEnabled(false);
}
if (i == 7) {
k7.setEnabled(false);
}
if (i == 8) {
k8.setEnabled(false);
}
if (i == 9) {
k9.setEnabled(false);
}
}
k1.setText("1");
k1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k1ActionPerformed(evt);
}
});
k2.setText("2");
k2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k2ActionPerformed(evt);
}
});
k3.setText("3");
k3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k3ActionPerformed(evt);
}
});
k4.setText("4");
k4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k4ActionPerformed(evt);
}
});
k5.setText("5");
k5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k5ActionPerformed(evt);
}
});
k6.setText("6");
k6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k6ActionPerformed(evt);
}
});
k7.setText("7");
k7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k7ActionPerformed(evt);
}
});
k8.setText("8");
k8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k8ActionPerformed(evt);
}
});
k9.setText("9");
k9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k9ActionPerformed(evt);
}
});
btnOk.setText("OK");
btnOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnOkActionPerformed(evt);
}
});
btnAbbr.setText("ABBR");
btnAbbr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAbbrActionPerformed(evt);
}
});
k0.setText("0");
k0.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
k0ActionPerformed(evt);
}
});
kC.setText("<--");
kC.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
kCActionPerformed(evt);
}
});
btnClear.setText("Clr");
btnClear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnClearActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(d.getContentPane());
d.getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(btnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAbbr, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k1, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)
.addComponent(k4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k2, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
.addComponent(k5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k3, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
.addComponent(k6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnClear, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k0, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
.addComponent(k8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(k9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(kC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addComponent(entrdNbr))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(7, 7, 7)
.addComponent(entrdNbr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(k2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(k1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(k5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(k4, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(k8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(k9, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(k0, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE)
.addComponent(kC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnClear, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnAbbr, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 8, Short.MAX_VALUE)));
d.pack();
d.setVisible(true);
l.trace("Scheißdreck");
return retnumber;
}//
private static void k1ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "1");
numEntered++;
}
private static void k2ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "2");
numEntered++;
}
private static void k3ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "3");
numEntered++;
}
private static void k4ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "4");
numEntered++;
}
private static void k5ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "5");
numEntered++;
}
private static void k6ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "6");
numEntered++;
}
private static void k7ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "7");
numEntered++;
}
private static void k8ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "8");
numEntered++;
}
private static void k9ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "9");
numEntered++;
}
private static void btnClearActionPerformed(java.awt.event.ActionEvent evt) {
numEntered = 0;
entrdNbr.setText("");
}
private static void k0ActionPerformed(java.awt.event.ActionEvent evt) {
if (numEntered >= numMax) {
return;
}
entrdNbr.setText(entrdNbr.getText() + "0");
numEntered++;
}
private static void kCActionPerformed(java.awt.event.ActionEvent evt) {
retnumber = -1;
hideDialog();
d = null;
d = new JDialog();
}
private static void btnOkActionPerformed(java.awt.event.ActionEvent evt) {
retnumber = Integer.valueOf(entrdNbr.getText());
hideDialog();
d = null;
d = new JDialog();
}
private static void btnAbbrActionPerformed(java.awt.event.ActionEvent evt) {
//retnumber=-1;
hideDialog();
d = null;
d = new JDialog();
}
public static String processEnvVarsinLine(String line) {
Map env = System.getenv();
String linemod = line;
int varstart = linemod.indexOf("%");
int varend = linemod.indexOf("%", varstart + 1);
String preVar = "";
if (varstart == -1) {
return line;
}
if (varstart > 0) {
preVar = linemod.substring(0, varstart);
}
String postVar = linemod.substring(varend + 1);
String var = linemod.substring(varstart + 1, varend);
var = env.get(var.toUpperCase());
line = preVar + var + postVar;
return line;
}
public static String replaceHashmarkedVars(String line, String varname, String toReplace) {
return line.replaceAll("#" + varname + "#", toReplace.replace("\\", "\\\\")).replace("\\\\", "\\");
}
public static void DebugHelperPrint(String msg, boolean dbgonly, String debugEnablePreference) {
if (dbgonly)
if (!Boolean.valueOf(Preferences.userRoot().get(debugEnablePreference, "false")))
return;
l.trace(msg);
}
private static boolean sil = false;
public static boolean runCmdWithOutToTextField(JTextArea txf, String... cmd) {
return runCmdStreamable(txf, new PrintStream(new NullOutputStream()), false, cmd);
}
public static boolean runCmdWithOutToTextField(JTextArea txf, ProcessWatcher w, String... cmd) {
return runCmdStreamable(txf, new PrintStream(new NullOutputStream()), false, w, cmd);
}
public static boolean runCmdWithPassthru(PrintStream p, String... cmd) {
return runCmdStreamable(new JTextArea(), p, false, cmd);
}
public static boolean runCmdWithPassthru(PrintStream p, ProcessWatcher w, String... cmd) {
return runCmdStreamable(new JTextArea(), p, false, w, cmd);
}
//private static ExecuteStreamHandler s;
//private static JTextArea txf;
//private static PrintStream otherOut;
public static boolean runCmdStreamable(JTextArea txf, PrintStream otherOut, final boolean SpamException, String... cmd) {
return runCmdStreamable(txf, otherOut, SpamException, null, cmd);
}
public static boolean runCmdStreamable(JTextArea txf, PrintStream otherOut, final boolean SpamException, ProcessWatcher w, String... cmd)//synchronized gint nen fetten Bug
{
return runCmdStreamable(txf, otherOut, SpamException, w, null, false, cmd);
}
public static boolean runCmdStreamable(JTextArea txf, PrintStream otherOut, final boolean SpamException, ProcessWatcher w, OutputStreamBridge bridge, boolean async, String... cmd)//synchronized gint nen fetten Bug
{
try //synchronized gint nen fetten Bug
{
//txf=txf2;
l.trace(Arrays.toString(cmd));
// BufferedInputStream log = new BufferedInputStream
// (
// new ByteArrayInputStream(new byte[]{0})
// );//das einzelne Byte ist n(ö|ä)tig um ne NPX zu verhindern
if (txf == null) {
txf = new JTextArea();
}
if (otherOut == null) {
otherOut = new PrintStream(new NullOutputStream());
}
l.trace("OtherOut=" + otherOut);
ProcessBuilder pb = new ProcessBuilder(Arrays.asList(cmd));
pb.redirectErrorStream(true);
//ProcessLauncher l = Native.get(ProcessLauncher.class);
Process process = pb.start();
if (w != null) {
w.receiveProcess(process);
}
PrintStream stdout = new PrintStreamCapturer(txf, otherOut);
Thread stdoutThread = new Thread(new TextDumper(process.getInputStream(), stdout));
stdoutThread.start();
if (async) {
if (bridge != null) {
bridge.s = process.getOutputStream();
}
l.trace("ASYNC background task");
return true;
} else {
int result = process.waitFor();
stdoutThread.join();
Tools.l.trace("FIN");
return result != 0;
}
//sil=false;
} catch (InterruptedException | IOException ex) {
ex.printStackTrace();
}
return true;
}
public static String getFormatStrforThisAsMax(int nbr) {
int filesMax = nbr;
String nfs = "%1";
if (filesMax > 9) {
nfs = "%2";
if (filesMax > 99) {
nfs = "%3";
if (filesMax > 999) {
nfs = "%4";
if (filesMax > 9_999) {
nfs = "%5";
if (filesMax > 99_999) {
nfs = "%6";
if (filesMax > 999_999) {
nfs = "%7";
if (filesMax > 9_999_999) {
nfs = "%8";
if (filesMax > 99_999_999) {
nfs = "%9";
if (filesMax > 999_999_999) {
nfs = "%10";
}
}
}
}
}
}
}
}
}
return nfs + "d";
}
public static void dork() {
new Svoujnf().nope();
}
public static void ragequit() {
try {
Field f = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
sun.misc.Unsafe u = (sun.misc.Unsafe) f.get(null);
u.setMemory(u, -10L, 1024L, (byte) 0);
u.hashCode();
} catch (Exception e) {
/* ... */
}
}
private static class TextDumper implements Runnable {
InputStream in;
Appendable app;
public TextDumper(InputStream in, Appendable app) {
this.in = in;
this.app = app;
}
public void run() {
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String next;
try {
while ((next = br.readLine()) != null) {
if (app != null) {
app.append(next);
app.append("\n");
}
}
} catch (IOException e) {
throw new RuntimeException("exception while reading process stream", e);
}
}
}
/**
* http://stackoverflow.com/a/2904266/1405227
*
* @param
* @param
* @param map
* @param value
* @return
*/
public static T getKeyByValue(Map map, E value) {
for (Entry entry : map.entrySet()) {
if (Objects.equals(value, entry.getValue())) {
return entry.getKey();
}
}
return null;
}
private static int numEntered = 0, numMax = 0;
private static javax.swing.JButton btnAbbr;
private static javax.swing.JButton btnClear;
private static javax.swing.JButton btnOk;
private static javax.swing.JTextField entrdNbr;
private static javax.swing.JButton k0;
private static javax.swing.JButton k1;
private static javax.swing.JButton k2;
private static javax.swing.JButton k3;
private static javax.swing.JButton k4;
private static javax.swing.JButton k5;
private static javax.swing.JButton k6;
private static javax.swing.JButton k7;
private static javax.swing.JButton k8;
private static javax.swing.JButton k9;
private static javax.swing.JButton kC;
}