Skip to content
Merged
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
3 changes: 2 additions & 1 deletion src/main/java/org/editor/CodeEditor.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ public void setIsTmp(boolean isTmp) {

public boolean saveFileAs() {
var fileChooser = new JFileChooser(".");
fileChooser.setFileFilter(FileFilter.mdFilter);
fileChooser.addChoosableFileFilter(FileFilter.mdFilter);
fileChooser.addChoosableFileFilter(FileFilter.picsFilter);
fileChooser.setFileFilter(FileFilter.picsFilter);

int status = fileChooser.showSaveDialog(EditorWindow.win);
Expand Down
43 changes: 22 additions & 21 deletions src/main/java/org/editor/EditorWindow.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,10 @@

import org.editor.panels.DashboardPanel;
import com.formdev.flatlaf.FlatLightLaf;
import com.vlsolutions.swing.docking.DockKey;
import com.vlsolutions.swing.docking.DockView;
import com.vlsolutions.swing.docking.Dockable;
import com.vlsolutions.swing.docking.DockableState;
import com.vlsolutions.swing.docking.DockingConstants;
import com.vlsolutions.swing.docking.DockingDesktop;
import com.vlsolutions.swing.docking.DockingPreferences;
import com.vlsolutions.swing.docking.event.DockableStateWillChangeEvent;
import com.vlsolutions.swing.docking.event.DockableStateWillChangeListener;
import com.vlsolutions.swing.docking.ui.DockingUISettings;
import java.awt.BorderLayout;
import java.awt.Color;
Expand All @@ -36,7 +31,6 @@
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
Expand Down Expand Up @@ -113,7 +107,7 @@ public EditorWindow() {
if (current == null) {
return;
}

if (current.getDockable() instanceof CodeEditor ed) {
if (event.getFutureState().isClosed()) {
if (removeIfDirty(ed.tabIndex, ed) == false) {
Expand All @@ -123,7 +117,6 @@ public EditorWindow() {
}
});

JPanel main_panel = new JPanel(new BorderLayout());
//main_panel.add(desk, BorderLayout.CENTER);

JToolBar tool_bar = makeToolBar(
Expand All @@ -140,7 +133,7 @@ public EditorWindow() {
null,
Actions.exitAction
);
main_panel.add(tool_bar, BorderLayout.PAGE_START);
// main_panel.add(tool_bar, BorderLayout.PAGE_START);

current_file = new JLabel("[NONE]");
line_info = new JLabel();
Expand All @@ -153,7 +146,6 @@ public EditorWindow() {
new Component[]{current_file, null},
new Component[]{line_info, line_perc, seekBar, null, charset}
);
main_panel.add(bottom_bar, BorderLayout.PAGE_END);

Action[] app_actions = {
Actions.showFileTreeAction,
Expand Down Expand Up @@ -211,7 +203,7 @@ public EditorWindow() {
dashboard = new DockablePanel(new BorderLayout(), "Piccasso DashBoard", "DashBoard", "Home page", "file");
dashboard.add(new JScrollPane(new DashboardPanel()), BorderLayout.CENTER);
getContentPane().add(access_panel, BorderLayout.EAST);

desk.addDockable(dashboard);
desk.addDockable(cool_bar);
desk.setAutoHide(cool_bar, true);
Expand Down Expand Up @@ -338,17 +330,17 @@ public static void removeTab() {
return;
}

CodeEditor selected = getSelectedEditor();
if (selected == null) {
var focused = getSelectedEditor();
if (focused == null) {
return;
}

Integer index = getEditorIndex(selected);
Integer index = getEditorIndex(focused);
if (index == null) {
return;
}

removeIfDirty(index, selected);
removeIfDirty(index, focused);
}

public static void removeAllTabs() {
Expand All @@ -372,20 +364,20 @@ private static boolean removeIfDirty(Integer index, CodeEditor ed) {
win.desk.remove((Dockable) ed); // Actual removal from docking layout
tabEditors.remove(index);
migrateIndexes();

return true;
}

private static boolean isDocked(Dockable d) {
for (var state: win.desk.getDockables()) {
for (var state : win.desk.getDockables()) {
var dockable = state.getDockable();
if (dockable == d || dockable.equals(d)) {
return true;
}
}
return false;
}

private static Integer getEditorIndex(CodeEditor ed) {
for (var entry : tabEditors.entrySet()) {
if (entry.getValue() == ed) {
Expand Down Expand Up @@ -493,7 +485,12 @@ public void searchEvent(SearchEvent se) {
SearchEvent.Type type = se.getType();
SearchContext context = se.getSearchContext();
SearchResult result;
var textArea = getSelectedEditor().textArea;
var ed = getSelectedEditor();
if (ed == null) {
return;
}

var textArea = ed.textArea;

switch (type) {
default: // Prevent FindBugs warning later
Expand Down Expand Up @@ -522,15 +519,19 @@ public void searchEvent(SearchEvent se) {

@Override
public String getSelectedText() {
return getSelectedEditor().textArea.getSelectedText();
var ed = getSelectedEditor();
if (ed == null) {
return "";
}
return ed.textArea.getSelectedText();
}

private void customizeDock() {
UIManager.put("DockViewTitleBar.close", (Icon) Icons.getIcon("close"));
UIManager.put("DockTabbedPane.close", (Icon) Icons.getIcon("close"));
UIManager.put("DockViewTitleBar.isFloatButtonDisplayed", true);

var font = (Font)UIManager.get("DockViewTitleBar.titleFont");
var font = (Font) UIManager.get("DockViewTitleBar.titleFont");
UIManager.put("DockViewTitleBar.titleFont", new Font(font.getName(), font.getStyle(), 11));
}

Expand Down
12 changes: 10 additions & 2 deletions src/main/java/org/editor/events/AccessEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,21 @@
public class AccessEvents {

public static void compileAndRender(ActionEvent e) {
var code = EditorWindow.getSelectedEditor().textArea.getText();
var ed = EditorWindow.getSelectedEditor();
if (ed == null) {
return;
}
var code = ed.textArea.getText();
AccessFrame.writeSuccess("Compilation started: ");
Compiler.compile(code, true);
}

public static void compile(ActionEvent e) {
var code = EditorWindow.getSelectedEditor().textArea.getText();
var ed = EditorWindow.getSelectedEditor();
if (ed == null) {
return;
}
var code = ed.textArea.getText();
AccessFrame.writeSuccess("Compilation started: ");
Compiler.compile(code, false);
}
Expand Down
18 changes: 13 additions & 5 deletions src/main/java/org/editor/events/ListAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,14 @@
import java.awt.event.*;
import javax.swing.*;


// Reference: https://stackoverflow.com/questions/4344682/double-click-event-on-jlist-element
public class ListAction implements MouseListener {
/**
* Adapted from Stack Overflow answer by [Sandro Marques]
* https://stackoverflow.com/a/4344682 Licensed under CC BY-SA 4.0
* (https://creativecommons.org/licenses/by-sa/4.0/)
*
* URL: https://stackoverflow.com/questions/4344682/double-click-event-on-jlist-element
*/
public final class ListAction implements MouseListener {

private static final KeyStroke ENTER = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);

Expand Down Expand Up @@ -37,8 +42,8 @@ public ListAction(JList list, Action action, KeyStroke keyStroke) {
// Add the Action to the ActionMap
setAction(action);

// Handle mouse double click
list.addMouseListener(this);
var self = this; // Java wont shut up about "leaking "this" in constructor"
list.addMouseListener(self);
}

/*
Expand All @@ -51,6 +56,9 @@ public void setAction(Action action) {
// Implement MouseListener interface
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (list.getSelectedIndex() == -1)
return;

Action action = list.getActionMap().get(keyStroke);

if (action != null) {
Expand Down
15 changes: 13 additions & 2 deletions src/main/java/org/editor/events/MenuEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,12 @@ public static void gotoLineEvent(ActionEvent e) {
replaceDialog.setVisible(false);
}
GoToDialog dialog = new GoToDialog(EditorWindow.win);
var textArea = EditorWindow.getSelectedEditor().textArea;

var ed = EditorWindow.getSelectedEditor();
if (ed == null) {
return;
}
var textArea = ed.textArea;
dialog.setMaxLineNumberAllowed(textArea.getLineCount());
dialog.setVisible(true);
int line = dialog.getLineNumber();
Expand Down Expand Up @@ -94,10 +99,13 @@ static void openFile(ActionEvent e) {
}

static void saveFile(ActionEvent e) {
if (EditorWindow.tabsCount() == 1) {
if (EditorWindow.tabsCount() == 0) {
return;
}
var ed = EditorWindow.getSelectedEditor();
if (ed == null) {
return;
}
ed.saveFile();
}

Expand All @@ -106,6 +114,9 @@ static void saveFileAs(ActionEvent e) {
return;
}
var ed = EditorWindow.getSelectedEditor();
if (ed == null) {
return;
}
ed.saveFileAs();
}

Expand Down
1 change: 0 additions & 1 deletion src/main/java/org/editor/fs/FileFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,4 @@
public class FileFilter {
public static final FileNameExtensionFilter picsFilter = new FileNameExtensionFilter("Piccasso Script Files", "pics");
public static final FileNameExtensionFilter mdFilter = new FileNameExtensionFilter("Markdown Files", "md");
public static final FileNameExtensionFilter allFilter = new FileNameExtensionFilter("All Files (*.*)", "*");
}
5 changes: 1 addition & 4 deletions src/main/java/org/editor/panels/DashboardPanel.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JPanel.java to edit this template
*/
package org.editor.panels;

import java.awt.Component;
Expand Down Expand Up @@ -197,6 +193,7 @@ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
}//GEN-LAST:event_jButton1ActionPerformed

private void loadPersistedState() {
filesModel.clear();
FilePersistance
.getRecentFiles()
.forEach(item -> {
Expand Down