Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions src/controller/Controller.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package controller;

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

import controller.actionlistener.OpenActionListener;
import view.TextEditorFrame;
import view.jmenuitem.BaseItem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class Controller {
private final TextEditorFrame textEditorFrame = new TextEditorFrame();
private final JFileChooser fileExplorer = new JFileChooser();

public Controller() {
//You could create it's own controller that you can call in this big controller.
//something like JMenuItemController menuItemController = new JMenuItemController();
//menuItemController.control();
String filePath = "C:/Users/Dhruv/Desktop/Java Course Materials/"; //default file path name - yet to be given by professor!
fileExplorer.setCurrentDirectory(new File(filePath)); // 'Citation: From the problem statement (example)'
FileNameExtensionFilter filter = new FileNameExtensionFilter("Text files", "txt"); // Filter to accept only file with .txt extension
fileExplorer.setFileFilter(filter);

BaseItem openItem = textEditorFrame
.getTextEditorMenuBar()
.getFileMenu()
.getOpenItem();

textEditorFrame
.getTextEditorMenuBar()
.getFileMenu().addItemActionListener(openItem, new OpenActionListener(fileExplorer, textEditorFrame));
}
}
78 changes: 78 additions & 0 deletions src/controller/actionlistener/OpenActionListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package controller.actionlistener;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.text.Highlighter;

import view.TextEditorFrame;
import view.jmenuitem.BaseItem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class OpenActionListener implements ActionListener {
private Highlighter hl;
private BaseItem openItem;
private JFileChooser fileExplorer;
private JTextArea jta;
private JLabel label;


public OpenActionListener(JFileChooser fileExplorer, TextEditorFrame textEditorFrame) {
this.openItem = textEditorFrame.getTextEditorMenuBar().getFileMenu().getOpenItem();
this.fileExplorer = fileExplorer;
this.jta = ((JTextArea) textEditorFrame.getTextEditorScrollPane().getViewport().getView());
this.hl = jta.getHighlighter();
this.label = textEditorFrame.getLabel();
}

@Override
public void actionPerformed(ActionEvent e) {
hl.removeAllHighlights();
String getFileName;
String getFilePath;
if (e.getSource().equals(openItem)) { // action when user selects open menuitem
fileExplorer.setDialogTitle("Choose a File to open");
int result = fileExplorer.showOpenDialog(fileExplorer); // opening the open dialogue window
if (result == JFileChooser.APPROVE_OPTION) { // when user chooses open option
File file = fileExplorer.getSelectedFile();
getFilePath = fileExplorer.getSelectedFile().getPath(); //getting the complete path of the file
getFileName = fileExplorer.getSelectedFile().getName(); // getting the name of the file
FileReader fr;
try {
fr = new FileReader(getFilePath);
jta.setFont(new Font("Serif", Font.PLAIN, 20));
jta.setBackground(Color.WHITE);
jta.setBorder(null);
jta.read(fr, null); // reading the file chosen by user
label.setText("You have opened: " + getFileName + " file");

//You can add these in later..
/*searchMenu.removeAll();
addSearchItems.clear();
searchMenu.add(searchMenuItem);

oldBookMarkMenu.removeAll();
oldBookMarkItem1.removeAll();
addSearchItems.clear();
addSearchItemsSorted.clear();
bookMarkPosition.clear();*/
} catch (IOException e1) {
label.setText("System cannot find " + getFileName);
}
}
}

}
}
53 changes: 53 additions & 0 deletions src/view/TextEditorFrame.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package view;

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class TextEditorFrame extends JFrame {
private static final String NAME = "Text Editor";
private TextEditorScrollPane textEditorScrollPane;
private TextEditorMenuBar textEditorMenuBar;
private JLabel label = new JLabel();

public TextEditorFrame() {
super(NAME);
initilaze();
setFrameSpecs();
}

private void initilaze() {
textEditorScrollPane = new TextEditorScrollPane();
textEditorMenuBar = new TextEditorMenuBar();
label.setPreferredSize(new Dimension(400, 20));
this.add(textEditorScrollPane, BorderLayout.CENTER);
this.setJMenuBar(textEditorMenuBar);
this.add(label, BorderLayout.PAGE_END);
}

private void setFrameSpecs() {
this.setLayout(new BorderLayout());
this.setSize(800, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public TextEditorScrollPane getTextEditorScrollPane() {
return textEditorScrollPane;
}

public TextEditorMenuBar getTextEditorMenuBar() {
return textEditorMenuBar;
}

public JLabel getLabel() {
return label;
}
}
29 changes: 29 additions & 0 deletions src/view/TextEditorMenuBar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package view;

import javax.swing.JMenuBar;

import view.jmenu.FileMenu;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class TextEditorMenuBar extends JMenuBar {
private FileMenu fileMenu;

public TextEditorMenuBar() {
initialize();
}

private void initialize() {
fileMenu = new FileMenu();
this.add(fileMenu);
}

public FileMenu getFileMenu() {
return fileMenu;
}
}

17 changes: 17 additions & 0 deletions src/view/TextEditorScrollPane.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package view;

import javax.swing.JScrollPane;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class TextEditorScrollPane extends JScrollPane {

public TextEditorScrollPane() {
super(new TextEditorTextArea(), JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
}

}
23 changes: 23 additions & 0 deletions src/view/TextEditorTextArea.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package view;

import java.awt.Font;
import javax.swing.JTextArea;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class TextEditorTextArea extends JTextArea {
private final static int ROWS = 20;
private final static int COLS = 60;

public TextEditorTextArea() {
super(ROWS, COLS);
setEditable(true);
setWrapStyleWord(true);
setLineWrap(true);
setFont(new Font("Serif", Font.PLAIN, 20));
}
}
69 changes: 69 additions & 0 deletions src/view/jmenu/FileMenu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package view.jmenu;

import java.awt.event.ActionListener;
import javax.swing.JMenu;

import view.jmenuitem.BaseItem;
import view.jmenuitem.CloseItem;
import view.jmenuitem.ExitItem;
import view.jmenuitem.OpenItem;
import view.jmenuitem.SaveAsItem;
import view.jmenuitem.SaveItem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class FileMenu extends JMenu {
private static final String NAME = "File";
private OpenItem openItem;
private CloseItem closeItem;
private SaveAsItem saveAsItem;
private SaveItem saveItem;
private ExitItem exitItem;

public FileMenu() {
super(NAME);
openItem = new OpenItem();
closeItem = new CloseItem();
saveAsItem = new SaveAsItem();
saveItem = new SaveItem();
exitItem = new ExitItem();
this.add(openItem);
this.addSeparator();
this.add(closeItem);
this.addSeparator();
this.add(saveAsItem);
this.addSeparator();
this.add(saveItem);
this.addSeparator();
this.add(exitItem);
this.addSeparator();
}

public void addItemActionListener(BaseItem item, ActionListener listener) {
item.addActionListener(listener);
}

public OpenItem getOpenItem() {
return openItem;
}

public CloseItem getCloseItem() {
return closeItem;
}

public SaveAsItem getSaveAsItem() {
return saveAsItem;
}

public SaveItem getSaveItem() {
return saveItem;
}

public ExitItem getExitItem() {
return exitItem;
}
}
16 changes: 16 additions & 0 deletions src/view/jmenuitem/BaseItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package view.jmenuitem;

import javax.swing.JMenuItem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class BaseItem extends JMenuItem {

protected BaseItem(String name) {
super(name);
}
}
14 changes: 14 additions & 0 deletions src/view/jmenuitem/CloseItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package view.jmenuitem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class CloseItem extends BaseItem {

public CloseItem() {
super("Close");
}
}
13 changes: 13 additions & 0 deletions src/view/jmenuitem/ExitItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package view.jmenuitem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class ExitItem extends BaseItem {
public ExitItem() {
super("Exit");
}
}
14 changes: 14 additions & 0 deletions src/view/jmenuitem/OpenItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package view.jmenuitem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class OpenItem extends BaseItem {

public OpenItem() {
super("Open...");
}
}
13 changes: 13 additions & 0 deletions src/view/jmenuitem/SaveAsItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package view.jmenuitem;

/**
* Description
*
* @author swkumar (swkumar@groupon.com)
* @since 1.0.0
*/
public class SaveAsItem extends BaseItem {
public SaveAsItem() {
super("Save as...");
}
}
Loading