-2
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.lang.Math.*;
import java.text.*;
import java.io.*;
import java.awt.Scrollbar.*;
import javax.swing.*;
import java.awt.datatransfer.*;

public class DFunPaint extends JApplet implements ActionListener, AdjustmentListener, MouseListener, MouseMotionListener
{
    String filename;
    JTextArea tx = new JTextArea();
    JMenuBar mb =new JMenuBar();
    JMenu f = new JMenu("File");
    JMenuItem n = new JMenuItem("New");
    JMenuItem o = new JMenuItem("Open");
    JMenuItem s = new JMenuItem("Save");
    JMenuItem e = new JMenuItem("Exit");
    JMenu ed = new JMenu("Edit");
    JMenuItem cut = new JMenuItem("Cut");
    JMenuItem copy = new JMenuItem("Copy");
    JMenuItem paste = new JMenuItem("Paste");
    JMenu format = new JMenu("Format");
    JMenuItem  Word = new JMenuItem("Word Wrap");
    JMenuItem  Font = new JMenuItem("Font");
    JMenu view = new JMenu("View");
    JMenuItem  StatusBar= new JMenuItem("StatusBar");
    JMenu help = new JMenu("Help");
    JMenuItem  About = new JMenuItem("About");
    JMenuItem Topics = new JMenuItem("Topics");

    private JPanel p1 = new JPanel(new BorderLayout());

    public void init(){
        setLayout(new BorderLayout());
        f.add(n);
        f.add(o);
        f.add(s);
        f.add(e);
        mb.add(f);
        ed.add(cut);
        ed.add(copy);
        ed.add(paste);
        mb.add(ed);
        format.add(Word);
        format.add(Font);
        mb.add(format);
        mb.add(view);
        view.add(StatusBar);
        mb.add(help);
        help.add(About);
        JMenuItem Topics = new JMenuItem("Topics");
        help.add(Topics);

        p1.add(mb);

        add(p1,"North");

        n.addActionListener(this);
        o.addActionListener(this);
        s.addActionListener(this);
        e.addActionListener(this);
        cut.addActionListener(this);
        copy.addActionListener(this);
        paste.addActionListener(this);
        About.addActionListener(this);
        Topics.addActionListener(this);
    }

    public void ActionPerformed(ActionEvent e)
    {
        if (e.getSource() == n)
            tx.setText(" ");
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == o)
            JFileDialog fd = new JFileDialog( DFunPaint, "select File",JFileDialog.LOAD);
        fd.show();
        if (fd.getFile()!=null)
        {
            filename = fd.getDirectory() + fd.getFile();
            setTitle(filename);
            ReadFile();
        }
        tx.requestFocus();
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == s)
            FileDialog fd = new FileDialog(DFunPaint,"Save File",FileDialog.SAVE);
        fd.show();
        if (fd.getFile()!=null)
        {
            filename = fd.getDirectory() + fd.getFile();
            setTitle(filename);
            try
            {
                DataOutputStream d = new DataOutputStream(new FileOutputStream(filename));
                String line = tx.getText();
                BufferedReader br = new BufferedReader(new StringReader(line));
                while((line = br.readLine())!=null)
                {
                    d.writeBytes(line + "\r\n");
                    d.close();
                }
            }
            catch(Exception ex)
            {
                System.out.println("File not found");
            }
            tx.requestFocus();
        }
    }

    public void ctionPerformed(ActionEvent ae)
    {
        if (ae.getSource() == e)
            System.exit(0);
    }

    public void ActionPerformed(ActionEvent e)
    {
        if (e.getSource() == cut)
            String sel =
        StringSelection ss = new StringSelection(tx.getSelectedText());
        clip.setContents(ss,ss);
        tx.replaceRange(" ",tx.getSelectionStart(),tx.getSelectionEnd());
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == copy)
            String sel = tx.getSelectedText();
            StringSelection clipString = new StringSelection(sel);
            clip.setContents(clipString, clipString);
        }

    public void ActionPerformed(ActionEvent e)
    {
        if (e.getSource() == paste)
            Transferable cliptran = clip.getContents();

        try
        {
            String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);
            tx.replaceRange(sel,tx.getSelectionStart(),tx.getSelectionEnd());
        }
        catch(Exception exc)
        {
            System.out.println("not string flavour");
        }
    }
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
  • @mrdg: "Huge code, not formatted.." I tried formatting it, and got the message `body is limited to 30000 characters; you entered 31819` which might explain why it is not formatted. ;) – Andrew Thompson Jun 15 '11 at 18:48

1 Answers1

2

Applets are deployed in a security sand-box by default. To access the local file-system there are basically 2 options:

  1. Digitally sign the code and get the user to OK the trust dialog when prompted. If an applet is 'trusted', it can do most the things an application can do. Certainly load and save files using a JFileChooser. Here is an example of a trusted applet using a self signed certificate. The demo applet can browse the local file system and open files in the JEditorPane.
  2. More recent Sun/Oracle JREs are Plug-In2 'next generation' architecture. They allow embedded applets to access the services of the JNLP API (supplied for Java Web Start). Using the JNLP API file services, it is possible for a sand-boxed applet to load resources from, and save resources to, the local file system (again with user approval when prompted). Here is my demo. of the JNLP API file services.

Note that I made some wild guesses about the nature of the problem. For better advice, state exactly what the problem is.

And please, not so much code in future. ;)

Community
  • 1
  • 1
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433