home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / java / MyEditor.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-11-28  |  5.0 KB  |  110 lines

  1. import com.sun.java.swing.AbstractButton;
  2. import com.sun.java.swing.Action;
  3. import com.sun.java.swing.JApplet;
  4. import com.sun.java.swing.JButton;
  5. import com.sun.java.swing.JComponent;
  6. import com.sun.java.swing.JEditorPane;
  7. import com.sun.java.swing.JPanel;
  8. import com.sun.java.swing.JScrollPane;
  9. import com.sun.java.swing.JToolBar;
  10. import com.sun.java.swing.preview.JColorChooser;
  11. import com.sun.java.swing.text.BadLocationException;
  12. import com.sun.java.swing.text.EditorKit;
  13. import com.sun.java.swing.text.JTextComponent;
  14. import java.awt.BorderLayout;
  15. import java.awt.Color;
  16. import java.awt.Container;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.event.ActionListener;
  19. import java.io.BufferedInputStream;
  20. import java.io.DataInputStream;
  21. import java.io.IOException;
  22. import java.net.URL;
  23. import java.util.Hashtable;
  24.  
  25. public class MyEditor extends JPanel implements ActionListener {
  26.    private JPanel pan1;
  27.    private JEditorPane edRTF;
  28.    private EditorKit ekRTF;
  29.    private JToolBar toolMain;
  30.    private JApplet applet;
  31.    private JButton btnChange;
  32.  
  33.    public MyEditor(JApplet var1) {
  34.       ((Container)this).setLayout(new BorderLayout());
  35.       this.applet = var1;
  36.       this.edRTF = this.addEditor(this, "test.rtf");
  37.       Hashtable var2 = this.getActions(this.edRTF);
  38.       this.toolMain = new JToolBar();
  39.       this.addToolButton(this.toolMain, "B", "Bold", "font-bold", var2);
  40.       this.addToolButton(this.toolMain, "I", "Italic", "font-italic", var2);
  41.       this.addToolButton(this.toolMain, "10", "10 pt", "font-size-10", var2);
  42.       this.addToolButton(this.toolMain, "12", "12 pt", "font-size-12", var2);
  43.       this.addToolButton(this.toolMain, "14", "14 pt", "font-size-14", var2);
  44.       this.addToolButton(this.toolMain, "16", "16 pt", "font-size-16", var2);
  45.       this.addToolButton(this.toolMain, "18", "18 pt", "font-size-18", var2);
  46.       this.addToolButton(this.toolMain, "<", "Left justify", "left-justify", var2);
  47.       this.addToolButton(this.toolMain, ">", "Right justify", "right-justify", var2);
  48.       this.btnChange = new JButton("Colour");
  49.       this.btnChange.addActionListener(this);
  50.       this.btnChange.setToolTipText("Change background");
  51.       this.toolMain.add(this.btnChange);
  52.       ((Container)this).add(this.toolMain, "North");
  53.    }
  54.  
  55.    private JEditorPane addEditor(JPanel var1, String var2) {
  56.       JEditorPane var3 = new JEditorPane();
  57.       EditorKit var4 = var3.getEditorKitForContentType("application/rtf");
  58.       var3.setEditorKit(var4);
  59.       ((JTextComponent)var3).setEditable(true);
  60.  
  61.       try {
  62.          var4.read(this.openDataFile(var2), ((JTextComponent)var3).getDocument(), 0);
  63.       } catch (BadLocationException var6) {
  64.          System.err.println("Start position in doc doesn't exist: " + var6);
  65.       } catch (IOException var7) {
  66.          System.err.println("Can't open file: " + var2 + var7);
  67.       }
  68.  
  69.       ((Container)var1).add(new JScrollPane(var3), "Center");
  70.       return var3;
  71.    }
  72.  
  73.    private Hashtable getActions(JEditorPane var1) {
  74.       EditorKit var2 = var1.getEditorKit();
  75.       Action[] var3 = var2.getActions();
  76.       Hashtable var4 = new Hashtable();
  77.  
  78.       for(int var5 = 0; var5 < var3.length; ++var5) {
  79.          var4.put(var3[var5].getValue("Name"), var3[var5]);
  80.       }
  81.  
  82.       return var4;
  83.    }
  84.  
  85.    private void addToolButton(JToolBar var1, String var2, String var3, String var4, Hashtable var5) {
  86.       JButton var6 = new JButton(var2);
  87.       ((JComponent)var6).setToolTipText(var3);
  88.       ((AbstractButton)var6).addActionListener((Action)var5.get(var4));
  89.       ((Container)var1).add(var6);
  90.    }
  91.  
  92.    public void actionPerformed(ActionEvent var1) {
  93.       this.edRTF.setBackground(JColorChooser.showDialog(this, "MyEditor's colour chooser", Color.white));
  94.       this.edRTF.repaint();
  95.    }
  96.  
  97.    private DataInputStream openDataFile(String var1) {
  98.       DataInputStream var3 = null;
  99.  
  100.       try {
  101.          URL var2 = new URL(this.applet.getDocumentBase(), var1);
  102.          var3 = new DataInputStream(new BufferedInputStream(var2.openStream()));
  103.       } catch (IOException var5) {
  104.          System.err.println("Cannot open " + var1 + ": " + ((Throwable)var5).getMessage());
  105.       }
  106.  
  107.       return var3;
  108.    }
  109. }
  110.