home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / MotifFileChooserUI.java < prev    next >
Text File  |  1998-02-26  |  7KB  |  198 lines

  1. /*
  2.  * @(#)MotifFileChooserUI.java    1.6 98/02/03
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20.  
  21. package com.sun.java.swing.plaf.motif;
  22.  
  23. import com.sun.java.swing.*;
  24. import com.sun.java.swing.preview.*;
  25. import com.sun.java.swing.preview.JDirectoryPane;
  26. import com.sun.java.swing.event.*;
  27. import com.sun.java.swing.plaf.*;
  28. import java.awt.*;
  29. import java.awt.event.*;
  30. import java.beans.*;
  31. import java.io.File;
  32. import java.util.*;
  33.  
  34. /**
  35.  * Motif FileChooserUI.  
  36.  *
  37.  * @version 1.6 02/03/98
  38.  * @author Jeff Dinkins
  39.  */
  40. public class MotifFileChooserUI extends FileChooserUI {
  41.  
  42.     protected Action okayAction = new OkayAction();
  43.     protected Action cancelAction = new CancelAction();
  44.     protected Action updateAction = new UpdateAction();
  45.  
  46.     protected JButton okayButton;
  47.     protected JButton cancelButton;
  48.     protected JButton updateButton;
  49.     protected JButton helpButton;
  50.  
  51.     protected JFileChooser fileChooser;
  52.     protected JDirectoryPane directoryPane;
  53.     protected Component accessory;
  54.  
  55.     private static Dimension PREF_SIZE = new Dimension(350, 450);
  56.     private static Dimension MIN_SIZE = new Dimension(200, 300);
  57.  
  58.     private static final Dimension hstrut10 = new Dimension(10, 1);
  59.     private static final Dimension vstrut10 = new Dimension(1, 10);
  60.  
  61.     private static final Insets buttonMargin = new Insets(3, 3, 3, 3);
  62.  
  63.     protected JPanel centerPanel;
  64.  
  65.     //
  66.     // ComponentUI Interface Implementation methods
  67.     //
  68.     public static ComponentUI createUI(JComponent c) {
  69.         return new MotifFileChooserUI((JFileChooser)c);
  70.     }
  71.  
  72.     public MotifFileChooserUI(JFileChooser b) {
  73.     }
  74.             
  75.     public void installUI(JComponent c) {
  76.     fileChooser = (JFileChooser) c;
  77.     directoryPane = fileChooser.getDirectoryPane();
  78.     accessory = fileChooser.getAccessory();
  79.  
  80.     fileChooser.setLayout(new BoxLayout(fileChooser, BoxLayout.Y_AXIS));
  81.     fileChooser.add(Box.createRigidArea(vstrut10));
  82.     
  83.     // Add the directory pane 
  84.     centerPanel = new JPanel(new BorderLayout());
  85.     centerPanel.add(directoryPane, BorderLayout.CENTER);
  86.     if(accessory != null) {
  87.         centerPanel.add(accessory, BorderLayout.EAST);
  88.     }
  89.     fileChooser.add(centerPanel);
  90.     fileChooser.add(Box.createRigidArea(vstrut10));
  91.     fileChooser.add(new JSeparator());
  92.     fileChooser.add(Box.createRigidArea(vstrut10));
  93.  
  94.     // Add buttons
  95.     JPanel buttonPanel = new JPanel();
  96.     buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
  97.     buttonPanel.add(Box.createGlue());
  98.  
  99.     okayButton = (JButton) buttonPanel.add(new JButton("OK"));    
  100.     okayButton.setMargin(buttonMargin);
  101.     buttonPanel.add(Box.createGlue());
  102.     okayButton.addActionListener(okayAction);
  103.  
  104.     updateButton = (JButton) buttonPanel.add(new JButton("Update")); 
  105.     updateButton.setMargin(buttonMargin);
  106.     updateButton.addActionListener(updateAction);
  107.     updateButton.setEnabled(false);
  108.     buttonPanel.add(Box.createGlue());
  109.  
  110.     cancelButton = (JButton) buttonPanel.add(new JButton("Cancel")); 
  111.     cancelButton.setMargin(buttonMargin);
  112.     cancelButton.addActionListener(cancelAction);
  113.     buttonPanel.add(Box.createGlue());
  114.  
  115.     helpButton = (JButton) buttonPanel.add(new JButton("Help"));
  116.     helpButton.setMargin(buttonMargin);
  117.     helpButton.setEnabled(false);
  118.     buttonPanel.add(Box.createGlue());
  119.  
  120.     fileChooser.add(buttonPanel);
  121.     fileChooser.add(Box.createRigidArea(vstrut10));
  122.     }   
  123.  
  124.     public void uninstallUI(JComponent c) {
  125.     if(c != fileChooser) {
  126.         throw new IllegalComponentStateException(this + " was asked to deinstall() " 
  127.         + c + " when it only knows about " + fileChooser + "."); 
  128.     }
  129.  
  130.     centerPanel = null;
  131.     directoryPane = null;
  132.     fileChooser = null;
  133.     accessory = null;
  134.  
  135.     fileChooser.removeAll();
  136.     fileChooser = null;
  137.     }
  138.  
  139.     public Dimension getPreferredSize(JComponent x) {
  140.     return PREF_SIZE;
  141.     }
  142.     
  143.     public Dimension getMinimumSize(JComponent x)  {
  144.     return MIN_SIZE;
  145.     }
  146.     
  147.     public Dimension getMaximumSize(JComponent x) {
  148.     return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  149.     }
  150.  
  151.     /**
  152.      * Action when user cancels.
  153.      * <p>
  154.      * Warning: serialized objects of this class will not be compatible with
  155.      * future swing releases.  The current serialization support is appropriate
  156.      * for short term storage or RMI between Swing1.0 applications.  It will
  157.      * not be possible to load serialized Swing1.0 objects with future releases
  158.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  159.      * baseline for the serialized form of Swing objects.
  160.      */
  161.     protected class CancelAction extends AbstractAction {
  162.     public void actionPerformed(ActionEvent e) {
  163.         fileChooser.performCancel();
  164.     }
  165.     }
  166.  
  167.     /**
  168.      * Action when user selects OK.
  169.      * <p>
  170.      * Warning: serialized objects of this class will not be compatible with
  171.      * future swing releases.  The current serialization support is appropriate
  172.      * for short term storage or RMI between Swing1.0 applications.  It will
  173.      * not be possible to load serialized Swing1.0 objects with future releases
  174.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  175.      * baseline for the serialized form of Swing objects.
  176.      */
  177.     protected class OkayAction extends AbstractAction {
  178.     public void actionPerformed(ActionEvent e) {
  179.         fileChooser.performOkay();
  180.     }
  181.     }
  182.  
  183.     /**
  184.      * Action for update requests.
  185.      * <p>
  186.      * Warning: serialized objects of this class will not be compatible with
  187.      * future swing releases.  The current serialization support is appropriate
  188.      * for short term storage or RMI between Swing1.0 applications.  It will
  189.      * not be possible to load serialized Swing1.0 objects with future releases
  190.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  191.      * baseline for the serialized form of Swing objects.
  192.      */
  193.     protected class UpdateAction extends AbstractAction {
  194.     public void actionPerformed(ActionEvent e) {
  195.     }
  196.     }
  197. }
  198.