From 734fe5508a96868a3e6c03c323f5fb436dc91aa0 Mon Sep 17 00:00:00 2001 From: krakjoe Date: Fri, 29 Nov 2013 01:48:21 +0000 Subject: [PATCH] update java example --- tutorials/java-example.png | Bin 54447 -> 58324 bytes tutorials/java/dist/phpdbg-ui.jar | Bin 15064 -> 20938 bytes tutorials/java/src/DBGThread.java | 89 ++++----- tutorials/java/src/History.java | 47 +++++ tutorials/java/src/Main.form | 114 +++++++++-- tutorials/java/src/Main.java | 301 ++++++++++++++++++++++++------ 6 files changed, 427 insertions(+), 124 deletions(-) create mode 100644 tutorials/java/src/History.java diff --git a/tutorials/java-example.png b/tutorials/java-example.png index 618882d834505b796b4d970a43dedfb060cecba6..571b768290a4c3a8ae7da02c46b67dd5f891f0ee 100644 GIT binary patch literal 58324 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%0DfH(iF2XSXbw08>?<`@f`Ai_=EP*VE_{kZ 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%0Aq+237w{^W647`*AybG|85EtTZR_ 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 literal 54447 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 Ba?t<) diff --git a/tutorials/java/dist/phpdbg-ui.jar b/tutorials/java/dist/phpdbg-ui.jar index 24dd4b911a8770bc80bc02114ffe4f353930aae8..fc4e9d125c04cfb7acf797b2320293606e16777e 100644 GIT binary patch literal 20938 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 WO{ZP~|9lay8z5o{E9=c}e)BN-$gNmw92gMbbv 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 T$Fg#%tK`4?xYe$euNv^*RUZ1= diff --git a/tutorials/java/src/DBGThread.java b/tutorials/java/src/DBGThread.java index 9f00faaf7f2..73e2dc4f91b 100644 --- a/tutorials/java/src/DBGThread.java +++ b/tutorials/java/src/DBGThread.java @@ -3,11 +3,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.JScrollPane; -import javax.swing.JTextArea; -import javax.swing.JTextField; /* * To change this license header, choose License Headers in Project Properties. @@ -16,80 +11,52 @@ import javax.swing.JTextField; */ /** - * In a RUSH !!! - * @author joe + * Manage input and output data + * @author krakjoe */ public class DBGThread extends Socket implements Runnable { - private final String host; - private final Integer port; private final Boolean reader; - private final JTextField field; - private final JTextArea area; - private final JScrollPane pane; - private InputStream input; - private OutputStream output; - private String buffer; + private final Main main; private Boolean quit; - public DBGThread(final String host, final Integer port, final JTextField field) throws IOException { + public DBGThread(final String host, final Integer port, final Main main, Boolean reader) throws IOException { super(host, port); - this.host = host; - this.port = port; - this.reader = true; - this.field = field; - this.area = null; - this.pane = null; + this.main = main; + this.reader = reader; this.quit = false; - this.buffer = null; - } - - public DBGThread(final String host, final Integer port, final JTextArea area, JScrollPane pane) throws IOException { - super(host, port); - this.host = host; - this.port = port; - this.reader = false; - this.field = null; - this.area = area; - this.pane = pane; - this.quit = false; - this.buffer = null; - } - - public Boolean isReader() { - return this.reader; + main.setConnected(true); } public void quit() { synchronized(this) { - this.quit = true; + quit = true; this.notifyAll(); } } - @Override - public void run() { + @Override public void run() { try { - if (this.reader) { - output = this.getOutputStream(); - } else input = this.getInputStream(); - synchronized(this) { do { - if (this.reader) { + if (reader) { + String command; + OutputStream output = getOutputStream(); + this.wait(); + command = main.getInputField().getText(); /* send command to stdin socket */ - if (this.field.getText() != null) { + if (command != null) { output.write( - this.field.getText().getBytes()); + command.getBytes()); output.write("\n".getBytes()); output.flush(); } - this.field.setText(null); - + main.getInputField().setText(null); } else { + InputStream input = getInputStream(); /* get data from stdout socket */ byte[] bytes = new byte[1]; do { @@ -100,16 +67,24 @@ public class DBGThread extends Socket implements Runnable { } if (input.read(bytes, 0, 1) > -1) { - area.setCaretPosition( - area.getText().length()); - area.append(new String(bytes)); + main.getOutputField().setCaretPosition( + main.getOutputField().getText().length()); + main.getOutputField().append(new String(bytes)); } - } while (!this.quit); + } while (!quit); } - } while(!this.quit); + } while(!quit); } } catch (IOException | InterruptedException ex) { - Logger.getLogger(DBGThread.class.getName()).log(Level.SEVERE, null, ex); + if (!quit) { + main.messageBox(ex.getMessage()); + } + } finally { + try { + close(); + } catch (IOException ex) { /* naughty me */ } finally { + main.setConnected(false); + } } } } diff --git a/tutorials/java/src/History.java b/tutorials/java/src/History.java new file mode 100644 index 00000000000..a7521d2c601 --- /dev/null +++ b/tutorials/java/src/History.java @@ -0,0 +1,47 @@ + +import java.util.ArrayList; + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * Implement a simple history list for command input + * @author krakjoe + */ +public class History extends ArrayList { + private Integer position = new Integer(0); + + public History() { + super(); + } + + @Override public boolean add(String text) { + String last = last(); + if (text != null) { + if (last == null || !last.equals(text)) { + if (super.add(text)) { + position = size(); + return true; + } + } + } + return false; + } + + public String last() { + if (position >= 1) { + position--; + return get(position); + } else return new String(); + } + + public String next() { + if (position+1 < size()) { + position++; + return get(position); + } else return new String(); + } +} \ No newline at end of file diff --git a/tutorials/java/src/Main.form b/tutorials/java/src/Main.form index 0d4c93d88c4..a5cb28ee2e0 100644 --- a/tutorials/java/src/Main.form +++ b/tutorials/java/src/Main.form @@ -1,6 +1,24 @@
+ + + + + + + + + + + + + + + + + + @@ -24,9 +42,26 @@ - + - + + + + + + + + + + + + + + + + + + @@ -34,15 +69,25 @@ - - + + + + + + + + + + + + - + @@ -53,14 +98,11 @@ + - - - - @@ -69,7 +111,6 @@ - @@ -82,19 +123,66 @@ + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tutorials/java/src/Main.java b/tutorials/java/src/Main.java index 1aa792eeeb1..84d0f137eab 100644 --- a/tutorials/java/src/Main.java +++ b/tutorials/java/src/Main.java @@ -1,8 +1,14 @@ +import static java.awt.event.KeyEvent.VK_DOWN; import static java.awt.event.KeyEvent.VK_ENTER; +import static java.awt.event.KeyEvent.VK_UP; import java.io.IOException; +import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; +import javax.swing.JOptionPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; /* * To change this license header, choose License Headers in Project Properties. @@ -12,12 +18,13 @@ import java.util.logging.Logger; /** * - * @author joe + * @author krakjoe */ public class Main extends javax.swing.JDialog { - /** - * Creates new form NewJDialog + * Creates user interface + * @param parent + * @param modal */ public Main(java.awt.Frame parent, boolean modal) { super(parent, modal); @@ -33,36 +40,78 @@ public class Main extends javax.swing.JDialog { // //GEN-BEGIN:initComponents private void initComponents() { - jSplitPane1 = new javax.swing.JSplitPane(); + stdoutPopupMenu = new javax.swing.JPopupMenu(); + resetStdout = new javax.swing.JMenuItem(); + mainSplit = new javax.swing.JSplitPane(); input = new javax.swing.JTextField(); outScrollPane = new javax.swing.JScrollPane(); output = new javax.swing.JTextArea(); + host = new javax.swing.JTextField(); + stdoutPort = new javax.swing.JTextField(); + stdinCheckBox = new javax.swing.JCheckBox(); + stdoutCheckBox = new javax.swing.JCheckBox(); + openButton = new javax.swing.JButton(); + stdinPort = new javax.swing.JTextField(); + hostLabel = new javax.swing.JLabel(); + + resetStdout.setText("Clear"); + resetStdout.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + resetStdoutActionPerformed(evt); + } + }); + stdoutPopupMenu.add(resetStdout); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("phpdbg jui"); - jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); - jSplitPane1.setToolTipText(""); + mainSplit.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + mainSplit.setToolTipText(""); input.setToolTipText(""); - input.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - inputActionPerformed(evt); - } - }); + input.setEnabled(false); input.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { inputKeyReleased(evt); } }); - jSplitPane1.setLeftComponent(input); + mainSplit.setLeftComponent(input); + output.setEditable(false); output.setColumns(20); output.setFont(new java.awt.Font("DialogInput", 0, 12)); // NOI18N output.setRows(5); + output.setComponentPopupMenu(stdoutPopupMenu); outScrollPane.setViewportView(output); - jSplitPane1.setRightComponent(outScrollPane); + mainSplit.setRightComponent(outScrollPane); + + host.setText("127.0.0.1"); + host.setToolTipText("Set the hostname, or IPv4 address of the machine running the phpdbg remote console server"); + + stdoutPort.setText("8000"); + stdoutPort.setToolTipText(""); + + stdinCheckBox.setSelected(true); + stdinCheckBox.setText("stdin:"); + stdinCheckBox.setToolTipText("Set the port for stdin, or uncheck to disable stdin"); + + stdoutCheckBox.setSelected(true); + stdoutCheckBox.setText("stdout:"); + stdoutCheckBox.setToolTipText("Set the port for stdout, or unset to disable stdout"); + + openButton.setActionCommand("open"); + openButton.setLabel("open"); + openButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + openButtonActionPerformed(evt); + } + }); + + stdinPort.setText("4000"); + stdinPort.setToolTipText(""); + + hostLabel.setText("Hostname:"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); @@ -70,34 +119,181 @@ public class Main extends javax.swing.JDialog { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 796, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(mainSplit) + .addGroup(layout.createSequentialGroup() + .addComponent(hostLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(host, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(stdinCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(stdinPort, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(stdoutCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(stdoutPort, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(openButton))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 457, Short.MAX_VALUE) + .addComponent(mainSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE, false) + .addComponent(stdoutPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(stdinCheckBox) + .addComponent(stdoutCheckBox) + .addComponent(stdinPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(openButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(hostLabel)) .addContainerGap()) ); pack(); }// //GEN-END:initComponents - private void inputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_inputActionPerformed - // TODO add your handling code here: - - }//GEN-LAST:event_inputActionPerformed - private void inputKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inputKeyReleased - // TODO add your handling code here: - if (evt.getKeyCode() == VK_ENTER) { - synchronized(this.in) { - this.in.notifyAll(); - } + switch (evt.getKeyCode()) { + case VK_ENTER: { + if (in != null) { + history.add(input.getText()); + synchronized(in) { + in.notifyAll(); + } + } + } break; + + case VK_UP: { + String last = history.last(); + if (last.length() > 0) { + input.setText(last); + } + } break; + + case VK_DOWN: { + String next = history.next(); + if (next.length() > 0) { + input.setText(next); + } + } break; } }//GEN-LAST:event_inputKeyReleased + private void openButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openButtonActionPerformed + try { + if (!connected) { + Integer ports[] = new Integer[2]; + String address = getHost(); + + if (address != null) { + ports[0] = stdinCheckBox.isSelected() ? getStdinPort() : -1; + ports[1] = stdoutCheckBox.isSelected() ? getStdoutPort() : -1; + + if (ports[0] != 0 && ports[1] != 0) { + if (stdinCheckBox.isSelected()) { + if (ports[0] > 0) { + in = new DBGThread( + address, ports[0], this, true); + new Thread(in).start(); + } + } + + if (stdoutCheckBox.isSelected()) { + if (ports[1] > 0) { + out = new DBGThread( + address, ports[1], this, false); + new Thread(out).start(); + } + } + } + } + } else { + if (in != null) { + in.quit(); + } + if (out != null) { + out.quit(); + } + } + } catch (IOException ex) { + messageBox(ex.getMessage()); + } + }//GEN-LAST:event_openButtonActionPerformed + + private void resetStdoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetStdoutActionPerformed + // TODO add your handling code here: + output.setText(null); + }//GEN-LAST:event_resetStdoutActionPerformed + + + public void setConnected(Boolean isConnected) { + synchronized(this) { + if (isConnected) { + connected = true; + openButton.setText("Disconnect"); + host.setEnabled(false); + stdinPort.setEnabled(false); + stdinCheckBox.setEnabled(false); + if (stdinCheckBox.isSelected()) { + input.setEnabled(true); + } else input.setEnabled(false); + stdoutPort.setEnabled(false); + stdoutCheckBox.setEnabled(false); + } else { + connected = false; + openButton.setText("Connect"); + host.setEnabled(true); + stdinPort.setEnabled(true); + input.setEnabled(false); + stdinCheckBox.setEnabled(true); + stdoutPort.setEnabled(true); + stdoutCheckBox.setEnabled(true); + } + } + } + + public JTextField getInputField() { return input; } + public JTextArea getOutputField() { return output; } + + public String getHost() { + String address = host.getText(); + if (address != null && address.length() > 0) { + return address; + } else { + messageBox("Invalid hostname provided !"); + } + + return null; + } + + public Integer getStdinPort() { + try { + return Integer.parseInt(stdinPort.getText()); + } catch (NumberFormatException ex) { + messageBox("Invalid stdin port provided !"); + } + + return 0; + } + + public Integer getStdoutPort() { + try { + return Integer.parseInt(stdoutPort.getText()); + } catch (NumberFormatException ex) { + messageBox("Invalid stdout port provided !"); + } + + return 0; + } + + public synchronized void messageBox(String message) { + JOptionPane.showMessageDialog(this, message); + } /** * @param args the command line arguments */ @@ -124,50 +320,47 @@ public class Main extends javax.swing.JDialog { java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } // - + /* Create and display the dialog */ java.awt.EventQueue.invokeLater(new Runnable() { - public void run() { + @Override public void run() { dialog = new Main(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { - dialog.in.quit(); - dialog.out.quit(); + if (in != null) + in.quit(); + + if (out != null) + out.quit(); + System.exit(0); } }); dialog.setVisible(true); } }); - - java.awt.EventQueue.invokeLater(new Runnable(){ - public void run(){ - try { - dialog.in = new DBGThread( - args[0], Integer.parseInt(args[1]), input); - dialog.out = new DBGThread( - args[0], Integer.parseInt(args[1]) * 2, output, outScrollPane); - - new Thread(dialog.in).start(); - new Thread(dialog.out).start(); - - } catch (IOException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - System.exit(0); - } - } - }); } - private DBGThread in; - private DBGThread out; - protected static Main dialog; + private static DBGThread in; + private static DBGThread out; + private static Main dialog; + private static Boolean connected = false; + private static History history = new History(); // Variables declaration - do not modify//GEN-BEGIN:variables - protected static javax.swing.JTextField input; - private javax.swing.JSplitPane jSplitPane1; - protected static javax.swing.JScrollPane outScrollPane; - protected static javax.swing.JTextArea output; + private javax.swing.JTextField host; + private javax.swing.JLabel hostLabel; + private javax.swing.JTextField input; + private javax.swing.JSplitPane mainSplit; + private javax.swing.JButton openButton; + private javax.swing.JScrollPane outScrollPane; + private javax.swing.JTextArea output; + private javax.swing.JMenuItem resetStdout; + private javax.swing.JCheckBox stdinCheckBox; + private javax.swing.JTextField stdinPort; + private javax.swing.JCheckBox stdoutCheckBox; + private javax.swing.JPopupMenu stdoutPopupMenu; + private javax.swing.JTextField stdoutPort; // End of variables declaration//GEN-END:variables }