You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libtdevnc/webclients/java-applet/ssl/ultravnc-102-JavaViewer-ssl...

5495 lines
158 KiB

diff -Naur JavaViewer.orig/ButtonPanel.java JavaViewer/ButtonPanel.java
--- JavaViewer.orig/ButtonPanel.java 2004-12-12 20:51:02.000000000 -0500
+++ JavaViewer/ButtonPanel.java 2007-05-31 15:40:45.000000000 -0400
@@ -43,30 +43,36 @@
viewer = v;
setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
- disconnectButton = new Button("Disconnect");
+ if (v.ftpOnly) {
+ disconnectButton = new Button("Quit");
+ } else {
+ disconnectButton = new Button("Close");
+ }
disconnectButton.setEnabled(false);
add(disconnectButton);
disconnectButton.addActionListener(this);
- optionsButton = new Button("Options");
- add(optionsButton);
- optionsButton.addActionListener(this);
- clipboardButton = new Button("Clipboard");
- clipboardButton.setEnabled(false);
- add(clipboardButton);
- clipboardButton.addActionListener(this);
- if (viewer.rec != null) {
- recordButton = new Button("Record");
- add(recordButton);
- recordButton.addActionListener(this);
- }
- ctrlAltDelButton = new Button("Send Ctrl-Alt-Del");
- ctrlAltDelButton.setEnabled(false);
- add(ctrlAltDelButton);
- ctrlAltDelButton.addActionListener(this);
- refreshButton = new Button("Refresh");
- refreshButton.setEnabled(false);
- add(refreshButton);
- refreshButton.addActionListener(this);
+ if (!v.ftpOnly) {
+ optionsButton = new Button("Options");
+ add(optionsButton);
+ optionsButton.addActionListener(this);
+ clipboardButton = new Button("Clipboard");
+ clipboardButton.setEnabled(false);
+ add(clipboardButton);
+ clipboardButton.addActionListener(this);
+ if (viewer.rec != null) {
+ recordButton = new Button("Record");
+ add(recordButton);
+ recordButton.addActionListener(this);
+ }
+ ctrlAltDelButton = new Button("Send Ctrl-Alt-Del");
+ ctrlAltDelButton.setEnabled(false);
+ add(ctrlAltDelButton);
+ ctrlAltDelButton.addActionListener(this);
+ refreshButton = new Button("Refresh");
+ refreshButton.setEnabled(false);
+ add(refreshButton);
+ refreshButton.addActionListener(this);
+ }
ftpButton = new Button("File Transfer");
ftpButton.setEnabled(false);
add(ftpButton);
@@ -79,9 +85,10 @@
public void enableButtons() {
disconnectButton.setEnabled(true);
+ ftpButton.setEnabled(true);
+ if (viewer.ftpOnly) {return;}
clipboardButton.setEnabled(true);
refreshButton.setEnabled(true);
- ftpButton.setEnabled(true);
}
//
@@ -89,6 +96,9 @@
//
public void disableButtonsOnDisconnect() {
+ ftpButton.setEnabled(false);
+ if (viewer.ftpOnly) {return;}
+
remove(disconnectButton);
disconnectButton = new Button("Hide desktop");
disconnectButton.setEnabled(true);
@@ -99,7 +109,6 @@
clipboardButton.setEnabled(false);
ctrlAltDelButton.setEnabled(false);
refreshButton.setEnabled(false);
- ftpButton.setEnabled(false);
validate();
}
@@ -110,6 +119,7 @@
//
public void enableRemoteAccessControls(boolean enable) {
+ if (viewer.ftpOnly) {return;}
ctrlAltDelButton.setEnabled(enable);
}
@@ -163,9 +173,19 @@
}
else if (evt.getSource() == ftpButton)
{
- viewer.ftp.setVisible(!viewer.ftp.isVisible());
+// begin runge/x11vnc
+ if (viewer.ftpOnly) {
+ viewer.vncFrame.setVisible(false);
+ }
+ viewer.ftp.setSavedLocations();
+ if (viewer.ftp.isVisible()) {
+ viewer.ftp.doClose();
+ } else {
+ viewer.ftp.doOpen();
+ }
+// end runge/x11vnc
viewer.rfb.readServerDriveList();
-
+
}
}
}
diff -Naur JavaViewer.orig/FTPFrame.java JavaViewer/FTPFrame.java
--- JavaViewer.orig/FTPFrame.java 2005-03-15 23:53:14.000000000 -0500
+++ JavaViewer/FTPFrame.java 2009-01-13 09:48:30.000000000 -0500
@@ -24,8 +24,17 @@
import java.io.*;
import java.util.ArrayList;
import java.util.Vector;
+import java.util.Date;
import javax.swing.*;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.*;
+
+// begin runge/x11vnc
+import java.util.Arrays;
+// end runge/x11vnc
+
/*
* Created on Feb 25, 2004
@@ -74,12 +83,31 @@
public javax.swing.JTextField connectionStatus = null;
public boolean updateDriveList;
private Vector remoteList = null;
+ private Vector remoteListInfo = null;
private Vector localList = null;
+ private Vector localListInfo = null;
private File currentLocalDirectory = null; // Holds the current local Directory
private File currentRemoteDirectory = null; // Holds the current remote Directory
private File localSelection = null; // Holds the currently selected local file
private String remoteSelection = null; // Holds the currently selected remote file
public String selectedTable = null;
+
+// begin runge/x11vnc
+ private javax.swing.JButton viewButton = null;
+ private javax.swing.JButton refreshButton = null;
+ public File saveLocalDirectory = null;
+ public long saveLocalDirectoryTime = 0;
+ public int saveLocalDirectoryCount = 0;
+ public String saveRemoteDirectory = null;
+ public long saveRemoteDirectoryTime = 0;
+ public int saveRemoteDirectoryCount = 0;
+ private boolean localCurrentIsDir = true;
+ private int lastRemoteIndex = -1;
+ private int lastLocalIndex = -1;
+ private boolean doingShortcutDir = false;
+ private boolean gotShortcutDir = false;
+ private boolean ignore_events = false;
+// end runge/x11vnc
// sf@2004 - Separate directories and files for better lisibility
private ArrayList DirsList;
@@ -125,11 +153,61 @@
void refreshRemoteLocation()
{
+
+//System.out.println("refreshRemoteLocation1");
remoteList.clear();
+ remoteListInfo.clear();
remoteFileTable.setListData(remoteList);
+System.out.println("refreshRemoteLocation '" + remoteLocation.getText() + "'"); // runge/x11vnc
viewer.rfb.readServerDirectory(remoteLocation.getText());
}
+// begin runge/x11vnc
+ public void setSavedLocations() {
+ saveLocalDirectory = currentLocalDirectory;
+ saveLocalDirectoryTime = System.currentTimeMillis();
+ saveLocalDirectoryCount = 0;
+
+ if (remoteLocation != null) {
+ saveRemoteDirectory = remoteLocation.getText();
+System.out.println("RemoteSave '" + saveRemoteDirectory + "'");
+ }
+ saveRemoteDirectoryTime = System.currentTimeMillis();
+ saveRemoteDirectoryCount = 0;
+ }
+
+ private File saveLocalHack(File dir) {
+ saveLocalDirectoryCount++;
+//System.out.println("L " + saveLocalDirectoryCount + " dt: " + (System.currentTimeMillis() - saveLocalDirectoryTime) + " - " + saveLocalDirectory);
+ if (System.currentTimeMillis() > saveLocalDirectoryTime + 2000 || saveLocalDirectoryCount > 2) {
+ saveLocalDirectory = null;
+ }
+ if (saveLocalDirectory != null) {
+ currentLocalDirectory = saveLocalDirectory;
+ localLocation.setText(saveLocalDirectory.toString());
+ return saveLocalDirectory;
+ } else {
+ return dir;
+ }
+ }
+
+ private String saveRemoteHack(String indrive) {
+ saveRemoteDirectoryCount++;
+//System.out.println("R " + saveRemoteDirectoryCount + " - " + saveRemoteDirectory);
+ if (saveRemoteDirectory != null && saveRemoteDirectoryCount > 1) {
+ saveRemoteDirectory = null;
+ }
+ if (saveRemoteDirectory != null) {
+ if (! saveRemoteDirectory.equals("")) {
+System.out.println("saveRemoteHack setText + refreshRemoteLocation '" + saveRemoteDirectory + "'");
+ return saveRemoteDirectory;
+ }
+ }
+ return indrive;
+ }
+// end runge/x11vnc
+
+
/*
* Prints the list of drives on the remote directory and returns a String[].
* str takes as string like A:fC:lD:lE:lF:lG:cH:c
@@ -143,6 +221,9 @@
int size = str.length();
String driveType = null;
String[] drive = new String[str.length() / 3];
+ int idx = 0, C_drive = -1, O_drive = -1;
+
+System.out.println("ComboBox: Str '" + str + "'");
// Loop through the string to create a String[]
for (int i = 0; i < size; i = i + 3) {
@@ -150,26 +231,68 @@
driveType = str.substring(i + 2, i + 3);
if (driveType.compareTo("f") == 0)
drive[i / 3] += "\\ Floppy";
- if (driveType.compareTo("l") == 0)
+ if (driveType.compareTo("l") == 0) {
drive[i / 3] += "\\ Local Disk";
+ if (drive[i/3].substring(0,1).toUpperCase().equals("C")) {
+ C_drive = idx;
+ } else if (O_drive < 0) {
+ O_drive = idx;
+ }
+ }
if (driveType.compareTo("c") == 0)
drive[i / 3] += "\\ CD-ROM";
if (driveType.compareTo("n") == 0)
drive[i / 3] += "\\ Network";
remoteDrivesComboBox.addItem(drive[i / 3]);
+System.out.println("ComboBox: Add " + idx + " '" + drive[i/3] + "'");
+ idx++;
+ }
+
+ // runge
+ if (viewer.ftpDropDown != null) {
+ String[] dd = viewer.ftpDropDown.split("\\.");
+ for (int i=0; i < dd.length; i++) {
+ if (!dd[i].equals("")) {
+ String s = dd[i];
+ if (s.startsWith("TOP_")) {
+ s = s.substring(4);
+ remoteDrivesComboBox.insertItemAt(" [" + s + "]", 0);
+ } else {
+ remoteDrivesComboBox.addItem(" [" + s + "]");
+ }
+ }
+ }
+ } else {
+ remoteDrivesComboBox.addItem(" [My Documents]");
+ remoteDrivesComboBox.addItem(" [Desktop]");
+ remoteDrivesComboBox.addItem(" [Home]");
}
+
//sf@ - Select Drive C:as default if possible
boolean bFound = false;
- for(int i = 0; i < remoteDrivesComboBox.getItemCount() ; i++)
- {
- if(remoteDrivesComboBox.getItemAt(i).toString().substring(0,1).toUpperCase().equals("C"))
- {
- remoteDrivesComboBox.setSelectedIndex(i);
+
+ if (false) {
+ for(int i = 0; i < remoteDrivesComboBox.getItemCount() ; i++) {
+ if(remoteDrivesComboBox.getItemAt(i).toString().substring(0,1).toUpperCase().equals("C")) {
+ remoteDrivesComboBox.setSelectedIndex(i);
+ bFound = true;
+ }
+ }
+ } else {
+ if (C_drive >= 0) {
+ remoteDrivesComboBox.setSelectedIndex(C_drive);
+ bFound = true;
+System.out.println("ComboBox: C_drive index: " + C_drive);
+ } else if (O_drive >= 0) {
+ remoteDrivesComboBox.setSelectedIndex(O_drive);
bFound = true;
+System.out.println("ComboBox: Other_drive index: " + O_drive);
}
}
+
if (!bFound) remoteDrivesComboBox.setSelectedIndex(0);
+
updateDriveList = false;
return drive;
}
@@ -185,6 +308,8 @@
stopButton.setVisible(true);
stopButton.setEnabled(true);
receiveButton.setEnabled(false);
+ viewButton.setEnabled(false); // runge/x11vnc
+ refreshButton.setEnabled(false);
remoteTopButton.setEnabled(false);
sendButton.setEnabled(false);
remoteFileTable.setEnabled(false);
@@ -207,6 +332,8 @@
stopButton.setVisible(false);
stopButton.setEnabled(false);
receiveButton.setEnabled(true);
+ viewButton.setEnabled(true); // runge/x11vnc
+ refreshButton.setEnabled(true);
remoteTopButton.setEnabled(true);
sendButton.setEnabled(true);
remoteFileTable.setEnabled(true);
@@ -221,10 +348,11 @@
/*
* Print Directory prints out all the contents of a directory
*/
- void printDirectory(ArrayList a) {
+ void printDirectory(ArrayList a, ArrayList b) {
for (int i = 0; i < a.size(); i++) {
remoteList.addElement(a.get(i));
+ remoteListInfo.addElement(b.get(i));
}
remoteFileTable.setListData(remoteList);
}
@@ -235,10 +363,12 @@
* @return void
*/
private void initialize() {
+ ignore_events = true;
this.setSize(794, 500);
this.setContentPane(getJContentPane());
+ ignore_events = false;
updateDriveList = true;
- }
+ }
/**
* This method initializes jContentPane. This is the main content pane
*
@@ -253,6 +383,33 @@
jContentPane.add(getRemotePanel(), java.awt.BorderLayout.EAST);
jContentPane.add(getLocalPanel(), java.awt.BorderLayout.WEST);
jContentPane.add(getButtonPanel(), java.awt.BorderLayout.CENTER);
+
+ KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
+ AbstractAction escapeAction = new AbstractAction() {
+ public void actionPerformed(ActionEvent actionEvent) {
+ System.out.println("Escape Pressed");
+ if (viewer.ftpOnly) {
+ System.out.println("exiting...");
+ System.exit(0);
+ } else {
+ doClose();
+ }
+ }
+ };
+ jContentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(stroke, "escapeAction");
+ jContentPane.getInputMap().put(stroke, "escapeAction");
+ jContentPane.getActionMap().put("escapeAction", escapeAction);
+
+ stroke = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK);
+ AbstractAction resetAction = new AbstractAction() {
+ public void actionPerformed(ActionEvent actionEvent) {
+ System.out.println("Ctrl-R Pressed");
+ doReset();
+ }
+ };
+ jContentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(stroke, "resetAction");
+ jContentPane.getInputMap().put(stroke, "resetAction");
+ jContentPane.getActionMap().put("resetAction", resetAction);
}
return jContentPane;
}
@@ -270,6 +427,7 @@
topPanelLocal.add(getLocalMachineLabel(), java.awt.BorderLayout.CENTER);
topPanelLocal.add(getLocalTopButton(), java.awt.BorderLayout.EAST);
topPanelLocal.setBackground(java.awt.Color.lightGray);
+//System.out.println("getTopPanelLocal");
}
return topPanelLocal;
}
@@ -288,6 +446,7 @@
topPanelRemote.add(getRemoteMachineLabel(), java.awt.BorderLayout.CENTER);
topPanelRemote.add(getRemoteTopButton(), java.awt.BorderLayout.EAST);
topPanelRemote.setBackground(java.awt.Color.lightGray);
+//System.out.println("getTopPanelRemote");
}
return topPanelRemote;
}
@@ -301,6 +460,7 @@
if (topPanelCenter == null) {
topPanelCenter = new javax.swing.JPanel();
topPanelCenter.add(getDummyButton(), null);
+//System.out.println("getTopPanelCenter");
}
return topPanelCenter;
}
@@ -328,6 +488,7 @@
topPanel.add(getRemoteTopButton(), null);
topPanel.setBackground(java.awt.Color.lightGray);
*/
+//System.out.println("getTopPanel");
}
return topPanel;
}
@@ -348,6 +509,7 @@
statusPanel.add(getJProgressBar(), null);
statusPanel.add(getConnectionStatus(), null);
statusPanel.setBackground(java.awt.Color.lightGray);
+//System.out.println("getStatusPanel");
}
return statusPanel;
@@ -368,6 +530,7 @@
remotePanel.add(getRemoteScrollPane(), null);
remotePanel.add(getRemoteStatus(), null);
remotePanel.setBackground(java.awt.Color.lightGray);
+//System.out.println("getRemotePanel");
}
return remotePanel;
}
@@ -390,6 +553,7 @@
localPanel.setComponentOrientation(
java.awt.ComponentOrientation.UNKNOWN);
localPanel.setName("localPanel");
+//System.out.println("getLocalPanel");
}
return localPanel;
}
@@ -405,12 +569,15 @@
buttonPanel = new javax.swing.JPanel();
buttonPanel.setLayout(null);
buttonPanel.add(getReceiveButton(), null);
+ buttonPanel.add(getRefreshButton(), null); // runge/x11vnc
+ buttonPanel.add(getViewButton(), null); // runge/x11vnc
buttonPanel.add(getNewFolderButton(), null);
buttonPanel.add(getCloseButton(), null);
buttonPanel.add(getDeleteButton(), null);
buttonPanel.add(getSendButton(), null);
buttonPanel.add(getStopButton(), null);
buttonPanel.setBackground(java.awt.Color.lightGray);
+//System.out.println("getButtonPanel");
}
return buttonPanel;
}
@@ -422,10 +589,11 @@
private javax.swing.JButton getSendButton() {
if (sendButton == null) {
sendButton = new javax.swing.JButton();
- sendButton.setBounds(20, 30, 97, 25);
+ sendButton.setBounds(15, 30, 107, 25); // runge/x11vnc
sendButton.setText("Send >>");
sendButton.setName("sendButton");
sendButton.addActionListener(this);
+//System.out.println("getSendButton");
}
return sendButton;
@@ -438,7 +606,7 @@
private javax.swing.JButton getReceiveButton() {
if (receiveButton == null) {
receiveButton = new javax.swing.JButton();
- receiveButton.setBounds(20, 60, 97, 25);
+ receiveButton.setBounds(15, 60, 107, 25); // runge/x11vnc
receiveButton.setText("<< Receive");
receiveButton.setName("receiveButton");
receiveButton.addActionListener(this);
@@ -453,7 +621,7 @@
private javax.swing.JButton getDeleteButton() {
if (deleteButton == null) {
deleteButton = new javax.swing.JButton();
- deleteButton.setBounds(20, 110, 97, 25);
+ deleteButton.setBounds(15, 110, 107, 25); // runge/x11vnc
deleteButton.setText("Delete File");
deleteButton.setName("deleteButton");
deleteButton.addActionListener(this);
@@ -468,7 +636,7 @@
private javax.swing.JButton getNewFolderButton() {
if (newFolderButton == null) {
newFolderButton = new javax.swing.JButton();
- newFolderButton.setBounds(20, 140, 97, 25);
+ newFolderButton.setBounds(15, 140, 107, 25); // runge/x11vnc
newFolderButton.setText("New Folder");
newFolderButton.setName("newFolderButton");
newFolderButton.addActionListener(this);
@@ -476,6 +644,39 @@
return newFolderButton;
}
+// begin runge/x11vnc
+ /**
+ * This method initializes refreshButton
+ *
+ * @return javax.swing.JButton
+ */
+ private javax.swing.JButton getRefreshButton() {
+ if (refreshButton == null) {
+ refreshButton = new javax.swing.JButton();
+ refreshButton.setBounds(15, 170, 107, 25);
+ refreshButton.setText("Refresh");
+ refreshButton.setName("refreshButton");
+ refreshButton.addActionListener(this);
+ }
+ return refreshButton;
+ }
+ /**
+ * This method initializes viewButton
+ *
+ * @return javax.swing.JButton
+ */
+ private javax.swing.JButton getViewButton() {
+ if (viewButton == null) {
+ viewButton = new javax.swing.JButton();
+ viewButton.setBounds(15, 200, 107, 25);
+ viewButton.setText("View File");
+ viewButton.setName("viewButton");
+ viewButton.addActionListener(this);
+ }
+ return viewButton;
+ }
+// end runge/x11vnc
+
/**
* This method initializes stopButton
*
@@ -486,7 +687,7 @@
if (stopButton == null)
{
stopButton = new javax.swing.JButton();
- stopButton.setBounds(20, 200, 97, 25);
+ stopButton.setBounds(15, 230, 107, 25); // runge/x11vnc
stopButton.setText("Stop");
stopButton.setName("stopButton");
stopButton.addActionListener(this);
@@ -503,8 +704,12 @@
private javax.swing.JButton getCloseButton() {
if (closeButton == null) {
closeButton = new javax.swing.JButton();
- closeButton.setBounds(20, 325, 97, 25);
- closeButton.setText("Close");
+ closeButton.setBounds(15, 325, 107, 25); // runge/x11vnc
+ if (viewer.ftpOnly) {
+ closeButton.setText("Quit");
+ } else {
+ closeButton.setText("Close");
+ }
closeButton.setName("closeButton");
closeButton.addActionListener(this);
}
@@ -551,6 +756,7 @@
//Select the second entry (e.g. C:\)
// localDrivesComboBox.setSelectedIndex(1);
localDrivesComboBox.addActionListener(this);
+//System.out.println("getLocalDrivesComboBox");
}
updateDriveList = false;
return localDrivesComboBox;
@@ -567,6 +773,7 @@
remoteDrivesComboBox.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
remoteDrivesComboBox.addActionListener(this);
+//System.out.println("getRemoteDrivesComboBox");
}
return remoteDrivesComboBox;
@@ -587,6 +794,7 @@
localMachineLabel.setFont(
new java.awt.Font("Dialog", java.awt.Font.BOLD, 11));
localMachineLabel.setEditable(false);
+//System.out.println("getLocalMachineLabel");
}
return localMachineLabel;
}
@@ -622,6 +830,7 @@
localTopButton.setFont(
new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));
localTopButton.addActionListener(this);
+//System.out.println("getLocalTopButton");
}
return localTopButton;
}
@@ -638,6 +847,7 @@
remoteTopButton.setFont(
new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));
remoteTopButton.addActionListener(this);
+//System.out.println("getRemoteTopButton");
}
return remoteTopButton;
}
@@ -650,9 +860,24 @@
private javax.swing.JList getLocalFileTable() {
if (localFileTable == null) {
localList = new Vector(0);
+ localListInfo = new Vector(0);
localFileTable = new JList(localList);
+ MouseMotionListener mlisten = new MouseMotionAdapter() {
+ public void mouseMoved(MouseEvent e) {
+ int index = localFileTable.locationToIndex(e.getPoint());
+ if (index == lastLocalIndex) {
+ return;
+ } else if (index < 0) {
+ return;
+ }
+ lastLocalIndex = index;
+ connectionStatus.setText((String) localListInfo.get(index));
+ }
+ };
localFileTable.addMouseListener(this);
+ localFileTable.addMouseMotionListener(mlisten);
localFileTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+//System.out.println("getLocalFileTable");
}
return localFileTable;
}
@@ -669,6 +894,7 @@
localScrollPane.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
localScrollPane.setName("localFileList");
+//System.out.println("getLocalScrollPane");
}
return localScrollPane;
}
@@ -680,10 +906,25 @@
private javax.swing.JList getRemoteFileTable() {
if (remoteFileTable == null) {
remoteList = new Vector(0);
+ remoteListInfo = new Vector(0);
remoteFileTable = new JList(remoteList);
+ MouseMotionListener mlisten = new MouseMotionAdapter() {
+ public void mouseMoved(MouseEvent e) {
+ int index = remoteFileTable.locationToIndex(e.getPoint());
+ if (index == lastRemoteIndex) {
+ return;
+ } else if (index < 0) {
+ return;
+ }
+ lastRemoteIndex = index;
+ connectionStatus.setText((String) remoteListInfo.get(index));
+ }
+ };
remoteFileTable.addMouseListener(this);
+ remoteFileTable.addMouseMotionListener(mlisten);
remoteFileTable.setSelectedValue("C:\\", false);
remoteFileTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+//System.out.println("getRemoteFileTable");
}
return remoteFileTable;
@@ -698,6 +939,7 @@
remoteScrollPane = new javax.swing.JScrollPane();
remoteScrollPane.setViewportView(getRemoteFileTable());
remoteScrollPane.setPreferredSize(new java.awt.Dimension(325, 418));
+//System.out.println("getRemoteScrollPane");
}
return remoteScrollPane;
}
@@ -716,6 +958,7 @@
remoteLocation.setBackground(new Color(255,255,238));
remoteLocation.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
+//System.out.println("getRemoteLocation");
}
return remoteLocation;
}
@@ -732,6 +975,7 @@
localLocation.setBackground( new Color(255,255,238));
localLocation.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
+//System.out.println("getLocalLocation");
}
return localLocation;
}
@@ -748,6 +992,7 @@
localStatus.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
localStatus.setEditable(false);
+//System.out.println("getLocalStatus");
}
return localStatus;
}
@@ -764,6 +1009,7 @@
remoteStatus.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
remoteStatus.setEditable(false);
+//System.out.println("getRemoteStatus");
}
return remoteStatus;
}
@@ -777,9 +1023,10 @@
historyComboBox = new javax.swing.JComboBox();
historyComboBox.setFont(
new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));
- historyComboBox.insertItemAt(new String("Pulldown to view history ..."),0);
+ historyComboBox.insertItemAt(new String("Pulldown to view history; Press Escape to Close/Quit; Press Ctrl-R to Reset Panel."),0);
historyComboBox.setSelectedIndex(0);
historyComboBox.addActionListener(this);
+//System.out.println("getHistoryComboBox");
}
return historyComboBox;
}
@@ -791,6 +1038,7 @@
private javax.swing.JProgressBar getJProgressBar() {
if (jProgressBar == null) {
jProgressBar = new javax.swing.JProgressBar();
+//System.out.println("getJProgressBar");
}
return jProgressBar;
}
@@ -806,6 +1054,7 @@
connectionStatus.setBackground(java.awt.Color.lightGray);
connectionStatus.setFont(
new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
+//System.out.println("getConnectionStatus");
}
connectionStatus.setEditable(false);
return connectionStatus;
@@ -815,7 +1064,12 @@
* Implements Action listener.
*/
public void actionPerformed(ActionEvent evt) {
- System.out.println(evt.getSource());
+// System.out.println(evt.getSource());
+
+ if (ignore_events) {
+ System.out.println("ignore_events: " + evt.getSource());
+ return;
+ }
if (evt.getSource() == closeButton)
{ // Close Button
@@ -829,15 +1083,27 @@
{
doReceive();
}
+// begin runge/x11vnc
+ else if (evt.getSource() == viewButton)
+ {
+ doView();
+ }
+// end runge/x11vnc
else if (evt.getSource() == localDrivesComboBox)
{
changeLocalDrive();
}
else if (evt.getSource() == remoteDrivesComboBox)
{
+//System.out.println("remoteDrivesComboBox"); // runge/x11vnc
changeRemoteDrive();
- remoteList.clear();
- remoteFileTable.setListData(remoteList);
+
+ // are these really needed? changeRemoteDrive() does them at the end.
+ if (false) {
+ remoteList.clear();
+ remoteListInfo.clear();
+ remoteFileTable.setListData(remoteList);
+ }
}
else if (evt.getSource() == localTopButton)
{
@@ -845,12 +1111,17 @@
}
else if (evt.getSource() == remoteTopButton)
{
+//System.out.println("remoteTopButton"); // runge/x11vnc
changeRemoteDrive();
}
else if(evt.getSource() == deleteButton)
{
doDelete();
}
+ else if(evt.getSource() == refreshButton)
+ {
+ doRefresh();
+ }
else if(evt.getSource()==newFolderButton)
{
doNewFolder();
@@ -864,7 +1135,7 @@
private void doNewFolder()
{
- String name = JOptionPane.showInputDialog(null,"Enter new directory name", "Create New Directory", JOptionPane.QUESTION_MESSAGE);
+ String name = JOptionPane.showInputDialog(jContentPane,"Enter new directory name", "Create New Directory", JOptionPane.QUESTION_MESSAGE);
if(selectedTable.equals("remote"))
{
name = remoteLocation.getText()+name;
@@ -880,34 +1151,106 @@
historyComboBox.setSelectedIndex(0);
}
}
- private void doClose()
+ public void doClose()
{
+ if (viewer.ftpOnly) {
+ viewer.disconnect();
+ return;
+ }
try {
this.setVisible(false);
- viewer.rfb.writeFramebufferUpdateRequest(
- 0,
- 0,
- viewer.rfb.framebufferWidth,
- viewer.rfb.framebufferHeight,
- true);
+ viewer.rfb.writeFramebufferUpdateRequest(0, 0, viewer.rfb.framebufferWidth,
+ viewer.rfb.framebufferHeight, true);
+
+ if (false) {
+ this.dispose();
+ jContentPane = null;
+ }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
+ private void unSwing() {
+ jContentPane = null;
+ topPanel = null;
+ topPanelLocal = null;
+ topPanelRemote = null;
+ topPanelCenter = null;
+ statusPanel = null;
+ remotePanel = null;
+ localPanel = null;
+ buttonPanel = null;
+ sendButton = null;
+ receiveButton = null;
+ deleteButton = null;
+ newFolderButton = null;
+ stopButton = null;
+ closeButton = null;
+ dummyButton = null;
+ localDrivesComboBox = null;
+ remoteDrivesComboBox = null;
+ localMachineLabel = null;
+ remoteMachineLabel = null;
+ localTopButton = null;
+ remoteTopButton = null;
+ localScrollPane = null;
+ localFileTable = null;
+ remoteScrollPane = null;
+ remoteFileTable = null;
+ remoteLocation = null;
+ localLocation = null;
+ localStatus = null;
+ remoteStatus = null;
+ historyComboBox = null;
+ jProgressBar = null;
+ connectionStatus = null;
+ viewButton = null;
+ refreshButton = null;
+ }
+
+ public void doReset()
+ {
+ try {
+ this.setVisible(false);
+ this.dispose();
+ jContentPane = null;
+ try {Thread.sleep(500);} catch (InterruptedException e) {}
+ viewer.ftp_init();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ public void doOpen()
+ {
+ try {
+ this.setVisible(true);
+ if (false) {
+ this.initialize();
+ }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
private void doDelete()
{
- System.out.println("Delete Button Pressed");
+// System.out.println("Delete Button Pressed");
//Call this method to delete a file at server
if(selectedTable.equals("remote"))
{
- String sFileName = ((String) this.remoteFileTable.getSelectedValue());
+ Object selected = this.remoteFileTable.getSelectedValue();
+ if (selected == null) {
+ return;
+ }
+ String sFileName = ((String) selected);
// sf@2004 - Directory can't be deleted
if (sFileName.substring(0, 2).equals(" [") && sFileName.substring((sFileName.length() - 1), sFileName.length()).equals("]"))
{
- JOptionPane.showMessageDialog(null, (String)"Directory Deletion is not yet available in this version...", "FileTransfer Info", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(jContentPane, (String)"Directory Deletion is not yet available in this version...", "FileTransfer Info", JOptionPane.INFORMATION_MESSAGE);
return;
}
@@ -916,7 +1259,7 @@
// sf@2004 - Delete prompt
if (remoteList.contains(sFileName))
{
- int r = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete the file \n< " + sFileName + " >\n on Remote Machine ?", "File Transfer Warning", JOptionPane.YES_NO_OPTION);
+ int r = JOptionPane.showConfirmDialog(jContentPane, "Are you sure you want to delete the file \n< " + sFileName + " >\n on Remote Machine ?", "File Transfer Warning", JOptionPane.YES_NO_OPTION);
if (r == JOptionPane.NO_OPTION)
return;
}
@@ -926,18 +1269,22 @@
}
else
{
- String sFileName = ((String) this.localFileTable.getSelectedValue());
+ Object selected = this.localFileTable.getSelectedValue();
+ if (selected == null) {
+ return;
+ }
+ String sFileName = ((String) selected);
// sf@2004 - Directory can't be deleted
if (sFileName.substring(0, 2).equals(" [") && sFileName.substring((sFileName.length() - 1), sFileName.length()).equals("]"))
{
- JOptionPane.showMessageDialog(null, (String)"Directory Deletion is not yet available in this version...", "FileTransfer Info", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(jContentPane, (String)"Directory Deletion is not yet available in this version...", "FileTransfer Info", JOptionPane.INFORMATION_MESSAGE);
return;
}
// sf@2004 - Delete prompt
if (localList.contains(sFileName))
{
- int r = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete the file \n< " + sFileName + " >\n on Local Machine ?", "File Transfer Warning", JOptionPane.YES_NO_OPTION);
+ int r = JOptionPane.showConfirmDialog(jContentPane, "Are you sure you want to delete the file \n< " + sFileName + " >\n on Local Machine ?", "File Transfer Warning", JOptionPane.YES_NO_OPTION);
if (r == JOptionPane.NO_OPTION)
return;
}
@@ -952,21 +1299,25 @@
private void doReceive()
{
- System.out.println("Received Button Pressed");
+// System.out.println("Received Button Pressed");
- String sFileName = ((String) this.remoteFileTable.getSelectedValue());
+ Object selected = this.remoteFileTable.getSelectedValue();
+ if (selected == null) {
+ return;
+ }
+ String sFileName = ((String) selected);
// sf@2004 - Directory can't be transfered
if (sFileName.substring(0, 2).equals(" [") && sFileName.substring((sFileName.length() - 1), sFileName.length()).equals("]"))
{
- JOptionPane.showMessageDialog(null, (String)"Directory Transfer is not yet available in this version...", "FileTransfer Info", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(jContentPane, (String)"Directory Transfer is not yet available in this version...", "FileTransfer Info", JOptionPane.INFORMATION_MESSAGE);
return;
}
// sf@2004 - Overwrite prompt
if (localList.contains(sFileName))
{
- int r = JOptionPane.showConfirmDialog(null, "The file < " + sFileName + " >\n already exists on Local Machine\n Are you sure you want to overwrite it ?", "File Transfer Warning", JOptionPane.YES_NO_OPTION);
+ int r = JOptionPane.showConfirmDialog(jContentPane, "The file < " + sFileName + " >\n already exists on Local Machine\n Are you sure you want to overwrite it ?", "File Transfer Warning", JOptionPane.YES_NO_OPTION);
if (r == JOptionPane.NO_OPTION)
return;
}
@@ -979,23 +1330,101 @@
viewer.rfb.requestRemoteFile(remoteFileName,localDestinationPath);
}
+// begin runge/x11vnc
+ private void doRefresh()
+ {
+ System.out.println("Refreshing Local and Remote.");
+ refreshLocalLocation();
+ refreshRemoteLocation();
+ }
+
+ private void doView()
+ {
+// System.out.println("View Button Pressed");
+
+ if (selectedTable == null) {
+ return;
+ }
+ if (selectedTable.equals("remote")) {
+ viewRemote();
+ } else if (selectedTable.equals("local")) {
+ viewLocal();
+ }
+ }
+
+ private File doReceiveTmp()
+ {
+
+ if (remoteFileTable == null) {
+ return null;
+ }
+ Object selected = this.remoteFileTable.getSelectedValue();
+ if (selected == null) {
+ return null;
+ }
+ String sFileName = ((String) selected);
+
+ if (sFileName == null) {
+ return null;
+ }
+
+ // sf@2004 - Directory can't be transfered
+ if (sFileName.substring(0, 2).equals(" [") && sFileName.substring((sFileName.length() - 1), sFileName.length()).equals("]"))
+ {
+ return null;
+ }
+
+ File tmp = null;
+ try {
+ tmp = File.createTempFile("ULTRAFTP", ".txt");
+ } catch (Exception e) {
+ return null;
+ }
+
+ //updateHistory("Downloaded " + localSelection.toString());
+ String remoteFileName = this.remoteLocation.getText();
+ remoteFileName+= ((String) this.remoteFileTable.getSelectedValue()).substring(1);
+ System.out.println("remoteFileName: " + remoteFileName);
+if (false) {
+ char[] b = remoteFileName.toCharArray();
+ for (int n = 0; n < b.length; n++) {
+ System.out.print(Integer.toHexString(b[n]) + " ");
+ }
+ System.out.println("");
+ for (int n = 0; n < b.length; n++) {
+ System.out.print(b[n]);
+ }
+ System.out.println("");
+}
+
+ String localDestinationPath = tmp.getAbsolutePath();
+ viewer.rfb.requestRemoteFile(remoteFileName,localDestinationPath);
+ System.out.println("ReceiveTmp: " + localDestinationPath);
+ return tmp;
+ }
+// end runge/x11vnc
+
private void doSend()
{
- System.out.println("Send Button Pressed");
+// System.out.println("Send Button Pressed");
- String sFileName = ((String) this.localFileTable.getSelectedValue());
+ Object selected = this.localFileTable.getSelectedValue();
+ if (selected == null) {
+ return;
+ }
+ String sFileName = ((String) selected);
// sf@2004 - Directory can't be transfered
if (sFileName.substring(0, 2).equals(" [") && sFileName.substring((sFileName.length() - 1), sFileName.length()).equals("]"))
{
- JOptionPane.showMessageDialog(null, (String)&#