/*
* Copyright 2005 MH-Software-Entwicklung. All rights reserved.
* Use is subject to license terms.
*/
package com.jtattoo.plaf;
import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.filechooser.FileView;
import javax.swing.plaf.*;
import javax.swing.plaf.metal.*;
/**
* @author Michael Hagen
*/
public class BaseFileChooserUI extends MetalFileChooserUI {
private FileView fileView = null;
// Preferred and Minimum sizes for the dialog box
private static int PREF_WIDTH = 580;
private static int PREF_HEIGHT = 340;
private static Dimension PREF_SIZE = new Dimension(PREF_WIDTH, PREF_HEIGHT);
public BaseFileChooserUI(JFileChooser fileChooser) {
super(fileChooser);
fileView = new BaseFileView();
}
public static ComponentUI createUI(JComponent c) {
return new BaseFileChooserUI((JFileChooser) c);
}
/**
* Returns the preferred size of the specified
* <code>JFileChooser</code>.
* The preferred size is at least as large,
* in both height and width,
* as the preferred size recommended
* by the file chooser's layout manager.
*
* @param c a <code>JFileChooser</code>
* @return a <code>Dimension</code> specifying the preferred
* width and height of the file chooser
*/
public Dimension getPreferredSize(JComponent c) {
int prefWidth = PREF_SIZE.width;
Dimension d = c.getLayout().preferredLayoutSize(c);
if (d != null) {
return new Dimension(d.width < prefWidth ? prefWidth : d.width,
d.height < PREF_SIZE.height ? PREF_SIZE.height : d.height);
} else {
return new Dimension(prefWidth, PREF_SIZE.height);
}
}
public FileView getFileView(JFileChooser fc) {
if (JTattooUtilities.getJavaVersion() < 1.4) {
return super.getFileView(fc);
} else {
return fileView;
}
}
//------------------------------------------------------------------------------
protected class BaseFileView extends BasicFileView {
public Icon getIcon(File f) {
Icon icon = getCachedIcon(f);
if (icon != null) {
return icon;
}
if (f != null) {
icon = getFileChooser().getFileSystemView().getSystemIcon(f);
}
if (icon == null) {
icon = super.getIcon(f);
}
cacheIcon(f, icon);
return icon;
}
}
}