added lab4 ex2
This commit is contained in:
parent
2598af8d3a
commit
ddc6253386
8
src/lab4_command/ex2/FileAction.java
Normal file
8
src/lab4_command/ex2/FileAction.java
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package lab4_command.ex2;
|
||||||
|
|
||||||
|
public abstract class FileAction implements MenuAction {
|
||||||
|
protected TextFile file;
|
||||||
|
public FileAction(TextFile file) {
|
||||||
|
this.file = file;
|
||||||
|
}
|
||||||
|
}
|
5
src/lab4_command/ex2/MenuAction.java
Normal file
5
src/lab4_command/ex2/MenuAction.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package lab4_command.ex2;
|
||||||
|
|
||||||
|
public interface MenuAction {
|
||||||
|
void execute();
|
||||||
|
}
|
56
src/lab4_command/ex2/TextEditor.java
Normal file
56
src/lab4_command/ex2/TextEditor.java
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package lab4_command.ex2;
|
||||||
|
|
||||||
|
import lab4_command.ex2.actions.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class TextEditor {
|
||||||
|
private ArrayList<MenuAction> menu = new ArrayList<>();
|
||||||
|
private TextFile file;
|
||||||
|
|
||||||
|
public TextEditor(TextFile file) {
|
||||||
|
this.file = file;
|
||||||
|
|
||||||
|
addMenuAction(new OpenAction(this.file));
|
||||||
|
addMenuAction(new CloseAction(this.file));
|
||||||
|
addMenuAction(new SaveAction(this.file));
|
||||||
|
addMenuAction(new CopyAction(this.file));
|
||||||
|
addMenuAction(new PasteAction(this.file));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickMenu(int entry) {
|
||||||
|
MenuAction action = null;
|
||||||
|
try {
|
||||||
|
action = menu.get(entry);
|
||||||
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
System.out.println("No action bound to entry " + entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action != null) {
|
||||||
|
action.execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMenuAction(MenuAction action) {
|
||||||
|
menu.add(action);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeMenuAction(int i) {
|
||||||
|
menu.remove(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMenuAction(int i, MenuAction action) {
|
||||||
|
menu.set(i, action);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
TextFile file = new TextFile("test.txt");
|
||||||
|
TextEditor editor = new TextEditor(file);
|
||||||
|
|
||||||
|
editor.clickMenu(0);
|
||||||
|
editor.clickMenu(1);
|
||||||
|
editor.clickMenu(2);
|
||||||
|
editor.clickMenu(3);
|
||||||
|
editor.clickMenu(4);
|
||||||
|
}
|
||||||
|
}
|
29
src/lab4_command/ex2/TextFile.java
Normal file
29
src/lab4_command/ex2/TextFile.java
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package lab4_command.ex2;
|
||||||
|
|
||||||
|
public class TextFile {
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public TextFile(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open() {
|
||||||
|
System.out.println("Opening file " + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
System.out.println("Closing file " + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
System.out.println("Saving file " + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void copy() {
|
||||||
|
System.out.println("Copying file " + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void paste() {
|
||||||
|
System.out.println("Pasting file " + name);
|
||||||
|
}
|
||||||
|
}
|
15
src/lab4_command/ex2/actions/CloseAction.java
Normal file
15
src/lab4_command/ex2/actions/CloseAction.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package lab4_command.ex2.actions;
|
||||||
|
|
||||||
|
import lab4_command.ex2.FileAction;
|
||||||
|
import lab4_command.ex2.TextFile;
|
||||||
|
|
||||||
|
public class CloseAction extends FileAction {
|
||||||
|
public CloseAction(TextFile file) {
|
||||||
|
super(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
}
|
15
src/lab4_command/ex2/actions/CopyAction.java
Normal file
15
src/lab4_command/ex2/actions/CopyAction.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package lab4_command.ex2.actions;
|
||||||
|
|
||||||
|
import lab4_command.ex2.FileAction;
|
||||||
|
import lab4_command.ex2.TextFile;
|
||||||
|
|
||||||
|
public class CopyAction extends FileAction {
|
||||||
|
public CopyAction(TextFile file) {
|
||||||
|
super(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
file.copy();
|
||||||
|
}
|
||||||
|
}
|
15
src/lab4_command/ex2/actions/OpenAction.java
Normal file
15
src/lab4_command/ex2/actions/OpenAction.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package lab4_command.ex2.actions;
|
||||||
|
|
||||||
|
import lab4_command.ex2.FileAction;
|
||||||
|
import lab4_command.ex2.TextFile;
|
||||||
|
|
||||||
|
public class OpenAction extends FileAction {
|
||||||
|
public OpenAction(TextFile file) {
|
||||||
|
super(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
file.open();
|
||||||
|
}
|
||||||
|
}
|
15
src/lab4_command/ex2/actions/PasteAction.java
Normal file
15
src/lab4_command/ex2/actions/PasteAction.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package lab4_command.ex2.actions;
|
||||||
|
|
||||||
|
import lab4_command.ex2.FileAction;
|
||||||
|
import lab4_command.ex2.TextFile;
|
||||||
|
|
||||||
|
public class PasteAction extends FileAction {
|
||||||
|
public PasteAction(TextFile file) {
|
||||||
|
super(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
file.paste();
|
||||||
|
}
|
||||||
|
}
|
15
src/lab4_command/ex2/actions/SaveAction.java
Normal file
15
src/lab4_command/ex2/actions/SaveAction.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package lab4_command.ex2.actions;
|
||||||
|
|
||||||
|
import lab4_command.ex2.FileAction;
|
||||||
|
import lab4_command.ex2.TextFile;
|
||||||
|
|
||||||
|
public class SaveAction extends FileAction {
|
||||||
|
public SaveAction(TextFile file) {
|
||||||
|
super(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
file.save();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user