diff --git a/src/main/java/istlab/KisoJikken/Editor.java b/src/main/java/istlab/KisoJikken/Editor.java index 3b3f338..be783cd 100644 --- a/src/main/java/istlab/KisoJikken/Editor.java +++ b/src/main/java/istlab/KisoJikken/Editor.java @@ -36,7 +36,9 @@ JPanel topP; JSlider fontSizeJS; JButton saveB; - JButton runB; + JButton runB; // for ShellScript + JButton compileB; + JButton execB; ScriptRunner runner; public Editor(File f) { @@ -91,6 +93,13 @@ runB.addActionListener(this); topP.add(runB); runner = new ScriptRunner(file.getAbsolutePath(), runB); + } else if (textArea.getSyntaxEditingStyle()==SyntaxConstants.SYNTAX_STYLE_JAVA){ + compileB = new JButton("Compile"); + execB = new JButton("Exec"); + compileB.addActionListener(this); + execB.addActionListener(this); + topP.add(compileB); + topP.add(execB); } getContentPane().add(topP, BorderLayout.NORTH); @@ -146,6 +155,10 @@ } else if (e.getActionCommand().equals("Stop")) { runner.startstop(); runB.setText("Run"); + } else if (e.getActionCommand().equals("Compile")) { + new JCompiler(file.getAbsolutePath()); + } else if (e.getActionCommand().equals("Exec")) { + new JExecutor(file.getAbsolutePath()); } } diff --git a/src/main/java/istlab/KisoJikken/JCompiler.java b/src/main/java/istlab/KisoJikken/JCompiler.java new file mode 100644 index 0000000..bab9659 --- /dev/null +++ b/src/main/java/istlab/KisoJikken/JCompiler.java @@ -0,0 +1,53 @@ +package istlab.KisoJikken; + +import java.io.File; +import java.io.IOException; + +public class JCompiler implements Runnable { + + Thread thread; + Process process; + String absolutePath; + String pkgname; + String javafname; + + public JCompiler(String p) { + absolutePath = p; + thread = new Thread(this); + String[] ary = absolutePath.split("/"); + for (int i = 0; i < ary.length; i++) { + if (ary[i].equals("src")) { + pkgname = ary[i + 1]; + javafname = ary[i + 2]; + break; + } + } + thread.start(); + } + + @Override + public void run() { + System.out.println("== コンパイル開始 =="); + ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", + "javac -encoding UTF-8 " + pkgname + "/*.java"); + System.out.println("> cd ~" + App.nwpsrc); + System.out.println("> javac -encoding UTF-8 " + pkgname + "/*.java"); + // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); + processBuilder.directory(new File(App.userhome + App.nwpsrc)); + processBuilder.inheritIO(); + try { + process = processBuilder.start(); + // BufferedReader reader = new BufferedReader(new + // InputStreamReader(process.getInputStream())); + // String line; + // while ((line = reader.readLine()) != null) { + // jta.append(line); + // } + process.waitFor(); + } catch (IOException | InterruptedException e1) { + e1.printStackTrace(); + } + System.out.println("== コンパイル終了 =="); + thread = null; + } +} diff --git a/src/main/java/istlab/KisoJikken/JExecutor.java b/src/main/java/istlab/KisoJikken/JExecutor.java new file mode 100644 index 0000000..0f56dfa --- /dev/null +++ b/src/main/java/istlab/KisoJikken/JExecutor.java @@ -0,0 +1,54 @@ +package istlab.KisoJikken; + +import java.io.File; +import java.io.IOException; + +public class JExecutor implements Runnable { + + Thread thread; + Process process; + String absolutePath; + String pkgname; + String javafname; + + public JExecutor(String p) { + absolutePath = p; + thread = new Thread(this); + String[] ary = absolutePath.split("/"); + for (int i = 0; i < ary.length; i++) { + if (ary[i].equals("src")) { + pkgname = ary[i + 1]; + javafname = ary[i + 2].substring(0, ary[i + 2].length() - 5); + break; + } + } + thread.start(); + } + + @Override + public void run() { + System.out.println("== 実行開始 =="); + ProcessBuilder processBuilder = new ProcessBuilder("java", + pkgname + "." + javafname); + System.out.println("> cd ~" + App.nwpsrc); + System.out.println("> java " + pkgname + "." + javafname); + // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); + processBuilder.directory(new File(App.userhome + App.nwpsrc)); + processBuilder.inheritIO(); + try { + process = processBuilder.start(); + // BufferedReader reader = new BufferedReader(new + // InputStreamReader(process.getInputStream())); + // String line; + // while ((line = reader.readLine()) != null) { + // jta.append(line); + // } + process.waitFor(); + } catch (IOException | InterruptedException e1) { + e1.printStackTrace(); + } + + System.out.println("== 実行終了 =="); + thread = null; + } +} diff --git a/src/main/java/istlab/KisoJikken/ScriptRunner.java b/src/main/java/istlab/KisoJikken/ScriptRunner.java index 8214dbc..210c830 100644 --- a/src/main/java/istlab/KisoJikken/ScriptRunner.java +++ b/src/main/java/istlab/KisoJikken/ScriptRunner.java @@ -10,13 +10,14 @@ Thread thread; Process process; -JButton runB; + JButton runB; - public ScriptRunner(String shfile, JButton rB){ + public ScriptRunner(String shfile, JButton rB) { scriptfile = shfile; runB = rB; } - public void startstop(){ + + public void startstop() { if (thread == null) { thread = new Thread(this); thread.start(); @@ -34,14 +35,15 @@ System.out.println(scriptfile); ProcessBuilder processBuilder = new ProcessBuilder("bash", scriptfile); // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); - processBuilder.directory(new File(App.userhome+App.nwpsrc)); + processBuilder.directory(new File(App.userhome + App.nwpsrc)); processBuilder.inheritIO(); try { process = processBuilder.start(); - // BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + // BufferedReader reader = new BufferedReader(new + // InputStreamReader(process.getInputStream())); // String line; // while ((line = reader.readLine()) != null) { - // jta.append(line); + // jta.append(line); // } process.waitFor(); } catch (IOException | InterruptedException e1) { @@ -51,5 +53,5 @@ thread = null; runB.setText("Run"); } - + }