< prev index next >
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java
Print this page
*** 31,45 ****
--- 31,51 ----
import javax.swing.event.*;
import javax.swing.plaf.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
+ import java.awt.image.BufferedImage;
+ import static java.awt.image.BufferedImage.TYPE_INT_ARGB;
import java.beans.*;
import java.io.*;
+ import java.nio.file.Files;
+ import java.nio.file.Path;
import java.util.*;
import java.util.List;
import java.util.regex.*;
+ import static java.util.stream.Collectors.toList;
+ import javax.swing.tree.TreePath;
import sun.awt.shell.ShellFolder;
import sun.swing.*;
import sun.swing.SwingUtilities2;
/**
*** 1344,1353 ****
--- 1350,1363 ----
}
private void changeDirectory(File dir) {
JFileChooser fc = getFileChooser();
+
+ Cursor prevCursor = fc.getCursor();
+ fc.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+
// Traverse shortcuts on Windows
if (dir != null && FilePane.usesShellFolder(fc)) {
try {
ShellFolder shellFolder = ShellFolder.getShellFolder(dir);
*** 1373,1382 ****
--- 1383,1394 ----
if (fc.getFileSelectionMode() == JFileChooser.FILES_AND_DIRECTORIES &&
fc.getFileSystemView().isFileSystem(dir)) {
setFileName(dir.getAbsolutePath());
}
+
+ fc.setCursor(prevCursor);
}
// *****************************************
// ***** default AcceptAll file filter *****
*** 1553,1562 ****
--- 1565,1608 ----
}
if (values == null || values.length == 0) {
return null;
}
+ try {
+ BufferedImage img = null;
+ Graphics2D g = null;
+ for (Object value : values) {
+ File f=(File) value;
+ Image icon = ShellFolder.getShellFolder(f).getIcon(true);
+ if(img == null) {
+ img = new BufferedImage(icon.getWidth(null)+20,
+ icon.getHeight(null)+20, TYPE_INT_ARGB);
+ g = img.createGraphics();
+
+ int w = img.getWidth()-2;
+ int h = img.getHeight()-2;
+ g.setPaint(new GradientPaint(
+ 0, 0, new Color(0, 149, 234, 12),
+ 0, h, new Color(0, 155, 237, 28)
+ ));
+ g.fillRoundRect(0, 0, w, h, 4, 4);
+
+ g.setColor(new Color(0, 170, 248, 36));
+ g.drawRoundRect(0, 0, w, h, 4, 4);
+ }
+ g.drawImage(icon,
+ img.getWidth()/2-icon.getWidth(null)/2,
+ img.getHeight() / 2-icon.getHeight(null)/2, null);
+ }
+ setDragImage(img);
+ setDragImageOffset(new Point(
+ img.getWidth()/2, img.getHeight()-5));
+ } catch (FileNotFoundException ex) {
+ ex.printStackTrace();
+ setDragImage(null);
+ }
+
StringBuilder plainBuf = new StringBuilder();
StringBuilder htmlBuf = new StringBuilder();
htmlBuf.append("<html>\n<body>\n<ul>\n");
*** 1572,1582 ****
return new FileTransferable(plainBuf.toString(), htmlBuf.toString(), values);
}
public int getSourceActions(JComponent c) {
! return COPY;
}
static class FileTransferable extends BasicTransferable {
Object[] fileData;
--- 1618,1628 ----
return new FileTransferable(plainBuf.toString(), htmlBuf.toString(), values);
}
public int getSourceActions(JComponent c) {
! return COPY|MOVE;
}
static class FileTransferable extends BasicTransferable {
Object[] fileData;
< prev index next >