/*
* 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.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
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();
}
}
/**
* 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)));
//
//Auskommentierter Fail!
//
/*javax.swing.JButton btnYes = new javax.swing.JButton();
btnYes.addActionListener
(
new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
btnCTNActionPerformed(evt);
}
}
);
javax.swing.JButton btnNo = new javax.swing.JButton();
btnNo.addActionListener
(
new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
btnSTPActionPerformed(evt);
}
}
);
btnYes.setText("Fortsetzen");
btnNo.setText("Abbrechen");*/
//d.add(new JButton());//
//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;
}
//public void runProcessBuilderCmd(String workdir,String executable)
//{
// ProcessBuilder p = new ProcessBuilder(executable);
// p.directory(new File(workdir));
// p.start();
//}
//
/*
public static int cmdrunner(final ProcessBuilder p, final String[] runnable)
{
return cmdrunner(p,runnable,true);
}*/
/*
public static int cmdrunner(final ProcessBuilder p, final String[] runnable, final boolean bjCmd)
{
//try {
Thread t = new Thread(new Runnable() {
//@SuppressWarnings("SleepWhileInLoop")//Hx
@SuppressWarnings("CallToThreadDumpStack")
public void run() {
//try {
d = null;
d = new JDialog();
try {
//e.
//exp=null;
//exp = new ExpectJ(5);
String run = arraytools.ArrayKleben(runnable," ");
//Spawn s = exp.spawn(run);
try {
e = p.start();
//s.expectErr(".");
} catch (Exception ex) {
ex.printStackTrace();
}
output = new StreamGobbler(e.getInputStream(), ">>");
error = new StreamGobbler(e.getErrorStream(), "!>");
output.start();
error.start();
if(bjCmd)
{
jCmd();
}
/* else
{
while(error.)
{
}
}*
* /
//int r = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
//e.
/*}
catch (IOException ex)
{
ex.printStackTrace();
r=100;
}*
* /
}
});
t.start();
/*NOP* /
r = 1;
return r;
/*} catch (IOException ex) {
ex.printStackTrace();
}
return 0;* /
}
*/
//
private static void btnYesActionPerformed(java.awt.event.ActionEvent evt)
{
ContState = true;
hideDialog();
d = null;
d = new JDialog();
}
//
/*
private static void cmdQuitActionPerformed(java.awt.event.ActionEvent evt)
{
hideDialog();
d=null;
d = new JDialog();
e.destroy();
//error.
}*/
//@SuppressWarnings("CallToThreadDumpStack")
/* private static void eingabeActionPerformed(java.awt.event.ActionEvent evt)
{
String cmd = cmdline.getText()+"\n";
//NOP;
OutputStreamWriter osw = new OutputStreamWriter(e.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
try {
bw.write(cmd,0,cmd.length());
log("I>"+cmd);
//output.start();
//error.start();
} catch (IOException ex) {
ex.printStackTrace();
}
d.validate();
}*/
//
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
{
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("\\\\", "\\");
/*
String linemod = line;
int varstart = linemod.indexOf("#");
int varend = linemod.indexOf("#", varstart + 1);
String preVar = "";
if (varstart == -1||varend == -1)
{
return line;
}
if (varstart > 0)
{
preVar = linemod.substring(0, varstart);
}
String postVar = linemod.substring(varend + 1);
String var = linemod.substring(varstart + 1, varend);
if(var.equalsIgnoreCase(varname))
{
var = toReplace;
postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt
}
else
{
var="#"+var+"#";
postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt
}
line = preVar + var + postVar;
return line;*/
}
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 runCmdWithPassthru(PrintStream p,String... cmd)
{
return runCmdStreamable(new JTextArea(),p,false, 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)//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 = l.start(pb);
PrintStream stdout = new PrintStreamCapturer(txf, otherOut);
Thread stdoutThread = new Thread(new TextDumper(process.getInputStream(), stdout));
stdoutThread.start();
int result = process.waitFor();
stdoutThread.join();
Tools.l.trace("FIN");
return result!=0;
//sil=false;
}
catch (InterruptedException 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);
}
}
}
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;
}