home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / plaf / metal / MetalFileChooserUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  13.6 KB  |  382 lines

  1. package javax.swing.plaf.metal;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Insets;
  7. import java.awt.event.MouseListener;
  8. import java.beans.PropertyChangeListener;
  9. import java.io.File;
  10. import javax.swing.AbstractButton;
  11. import javax.swing.Action;
  12. import javax.swing.Box;
  13. import javax.swing.BoxLayout;
  14. import javax.swing.JButton;
  15. import javax.swing.JComboBox;
  16. import javax.swing.JComponent;
  17. import javax.swing.JFileChooser;
  18. import javax.swing.JLabel;
  19. import javax.swing.JList;
  20. import javax.swing.JPanel;
  21. import javax.swing.JScrollPane;
  22. import javax.swing.JTextField;
  23. import javax.swing.JToggleButton;
  24. import javax.swing.UIManager;
  25. import javax.swing.event.ListSelectionEvent;
  26. import javax.swing.plaf.ComponentUI;
  27. import javax.swing.plaf.basic.BasicFileChooserUI;
  28.  
  29. public class MetalFileChooserUI extends BasicFileChooserUI {
  30.    private JPanel centerPanel;
  31.    private JComboBox directoryComboBox;
  32.    private DirectoryComboBoxModel directoryComboBoxModel;
  33.    private Action directoryComboBoxAction = new DirectoryComboBoxAction(this);
  34.    private FilterComboBoxModel filterComboBoxModel;
  35.    private JTextField filenameTextField;
  36.    private JList list;
  37.    private JButton approveButton;
  38.    private JButton cancelButton;
  39.    private JComboBox filterComboBox;
  40.    private JPanel bodyPanel = null;
  41.    private static final Dimension hstrut10 = new Dimension(10, 1);
  42.    private static final Dimension hstrut25 = new Dimension(25, 1);
  43.    private static final Dimension vstrut10 = new Dimension(1, 10);
  44.    private static final Insets shrinkwrap = new Insets(0, 0, 0, 0);
  45.    private static int PREF_WIDTH = 500;
  46.    private static int PREF_HEIGHT = 300;
  47.    private static Dimension PREF_SIZE;
  48.    private static int MIN_WIDTH;
  49.    private static int MIN_HEIGHT;
  50.    private static Dimension MIN_SIZE;
  51.    private static int LIST_MIN_WIDTH;
  52.    private static int LIST_MIN_HEIGHT;
  53.    private static Dimension LIST_MIN_SIZE;
  54.    private int lookInLabelMnemonic = 0;
  55.    private String lookInLabelText = null;
  56.    private int fileNameLabelMnemonic = 0;
  57.    private String fileNameLabelText = null;
  58.    private int filesOfTypeLabelMnemonic = 0;
  59.    private String filesOfTypeLabelText = null;
  60.    private String upFolderToolTipText = null;
  61.    private String upFolderAccessibleName = null;
  62.    private String homeFolderToolTipText = null;
  63.    private String homeFolderAccessibleName = null;
  64.    private String newFolderToolTipText = null;
  65.    private String newFolderAccessibleName = null;
  66.    private String listViewButtonToolTipText = null;
  67.    private String listViewButtonAccessibleName = null;
  68.    private String detailsViewButtonToolTipText = null;
  69.    private String detailsViewButtonAccessibleName = null;
  70.    int lastIndex = -1;
  71.    boolean editing = false;
  72.    int editX = 20;
  73.    int editWidth = 200;
  74.    JTextField editCell = null;
  75.    static final int space = 10;
  76.  
  77.    static {
  78.       PREF_SIZE = new Dimension(PREF_WIDTH, PREF_HEIGHT);
  79.       MIN_WIDTH = 400;
  80.       MIN_HEIGHT = 200;
  81.       MIN_SIZE = new Dimension(MIN_WIDTH, MIN_HEIGHT);
  82.       LIST_MIN_WIDTH = 400;
  83.       LIST_MIN_HEIGHT = 100;
  84.       LIST_MIN_SIZE = new Dimension(LIST_MIN_WIDTH, LIST_MIN_HEIGHT);
  85.    }
  86.  
  87.    public MetalFileChooserUI(JFileChooser var1) {
  88.       super(var1);
  89.    }
  90.  
  91.    // $FF: synthetic method
  92.    static void access$0(MetalFileChooserUI var0) {
  93.       var0.cancelEdit();
  94.    }
  95.  
  96.    // $FF: synthetic method
  97.    static JList access$1(MetalFileChooserUI var0) {
  98.       return var0.list;
  99.    }
  100.  
  101.    // $FF: synthetic method
  102.    static DirectoryComboBoxModel access$2(MetalFileChooserUI var0) {
  103.       return var0.directoryComboBoxModel;
  104.    }
  105.  
  106.    // $FF: synthetic method
  107.    static JButton access$3(MetalFileChooserUI var0) {
  108.       return var0.approveButton;
  109.    }
  110.  
  111.    // $FF: synthetic method
  112.    static JComboBox access$4(MetalFileChooserUI var0) {
  113.       return var0.directoryComboBox;
  114.    }
  115.  
  116.    private void cancelEdit() {
  117.       this.editing = false;
  118.       if (this.editCell != null) {
  119.          this.list.remove(this.editCell);
  120.       }
  121.  
  122.    }
  123.  
  124.    protected DirectoryComboBoxModel createDirectoryComboBoxModel(JFileChooser var1) {
  125.       return new DirectoryComboBoxModel(this);
  126.    }
  127.  
  128.    protected DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser var1) {
  129.       return new DirectoryComboBoxRenderer(this);
  130.    }
  131.  
  132.    protected FilterComboBoxModel createFilterComboBoxModel() {
  133.       return new FilterComboBoxModel(this);
  134.    }
  135.  
  136.    protected FilterComboBoxRenderer createFilterComboBoxRenderer() {
  137.       return new FilterComboBoxRenderer(this);
  138.    }
  139.  
  140.    protected JPanel createList(JFileChooser var1) {
  141.       JPanel var2 = new JPanel(new BorderLayout());
  142.       this.list = new JList();
  143.       this.list.setCellRenderer(new FileRenderer(this));
  144.       this.list.setModel(((BasicFileChooserUI)this).getModel());
  145.       this.list.addListSelectionListener(((BasicFileChooserUI)this).createListSelectionListener(var1));
  146.       this.list.addMouseListener(((BasicFileChooserUI)this).createDoubleClickListener(var1, this.list));
  147.       this.list.addMouseListener(this.createSingleClickListener(var1, this.list));
  148.       JScrollPane var3 = new JScrollPane(this.list);
  149.       ((Container)var2).add(var3, "Center");
  150.       return var2;
  151.    }
  152.  
  153.    public PropertyChangeListener createPropertyChangeListener(JFileChooser var1) {
  154.       return new 3(this);
  155.    }
  156.  
  157.    private MouseListener createSingleClickListener(JFileChooser var1, JList var2) {
  158.       return new SingleClickListener(this, var2);
  159.    }
  160.  
  161.    public static ComponentUI createUI(JComponent var0) {
  162.       return new MetalFileChooserUI((JFileChooser)var0);
  163.    }
  164.  
  165.    public void ensureFileIsVisible(JFileChooser var1, File var2) {
  166.       if (((BasicFileChooserUI)this).getModel().contains(var2)) {
  167.          this.list.ensureIndexIsVisible(((BasicFileChooserUI)this).getModel().indexOf(var2));
  168.       }
  169.  
  170.    }
  171.  
  172.    protected JButton getApproveButton(JFileChooser var1) {
  173.       return this.approveButton;
  174.    }
  175.  
  176.    public String getDirectoryName() {
  177.       return null;
  178.    }
  179.  
  180.    public String getFileName() {
  181.       return this.filenameTextField != null ? this.filenameTextField.getText() : null;
  182.    }
  183.  
  184.    public Dimension getMaximumSize(JComponent var1) {
  185.       return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  186.    }
  187.  
  188.    public Dimension getMinimumSize(JComponent var1) {
  189.       return MIN_SIZE;
  190.    }
  191.  
  192.    public Dimension getPreferredSize(JComponent var1) {
  193.       return PREF_SIZE;
  194.    }
  195.  
  196.    public void installComponents(JFileChooser var1) {
  197.       ((Container)var1).setLayout(new BoxLayout(var1, 1));
  198.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  199.       JPanel var2 = new JPanel();
  200.       ((Container)var2).setLayout(new BoxLayout(var2, 0));
  201.       ((Container)var1).add(var2);
  202.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  203.       JLabel var3 = new JLabel(this.lookInLabelText);
  204.       var3.setDisplayedMnemonic(this.lookInLabelMnemonic);
  205.       ((JComponent)var3).setAlignmentX(0.0F);
  206.       ((JComponent)var3).setAlignmentY(0.5F);
  207.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  208.       ((Container)var2).add(var3);
  209.       ((Container)var2).add(Box.createRigidArea(hstrut25));
  210.       this.directoryComboBox = new JComboBox();
  211.       this.directoryComboBox.putClientProperty("JComboBox.lightweightKeyboardNavigation", "Lightweight");
  212.       var3.setLabelFor(this.directoryComboBox);
  213.       this.directoryComboBoxModel = this.createDirectoryComboBoxModel(var1);
  214.       this.directoryComboBox.setModel(this.directoryComboBoxModel);
  215.       this.directoryComboBox.addActionListener(this.directoryComboBoxAction);
  216.       this.directoryComboBox.setRenderer(this.createDirectoryComboBoxRenderer(var1));
  217.       this.directoryComboBox.setAlignmentX(0.0F);
  218.       this.directoryComboBox.setAlignmentY(0.5F);
  219.       ((Container)var2).add(this.directoryComboBox);
  220.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  221.       JButton var4 = new JButton(super.upFolderIcon);
  222.       ((JComponent)var4).setToolTipText(this.upFolderToolTipText);
  223.       var4.getAccessibleContext().setAccessibleName(this.upFolderAccessibleName);
  224.       ((JComponent)var4).setAlignmentX(0.0F);
  225.       ((JComponent)var4).setAlignmentY(0.5F);
  226.       ((AbstractButton)var4).setMargin(shrinkwrap);
  227.       ((AbstractButton)var4).addActionListener(((BasicFileChooserUI)this).getChangeToParentDirectoryAction());
  228.       ((Container)var2).add(var4);
  229.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  230.       var4 = new JButton(super.homeFolderIcon);
  231.       ((JComponent)var4).setToolTipText(this.homeFolderToolTipText);
  232.       var4.getAccessibleContext().setAccessibleName(this.homeFolderAccessibleName);
  233.       ((JComponent)var4).setAlignmentX(0.0F);
  234.       ((JComponent)var4).setAlignmentY(0.5F);
  235.       ((AbstractButton)var4).setMargin(shrinkwrap);
  236.       ((AbstractButton)var4).addActionListener(((BasicFileChooserUI)this).getGoHomeAction());
  237.       ((Container)var2).add(var4);
  238.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  239.       var4 = new JButton(super.newFolderIcon);
  240.       ((JComponent)var4).setToolTipText(this.newFolderToolTipText);
  241.       var4.getAccessibleContext().setAccessibleName(this.newFolderAccessibleName);
  242.       ((JComponent)var4).setAlignmentX(0.0F);
  243.       ((JComponent)var4).setAlignmentY(0.5F);
  244.       ((AbstractButton)var4).setMargin(shrinkwrap);
  245.       ((AbstractButton)var4).addActionListener(((BasicFileChooserUI)this).getNewFolderAction());
  246.       ((Container)var2).add(var4);
  247.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  248.       JToggleButton var5 = new JToggleButton(super.listViewIcon);
  249.       ((JComponent)var5).setToolTipText(this.listViewButtonToolTipText);
  250.       var5.getAccessibleContext().setAccessibleName(this.listViewButtonAccessibleName);
  251.       ((AbstractButton)var5).setEnabled(false);
  252.       ((JComponent)var5).setAlignmentX(0.0F);
  253.       ((JComponent)var5).setAlignmentY(0.5F);
  254.       ((AbstractButton)var5).setMargin(shrinkwrap);
  255.       ((Container)var2).add(var5);
  256.       var5 = new JToggleButton(super.detailsViewIcon);
  257.       ((JComponent)var5).setToolTipText(this.detailsViewButtonToolTipText);
  258.       var5.getAccessibleContext().setAccessibleName(this.detailsViewButtonAccessibleName);
  259.       ((AbstractButton)var5).setSelected(true);
  260.       ((AbstractButton)var5).setEnabled(false);
  261.       ((JComponent)var5).setAlignmentX(0.0F);
  262.       ((JComponent)var5).setAlignmentY(0.5F);
  263.       ((AbstractButton)var5).setMargin(shrinkwrap);
  264.       ((Container)var2).add(var5);
  265.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  266.       this.centerPanel = new JPanel(new BorderLayout());
  267.       JPanel var6 = this.createList(var1);
  268.       ((JComponent)var6).setMinimumSize(LIST_MIN_SIZE);
  269.       this.centerPanel.add(var6, "Center");
  270.       this.centerPanel.add(((BasicFileChooserUI)this).getAccessoryPanel(), "East");
  271.       JComponent var7 = var1.getAccessory();
  272.       if (var7 != null) {
  273.          ((BasicFileChooserUI)this).getAccessoryPanel().add(var7);
  274.       }
  275.  
  276.       ((Container)var1).add(this.centerPanel);
  277.       JPanel var8 = new JPanel();
  278.       ((Container)var8).setLayout(new BoxLayout(var8, 0));
  279.       ((Container)var8).add(Box.createRigidArea(hstrut10));
  280.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  281.       ((Container)var1).add(var8);
  282.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  283.       JPanel var9 = new JPanel();
  284.       ((Container)var9).setLayout(new BoxLayout(var9, 1));
  285.       JLabel var10 = new JLabel(this.fileNameLabelText);
  286.       var10.setDisplayedMnemonic(this.fileNameLabelMnemonic);
  287.       ((Container)var9).add(var10);
  288.       ((Container)var9).add(Box.createRigidArea(vstrut10));
  289.       JLabel var11 = new JLabel(this.filesOfTypeLabelText);
  290.       var11.setDisplayedMnemonic(this.filesOfTypeLabelMnemonic);
  291.       ((Container)var9).add(var11);
  292.       ((Container)var8).add(var9);
  293.       ((Container)var8).add(Box.createRigidArea(hstrut25));
  294.       JPanel var12 = new JPanel();
  295.       ((Container)var12).setLayout(new BoxLayout(var12, 1));
  296.       this.filenameTextField = new JTextField();
  297.       var10.setLabelFor(this.filenameTextField);
  298.       this.filenameTextField.addActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  299.       File var13 = var1.getSelectedFile();
  300.       if (var13 != null) {
  301.          this.setFileName(var1.getName(var13));
  302.       }
  303.  
  304.       ((Container)var12).add(this.filenameTextField);
  305.       ((Container)var12).add(Box.createRigidArea(vstrut10));
  306.       this.filterComboBoxModel = this.createFilterComboBoxModel();
  307.       ((JComponent)var1).addPropertyChangeListener(this.filterComboBoxModel);
  308.       this.filterComboBox = new JComboBox(this.filterComboBoxModel);
  309.       var11.setLabelFor(this.filterComboBox);
  310.       this.filterComboBox.setRenderer(this.createFilterComboBoxRenderer());
  311.       ((Container)var12).add(this.filterComboBox);
  312.       ((Container)var8).add(var12);
  313.       ((Container)var8).add(Box.createRigidArea(hstrut10));
  314.       JPanel var14 = new JPanel();
  315.       ((Container)var14).setLayout(new BoxLayout(var14, 1));
  316.       this.approveButton = new 1(((BasicFileChooserUI)this).getApproveButtonText(var1));
  317.       this.approveButton.setMnemonic(((BasicFileChooserUI)this).getApproveButtonMnemonic(var1));
  318.       this.approveButton.addActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  319.       this.approveButton.setToolTipText(((BasicFileChooserUI)this).getApproveButtonToolTipText(var1));
  320.       ((Container)var14).add(this.approveButton);
  321.       ((Container)var14).add(Box.createRigidArea(vstrut10));
  322.       this.cancelButton = new 2(super.cancelButtonText);
  323.       this.cancelButton.setMnemonic(super.cancelButtonMnemonic);
  324.       this.cancelButton.setToolTipText(super.cancelButtonToolTipText);
  325.       this.cancelButton.addActionListener(((BasicFileChooserUI)this).getCancelSelectionAction());
  326.       ((Container)var14).add(this.cancelButton);
  327.       ((Container)var8).add(var14);
  328.       ((Container)var8).add(Box.createRigidArea(hstrut10));
  329.    }
  330.  
  331.    protected void installStrings(JFileChooser var1) {
  332.       super.installStrings(var1);
  333.       this.lookInLabelMnemonic = UIManager.getInt("FileChooser.lookInLabelMnemonic");
  334.       this.lookInLabelText = UIManager.getString("FileChooser.lookInLabelText");
  335.       this.fileNameLabelMnemonic = UIManager.getInt("FileChooser.fileNameLabelMnemonic");
  336.       this.fileNameLabelText = UIManager.getString("FileChooser.fileNameLabelText");
  337.       this.filesOfTypeLabelMnemonic = UIManager.getInt("FileChooser.filesOfTypeLabelMnemonic");
  338.       this.filesOfTypeLabelText = UIManager.getString("FileChooser.filesOfTypeLabelText");
  339.       this.upFolderToolTipText = UIManager.getString("FileChooser.upFolderToolTipText");
  340.       this.upFolderAccessibleName = UIManager.getString("FileChooser.upFolderAccessibleName");
  341.       this.homeFolderToolTipText = UIManager.getString("FileChooser.homeFolderToolTipText");
  342.       this.homeFolderAccessibleName = UIManager.getString("FileChooser.homeFolderAccessibleName");
  343.       this.newFolderToolTipText = UIManager.getString("FileChooser.newFolderToolTipText");
  344.       this.newFolderAccessibleName = UIManager.getString("FileChooser.newFolderAccessibleName");
  345.       this.listViewButtonToolTipText = UIManager.getString("FileChooser.listViewButtonToolTipText");
  346.       this.listViewButtonAccessibleName = UIManager.getString("FileChooser.listViewButtonAccessibleName");
  347.       this.detailsViewButtonToolTipText = UIManager.getString("FileChooser.detailsViewButtonToolTipText");
  348.       this.detailsViewButtonAccessibleName = UIManager.getString("FileChooser.detailsViewButtonAccessibleName");
  349.    }
  350.  
  351.    public void rescanCurrentDirectory(JFileChooser var1) {
  352.       ((BasicFileChooserUI)this).getModel().invalidateFileCache();
  353.       ((BasicFileChooserUI)this).getModel().validateFileCache();
  354.    }
  355.  
  356.    public void setDirectoryName(String var1) {
  357.    }
  358.  
  359.    public void setFileName(String var1) {
  360.       if (this.filenameTextField != null) {
  361.          this.filenameTextField.setText(var1);
  362.       }
  363.  
  364.    }
  365.  
  366.    public void uninstallUI(JComponent var1) {
  367.       var1.removePropertyChangeListener(this.filterComboBoxModel);
  368.       this.cancelButton.removeActionListener(((BasicFileChooserUI)this).getCancelSelectionAction());
  369.       this.approveButton.removeActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  370.       this.filenameTextField.removeActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  371.       super.uninstallUI(var1);
  372.    }
  373.  
  374.    public void valueChanged(ListSelectionEvent var1) {
  375.       File var2 = ((BasicFileChooserUI)this).getFileChooser().getSelectedFile();
  376.       if (!var1.getValueIsAdjusting() && var2 != null && !((BasicFileChooserUI)this).getFileChooser().isTraversable(var2)) {
  377.          this.setFileName(((BasicFileChooserUI)this).getFileChooser().getName(var2));
  378.       }
  379.  
  380.    }
  381. }
  382.