First commit

This commit is contained in:
Alessandro Ferro
2023-07-22 10:44:36 +02:00
parent b3ad4a0882
commit dde958babd
58 changed files with 3723 additions and 0 deletions

View File

@ -0,0 +1,173 @@
package views;
import java.awt.Color;
import javax.imageio.ImageIO;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.border.EmptyBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import code.GuiAbstractions.Implementations.JGenericTextArea;
import controllers.NotepadController;
import views.interfaces.INotepadFrame;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.JScrollPane;
public class Notepad extends JFrame implements INotepadFrame {
private static final long serialVersionUID = 1L;
private NotepadController controller;
/**
* Create the application.
*/
JTextArea textArea;
public Notepad(Object controller) {
this.controller = (NotepadController) controller;
setTitle(this.controller.getFilePath());
setBounds(100, 100, 800, 600);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 38, 764, 512);
getContentPane().add(scrollPane);
textArea = new JTextArea();
scrollPane.setViewportView(textArea);
textArea.setTabSize(4);
textArea.setFont(new Font("Monospaced", Font.PLAIN, 14));
textArea.setCaretPosition(0);
textArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
// Called when text is inserted into the document
handleTextChange();
}
@Override
public void removeUpdate(DocumentEvent e) {
// Called when text is removed from the document
handleTextChange();
}
@Override
public void changedUpdate(DocumentEvent e) {
// Called when attributes of the document change
// NO OP
}
private void handleTextChange() {
if(!((NotepadController)controller).isUnsaved()) {
((NotepadController)controller).setUnsaved(true);
setTitle(((NotepadController)controller).getTitle());
}
}
});
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
toolBar.setBounds(10, 0, 614, 37);
toolBar.setBackground(new Color(240, 240, 240));
JButton saveBtn = new JButton();
saveBtn.setBorderPainted(false);
saveBtn.setBorder(new EmptyBorder(0, 0, 0, 0)); // Set empty border
saveBtn.setToolTipText("Save");
try {
saveBtn.setIcon(new ImageIcon(ImageIO.read(getClass().getClassLoader().getResource("save_icon.png")).getScaledInstance(25, 25, Image.SCALE_SMOOTH)));
saveBtn.setBackground(new Color(240, 240, 240));
saveBtn.setBorderPainted(false);
saveBtn.setEnabled(true);
}catch(IOException ex) {
saveBtn.setText("Save");
}
saveBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
((NotepadController)controller).writeOnFile(textArea.getText());
((NotepadController)controller).setUnsaved(false);
setTitle(((NotepadController)controller).getTitle());
}
// Hover on
@Override
public void mouseEntered(MouseEvent e) {
if(saveBtn.isEnabled())
saveBtn.setBackground(new Color(220, 220, 220));
}
// Hover off
@Override
public void mouseExited(MouseEvent e) {
saveBtn.setBackground(new Color(240, 240, 240));
}
});
JButton searchBtn = new JButton();
searchBtn.setBorderPainted(false);
searchBtn.setBorder(new EmptyBorder(0, 0, 0, 0)); // Set empty border);
searchBtn.setToolTipText("Serch/Replace");
try {
searchBtn.setIcon(new ImageIcon(ImageIO.read(getClass().getClassLoader().getResource("search_icon.png")).getScaledInstance(25, 25, Image.SCALE_SMOOTH)));
searchBtn.setBackground(new Color(240, 240, 240));
searchBtn.setBorderPainted(false);
searchBtn.setEnabled(true);
}catch(IOException ex) {
searchBtn.setText("Serch/Replace");
}
searchBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
((NotepadController)controller).showFindAndReplace(new JGenericTextArea(textArea));
}
// Hover on
@Override
public void mouseEntered(MouseEvent e) {
if(searchBtn.isEnabled())
searchBtn.setBackground(new Color(220, 220, 220));
}
// Hover off
@Override
public void mouseExited(MouseEvent e) {
searchBtn.setBackground(new Color(240, 240, 240));
}
});
toolBar.add(saveBtn);
toolBar.add(Box.createHorizontalStrut(15));
toolBar.add(searchBtn);
getContentPane().add(toolBar);
/**
* Close "Find and Replace" if this window
* gets closed
*/
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
((NotepadController)controller).disposeFindAndReplaceFrame();
}
});
}
public void displayContent(String content) {
textArea.setText(content);
}
}