Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javafx.scene.input.DataFormat;
- import java.awt.*;
- import java.awt.datatransfer.*;
- import java.awt.event.*;
- import java.io.*;
- import java.util.HashMap;
- import java.util.Scanner;
- import javax.sound.sampled.Clip;
- import javax.swing.*;
- public class Editor extends JFrame {
- private JTextArea textArea;
- private JMenuBar menuBar;
- private JMenu fileMenu, editMenu, viewMenu;
- private File textFile;
- private JMenuItem save, saveAs, open, exit, undo, redo, copy, cut, paste, recentFiles;
- private JFileChooser fileChooser;
- private Clipboard clipboard;
- public Editor() {
- super("Custom Text Editor: ");
- //textFile = new File("/home/faw/Documents/yikes.txt");
- //this.setTitle(textFile==null?this.getTitle()+"unknown.txt":this.getTitle()+textFile.getName());
- this.setTitle(this.getTitle() + "unknown.txt");
- setSize(600, 600);
- setLocationRelativeTo(null);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Container pane = getContentPane();
- pane.setLayout(new BorderLayout());
- //initializing the editor
- textArea = new JTextArea();
- textArea.setLineWrap(true);
- textArea.setWrapStyleWord(true);
- textArea.insert(readTextFile(), 0); //inserts text from file
- fileMenu = new JMenu("File");
- save = new JMenuItem("Save");
- saveAs = new JMenuItem("Save as...");
- open = new JMenuItem("Open");
- exit = new JMenuItem("Exit");
- fileMenu.add(open);
- fileMenu.add(save);
- fileMenu.add(saveAs);
- fileMenu.add(exit);
- editMenu = new JMenu("Edit");
- undo = new JMenuItem("Undo");
- redo = new JMenuItem("Redo");
- copy = new JMenuItem("Copy");
- cut = new JMenuItem("Cut");
- paste = new JMenuItem("Paste");
- editMenu.add(undo);
- editMenu.add(redo);
- editMenu.add(copy);
- editMenu.add(cut);
- editMenu.add(paste);
- cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
- copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
- paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
- viewMenu = new JMenu("View");
- recentFiles = new JMenuItem("Recent Files");
- viewMenu.add(recentFiles);
- menuBar = new JMenuBar();
- menuBar.add(fileMenu);
- menuBar.add(editMenu);
- menuBar.add(viewMenu);
- pane.add(menuBar, BorderLayout.NORTH);
- pane.add(textArea);
- fileChooser = new JFileChooser();
- clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
- initializeActionListeners();
- setVisible(true);
- }
- public String readTextFile() {
- String text = "";
- try {
- if (textFile != null) {
- text = "";
- Scanner scanner = new Scanner(textFile); //reads text from a file
- while (scanner.hasNextLine()) {
- text += scanner.nextLine();
- }
- scanner.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return text;
- }
- public void initializeActionListeners() {
- save.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == save) {
- save();
- }
- }
- });
- saveAs.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == saveAs) {
- saveAsAction();
- }
- }
- });
- open.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == open) {
- openFileAction();
- }
- }
- });
- exit.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == exit) {
- if (JOptionPane.showConfirmDialog(Editor.super.rootPane, "Are you sure you want to quit?",
- "Please confirm", JOptionPane.YES_NO_CANCEL_OPTION
- ) == JOptionPane.YES_OPTION) {
- System.exit(0);
- }
- }
- }
- });
- undo.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- redo.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- copy.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == copy) {
- clipboard.setContents(new StringSelection(textArea.getSelectedText()), null);
- }
- }
- });
- cut.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == cut) {
- clipboard.setContents(new StringSelection(textArea.getSelectedText()), null);
- textArea.replaceSelection("");
- }
- }
- });
- paste.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == paste) {
- Transferable transferable = clipboard.getContents(this);
- if (transferable == null) {
- return;
- }
- try {
- if (!(textArea.getSelectedText() == null)) {
- textArea.replaceSelection((String) transferable.getTransferData(DataFlavor.stringFlavor));
- } else {
- textArea.insert((String) transferable.getTransferData(DataFlavor.stringFlavor), textArea.getCaretPosition());
- }
- } catch (Exception exc) {
- exc.printStackTrace();
- }
- }
- }
- });
- recentFiles.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- }
- public void saveAsAction() {
- fileChooser.setDialogTitle("Specify a file to save.");
- JDialog saveFrame = new JDialog();
- int retValue = fileChooser.showSaveDialog(saveFrame);
- if (retValue == JFileChooser.APPROVE_OPTION) {
- if (!fileChooser.getSelectedFile().getName().endsWith(".txt")) {
- textFile = new File(fileChooser.getSelectedFile().getPath() + ".txt");
- } else textFile = new File(fileChooser.getSelectedFile().getPath());
- if (textFile.exists()) {
- if (JOptionPane.showConfirmDialog(Editor.super.rootPane, "Are you sure you want to overwrite this file?",
- "Please confirm", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.YES_OPTION){
- save();
- this.setTitle(textFile.getName());
- return;
- } else {
- saveAsAction();
- return;
- }
- }
- save();
- this.setTitle(textFile.getName());
- }
- }
- public void save() {
- if (textFile != null) {
- try {
- FileWriter fw = new FileWriter(textFile);
- fw.write(textArea.getText());
- fw.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- } else saveAsAction();
- }
- public void openFileAction() {
- fileChooser.setDialogTitle("Specify a file to open.");
- int retValue = fileChooser.showOpenDialog(this);
- if (retValue == JFileChooser.APPROVE_OPTION) {
- textFile = fileChooser.getSelectedFile();
- this.setTitle(textFile.getName());
- }
- textArea.setText(readTextFile()); //TODO: only allow for opening certain file formats to hinder the user from opening malicious files
- }
- public static void main(String[] args) {
- new Editor();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement