Download [#TDA-40] Enable Drag and Drop of Logfiles onto the TDA

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
[TDA-40] Enable Drag and Drop of Logfiles onto the TDA Window Created:
13/Nov/14 Updated: 12/Jul/16 Resolved: 12/Jul/16
Status:
Project:
Component/s:
Affects
Version/s:
Fix Version/s:
Resolved
tda
None
None
Type:
Reporter:
Resolution:
Labels:
Remaining
Estimate:
Time Spent:
Original
Estimate:
Improvement
ben.peter
Fixed
None
Not Specified
None
Priority:
Assignee:
Votes:
Major
irockel
0
Not Specified
Not Specified
Description
A pragmatic patch is attached.
Comments
Comment by ben.peter [ 13/Nov/14 ]
oh, I can neither edit the description nor attach files, so here goes:
Index: src/java/com/pironet/tda/TDA.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/com/pironet/tda/TDA.java (revision 638)
+++ src/java/com/pironet/tda/TDA.java (revision )
@@ -42,9 +42,9 @@
import java.awt.Color;
import java.awt.Container;
import java.awt.datatransfer.UnsupportedFlavorException;
-import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.*;
import java.io.FileNotFoundException;
-import java.util.Enumeration;
+import java.util.*;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
@@ -71,8 +71,6 @@
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
-import java.awt.dnd.DropTarget;
-import java.awt.dnd.DropTargetAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
@@ -91,10 +89,6 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.NumberFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import javax.swing.BorderFactory;
@@ -298,7 +292,6 @@
});
htmlView = new ViewScrollPane(htmlPane, runningAsVisualVMPlugin);
ViewScrollPane emptyView = new ViewScrollPane(emptyPane,
runningAsVisualVMPlugin);
@@ -352,9 +345,65 @@
fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setCurrentDirectory(PrefManager.get().getSelectedPath());
+
}
+
+
if (!runningAsJConsolePlugin && !runningAsVisualVMPlugin) {
+
new DropTarget(htmlPane, DnDConstants.ACTION_REFERENCE |
DnDConstants.ACTION_LINK, getDropTargetListener());
+
}
+
}
+
+
private DropTargetListener getDropTargetListener() {
+
return new DropTargetListener() {
+
public void dragEnter(DropTargetDragEvent event) {
+
}
+
+
public void dragOver(DropTargetDragEvent event) {
+
}
+
+
public void dropActionChanged(DropTargetDragEvent event) {
+
}
+
+
public void dragExit(DropTargetEvent event) {
+
}
+
+
public void drop(DropTargetDropEvent event) {
+
try {
+
event.acceptDrop(DnDConstants.ACTION_REFERENCE);
+
Transferable transfer = event.getTransferable();
+
File[] files = getAcceptedFiles(transfer);
+
if (null != files && files.length != 0) {
+
TDA.get(true).openFiles(files, false);
+
event.getDropTargetContext().dropComplete(true);
+
}
+
} catch (InvalidDnDOperationException ex) {
+
// ignore
+
}
+
}
+
};
+
}
+
+
private File[] getAcceptedFiles(Transferable transferable) {
+
try {
+
if
(!transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
+
return null;
+
}
+
+
List filelist = (List)
transferable.getTransferData(DataFlavor.javaFileListFlavor);
+
List acceptedFiles = new ArrayList();
+
File[] files = (File[]) filelist.toArray(new File[0]);
+
for (int i = 0; i < files.length; i++) {
+
if (!files[i].isDirectory()) {
+
acceptedFiles.add(files[i]);
+
}
+
}
+
return (File[]) acceptedFiles.toArray(new File[0]);
+
} catch (IOException ex) {
+
return null;
+
} catch (UnsupportedFlavorException ex) {
+
return null;
}
}
Comment by ben.peter [ 14/Nov/14 ]
the following patch also replaces JFileChooser with the AWT = native FileDialog to give better
navigation to log files by enabling OS native features for file selection and directory navigation
I won't open another issue for this at the moment, as both changes affect TDA.java (lazy mode
)
Index: src/java/com/pironet/tda/TDA.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/com/pironet/tda/TDA.java (revision 638)
+++ src/java/com/pironet/tda/TDA.java (revision )
@@ -38,13 +38,12 @@
import com.pironet.tda.utils.ViewScrollPane;
import com.pironet.tda.utils.jedit.JEditTextArea;
import com.pironet.tda.utils.jedit.PopupMenu;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Container;
+
+import java.awt.*;
import java.awt.datatransfer.UnsupportedFlavorException;
-import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.*;
import java.io.FileNotFoundException;
-import java.util.Enumeration;
+import java.util.*;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
@@ -64,15 +63,8 @@
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import java.io.IOException;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Font;
-import java.awt.Image;
-import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
-import java.awt.dnd.DropTarget;
-import java.awt.dnd.DropTargetAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
@@ -91,10 +83,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.NumberFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
+import java.util.List;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import javax.swing.BorderFactory;
@@ -130,7 +119,7 @@
* @author irockel
*/
public class TDA extends JPanel implements ListSelectionListener,
TreeSelectionListener, ActionListener, MenuListener {
private static JFileChooser fc;
+
private static FileDialog fc;
private static JFileChooser sessionFc;
private static int DIVIDER_SIZE = 4;
protected static JFrame frame;
@@ -298,7 +287,6 @@
});
htmlView = new ViewScrollPane(htmlPane, runningAsVisualVMPlugin);
ViewScrollPane emptyView = new ViewScrollPane(emptyPane,
runningAsVisualVMPlugin);
@@ -349,12 +337,72 @@
if(firstFile && runningAsVisualVMPlugin) {
// init filechooser
fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setCurrentDirectory(PrefManager.get().getSelectedPath());
fc = new FileDialog(TDA.get(true).getFrame());
fc.setMultipleMode(true);
try {
+
+
+
+
fc.setDirectory(PrefManager.get().getSelectedPath().getCanonicalPath());
+
} catch (IOException ioe) {
+
// ignore
}
}
+
}
+
}
+
+
if (!runningAsJConsolePlugin && !runningAsVisualVMPlugin) {
+
new DropTarget(htmlPane, DnDConstants.ACTION_REFERENCE |
DnDConstants.ACTION_LINK, getDropTargetListener());
+
}
+
}
+
+
private DropTargetListener getDropTargetListener() {
+
return new DropTargetListener() {
+
public void dragEnter(DropTargetDragEvent event) {
+
}
+
+
public void dragOver(DropTargetDragEvent event) {
+
}
+
+
public void dropActionChanged(DropTargetDragEvent event) {
+
}
+
+
public void dragExit(DropTargetEvent event) {
+
}
+
+
public void drop(DropTargetDropEvent event) {
+
try {
+
event.acceptDrop(DnDConstants.ACTION_REFERENCE);
+
Transferable transfer = event.getTransferable();
+
File[] files = getAcceptedFiles(transfer);
+
if (null != files && files.length != 0) {
+
TDA.get(true).openFiles(files, false);
+
event.getDropTargetContext().dropComplete(true);
+
}
+
} catch (InvalidDnDOperationException ex) {
+
// ignore
+
}
+
}
+
};
+
}
+
+
private File[] getAcceptedFiles(Transferable transferable) {
+
try {
+
if
(!transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
+
return null;
+
}
+
+
List filelist = (List)
transferable.getTransferData(DataFlavor.javaFileListFlavor);
+
List acceptedFiles = new ArrayList();
+
File[] files = (File[]) filelist.toArray(new File[0]);
+
for (int i = 0; i < files.length; i++) {
+
if (!files[i].isDirectory()) {
+
acceptedFiles.add(files[i]);
+
}
+
}
+
return (File[]) acceptedFiles.toArray(new File[0]);
+
} catch (IOException ex) {
+
return null;
+
} catch (UnsupportedFlavorException ex) {
+
return null;
+
}
+
}
+
private void getLogfileFromClipboard() {
Transferable t =
Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
String text = null;
@@ -1876,19 +1924,25 @@
*/
public void saveLogFile() {
if(fc == null) {
fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setCurrentDirectory(PrefManager.get().getSelectedPath());
+
fc = new FileDialog(TDA.get(true).getFrame());
+
fc.setMultipleMode(false);
+
try {
+
fc.setDirectory(PrefManager.get().getSelectedPath().getCanonicalPath());
+
} catch (IOException ioe) {
+
// ignore
}
+
+
}
}
if(firstFile &&
(PrefManager.get().getPreferredSizeFileChooser().height > 0)) {
fc.setPreferredSize(PrefManager.get().getPreferredSizeFileChooser());
}
int returnVal = fc.showSaveDialog(this.getRootPane());
+
fc.setMode(FileDialog.SAVE);
fc.setPreferredSize(fc.getSize());
+
fc.setVisible(true);
PrefManager.get().setPreferredSizeFileChooser(fc.getSize());
+
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
+
String selectedFile = fc.getFile();
+
if (selectedFile != null) {
+
File file = new File(selectedFile);
int selectValue = 0;
if(file.exists()) {
Object[] options = { "Overwrite", "Cancel" };
@@ -1924,12 +1978,13 @@
if(firstFile &&
(PrefManager.get().getPreferredSizeFileChooser().height > 0)) {
fc.setPreferredSize(PrefManager.get().getPreferredSizeFileChooser());
}
int returnVal = fc.showOpenDialog(this.getRootPane());
fc.setPreferredSize(fc.getSize());
+
fc.setVisible(true);
PrefManager.get().setPreferredSizeFileChooser(fc.getSize());
+
if (returnVal == JFileChooser.APPROVE_OPTION) {
File[] files = fc.getSelectedFiles();
+
File[] files = fc.getFiles();
+
+
if (files.length > 0) {
openFiles(files, false);
}
}
@@ -2176,10 +2231,12 @@
* open and parse loggc file
*/
private void openLoggcFile() {
int returnVal = fc.showOpenDialog(this.getRootPane());
+
fc.setVisible(true);
+
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
+
File[] selectedFiles = fc.getFiles();
+
+
if (selectedFiles.length > 0) {
+
File file = selectedFiles[1];
loggcFile = file.getAbsolutePath();
if(loggcFile != null) {
try {
@@ -2268,7 +2325,7 @@
*/
private void saveState() {
PrefManager.get().setWindowState(frame.getExtendedState());
PrefManager.get().setSelectedPath(fc.getCurrentDirectory());
+
PrefManager.get().setSelectedPath(new File(fc.getDirectory()));
PrefManager.get().setPreferredSize(frame.getRootPane().getSize());
PrefManager.get().setWindowPos(frame.getX(), frame.getY());
if(isThreadDisplay()) {
@@ -2307,7 +2364,7 @@
frame.getRootPane().setPreferredSize(PrefManager.get().getPreferredSize());
+
frame.setJMenuBar(new MainMenu(TDA.get(true)));
TDA.get(true).init(false, false);
@@ -2320,10 +2377,14 @@
frame.setContentPane(TDA.get(true));
// init filechooser
fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setCurrentDirectory(PrefManager.get().getSelectedPath());
+
fc = new FileDialog(TDA.get(true).getFrame());
+
fc.setMultipleMode(true);
+
try {
+
fc.setDirectory(PrefManager.get().getSelectedPath().getCanonicalPath());
+
} catch (IOException ioe) {
+
// ignore
+
}
+
/**
* add window listener for persisting state of main frame
*/
@@ -2336,7 +2397,7 @@
System.exit(0);
}
});
+
frame.setLocation(PrefManager.get().getWindowPos());
//Display the window.
@@ -2347,7 +2408,7 @@
frame.setVisible(true);
}
-
+
/**
* display search dialog for current category
*/
@@ -2377,7 +2438,7 @@
* main startup method for TDA
*/
public static void main(String[] args) {
if(args.length > 0) {
+
if (args.length > 0) {
dumpFile = args[0];
}
//Schedule a job for the event-dispatching thread:
Comment by irockel [ 12/Jul/16 ]
Applied patch, merged to githup, see here: https://github.com/irockel/tda/issues/1
Generated at Sat May 06 19:26:13 UTC 2017 using JIRA 6.2.3#6260sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.
Related documents