home *** CD-ROM | disk | FTP | other *** search
Wrap
import com.sun.java.swing.AbstractButton; import com.sun.java.swing.Action; import com.sun.java.swing.BorderFactory; import com.sun.java.swing.Box; import com.sun.java.swing.ImageIcon; import com.sun.java.swing.JButton; import com.sun.java.swing.JComponent; import com.sun.java.swing.JFrame; import com.sun.java.swing.JMenu; import com.sun.java.swing.JMenuBar; import com.sun.java.swing.JMenuItem; import com.sun.java.swing.JPanel; import com.sun.java.swing.JScrollPane; import com.sun.java.swing.JTextArea; import com.sun.java.swing.JToolBar; import com.sun.java.swing.JViewport; import com.sun.java.swing.UIManager; import com.sun.java.swing.event.UndoableEditEvent; import com.sun.java.swing.event.UndoableEditListener; import com.sun.java.swing.text.JTextComponent; import com.sun.java.swing.text.TextAction; import com.sun.java.swing.undo.UndoManager; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.FileDialog; import java.awt.Font; import java.awt.Frame; import java.awt.Insets; import java.awt.Window; import java.beans.PropertyChangeListener; import java.net.URL; import java.util.Hashtable; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.StringTokenizer; import java.util.Vector; class Notepad extends JPanel implements UndoableEditListener { private static ResourceBundle resources; private JTextComponent editor; private Hashtable commands; private Hashtable menuItems; private JMenuBar menubar; private JToolBar toolbar; private JComponent status; protected FileDialog fileDialog; protected UndoManager undo = new UndoManager(); public static final String imageSuffix = "Image"; public static final String labelSuffix = "Label"; public static final String actionSuffix = "Action"; public static final String tipSuffix = "Tooltip"; public static final String openAction = "open"; public static final String newAction = "new"; public static final String saveAction = "save"; public static final String exitAction = "exit"; private Notepad$UndoAction undoAction = new Notepad$UndoAction(this); private Notepad$RedoAction redoAction = new Notepad$RedoAction(this); private Action[] defaultActions; Notepad() { super(true); this.defaultActions = new Action[]{new Notepad$NewAction(this), new Notepad$OpenAction(this), new Notepad$ExitAction(this), this.undoAction, this.redoAction}; try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception var8) { System.err.println("Error loading L&F: " + var8); } ((JComponent)this).setBorder(BorderFactory.createEtchedBorder()); ((Container)this).setLayout(new BorderLayout()); this.editor = this.createEditor(); this.editor.setFont(new Font("Courier", 0, 12)); this.editor.getDocument().addUndoableEditListener(this); this.commands = new Hashtable(); Action[] var1 = this.getActions(); for(int var2 = 0; var2 < var1.length; ++var2) { Action var3 = var1[var2]; this.commands.put(var3.getValue("Name"), var3); } JScrollPane var9 = new JScrollPane(); JViewport var4 = var9.getViewport(); ((Container)var4).add(this.editor); try { String var5 = resources.getString("ViewportBackingStore"); Boolean var6 = new Boolean(var5); var4.setBackingStoreEnabled(var6); } catch (MissingResourceException var7) { } this.menuItems = new Hashtable(); this.menubar = this.createMenubar(); ((Container)this).add("North", this.menubar); JPanel var10 = new JPanel(); ((Container)var10).setLayout(new BorderLayout()); ((Container)var10).add("North", this.createToolbar()); ((Container)var10).add("Center", var9); ((Container)this).add("Center", var10); ((Container)this).add("South", this.createStatusbar()); } public static void main(String[] var0) { try { String var1 = System.getProperty("java.version"); if (var1.compareTo("1.1.2") < 0) { System.out.println("!!!WARNING: Swing must be run with a 1.1.2 or higher version VM!!!"); } JFrame var2 = new JFrame(); ((Frame)var2).setTitle(resources.getString("Title")); ((Component)var2).setBackground(Color.lightGray); var2.getContentPane().setLayout(new BorderLayout()); var2.getContentPane().add("Center", new Notepad()); ((Window)var2).addWindowListener(new Notepad$AppCloser()); ((Window)var2).pack(); ((Component)var2).setSize(500, 600); ((Window)var2).show(); } catch (Throwable var3) { System.out.println("uncaught exception: " + var3); var3.printStackTrace(); } } public void undoableEditHappened(UndoableEditEvent var1) { this.undo.addEdit(var1.getEdit()); this.undoAction.update(); this.redoAction.update(); } public Action[] getActions() { return TextAction.augmentList(this.editor.getActions(), this.defaultActions); } protected JTextComponent createEditor() { return new JTextArea(); } protected JTextComponent getEditor() { return this.editor; } protected Frame getFrame() { for(Container var1 = ((Component)this).getParent(); var1 != null; var1 = ((Component)var1).getParent()) { if (var1 instanceof Frame) { return (Frame)var1; } } return null; } protected JMenuItem createMenuItem(String var1) { JMenuItem var2 = new JMenuItem(this.getResourceString(var1 + "Label")); URL var3 = this.getResource(var1 + "Image"); if (var3 != null) { ((AbstractButton)var2).setHorizontalTextPosition(4); ((AbstractButton)var2).setIcon(new ImageIcon(var3)); } String var4 = this.getResourceString(var1 + "Action"); if (var4 == null) { var4 = var1; } ((AbstractButton)var2).setActionCommand(var4); Action var5 = this.getAction(var4); if (var5 != null) { ((AbstractButton)var2).addActionListener(var5); var5.addPropertyChangeListener(this.createActionChangeListener(var2)); var2.setEnabled(var5.isEnabled()); } else { var2.setEnabled(false); } this.menuItems.put(var1, var2); return var2; } protected JMenuItem getMenuItem(String var1) { return (JMenuItem)this.menuItems.get(var1); } protected Action getAction(String var1) { return (Action)this.commands.get(var1); } protected String getResourceString(String var1) { String var2; try { var2 = resources.getString(var1); } catch (MissingResourceException var3) { var2 = null; } return var2; } protected URL getResource(String var1) { String var2 = this.getResourceString(var1); if (var2 != null) { URL var3 = this.getClass().getResource(var2); return var3; } else { return null; } } protected Container getToolbar() { return this.toolbar; } protected JMenuBar getMenubar() { return this.menubar; } protected Component createStatusbar() { this.status = new Notepad$StatusBar(this); return this.status; } private Component createToolbar() { this.toolbar = new JToolBar(); String[] var1 = this.tokenize(this.getResourceString("toolbar")); for(int var2 = 0; var2 < var1.length; ++var2) { if (var1[var2].equals("-")) { this.toolbar.add(Box.createHorizontalStrut(5)); } else { this.toolbar.add(this.createTool(var1[var2])); } } this.toolbar.add(Box.createHorizontalGlue()); return this.toolbar; } protected Component createTool(String var1) { return this.createToolbarButton(var1); } protected JButton createToolbarButton(String var1) { URL var2 = this.getResource(var1 + "Image"); Notepad$1 var3 = new Notepad$1(new ImageIcon(var2)); ((JComponent)var3).setRequestFocusEnabled(false); ((AbstractButton)var3).setMargin(new Insets(1, 1, 1, 1)); String var4 = this.getResourceString(var1 + "Action"); if (var4 == null) { var4 = var1; } Action var5 = this.getAction(var4); if (var5 != null) { ((AbstractButton)var3).setActionCommand(var4); ((AbstractButton)var3).addActionListener(var5); } else { ((AbstractButton)var3).setEnabled(false); } String var6 = this.getResourceString(var1 + "Tooltip"); if (var6 != null) { ((JComponent)var3).setToolTipText(var6); } return var3; } protected String[] tokenize(String var1) { Vector var2 = new Vector(); StringTokenizer var3 = new StringTokenizer(var1); while(var3.hasMoreTokens()) { var2.addElement(var3.nextToken()); } String[] var4 = new String[var2.size()]; for(int var5 = 0; var5 < var4.length; ++var5) { var4[var5] = (String)var2.elementAt(var5); } return var4; } protected JMenuBar createMenubar() { JMenuBar var1 = new JMenuBar(); String[] var2 = this.tokenize(this.getResourceString("menubar")); for(int var3 = 0; var3 < var2.length; ++var3) { JMenu var4 = this.createMenu(var2[var3]); if (var4 != null) { var1.add(var4); } } return var1; } protected JMenu createMenu(String var1) { String[] var2 = this.tokenize(this.getResourceString(var1)); JMenu var3 = new JMenu(this.getResourceString(var1 + "Label")); for(int var4 = 0; var4 < var2.length; ++var4) { if (var2[var4].equals("-")) { var3.addSeparator(); } else { JMenuItem var5 = this.createMenuItem(var2[var4]); var3.add(var5); } } return var3; } protected PropertyChangeListener createActionChangeListener(JMenuItem var1) { return new Notepad$ActionChangedListener(this, var1); } // $FF: synthetic method static Notepad$RedoAction access$0(Notepad var0) { return var0.redoAction; } // $FF: synthetic method static Notepad$UndoAction access$1(Notepad var0) { return var0.undoAction; } // $FF: synthetic method static JTextComponent access$2(Notepad var0) { return var0.editor; } // $FF: synthetic method static JComponent access$3(Notepad var0) { return var0.status; } static { try { resources = ResourceBundle.getBundle("Notepad", Locale.getDefault()); } catch (MissingResourceException var0) { System.err.println("Notepad.properties not found"); System.exit(1); } } }