/*
* 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.UiToolz;
import com.sun.awt.AWTUtilities;
import de.nplusc.izc.tools.baseTools.RingBuffer;
import de.nplusc.izc.tools.baseTools.Tools;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.MouseMotionAdapter;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import javax.imageio.ImageIO;
import javax.swing.*;
import org.apache.commons.exec.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
*
* @author LH
*/
public class cmdGUI extends javax.swing.JFrame
{
private static final Logger l = LogManager.getLogger();
//51,0:tab1
//availSize=840:20
/**
* the definition of the Terminal-font
*/
public static final Font term = new Font("Lucida Console",Font.BOLD,15);//Terminal
/**
* the color of the font
*/
public static final Color FontColor = new Color(170,220,240,200);//Color(255, 0, 0, 128);
/**
* a constant color for transparent bgs
*/
public static final Color TransBgColor = new Color(0, 0, 0, 0);
/**
* where the button is
*/
public static final Polygon buttonPos = new Polygon(new int[]{27,73,85,152,155,209,229,168,12,6},new int[]{16,16,1,1,8,7,27,47,47,36},10);
/**
* instance-id
*/
public final String id;
/**
* number ofTabs
*/
public static final int tabCount = 4;
/**
* position of tabs
*/
public static final Rectangle[] tabs = new Rectangle[]
{
new Rectangle(50, 0, 200, 20), //0
new Rectangle(250, 0, 200, 20),//1
new Rectangle(450, 0, 200, 20),//2
new Rectangle(650, 0, 200, 20) //3
};
/**
* Instances of the GUI are stored here
* its part of a hack
*/
public static HashMap gac= new HashMap<>();//Part of a haxx
//public static cmdGUI cgui=null;
//public static boolean sa;
//public static DefaultExecutor ex;
//public static boolean bsfin = false;
//##################################################################################################
private ArrayList> screenBuf= new ArrayList<>();
// /\ new RingBuffer<>(String.class,5000,"")
// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
// \/ new RingBuffer<>(String.class,5000,"noCmd")
private ArrayList> cmdBuf=new ArrayList<>() ;//noCmd Detektor für leere Zeile
private boolean[] sil = new boolean[4];
private boolean[] tp = new boolean[3];
private boolean[] isInCmd = new boolean[4];
private String[] cmdForSend = new String[4];
private String[] cmdInLine = new String[4];
private int tabSelected=0;
private int[] currLin = new int[]{0,0,0,0};
private int[] uptypes=new int[]{0,0,0,0};
private int[] upmax = new int[]{0,0,0,0};
private boolean[] ud = new boolean[]{false,false,false,false};
private boolean[] ud1 = new boolean[]{true,true,true,true};
private JSlider js;
private JLabel[] line;
private JTextField ipline;
private ExtendedJPanel Surface,ButtonArea,tabBar;
private UIFileAccess guifile;//replace with loader and selection
//private static String[] RingBuffer = new String[5000];#
private boolean standalone = true;
//private static int[] RingBufferCfg = new int[2];//null=pointer;1=previousElement
//
public String getCmdForSend(int targetTab)
{
return cmdForSend[targetTab];
}
public void setCmdForSend(String cmd,int targetTab)
{
this.cmdForSend[targetTab] = cmd;
}
public void setIsInCmd(boolean isInCmd,int targetTab)
{
this.isInCmd[targetTab] = isInCmd;
}
public boolean isStandalone()
{
return standalone;
}
public void setStandalone(boolean standalone)
{
this.standalone = standalone;
}
//
//baseOffs=200|120
//size=960*480
@SuppressWarnings("CallToThreadDumpStack")
public cmdGUI(UIFileAccess g)
{
super();//HAX;tst.needd
guifile=g;
try
{
if(guifile.zipBased)
{
setIconImage(ImageIO.read(guifile.loadFileFromZip(guifile.ResourceURLs.get("icon"))));
}
else
{
setIconImage(ImageIO.read(new File(guifile.ResourceURLs.get("icon"))));
}
} catch (IOException e1) {
e1.printStackTrace();
}
for(int i=0;irb = new RingBuffer<>(String.class,5000,"");
screenBuf.add(rb);
rb = new RingBuffer<>(String.class,5000,"noCmd");
cmdBuf.add(rb);
}
id= this.toString();
System.err.println(id);
l.trace(id);
this.setUndecorated(true);
//initComponents();
buildGUI();
tp[1] = AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT);
//cgui=this;//hack
gac.put(id,this);
if(tp[1])
{
AWTUtilities.setWindowOpaque(this, false);
//AWTUtilities.
}
//Point p = this.getLocation();//
//p.setLocation(); //Setzt Fenster an Zielkkordinaten
this.setLocation(guifile.windowBasePoint);
//ButtonArea.setLocation(630, 432);
//this.revalidate();
//630;432==Button
}
/**
* the Form initializer
*/
private void buildGUI()
{
int[] wincfg = guifile.windowSize;
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(wincfg[0], wincfg[1]));
setPreferredSize(new java.awt.Dimension(wincfg[0], wincfg[1]));
Container cp = getContentPane();
cp.setLayout(null);
Surface = new ExtendedJPanel(1,guifile);
Surface.setBounds(0,0,wincfg[0], wincfg[1]);
Surface.setLayout(null);
cp.add(Surface);
/*addToSurface*/
//{
/*
MysteryError.
There was no Constructor-CAll anywhere
a
cmdGUI[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@106def2,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
???
Exception in thread "AWT-EventQueue-0" java.lang.VerifyError: Constructor must call super() or this() before return in method FontEngine.()V at offset 0
at cmdGUI.buildGUI(cmdGUI.java:178)
at cmdGUI.(cmdGUI.java:139)
at cmdGUI$9$1.run(cmdGUI.java:1047)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
*/
int[]tbc = guifile.tabBarPos;
tabBar = new ExtendedJPanel(3,guifile);
tabBar.setBounds(tbc[0],tbc[1],tbc[2],tbc[3]);
tabBar.initOVL();
updateTabBarMessages(0);
Surface.add(tabBar);
int[] lcf = guifile.lineCfg;
js = new JSlider(0, 5000-lcf[3]);//H@XX
js.setInverted(true);
js.setOrientation(SwingConstants.VERTICAL);
js.setUI(new HoloSliderUi(js));
js.setOpaque(false);
int[] scfg = guifile.ScrollBar;
js.setBounds(scfg[0],scfg[1],scfg[2],scfg[3]);
Surface.add(js);
ButtonArea = new ExtendedJPanel(2,guifile);//ExtebdeedJPanel(2);
//ButtonArea.setLocation(630, 432);
int[] bacfg = guifile.buttonPanel;
ButtonArea.setBounds(bacfg[0],bacfg[1],bacfg[2],bacfg[3]);
// ButtonArea.setBounds(630,432,233,48);
Surface.add(ButtonArea);
int[] ipc = guifile.ipLineArea;
ipline = new JTextField();
ipline.setBounds(ipc[0],ipc[1],ipc[2],ipc[3]);
ipline.setBorder(null);
ipline.setOpaque(false);
ipline.setFont(term);
ipline.setForeground(FontColor);
ipline.setBackground(TransBgColor);
Surface.add(ipline);
int lmx = guifile.lineCount;
line = new JLabel[lmx];
//
/*
* Disabled old variant
* JLabel line2 = new JLabel();
* JLabel line3 = new JLabel();
* JLabel line4 = new JLabel();
* JLabel line5 = new JLabel();
* JLabel line6 = new JLabel();
* JLabel line7 = new JLabel();
* JLabel line8 = new JLabel();
* JLabel line9 = new JLabel();
* JLabel line10 = new JLabel();
* JLabel line11 = new JLabel();
* JLabel line12 = new JLabel();
* JLabel line13 = new JLabel();
* JLabel line14 = new JLabel();
* JLabel line15 = new JLabel();
*/
//
//for( int i=0,i=0&&!(uptypes[tabSelected]>upmax[tabSelected]))
{
String ldcmd = cmdBuf.get(tabSelected).getContentAt(get);
l.trace("get|"+get);
if(!ldcmd.equals("noCmd"))
{
uptypes[tabSelected]++;
ipline.setText(ldcmd);
}
}
}
if(kc==KeyEvent.VK_DOWN)
{
/*
if(uptypes>0)
{
uptypes--;
}
if(uptypes>=0)
{
int get = upmax-(uptypes+1);
if(!(get<0))
{
get=0;
}
String ldcmd = cmdBuf.getContentAt(get);
ipline.setText(ldcmd);
}
else
{
ipline.setText(ipline.getText());
}*/
if(ud[tabSelected])
{
uptypes[tabSelected]--;
}
ud[tabSelected]=false;
uptypes[tabSelected]--;
if(uptypes[tabSelected]<0)
{
uptypes[tabSelected]++;
}
int get = upmax[tabSelected]-(uptypes[tabSelected]+1);
l.trace("uptypes|"+Arrays.toString(uptypes));
if(get>=0&&!(uptypes[tabSelected]>upmax[tabSelected]))
{
String ldcmd = cmdBuf.get(tabSelected).getContentAt(get);
l.trace("get|"+get);
if(!ldcmd.equals("noCmd"))
{
//uptypes++;
ipline.setText(ldcmd);
}
}
}
}
/**
* Handles Button
* @param evt where clicked
* @param entered if enter key pressed
*/
@SuppressWarnings("CallToThreadDumpStack")
private void ButtonAreaClicked(java.awt.event.MouseEvent evt,boolean entered)//für Enter-Eingabe
{
if(buttonPos.contains(evt.getPoint())||entered)
{
cmdBuf.get(tabSelected).addItem(ipline.getText());
if(upmax[tabSelected]<5000)
{
upmax[tabSelected]++;
}
uptypes[tabSelected]=0;
l.trace("tabForTrg|"+tabSelected+"|"+isInCmd[tabSelected]);
if(!isInCmd[tabSelected])
{
runCmd();
}
else
{
l.trace("toCmdatTab|"+tabSelected+"|"+isInCmd[tabSelected]);
String t = ipline.getText();
if(t == null)
{
t = "";
}
if(t.equals(""))
{
t=" ";
}
ipline.setText("");
cmdForSend[tabSelected]=t;
if(t.equals("exit")&&standalone)
{
try
{
Thread.sleep(200);
cmdForSend[tabSelected]=" ";//HAKK
}
catch (InterruptedException exc)
{
exc.printStackTrace();
}
}
}
}
}
/**
* reloads the command of previous tab
*/
private void refreshCmd()//ynchroniszeUpTypes()
{
ipline.setText(cmdInLine[tabSelected]);
}
/**
* This method is not called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
public void updateTabBarMessages(int targetTab)
{
/* tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_T, 50, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_A, 70, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_B, 90, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_A, 130, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_T, 250, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_A, 270, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_B, 290, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_B, 330, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_T, 450, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_A, 470, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_B, 490, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_C, 530, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_T, 650, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_A, 670, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_B, 690, 0);
tabBar.setLetter(FontEngine.FONT_LAUNCHPAD, FontEngine.LETTER_D, 630, 0);
*/
//marker for active Tab
tabBar.initOVL();
tabBar.setLetter(FontEngine.FONT_DECEPTICON_GRAFFITTI,FontEngine.LETTER_N,
(targetTab*200)+150,0);
tabBar.repaint();
}
@SuppressWarnings("unchecked")
// //GEN-BEGIN:initComponents
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(960, 480));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 964, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 516, Short.MAX_VALUE)
);
pack();
}// //GEN-END:initComponents
/**
* runs the cmd which is in the ipLine
*/
public void runCmd()
{
final String cmd = ipline.getText();
addLine(cmd,tabSelected);
ipline.setText("");
l.trace("cmdLoaded|"+cmd+"|"+tabSelected);
if(cmd.equals("quit"))
{
System.exit(0);
}
//runCode here;
Thread t = new Thread(new Runnable()
{
//@SuppressWarnings("SleepWhileInLoop")//Hx
@SuppressWarnings("CallToThreadDumpStack")
@Override
public void run()
{
l.trace("cmdLoaded2|"+cmd+"|"+tabSelected);
runCmd(cmd);
}
});
t.start();
}
/**
* Runs a cmd and sets inCmd mode.
*
* @param args the command line arguments
*/
@SuppressWarnings("CallToThreadDumpStack")
public void runCmd(String cmd)//synchronized gint nen fetten Bug
{
final HashMap t = new HashMap<>();
int belongingTab = tabSelected;
t.put(0,belongingTab);
Tools.DebugHelperPrint("cmd|"+belongingTab, true, "Toolkit.enableFinerDebug");
cmdGUI cG = this;
String[] cmdp = cmd.split(" ");
// BufferedInputStream log = new BufferedInputStream
// (
// new ByteArrayInputStream(new byte[]{0})
// );//das einzelne Byte ist n(ö|ä)tig um ne NPX zu verhindern
ExecuteStreamHandler s;
final DefaultExecuteResultHandler devnull = new DefaultExecuteResultHandler();
/* {
@Override
public void onProcessComplete(int exitValue)
{
System.err.println("fin");
cmdGUI.sil=false;
cmdGUI.cgui.setIsInCmd(false);
}
@Override
public void onProcessFailed(ExecuteException e)
{
System.err.println("Urrgs");
cmdGUI.sil=false;
cmdGUI.cgui.setIsInCmd(false);
}
};*/
String[] fexg = cmd.split("\\.");
Tools.DebugHelperPrint(cmd, true, "Toolkit.enableFinerDebug");
Tools.DebugHelperPrint("cmd2|"+belongingTab, true, "Toolkit.enableFinerDebug");
if(fexg[fexg.length-1].equalsIgnoreCase("bat")||cmd.equals("dir"))
{
cmd = "cmd.exe /c "+cmd;
Tools.DebugHelperPrint("cmdtrigger", true, "Toolkit.enableFinerDebug");
}
CommandLine cl = CommandLine.parse(cmdp[0]);
for (int i = 1; i < cmdp.length; i++)
{
cl.addArgument(cmdp[i]);
}
Executor e = new DefaultExecutor();
//ex=(DefaultExecutor)e;
try
{
setIsInCmd(true,(int)t.get(0));
final PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
final PipedOutputStream txOut = new PipedOutputStream();
PipedInputStream txIn = new PipedInputStream();
Tools.DebugHelperPrint("cmd3|"+belongingTab, true, "Toolkit.enableFinerDebug");
txIn.connect(txOut);
out.connect(in);
// txOut.write((byte)0);//??//
//System.err.pri
s = new PumpStreamHandler(out,out,txIn);
//final OutputStream txOut = ((DefaultExecutor)e).stdin;
// i.
//s.setProcessOutputStream(log);
Tools.DebugHelperPrint("???", true, "Toolkit.enableFinerDebug");
e.setStreamHandler(s);
//^HAck da sonst zwodeitich//VOID
Tools.DebugHelperPrint("Wennhier was ist...", true, "Toolkit.enableFinerDebug");
//log.
//cG.
sil[(int)t.get(0)]=true;
Tools.DebugHelperPrint("cmd4|"+belongingTab, true, "Toolkit.enableFinerDebug");
/*new Thread(new Runnable()
{
@Override
@SuppressWarnings("SleepWhileInLoop")
public void run()
{
// while(!devnull.hasResult())
// {
try
{
ex.p.waitFor();
Thread.sleep(50);
//System.err.println("AA");
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
//}
System.err.println("fin");
cmdGUI.sil=false;
cmdGUI.cgui.setIsInCmd(false);
System.err.println("Wr");
System.setProperty("fin", "true");
}
}).start();*/
new Thread(new Runnable()
{
cmdGUI cG =cmdGUI.gac.get(id);
//BufferedOutputStream txOut=(BufferedOutputStream)((DefaultExecutor)ex).getStdin();
@Override
@SuppressWarnings({"SleepWhileInLoop", "SleepWhileInLoop"})
public void run()
{
while(sil[(int)t.get(0)])
{
// try
// {
//txOut.write("x\b".getBytes());
//txOut.flush();
String chk = cG.getCmdForSend((int)t.get(0));
// System.err.println(chk);
Tools.DebugHelperPrint(chk, true, "Toolkit.enableFinerDebug");
if(chk==null)
{
chk="";
}
//if((!System.getProperty("fin", "lm").equals("lm")))
//{
// System.clearProperty("fin");
// chk="\r";
//}
if(!chk.equals(""))
{
try
{
chk+="\n";
//o=txOut
txOut.write(chk.getBytes());
txOut.flush();
//System.err.println(">>"+chk);
Tools.DebugHelperPrint(">>"+chk, true, "Toolkit.enableFinerDebug");
//in.mark(1);
//in.reset();Funzen nicht;
}
catch (IOException ex)
{
ex.printStackTrace();
}
cG.setCmdForSend(null,(int)t.get(0));//Nicht vergessen.sonst Bugschleuder
chk=null;
}
Tools.wait(50);
// }
//catch (IOException ex)
// {
// System.err.println("Kakk");
// ex.printStackTrace();
// }
}
}
}).start();
new Thread(new Runnable()
{
cmdGUI cG =cmdGUI.gac.get(id);
@Override
public void run()
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(in));
//String s2 = br.readLine();
//if(in.)
while(sil[(int)t.get(0)])
{
while (in.available()>0)//||(cmdGUI.sil))
{
byte rb = (byte) in.read();
String ln = ""+(char)rb;
//in.
rb = (byte) in.read();
Tools.DebugHelperPrint((char)rb+"|"+0, true, "Toolkit.enableFinerDebug");
int i=0;
while(((char)rb!='\n')&&((char)rb!='>'))
{
ln +=(char)rb;
// System.err.println((char)rb+"|"+i+1);
Tools.DebugHelperPrint((char)rb+"|"+i+1, true, "Toolkit.enableFinerDebug");
rb = (byte) in.read();//DONOTFORGET!!!!!
// System.err.println((char)rb+"|"+i+2);
Tools.DebugHelperPrint((char)rb+"|"+i+2, true, "Toolkit.enableFinerDebug");
i++;
}
if((char)rb=='>')
{
ln+=">";
}
cG.addLine(ln,(int)t.get(0));
Tools.DebugHelperPrint("trg2|"+(int)t.get(0), true, "Toolkit.enableFinerDebug");
Tools.DebugHelperPrint(ln, true, "Toolkit.enableFinerDebug");
//s2 = br.readLine();
Tools.DebugHelperPrint("Fotze", true, "Toolkit.enableFinerDebug");
}
Tools.wait(50);
}
Tools.DebugHelperPrint("Hira?",true, "Toolkit.enableFinerDebug");
}
catch (IOException ex)
{
ex.printStackTrace();
}
cG.setIsInCmd(false,(int)t.get(0));
}
}).start();
Tools.DebugHelperPrint("X XX|"+(int)t.get(0), true, "Toolkit.enableFinerDebug");
try{
e.execute(cl/*,devnull*/);//HACKALERT
}
catch (org.apache.commons.exec.ExecuteException exc)
{
//Do nothing. Cmd steigt ja bei Error auch nicht aus
//exc.printStackTrace();
}
Tools.DebugHelperPrint("fin", true, "Toolkit.enableFinerDebug");
sil[(int)t.get(0)]=false;
cG.setIsInCmd(false,(int)t.get(0));
if(standalone)
{
if(gac.size()<=1)
{
System.exit(0);
}
else
{
gac.get(id).setVisible(false);
gac.remove(id);
}
}
}
catch (ExecuteException exc)
{
exc.printStackTrace();
}
catch (IOException exc)
{
exc.printStackTrace();
}
Tools.DebugHelperPrint("FIN", true, "Toolkit.enableFinerDebug");
//sil=false;
}
/**
* runs a cmd in a specific tab
* @param cmd the command to run
* @param targetTab the tab in which it should run
* @throws Error when the parameter is out od range (<0 or >4)
* and exits the current console
*/
public void runCmd(String cmd,int targetTab)
{
if(targetTab<0||targetTab>4)
{
Tools.DebugHelperPrint("xyxyx", true, "Toolkit.enableCoreDebug");
gac.put(id,null);
this.setVisible(false);
this.dispose();
throw new Error("The tabCount has to be >=0 and <=4");
}
tabSelected = targetTab;
runCmd(cmd);
updateTabBarMessages(targetTab);
}
/**
* updates the shown lines
* @param evt currently igged
*/
public void refreshLines(java.awt.event.MouseEvent evt,int targetTab)
{
Tools.DebugHelperPrint("refreshAt|"+targetTab, true, "Toolkit.enableFinerDebug");
Tools.DebugHelperPrint(js.getValue()+"", true, "Toolkit.enableFinerDebug");
int os = js.getValue();
RingBuffer lb = screenBuf.get(targetTab);
for(int i=0;i lb = screenBuf.get(targetTab);
lb.addItem(cmd);//CMD here
if(currLin[targetTab]<5000)
{
currLin[targetTab]++;
}
int setLin;
setLin=currLin[targetTab]-line.length;
if(currLin[targetTab]<0)
{
setLin=0;
}
js.setValue(setLin);
refreshLines(null,targetTab);
/*
if(linPos==line.length-1)
{
int ip = 1;
for (int i = 1; i < line.length-1; i++)
{
line[i].setText(line[i+1].getText());
ip=i;
}
line[ip].setText(cmd);
}
else
{
line[linPos].setText(cmd);
linPos++;
}*/
}
// public static void main(final String args[])
// {
// main2(args);
// }
/**
* Main procedure for intenal use only
* @param args The command lie args of this proggy
*/
@SuppressWarnings({"CallToThreadDumpStack", "SleepWhileInLoop"})
public static void main2(final String args[])//musste MethodenSig ändern wg final
{
//if(true)
//{
/*
try
{
// File f = new File();
System.err.println();
}
catch (URISyntaxException ex)
{
ex.printStackTrace();
}
return;*/
//}
new Thread(new Runnable()
{
@Override
public void run()
{
final HashMap t = new HashMap<>();
t.put(0, false);
//final HashMap t = new HashMap<>();
String cmd = "cmd";
// boolean sa=false;
if (args.length > 0)
{
Tools.DebugHelperPrint("1", true, "Toolkit.enableFinerDebug");
if ((args[0].equals("--cmd")) || (args[0].equals("--standalone")))
{
Tools.DebugHelperPrint("12", true, "Toolkit.enableFinerDebug");
//sa=false;
if (args.length > 1)
{
Tools.DebugHelperPrint("123", true, "Toolkit.enableFinerDebug");
t.put(3,true);
cmd = args[1];
}
else
{
Tools.DebugHelperPrint("123e", true, "Toolkit.enableFinerDebug");
t.put(3,true);
cmd = "cmd";
}
}
else
{
Tools.DebugHelperPrint("12e", true, "Toolkit.enableFinerDebug");
t.put(3,false);
}
}
else
{
Tools.DebugHelperPrint("1e", true, "Toolkit.enableFinerDebug");
t.put(3,true);
}
t.put(2, cmd);
/*
* Set the Nimbus look and feel
*/
//
/*
* If Nimbus (introduced in Java SE 6) is not available, stay
* with the
* default look and feel.
* For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try
{
Icon icon = new ImageIcon("C:/users/LH/Desktop/jp/GUI-File-CMD-IP-SLDR.png");
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Slider.verticalThumbIcon", icon);
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName()))
{
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}/*
* SynthLookAndFeel laf = new SynthLookAndFeel();
* laf.load(new File("SynthSlider.xml").toURI().toURL());
* javax.swing.UIManager.setLookAndFeel(laf);
*/
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException exc)
{/*
* IOException|java.net.MalformedURLException|
*/
//java.util.logging.Logger.getLogger(cmdGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
// Icon icon = new ImageIcon("C:/users/LH/Desktop/jp/GUI-File-CMD-IP-SLDR.png");
// UIDefaults defaults = UIManager.getLookAndFeelDefaults();
// defaults.put("Slider.verticalThumbIcon", icon);
// Slider.
//C:/users/LH/Desktop/jp/GUI-File-CMD-IP-SLDR.png
//
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
cmdGUI g = new cmdGUI(new UIFileAccess(/**/de.nplusc.izc.tools.UIToolz.rsrc.UIFile.class));
//
/*Ü*//*new File("C:\\Users\\LH\\Desktop\\jp\\uiexamole\\ui.zip")));*/
g.setVisible(true);
if (((boolean) t.get(3)))
{
Tools.DebugHelperPrint("sacall2", true, "Toolkit.enableFinerDebug");
g.setStandalone(true);
}//V:HAXX
t.put(1, g);/*
* bsfin=true;
*/
t.put(0, true);/*
* new Thread(new Runnable()
* {
* @Override
* public void run()
* {
*
*
* }
*
* }).start();
*/
}
});//Dieser Häck funzt nur in main()!!!!!//VOID
while (!((boolean) t.get(0)))//Hack
{
try
{
Thread.sleep(50);
}
catch (InterruptedException exc)
{
exc.printStackTrace();
}
}
try //BUG-ALERT:HACK_USED
{ //REQUIRED da sonst Deadlock...
//vermutlich ne Race-Condition...
//ergibt nämlich nen fetten Hänger...
Thread.sleep(500);
}
catch (InterruptedException exc)
{
exc.printStackTrace();
}
if (((boolean)t.get(3)))
{
Tools.DebugHelperPrint("sacall2", true, "Toolkit.enableFinerDebug");
// cmdGUI.cgui.runCmd(cmd);
((cmdGUI) t.get(1)).runCmd((String)t.get(2));
}
}
}).start();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}