61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
package com.boydti.fawe.installer;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Component;
|
|
import java.awt.Container;
|
|
import javax.swing.JFileChooser;
|
|
import javax.swing.LookAndFeel;
|
|
import javax.swing.UIManager;
|
|
import javax.swing.UnsupportedLookAndFeelException;
|
|
import sun.swing.FilePane;
|
|
|
|
public class JSystemFileChooser extends JFileChooser {
|
|
public void updateUI(){
|
|
LookAndFeel old = UIManager.getLookAndFeel();
|
|
try {
|
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
|
}
|
|
catch (Throwable ex) {
|
|
old = null;
|
|
}
|
|
|
|
super.updateUI();
|
|
|
|
if(old != null){
|
|
FilePane filePane = findFilePane(this);
|
|
filePane.setViewType(FilePane.VIEWTYPE_DETAILS);
|
|
filePane.setViewType(FilePane.VIEWTYPE_LIST);
|
|
|
|
Color background = UIManager.getColor("Label.background");
|
|
setBackground(background);
|
|
setOpaque(true);
|
|
|
|
try {
|
|
UIManager.setLookAndFeel(old);
|
|
}
|
|
catch (UnsupportedLookAndFeelException ignored) {} // shouldn't get here
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private static FilePane findFilePane(Container parent){
|
|
for(Component comp: parent.getComponents()){
|
|
if(FilePane.class.isInstance(comp)){
|
|
return (FilePane)comp;
|
|
}
|
|
if(comp instanceof Container){
|
|
Container cont = (Container)comp;
|
|
if(cont.getComponentCount() > 0){
|
|
FilePane found = findFilePane(cont);
|
|
if (found != null) {
|
|
return found;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|