Skip to content

Commit d7bbac4

Browse files
committed
Project View Added
1 parent e3aeb3e commit d7bbac4

File tree

5,433 files changed

+2334334
-110
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,433 files changed

+2334334
-110
lines changed

.classpath

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<classpathentry kind="lib" path="app/lib/jackson-annotations-2.9.5.jar"/>
2727
<classpathentry kind="lib" path="app/lib/commons-compress-1.8.jar"/>
2828
<classpathentry kind="lib" path="app/lib/commons-lang3-3.8.1.jar"/>
29+
<classpathentry kind="lib" path="app/lib/jexplorertree-0.0.1-SNAPSHOT.jar"/>
2930
<classpathentry combineaccessrules="false" kind="src" path="/arduino-core"/>
3031
<classpathentry kind="output" path="app/bin"/>
3132
</classpath>

app/src/processing/app/Base.java

-1
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,6 @@ public boolean accept(File dir, String name) {
854854
handleOpen(inputFile);
855855
}
856856

857-
858857
/**
859858
* Open a sketch in a new window.
860859
*

app/src/processing/app/Editor.java

+4-21
Original file line numberDiff line numberDiff line change
@@ -55,22 +55,7 @@
5555
import java.util.zip.ZipEntry;
5656
import java.util.zip.ZipFile;
5757

58-
import javax.swing.AbstractAction;
59-
import javax.swing.Box;
60-
import javax.swing.JCheckBoxMenuItem;
61-
import javax.swing.JComponent;
62-
import javax.swing.JDialog;
63-
import javax.swing.JFrame;
64-
import javax.swing.JMenu;
65-
import javax.swing.JMenuBar;
66-
import javax.swing.JMenuItem;
67-
import javax.swing.JOptionPane;
68-
import javax.swing.JPanel;
69-
import javax.swing.JSplitPane;
70-
import javax.swing.JTextArea;
71-
import javax.swing.KeyStroke;
72-
import javax.swing.SwingUtilities;
73-
import javax.swing.TransferHandler;
58+
import javax.swing.*;
7459
import javax.swing.event.MenuEvent;
7560
import javax.swing.event.MenuListener;
7661
import javax.swing.text.BadLocationException;
@@ -327,21 +312,19 @@ public void windowDeactivated(WindowEvent e) {
327312

328313

329314

330-
project = new EditorProject("/home/sami/Arduino", base, this);
315+
project = new EditorProject(PreferencesData.get("sketchbook.path"), base, this);
331316
middle.add(project);
332317
codePanel = new JPanel(new BorderLayout());
333318
editor_upper.add(codePanel);
334319
middle.add(editor_upper);
335320

336321
JSplitPane splitProject = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, project, editor_upper);
337-
splitProject.setBackground(new Color(23, 161, 165));
338322
splitProject.setContinuousLayout(true);
339323
splitProject.setResizeWeight(0.25);
340-
splitProject.setBackground(Color.BLACK);
341324
middle.add(splitProject);
342325
upper.add(middle);
343326
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upper, consolePanel);
344-
SwingUtilities.invokeLater(project);
327+
345328

346329
// repaint child panes while resizing
347330
splitPane.setContinuousLayout(true);
@@ -1673,7 +1656,7 @@ public void addLineHighlight(int line) throws BadLocationException {
16731656
}
16741657
}
16751658
}
1676-
textArea.addLineHighlight(line, new Color(1, 0, 0, 0.2f));
1659+
textArea.addLineHighlight(line, new Color(0, 0, 255, 0.2f));
16771660
textArea.setCaretPosition(textArea.getLineStartOffset(line));
16781661
}
16791662

app/src/processing/app/EditorProject.java

+86-88
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,113 @@
11
package processing.app;
22

3+
import processing.app.tools.jexplorer.JExplorerPanel;
4+
35
import javax.swing.*;
46
import javax.swing.tree.DefaultMutableTreeNode;
57
import javax.swing.tree.DefaultTreeModel;
68
import javax.swing.tree.TreePath;
79
import java.awt.*;
10+
import java.awt.event.ActionEvent;
11+
import java.awt.event.ActionListener;
812
import java.awt.event.MouseEvent;
913
import java.awt.event.MouseListener;
1014
import java.io.File;
1115

12-
public class EditorProject extends JScrollPane implements Runnable, MouseListener {
13-
14-
private DefaultMutableTreeNode root;
15-
16-
private DefaultTreeModel treeModel;
16+
public class EditorProject extends Panel implements ActionListener, MouseListener{
1717

18-
private JTree tree;
18+
private JExplorerPanel fileExplorerPanel;
1919

2020
private File fileRoot;
2121

2222
private Base base;
2323

2424
private Editor editor;
2525

26-
private String workspace = System.getProperty("user.home") + "/";
26+
private JPanel settingsbox;
27+
28+
private String path;
29+
30+
private JButton settings;
31+
32+
private JButton toggle;
33+
34+
private JFileChooser chooser;
35+
36+
private Label buttons_popup;
2737

2838
public EditorProject(String path, Base base, Editor editor){
39+
this.setLayout(new BorderLayout());
2940
fileRoot = new File(path);
3041
this.base = base;
3142
this.editor = editor;
32-
this.setPreferredSize(new Dimension(400, 1000));
43+
fileExplorerPanel = new JExplorerPanel(fileRoot, editor);
44+
buttons_popup = new Label("Toggle Project View");
45+
buttons_popup.setForeground(new Color(23, 161, 165));
46+
buttons_popup.setBackground(new Color(23, 161, 165));
47+
settingsbox = new JPanel();
48+
settingsbox.setLayout(new BoxLayout(settingsbox, BoxLayout.LINE_AXIS));
49+
settingsbox.setOpaque(true);
50+
settingsbox.setBackground(new Color(23, 161, 165));
51+
this.path = path;
52+
settings = new JButton("S");
53+
settings.addActionListener(this);
54+
settings.addMouseListener(this);
55+
toggle = new JButton("T");
56+
toggle.addActionListener(this);
57+
toggle.addMouseListener(this);
58+
this.add(settings);
59+
//settingsbox.add(new Label("Project View"));
60+
JPanel buttons_panel = new JPanel();
61+
buttons_panel.setLayout(new FlowLayout());
62+
buttons_panel.setOpaque(false);
63+
64+
settingsbox.add(settings);
65+
settingsbox.add(toggle);
66+
settingsbox.add(buttons_popup);
67+
//settingsbox.add(Box.createHorizontalGlue());
68+
//settingsbox.add(buttons_panel);
69+
this.add(settingsbox, BorderLayout.NORTH);
70+
this.add(fileExplorerPanel);
71+
3372
}
3473

35-
@Override
36-
public void run() {
37-
root = new DefaultMutableTreeNode(new FileNode(fileRoot));
38-
treeModel = new DefaultTreeModel(root);
74+
public void resetProject(){
75+
// Resetting the project View and root directory
76+
fileRoot = new File(path);
77+
fileExplorerPanel.replaceWorkingDirectory(fileRoot);
78+
79+
// Resetting the sketchbook path
80+
PreferencesData.set("sketchbook.path", path);
81+
}
3982

4083

41-
tree = new JTree(treeModel);
42-
tree.setShowsRootHandles(true);
43-
tree.addMouseListener(this);
44-
setViewportView(tree);
84+
@Override
85+
public void actionPerformed(ActionEvent e) {
86+
if(e.getSource() == settings){
87+
chooser = new JFileChooser();
88+
chooser.setCurrentDirectory(fileRoot);
89+
chooser.setDialogTitle("Choose project directory : ");
90+
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
91+
92+
if (chooser.showOpenDialog(fileExplorerPanel) == JFileChooser.APPROVE_OPTION) {
93+
System.out.println("You moved your workspace to : " + chooser.getSelectedFile());
94+
this.path = chooser.getSelectedFile().getAbsolutePath();
95+
resetProject();
96+
}
97+
else {
98+
System.out.println("No Selection ");
99+
}
100+
}
45101

102+
if(e.getSource() == toggle){
103+
//TODO
104+
}
105+
}
46106

47-
CreateChildNodes ccn =
48-
new CreateChildNodes(fileRoot, root);
49-
new Thread(ccn).start();
50-
}
51107

52108
@Override
53109
public void mouseClicked(MouseEvent e) {
54-
int selRow = tree.getRowForLocation(e.getX(), e.getY());
55-
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
56-
if(selRow != -1) {
57-
if(e.getClickCount() == 2) {
58-
String path = selPath.toString().replaceAll("\\]| |\\[|", "").replaceAll(",", File.separator);
59-
try {
60-
editor.getSketchController().addFile(new File(workspace + path));
61-
62-
} catch (Exception exception) {
63-
exception.printStackTrace();
64-
}
65-
}
66-
}
110+
67111
}
68112

69113
@Override
@@ -78,67 +122,21 @@ public void mouseReleased(MouseEvent e) {
78122

79123
@Override
80124
public void mouseEntered(MouseEvent e) {
125+
if(e.getSource() == settings){
126+
buttons_popup.setForeground(Color.WHITE);
127+
buttons_popup.setText("Change Workspace");
128+
}
81129

130+
if(e.getSource() == toggle){
131+
buttons_popup.setForeground(Color.WHITE);
132+
buttons_popup.setText("Toggle Project View");
133+
}
82134
}
83135

84136
@Override
85137
public void mouseExited(MouseEvent e) {
86-
138+
buttons_popup.setText("");
87139
}
88-
89-
public class CreateChildNodes implements Runnable {
90-
91-
private DefaultMutableTreeNode root;
92-
93-
private File fileRoot;
94-
95-
public CreateChildNodes(File fileRoot,
96-
DefaultMutableTreeNode root) {
97-
this.fileRoot = fileRoot;
98-
this.root = root;
99-
}
100-
101-
@Override
102-
public void run() {
103-
createChildren(fileRoot, root);
104-
}
105-
106-
private void createChildren(File fileRoot,
107-
DefaultMutableTreeNode node) {
108-
File[] files = fileRoot.listFiles();
109-
if (files == null) return;
110-
111-
for (File file : files) {
112-
DefaultMutableTreeNode childNode =
113-
new DefaultMutableTreeNode(new FileNode(file));
114-
node.add(childNode);
115-
if (file.isDirectory()) {
116-
createChildren(file, childNode);
117-
}
118-
}
119-
}
120-
121-
}
122-
123-
public class FileNode {
124-
125-
private File file;
126-
127-
public FileNode(File file) {
128-
this.file = file;
129-
}
130-
131-
@Override
132-
public String toString() {
133-
String name = file.getName();
134-
if (name.equals("")) {
135-
return file.getAbsolutePath();
136-
} else {
137-
return name;
138-
}
139-
}
140-
}
141-
142140
}
143141

144142

app/src/processing/app/SketchController.java

+1
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ public boolean addFile(File sourceFile) {
508508
sketch.prepareDataFolder();
509509
destFile = new File(sketch.getDataFolder(), filename);
510510
isData = true;
511+
JOptionPane.showMessageDialog(null,"This file is not supported by the Arduino editor","Invalid extension",1);
511512
}
512513

513514
if (!sourceFile.equals(destFile)) {

0 commit comments

Comments
 (0)