Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Pigibook;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- import javax.swing.JCheckBoxMenuItem;
- import javax.swing.JFileChooser;
- import javax.swing.JFrame;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JOptionPane;
- import javax.swing.JScrollPane;
- import javax.swing.JTextArea;
- public class Pigibook
- {
- JMenuBar menuBar;
- JMenu fileMenu, editMenu, formatMenu, viewMenu, helpMenu, networkingMenu;
- JTextArea textArea;
- JFrame frame;
- JScrollPane scrollPane;
- JMenuItem newItem, openItem, saveAsItem, exitItem, undoItem, copyItem, pasteItem, deleteItem, fontItem, aboutItem, sendItem, receiveItem, connectItem;
- JCheckBoxMenuItem wordWrap, statusBar;
- String[] undoOption = new String[20];
- double dim_x, dim_y, start_width, start_height;
- boolean line_wrap = false;
- String currentSavedWords = "";
- Font font;
- static Pigibook pigibook;
- Socket socket;
- BufferedReader bufferedReader;
- PrintWriter printWriter;
- //do all sorts needed at startup, to run smoothly
- public Pigibook()
- {
- font = new Font("Arial", Font.PLAIN, 12);
- getStartPosition();
- makeMenuBar();
- importantTextArea();
- }
- public static void main(String[] args)
- {
- pigibook = new Pigibook();
- pigibook.initialize();
- }
- //initialize the frame
- public void initialize()
- {
- frame = new JFrame("Pigibook");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize((int)start_width, (int)start_height);
- frame.setLocation((int)dim_x / 10, (int)dim_y / 15);
- frame.add(scrollPane);
- frame.setJMenuBar(menuBar);
- frame.setVisible(true);
- }
- //where on screen does the program show
- public void getStartPosition()
- {
- Toolkit toolkit = Toolkit.getDefaultToolkit();
- Dimension dimension = toolkit.getScreenSize();
- dim_x = dimension.getWidth();
- dim_y = dimension.getHeight();
- start_width = ((double)4 / (double)9) * dim_x;
- start_height = ((double)5 / (double)6) * dim_y;
- }
- //menu bar with all its components intact
- public void makeMenuBar()
- {
- menuBar = new JMenuBar();
- //for menu bar
- fileMenu = new JMenu("File");
- editMenu = new JMenu("Edit");
- formatMenu = new JMenu("Format");
- viewMenu = new JMenu("View");
- helpMenu = new JMenu("Help");
- networkingMenu = new JMenu("Networking");
- //for file menu
- newItem = menuItem("New", fileMenu);
- openItem = menuItem("Open", fileMenu);
- saveAsItem = menuItem("Save As", fileMenu);
- exitItem = menuItem("Exit", fileMenu);
- //for edit menu
- undoItem = menuItem("Undo", editMenu);
- copyItem = menuItem("Copy", editMenu);
- pasteItem = menuItem("Paste", editMenu);
- deleteItem = menuItem("Delete", editMenu);
- //for format menu
- wordWrap = checkBoxMenuItem("Word Wrap", formatMenu);
- fontItem = menuItem("Font", formatMenu);
- //for view menu
- statusBar = checkBoxMenuItem("Status Bar", viewMenu);
- //for help menu
- aboutItem = menuItem("About Pigibook", helpMenu);
- //for networking menu
- sendItem = menuItem("Send", networkingMenu);
- receiveItem = menuItem("Receive", networkingMenu);
- connectItem = menuItem("Connect...", networkingMenu);
- menuBar.add(fileMenu);
- menuBar.add(editMenu);
- menuBar.add(formatMenu);
- menuBar.add(viewMenu);
- menuBar.add(helpMenu);
- menuBar.add(networkingMenu);
- }
- //make each menu's item's functions
- public JMenuItem menuItem(String itemName, JMenu menuName)
- {
- JMenuItem theMenuItem = new JMenuItem(itemName);
- theMenuItem.addActionListener(new ListenForAction());
- menuName.add(theMenuItem);
- return theMenuItem;
- }
- //for check box menu items
- public JCheckBoxMenuItem checkBoxMenuItem(String itemName, JMenu menuName)
- {
- JCheckBoxMenuItem theMenuItem = new JCheckBoxMenuItem(itemName);
- theMenuItem.addActionListener(new ListenForAction());
- menuName.add(theMenuItem);
- return theMenuItem;
- }
- //considering text area, one important aspect of Pigibook
- public void importantTextArea()
- {
- textArea = new JTextArea(1, 1);
- textArea.setFont(font);
- changeListenerForTextArea();
- scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- }
- //change listener for text area
- public void changeListenerForTextArea()
- {
- textArea.addKeyListener(new KeyAdapter()
- {
- public void keyPressed(KeyEvent event)
- {
- sendMessages();
- }
- });
- }
- //listen for action -> respond accordingly
- private class ListenForAction implements ActionListener
- {
- public void actionPerformed(ActionEvent actionEvent)
- {
- if (actionEvent.getSource() == wordWrap)
- {
- wordWrapAction();
- }
- else if (actionEvent.getSource() == newItem)
- {
- newItemAction();
- }
- else if (actionEvent.getSource() == openItem)
- {
- openItemAction();
- }
- else if (actionEvent.getSource() == saveAsItem)
- {
- saveAsItemAction();
- }
- else if (actionEvent.getSource() == exitItem)
- {
- exitItemAction();
- }
- else if (actionEvent.getSource() == undoItem)
- {
- undoItemAction();
- }
- else if (actionEvent.getSource() == copyItem)
- {
- copyItemAction();
- }
- else if (actionEvent.getSource() == pasteItem)
- {
- pasteItemAction();
- }
- else if (actionEvent.getSource() == deleteItem)
- {
- deleteItemAction();
- }
- else if (actionEvent.getSource() == aboutItem)
- {
- aboutAuthorAction();
- }
- else if (actionEvent.getSource() == fontItem)
- {
- fontItemAction();
- }
- else if (actionEvent.getSource() == connectItem)
- {
- connectItemAction();
- }
- }
- //align text for nice view
- public void wordWrapAction()
- {
- if (!line_wrap)
- {
- line_wrap = true;
- textArea.setLineWrap(true);
- textArea.setWrapStyleWord(true);
- }
- else
- {
- line_wrap = false;
- textArea.setLineWrap(false);
- textArea.setWrapStyleWord(false);
- }
- }
- //delete with/without save
- public void newItemAction()
- {
- specialExit();
- }
- //load up an already written file
- public void openItemAction()
- {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.showOpenDialog(null);
- openFile(fileChooser.getSelectedFile());
- }
- //save a new text to a location
- public void saveAsItemAction()
- {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.showSaveDialog(null);
- saveFile(fileChooser.getSelectedFile());
- }
- //exit like X on window
- public void exitItemAction()
- {
- specialExit();
- System.exit(0);
- }
- //save with readers, writer...
- public void saveFile(File file)
- {
- try {
- BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
- bufferedWriter.write(textArea.getText());
- bufferedWriter.close();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- //open with writers, reader...
- public void openFile(File file)
- {
- String readedText = null;
- String endGameText = "";
- try {
- BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
- while ((readedText = bufferedReader.readLine()) != null)
- {
- endGameText += readedText;
- }
- bufferedReader.close();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- textArea.setText(endGameText);
- }
- //undo some/anyhow words
- public void undoItemAction()
- {
- }
- //copy some/anyhow words
- public void copyItemAction()
- {
- currentSavedWords = textArea.getSelectedText();
- }
- //paste some/anyhow words
- public void pasteItemAction()
- {
- textArea.insert(currentSavedWords, textArea.getCaretPosition());
- }
- //delete some/anyhow words
- public void deleteItemAction()
- {
- textArea.replaceSelection("");
- }
- //special exit choice for a lot of things
- public void specialExit()
- {
- int response = JOptionPane.showConfirmDialog(null, "Would you like to save current changes? ");
- if (response == JOptionPane.YES_OPTION)
- {
- saveAsItemAction();
- textArea.setText("");
- }
- else if (response == JOptionPane.NO_OPTION)
- {
- textArea.setText("");
- }
- else {}
- }
- //about the author!!!
- public void aboutAuthorAction()
- {
- JOptionPane.showMessageDialog(null, "Pigibook alpha\nVersion: 1.0001a (Build 3)\nProgram was create in year 2016, by an\nexcellent man, who undergoes the nickname Pigi.\nIt is licensed under Pigy corparate.", "About author", JOptionPane.INFORMATION_MESSAGE);
- }
- //changing fonts
- public void fontItemAction()
- {
- FontChooser fontChooser = new FontChooser(font);
- fontChooser.showFontDialog();
- font = fontChooser.getFontAttributes();
- textArea.setFont(font);
- System.out.println(fontChooser);
- }
- }
- //connect with all clients
- public void connectItemAction()
- {
- try {
- socket = new Socket("localhost", 3547);
- printWriter = new PrintWriter(socket.getOutputStream(), true);
- receiveMessages();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- //send every character through network
- public void sendMessages()
- {
- try {
- printWriter.println(String.valueOf(textArea.getText()));
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- //receive every character through network
- public void receiveMessages()
- {
- new Thread(new ClientHandler()).start();
- }
- //thread to handle all the receiving
- private class ClientHandler implements Runnable
- {
- public void run()
- {
- String message = null;
- try {
- bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- while ((message = bufferedReader.readLine()) != null)
- {
- if (!message.equals(""))
- {
- textArea.setText(message);
- textArea.setCaretPosition(textArea.getDocument().getLength());
- }
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement