home *** CD-ROM | disk | FTP | other *** search
/ Australian PC Authority 1999 May / may1999.iso / May / JBUILDER / JSAMPLES.Z / Notepad.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-30  |  11.0 KB  |  353 lines

  1. import com.sun.java.swing.AbstractButton;
  2. import com.sun.java.swing.Action;
  3. import com.sun.java.swing.BorderFactory;
  4. import com.sun.java.swing.Box;
  5. import com.sun.java.swing.ImageIcon;
  6. import com.sun.java.swing.JButton;
  7. import com.sun.java.swing.JComponent;
  8. import com.sun.java.swing.JFrame;
  9. import com.sun.java.swing.JMenu;
  10. import com.sun.java.swing.JMenuBar;
  11. import com.sun.java.swing.JMenuItem;
  12. import com.sun.java.swing.JPanel;
  13. import com.sun.java.swing.JScrollPane;
  14. import com.sun.java.swing.JTextArea;
  15. import com.sun.java.swing.JToolBar;
  16. import com.sun.java.swing.JViewport;
  17. import com.sun.java.swing.UIManager;
  18. import com.sun.java.swing.event.UndoableEditEvent;
  19. import com.sun.java.swing.event.UndoableEditListener;
  20. import com.sun.java.swing.text.JTextComponent;
  21. import com.sun.java.swing.text.TextAction;
  22. import com.sun.java.swing.undo.UndoManager;
  23. import java.awt.BorderLayout;
  24. import java.awt.Color;
  25. import java.awt.Component;
  26. import java.awt.Container;
  27. import java.awt.FileDialog;
  28. import java.awt.Font;
  29. import java.awt.Frame;
  30. import java.awt.Insets;
  31. import java.awt.Window;
  32. import java.beans.PropertyChangeListener;
  33. import java.net.URL;
  34. import java.util.Hashtable;
  35. import java.util.Locale;
  36. import java.util.MissingResourceException;
  37. import java.util.ResourceBundle;
  38. import java.util.StringTokenizer;
  39. import java.util.Vector;
  40.  
  41. class Notepad extends JPanel implements UndoableEditListener {
  42.    private static ResourceBundle resources;
  43.    private JTextComponent editor;
  44.    private Hashtable commands;
  45.    private Hashtable menuItems;
  46.    private JMenuBar menubar;
  47.    private JToolBar toolbar;
  48.    private JComponent status;
  49.    protected FileDialog fileDialog;
  50.    protected UndoManager undo = new UndoManager();
  51.    public static final String imageSuffix = "Image";
  52.    public static final String labelSuffix = "Label";
  53.    public static final String actionSuffix = "Action";
  54.    public static final String tipSuffix = "Tooltip";
  55.    public static final String openAction = "open";
  56.    public static final String newAction = "new";
  57.    public static final String saveAction = "save";
  58.    public static final String exitAction = "exit";
  59.    private Notepad$UndoAction undoAction = new Notepad$UndoAction(this);
  60.    private Notepad$RedoAction redoAction = new Notepad$RedoAction(this);
  61.    private Action[] defaultActions;
  62.  
  63.    Notepad() {
  64.       super(true);
  65.       this.defaultActions = new Action[]{new Notepad$NewAction(this), new Notepad$OpenAction(this), new Notepad$ExitAction(this), this.undoAction, this.redoAction};
  66.  
  67.       try {
  68.          UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
  69.       } catch (Exception var8) {
  70.          System.err.println("Error loading L&F: " + var8);
  71.       }
  72.  
  73.       ((JComponent)this).setBorder(BorderFactory.createEtchedBorder());
  74.       ((Container)this).setLayout(new BorderLayout());
  75.       this.editor = this.createEditor();
  76.       this.editor.setFont(new Font("Courier", 0, 12));
  77.       this.editor.getDocument().addUndoableEditListener(this);
  78.       this.commands = new Hashtable();
  79.       Action[] var1 = this.getActions();
  80.  
  81.       for(int var2 = 0; var2 < var1.length; ++var2) {
  82.          Action var3 = var1[var2];
  83.          this.commands.put(var3.getValue("Name"), var3);
  84.       }
  85.  
  86.       JScrollPane var9 = new JScrollPane();
  87.       JViewport var4 = var9.getViewport();
  88.       ((Container)var4).add(this.editor);
  89.  
  90.       try {
  91.          String var5 = resources.getString("ViewportBackingStore");
  92.          Boolean var6 = new Boolean(var5);
  93.          var4.setBackingStoreEnabled(var6);
  94.       } catch (MissingResourceException var7) {
  95.       }
  96.  
  97.       this.menuItems = new Hashtable();
  98.       this.menubar = this.createMenubar();
  99.       ((Container)this).add("North", this.menubar);
  100.       JPanel var10 = new JPanel();
  101.       ((Container)var10).setLayout(new BorderLayout());
  102.       ((Container)var10).add("North", this.createToolbar());
  103.       ((Container)var10).add("Center", var9);
  104.       ((Container)this).add("Center", var10);
  105.       ((Container)this).add("South", this.createStatusbar());
  106.    }
  107.  
  108.    public static void main(String[] var0) {
  109.       try {
  110.          String var1 = System.getProperty("java.version");
  111.          if (var1.compareTo("1.1.2") < 0) {
  112.             System.out.println("!!!WARNING: Swing must be run with a 1.1.2 or higher version VM!!!");
  113.          }
  114.  
  115.          JFrame var2 = new JFrame();
  116.          ((Frame)var2).setTitle(resources.getString("Title"));
  117.          ((Component)var2).setBackground(Color.lightGray);
  118.          var2.getContentPane().setLayout(new BorderLayout());
  119.          var2.getContentPane().add("Center", new Notepad());
  120.          ((Window)var2).addWindowListener(new Notepad$AppCloser());
  121.          ((Window)var2).pack();
  122.          ((Component)var2).setSize(500, 600);
  123.          ((Window)var2).show();
  124.       } catch (Throwable var3) {
  125.          System.out.println("uncaught exception: " + var3);
  126.          var3.printStackTrace();
  127.       }
  128.    }
  129.  
  130.    public void undoableEditHappened(UndoableEditEvent var1) {
  131.       this.undo.addEdit(var1.getEdit());
  132.       this.undoAction.update();
  133.       this.redoAction.update();
  134.    }
  135.  
  136.    public Action[] getActions() {
  137.       return TextAction.augmentList(this.editor.getActions(), this.defaultActions);
  138.    }
  139.  
  140.    protected JTextComponent createEditor() {
  141.       return new JTextArea();
  142.    }
  143.  
  144.    protected JTextComponent getEditor() {
  145.       return this.editor;
  146.    }
  147.  
  148.    protected Frame getFrame() {
  149.       for(Container var1 = ((Component)this).getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  150.          if (var1 instanceof Frame) {
  151.             return (Frame)var1;
  152.          }
  153.       }
  154.  
  155.       return null;
  156.    }
  157.  
  158.    protected JMenuItem createMenuItem(String var1) {
  159.       JMenuItem var2 = new JMenuItem(this.getResourceString(var1 + "Label"));
  160.       URL var3 = this.getResource(var1 + "Image");
  161.       if (var3 != null) {
  162.          ((AbstractButton)var2).setHorizontalTextPosition(4);
  163.          ((AbstractButton)var2).setIcon(new ImageIcon(var3));
  164.       }
  165.  
  166.       String var4 = this.getResourceString(var1 + "Action");
  167.       if (var4 == null) {
  168.          var4 = var1;
  169.       }
  170.  
  171.       ((AbstractButton)var2).setActionCommand(var4);
  172.       Action var5 = this.getAction(var4);
  173.       if (var5 != null) {
  174.          ((AbstractButton)var2).addActionListener(var5);
  175.          var5.addPropertyChangeListener(this.createActionChangeListener(var2));
  176.          var2.setEnabled(var5.isEnabled());
  177.       } else {
  178.          var2.setEnabled(false);
  179.       }
  180.  
  181.       this.menuItems.put(var1, var2);
  182.       return var2;
  183.    }
  184.  
  185.    protected JMenuItem getMenuItem(String var1) {
  186.       return (JMenuItem)this.menuItems.get(var1);
  187.    }
  188.  
  189.    protected Action getAction(String var1) {
  190.       return (Action)this.commands.get(var1);
  191.    }
  192.  
  193.    protected String getResourceString(String var1) {
  194.       String var2;
  195.       try {
  196.          var2 = resources.getString(var1);
  197.       } catch (MissingResourceException var3) {
  198.          var2 = null;
  199.       }
  200.  
  201.       return var2;
  202.    }
  203.  
  204.    protected URL getResource(String var1) {
  205.       String var2 = this.getResourceString(var1);
  206.       if (var2 != null) {
  207.          URL var3 = this.getClass().getResource(var2);
  208.          return var3;
  209.       } else {
  210.          return null;
  211.       }
  212.    }
  213.  
  214.    protected Container getToolbar() {
  215.       return this.toolbar;
  216.    }
  217.  
  218.    protected JMenuBar getMenubar() {
  219.       return this.menubar;
  220.    }
  221.  
  222.    protected Component createStatusbar() {
  223.       this.status = new Notepad$StatusBar(this);
  224.       return this.status;
  225.    }
  226.  
  227.    private Component createToolbar() {
  228.       this.toolbar = new JToolBar();
  229.       String[] var1 = this.tokenize(this.getResourceString("toolbar"));
  230.  
  231.       for(int var2 = 0; var2 < var1.length; ++var2) {
  232.          if (var1[var2].equals("-")) {
  233.             this.toolbar.add(Box.createHorizontalStrut(5));
  234.          } else {
  235.             this.toolbar.add(this.createTool(var1[var2]));
  236.          }
  237.       }
  238.  
  239.       this.toolbar.add(Box.createHorizontalGlue());
  240.       return this.toolbar;
  241.    }
  242.  
  243.    protected Component createTool(String var1) {
  244.       return this.createToolbarButton(var1);
  245.    }
  246.  
  247.    protected JButton createToolbarButton(String var1) {
  248.       URL var2 = this.getResource(var1 + "Image");
  249.       Notepad$1 var3 = new Notepad$1(new ImageIcon(var2));
  250.       ((JComponent)var3).setRequestFocusEnabled(false);
  251.       ((AbstractButton)var3).setMargin(new Insets(1, 1, 1, 1));
  252.       String var4 = this.getResourceString(var1 + "Action");
  253.       if (var4 == null) {
  254.          var4 = var1;
  255.       }
  256.  
  257.       Action var5 = this.getAction(var4);
  258.       if (var5 != null) {
  259.          ((AbstractButton)var3).setActionCommand(var4);
  260.          ((AbstractButton)var3).addActionListener(var5);
  261.       } else {
  262.          ((AbstractButton)var3).setEnabled(false);
  263.       }
  264.  
  265.       String var6 = this.getResourceString(var1 + "Tooltip");
  266.       if (var6 != null) {
  267.          ((JComponent)var3).setToolTipText(var6);
  268.       }
  269.  
  270.       return var3;
  271.    }
  272.  
  273.    protected String[] tokenize(String var1) {
  274.       Vector var2 = new Vector();
  275.       StringTokenizer var3 = new StringTokenizer(var1);
  276.  
  277.       while(var3.hasMoreTokens()) {
  278.          var2.addElement(var3.nextToken());
  279.       }
  280.  
  281.       String[] var4 = new String[var2.size()];
  282.  
  283.       for(int var5 = 0; var5 < var4.length; ++var5) {
  284.          var4[var5] = (String)var2.elementAt(var5);
  285.       }
  286.  
  287.       return var4;
  288.    }
  289.  
  290.    protected JMenuBar createMenubar() {
  291.       JMenuBar var1 = new JMenuBar();
  292.       String[] var2 = this.tokenize(this.getResourceString("menubar"));
  293.  
  294.       for(int var3 = 0; var3 < var2.length; ++var3) {
  295.          JMenu var4 = this.createMenu(var2[var3]);
  296.          if (var4 != null) {
  297.             var1.add(var4);
  298.          }
  299.       }
  300.  
  301.       return var1;
  302.    }
  303.  
  304.    protected JMenu createMenu(String var1) {
  305.       String[] var2 = this.tokenize(this.getResourceString(var1));
  306.       JMenu var3 = new JMenu(this.getResourceString(var1 + "Label"));
  307.  
  308.       for(int var4 = 0; var4 < var2.length; ++var4) {
  309.          if (var2[var4].equals("-")) {
  310.             var3.addSeparator();
  311.          } else {
  312.             JMenuItem var5 = this.createMenuItem(var2[var4]);
  313.             var3.add(var5);
  314.          }
  315.       }
  316.  
  317.       return var3;
  318.    }
  319.  
  320.    protected PropertyChangeListener createActionChangeListener(JMenuItem var1) {
  321.       return new Notepad$ActionChangedListener(this, var1);
  322.    }
  323.  
  324.    // $FF: synthetic method
  325.    static Notepad$RedoAction access$0(Notepad var0) {
  326.       return var0.redoAction;
  327.    }
  328.  
  329.    // $FF: synthetic method
  330.    static Notepad$UndoAction access$1(Notepad var0) {
  331.       return var0.undoAction;
  332.    }
  333.  
  334.    // $FF: synthetic method
  335.    static JTextComponent access$2(Notepad var0) {
  336.       return var0.editor;
  337.    }
  338.  
  339.    // $FF: synthetic method
  340.    static JComponent access$3(Notepad var0) {
  341.       return var0.status;
  342.    }
  343.  
  344.    static {
  345.       try {
  346.          resources = ResourceBundle.getBundle("Notepad", Locale.getDefault());
  347.       } catch (MissingResourceException var0) {
  348.          System.err.println("Notepad.properties not found");
  349.          System.exit(1);
  350.       }
  351.    }
  352. }
  353.