Skip to content

Commit

Permalink
Fixed /u/PisuCat's Windows error, started implementing inventory hints
Browse files Browse the repository at this point in the history
  • Loading branch information
rootmeanclaire committed Nov 17, 2018
1 parent 8e022cd commit da4842c
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 55 deletions.
3 changes: 2 additions & 1 deletion src/com/eshimoniak/conlangstudio/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* @author Evan Shimoniak
**/
public class Main {
public static final String VERSION = "0.1.0";
public static final String VERSION = "0.1.1";
public static File projectRoot;
public static File currFile = null;
private static MainWindow window;
Expand Down Expand Up @@ -71,6 +71,7 @@ public static void setCurrFile(File f) {

window.getEditorWrapper().addTab(f);
window.getCurrentEditor().getRawEditor().loadFile(sb.toString().replaceAll("$\\n", ""));
window.getCurrentEditor().getRawEditor().assertMatchesFile(true);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/com/eshimoniak/conlangstudio/MarkdownExtensions.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class MarkdownExtensions {
private static JSONObject pConsData;

public static void init() throws IOException {
InputStream in = MarkdownExtensions.class.getClassLoader().getResourceAsStream("res" + File.separatorChar + "pcons.json");
InputStream in = MarkdownExtensions.class.getClassLoader().getResourceAsStream("res/pcons.json");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String ln = null;
StringBuilder sb = new StringBuilder();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.eshimoniak.conlangstudio.ui.panels.editor;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.AbstractAction;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.Document;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;

public class HintingTextArea extends JTextArea {
private UndoManager undoManager;

public HintingTextArea() {
InputMap im = getInputMap(JComponent.WHEN_FOCUSED);
ActionMap am = getActionMap();

undoManager = new UndoManager();
Document doc = getDocument();
doc.addUndoableEditListener(new UndoableEditListener() {
@Override
public void undoableEditHappened(UndoableEditEvent e) {
undoManager.addEdit(e.getEdit());
}
});

setFont(new Font(Font.MONOSPACED, Font.PLAIN, 16));

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "Undo");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "Redo");

am.put("Undo", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (undoManager.canUndo()) {
undoManager.undo();
}
} catch (CannotUndoException exp) {
exp.printStackTrace();
}
}
});
am.put("Redo", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (undoManager.canRedo()) {
undoManager.redo();
}
} catch (CannotUndoException exp) {
exp.printStackTrace();
}
}
});
}
}
59 changes: 6 additions & 53 deletions src/com/eshimoniak/conlangstudio/ui/panels/editor/RawEditor.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,16 @@

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.Graphics;

import javax.swing.AbstractAction;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.Document;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;

/**
Expand All @@ -28,14 +20,12 @@
**/
public class RawEditor extends JPanel {
private JScrollPane scroller;
private JTextArea textArea;
private HintingTextArea textArea;
private boolean matchesFile = true;
private UndoManager undoManager;

public RawEditor() {
super(new BorderLayout());
textArea = new JTextArea();
textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 16));
textArea = new HintingTextArea();
textArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
Expand All @@ -55,50 +45,13 @@ public void changedUpdate(DocumentEvent e) {
scroller = new JScrollPane(textArea);
add(scroller, BorderLayout.CENTER);

undoManager = new UndoManager();
Document doc = textArea.getDocument();
doc.addUndoableEditListener(new UndoableEditListener() {
@Override
public void undoableEditHappened(UndoableEditEvent e) {
undoManager.addEdit(e.getEdit());
}
});

InputMap im = textArea.getInputMap(JComponent.WHEN_FOCUSED);
ActionMap am = textArea.getActionMap();

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "Undo");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "Redo");

am.put("Undo", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (undoManager.canUndo()) {
undoManager.undo();
}
} catch (CannotUndoException exp) {
exp.printStackTrace();
}
}
});
am.put("Redo", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (undoManager.canRedo()) {
undoManager.redo();
}
} catch (CannotUndoException exp) {
exp.printStackTrace();
}
}
});
}

public void assertMatchesFile(boolean val) {
matchesFile = val;
}
public void setText(String str) {
textArea.setText(str);
matchesFile = false;
}
public String getText() {
return textArea.getText();
Expand Down

0 comments on commit da4842c

Please sign in to comment.