Skip to content

Commit

Permalink
Working directory setting
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasz-herman committed Oct 9, 2020
1 parent 0fdf003 commit 5aa04e4
Show file tree
Hide file tree
Showing 8 changed files with 167 additions and 88 deletions.
132 changes: 70 additions & 62 deletions src/main/java/com/paide/gui/editor/Editor.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,18 @@ public class Editor extends RSyntaxTextArea {
private JFileChooser inputChooser;
private JFileChooser outputChooser;
private boolean changed = false;
private RTextScrollPane panel;
private final RTextScrollPane panel;
private static final ImageIcon ERROR_ICON;

static {
InputStream stream = Editor.class.getClassLoader().getResourceAsStream("error16x16.png");
Image image = null;
try {
if(stream != null) image = ImageIO.read(stream);
if (stream != null) image = ImageIO.read(stream);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(image != null) ERROR_ICON = new ImageIcon(image);
if (image != null) ERROR_ICON = new ImageIcon(image);
else ERROR_ICON = new ImageIcon();
}
}
Expand All @@ -61,7 +61,7 @@ public Editor(RTextScrollPane panel) {
discardAllEdits();
}

public void applySettings(Settings settings){
public void applySettings(Settings settings) {
setBackground(settings.getEditorBackgroundColor());
setTextColor(settings.getEditorTextColor());
setGutterBackgroundColor(settings.getEditorGutterColor());
Expand All @@ -84,6 +84,7 @@ public void applySettings(Settings settings){
setLineWrap(settings.isEditorLineWrap());
setFont(new Font(settings.getEditorFontName(), java.awt.Font.PLAIN, settings.getEditorFontSize()));
setGutterFont(new Font(settings.getEditorFontName(), java.awt.Font.PLAIN, settings.getEditorFontSize()));
setupWorkingDirectory(settings.getWorkingDirectory());
}

private void setupHyperlinksSupport() {
Expand All @@ -99,15 +100,21 @@ private void setupHyperlinksSupport() {
});
}

private void setupFileChoosers(){
File workingDirectory = new File(System.getProperty("user.dir"));
private void setupFileChoosers() {
inputChooser = new JFileChooser();
outputChooser = new JFileChooser();
}

private void setupWorkingDirectory(String workingDirectoryPath) {
File workingDirectory = new File(workingDirectoryPath);
if(!workingDirectory.exists() || !workingDirectory.isDirectory()) {
workingDirectory = new File(System.getProperty("user.home"));
}
inputChooser.setCurrentDirectory(workingDirectory);
outputChooser.setCurrentDirectory(workingDirectory);
}

private void setupScrollPane(){
private void setupScrollPane() {
panel.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
panel.getGutter().setBackground(new JButton().getBackground());
panel.setViewportView(this);
Expand All @@ -116,13 +123,13 @@ private void setupScrollPane(){
panel.getGutter().setLineNumberFont(MainLayout.DEFAULT_FONT);
}

private void setupHighlighting(){
private void setupHighlighting() {
AbstractTokenMakerFactory atmf = (AbstractTokenMakerFactory) TokenMakerFactory.getDefaultInstance();
atmf.putMapping("text/pasm", "com.paide.gui.editor.PseudoAssemblerTokenMaker");
setSyntaxEditingStyle("text/pasm");
}

private void setupChangeListener(){
private void setupChangeListener() {
getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
Expand All @@ -141,128 +148,128 @@ public void changedUpdate(DocumentEvent e) {
});
}

private void setup(){
private void setup() {
setTabsEmulated(true);
setTabSize(4);
setFadeCurrentLineHighlight(true);
setEditable(false);
setEnabled(false);
}

public void setIconRowHeaderEnabled(boolean enabled){
public void setIconRowHeaderEnabled(boolean enabled) {
panel.setIconRowHeaderEnabled(enabled);
}

public boolean isIconRowHeaderEnabled(){
public boolean isIconRowHeaderEnabled() {
return panel.isIconRowHeaderEnabled();
}

public void setLineNumbersEnabled(boolean enabled){
public void setLineNumbersEnabled(boolean enabled) {
panel.setLineNumbersEnabled(enabled);
}

public boolean getLineNumbersEnabled(){
public boolean getLineNumbersEnabled() {
return panel.getLineNumbersEnabled();
}

public void setGutterFont(Font font){
public void setGutterFont(Font font) {
panel.getGutter().setLineNumberFont(font);
}

public void setGutterBackgroundColor(Color color){
public void setGutterBackgroundColor(Color color) {
panel.getGutter().setBackground(color);
panel.setBackground(color);
panel.getGutter().setIconRowHeaderInheritsGutterBackground(true);
}

public Color getGutterBackgroundColor(){
public Color getGutterBackgroundColor() {
return panel.getGutter().getBackground();
}

public void setTextColor(Color color){
public void setTextColor(Color color) {
setForeground(color);
setCaretColor(color);
panel.getGutter().setLineNumberColor(color);
}

public Color getTextColor(){
public Color getTextColor() {
return getForeground();
}

//DC, DS
public void setDeclarationColor(Color color){
public void setDeclarationColor(Color color) {
getSyntaxScheme().getStyle(Token.RESERVED_WORD).foreground = color;
revalidate();
}

public Color getDeclarationColor(){
public Color getDeclarationColor() {
return getSyntaxScheme().getStyle(Token.RESERVED_WORD).foreground;
}

//ass:
public void setLabelColor(Color color){
public void setLabelColor(Color color) {
getSyntaxScheme().getStyle(Token.PREPROCESSOR).foreground = color;
revalidate();
}

public Color getLabelColor(){
public Color getLabelColor() {
return getSyntaxScheme().getStyle(Token.PREPROCESSOR).foreground;
}

//INTEGER, BYTE, STRING
public void setDataTypeColor(Color color){
public void setDataTypeColor(Color color) {
getSyntaxScheme().getStyle(Token.DATA_TYPE).foreground = color;
revalidate();
}


public Color getDataTypeColor(){
public Color getDataTypeColor() {
return getSyntaxScheme().getStyle(Token.DATA_TYPE).foreground;
}

//EXIT, RET
public void setTerminalInstructionColor(Color color){
public void setTerminalInstructionColor(Color color) {
getSyntaxScheme().getStyle(Token.RESERVED_WORD_2).foreground = color;
revalidate();
}

public Color getTerminalInstructionColor(){
public Color getTerminalInstructionColor() {
return getSyntaxScheme().getStyle(Token.RESERVED_WORD_2).foreground;
}

//ADD, SUB, PUSH
public void setInstructionColor(Color color){
public void setInstructionColor(Color color) {
getSyntaxScheme().getStyle(Token.FUNCTION).foreground = color;
revalidate();
}

public Color getInstructionColor(){
public Color getInstructionColor() {
return getSyntaxScheme().getStyle(Token.FUNCTION).foreground;
}

//,+*
public void setOperatorColor(Color color){
public void setOperatorColor(Color color) {
getSyntaxScheme().getStyle(Token.OPERATOR).foreground = color;
revalidate();
}

public Color getOperatorColor(){
public Color getOperatorColor() {
return getSyntaxScheme().getStyle(Token.OPERATOR).foreground;
}

//3, 0x3, 34.0
public void setNumberColor(Color color){
public void setNumberColor(Color color) {
getSyntaxScheme().getStyle(Token.LITERAL_NUMBER_DECIMAL_INT).foreground = color;
getSyntaxScheme().getStyle(Token.LITERAL_NUMBER_FLOAT).foreground = color;
getSyntaxScheme().getStyle(Token.LITERAL_NUMBER_HEXADECIMAL).foreground = color;
revalidate();
}

public Color getNumberColor(){
public Color getNumberColor() {
return getSyntaxScheme().getStyle(Token.LITERAL_NUMBER_DECIMAL_INT).foreground;
}

public void setCommentColor(Color color){
public void setCommentColor(Color color) {
getSyntaxScheme().getStyle(Token.COMMENT_KEYWORD).foreground = color;
getSyntaxScheme().getStyle(Token.COMMENT_MULTILINE).foreground = color;
getSyntaxScheme().getStyle(Token.COMMENT_EOL).foreground = color;
Expand All @@ -272,44 +279,44 @@ public void setCommentColor(Color color){
revalidate();
}

public Color getCommentColor(){
public Color getCommentColor() {
return getSyntaxScheme().getStyle(Token.COMMENT_EOL).foreground;
}

//()
public void setSeparatorColor(Color color){
public void setSeparatorColor(Color color) {
getSyntaxScheme().getStyle(Token.SEPARATOR).foreground = color;
revalidate();
}

public Color getSeparatorColor(){
public Color getSeparatorColor() {
return getSyntaxScheme().getStyle(Token.SEPARATOR).foreground;
}

//''""
public void setQuotedColor(Color color){
public void setQuotedColor(Color color) {
getSyntaxScheme().getStyle(Token.LITERAL_STRING_DOUBLE_QUOTE).foreground = color;
getSyntaxScheme().getStyle(Token.LITERAL_CHAR).foreground = color;
revalidate();
}

public Color getQuotedColor(){
public Color getQuotedColor() {
return getSyntaxScheme().getStyle(Token.LITERAL_STRING_DOUBLE_QUOTE).foreground;
}

//'"
public void setErrorQuotedColor(Color color){
public void setErrorQuotedColor(Color color) {
getSyntaxScheme().getStyle(Token.ERROR_STRING_DOUBLE).foreground = color;
getSyntaxScheme().getStyle(Token.ERROR_CHAR).foreground = color;
revalidate();
}

public Color getErrorQuotedColor(){
public Color getErrorQuotedColor() {
return getSyntaxScheme().getStyle(Token.ERROR_STRING_DOUBLE).foreground;
}

public void openNew(){
if(showSaveChangesDialog())return;
public void openNew() {
if (showSaveChangesDialog()) return;
clearErrors();
setEnabled(true);
setEditable(true);
Expand All @@ -320,10 +327,10 @@ public void openNew(){
grabFocus();
}

public void open(){
if(showSaveChangesDialog())return;
public void open() {
if (showSaveChangesDialog()) return;
int returnVal = inputChooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION){
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = inputChooser.getSelectedFile();
clearErrors();
try {
Expand All @@ -340,8 +347,8 @@ public void open(){
}
}

public boolean save(){
if(file == null) return saveAs();
public boolean save() {
if (file == null) return saveAs();
try {
changed = false;
Files.writeString(file.toPath(), getText());
Expand All @@ -352,17 +359,17 @@ public boolean save(){
return false;
}

public boolean saveAs(){
public boolean saveAs() {
int returnVal = outputChooser.showSaveDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION){
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = outputChooser.getSelectedFile();
return save();
}
return false;
}

public void close(){
if(showSaveChangesDialog())return;
public void close() {
if (showSaveChangesDialog()) return;
clearErrors();
setEnabled(false);
setEditable(false);
Expand All @@ -372,26 +379,27 @@ public void close(){
changed = false;
}

public void exit(){
if(showSaveChangesDialog())return;
public void exit() {
if (showSaveChangesDialog()) return;
System.exit(0);
}

private boolean showSaveChangesDialog(){
if(!changed) return false;
private boolean showSaveChangesDialog() {
if (!changed) return false;
int result = JOptionPane.showConfirmDialog(null, Main.I18N.getString("save.changes.before.closing"), "", JOptionPane.YES_NO_CANCEL_OPTION);
if(result == JOptionPane.CANCEL_OPTION)return true;
if(result == JOptionPane.YES_OPTION) return !save();
if (result == JOptionPane.CANCEL_OPTION) return true;
if (result == JOptionPane.YES_OPTION) return !save();
return false;
}

public void markError(int line, String errorMessage){
public void markError(int line, String errorMessage) {
try {
panel.getGutter().addOffsetTrackingIcon(getLineStartOffset(line-1), ERROR_ICON, errorMessage);
} catch (BadLocationException ignored) { }
panel.getGutter().addOffsetTrackingIcon(getLineStartOffset(line - 1), ERROR_ICON, errorMessage);
} catch (BadLocationException ignored) {
}
}

public void clearErrors(){
public void clearErrors() {
panel.getGutter().removeAllTrackingIcons();
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/paide/gui/layout/MainLayout.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class MainLayout {
private volatile boolean running = false;

public MainLayout() {
Settings settings = new Settings();
Settings settings = Settings.getInstance();
$$$setupUI$$$();
terminal = new Terminal(jTerminal, settings);
editor = new Editor(editorPane, settings);
Expand Down
Loading

0 comments on commit 5aa04e4

Please sign in to comment.