diff --git a/src/main/java/istlab/KisoJikken/Editor.java b/src/main/java/istlab/KisoJikken/Editor.java index afb2748..3b3f338 100644 --- a/src/main/java/istlab/KisoJikken/Editor.java +++ b/src/main/java/istlab/KisoJikken/Editor.java @@ -36,6 +36,8 @@ JPanel topP; JSlider fontSizeJS; JButton saveB; + JButton runB; + ScriptRunner runner; public Editor(File f) { file = f; @@ -83,6 +85,14 @@ loadB.addActionListener(this); topP.add(loadB); + //実行ボタン + if (textArea.getSyntaxEditingStyle()==SyntaxConstants.SYNTAX_STYLE_UNIX_SHELL){ + runB = new JButton("Run"); + runB.addActionListener(this); + topP.add(runB); + runner = new ScriptRunner(file.getAbsolutePath(), runB); + } + getContentPane().add(topP, BorderLayout.NORTH); setVisible(true); @@ -130,6 +140,12 @@ save(); } else if (e.getActionCommand().equals("Reload")) { load(); + } else if (e.getActionCommand().equals("Run")) { + runner.startstop(); + runB.setText("Stop"); + } else if (e.getActionCommand().equals("Stop")) { + runner.startstop(); + runB.setText("Run"); } } diff --git a/src/main/java/istlab/KisoJikken/ScriptRunner.java b/src/main/java/istlab/KisoJikken/ScriptRunner.java new file mode 100644 index 0000000..8214dbc --- /dev/null +++ b/src/main/java/istlab/KisoJikken/ScriptRunner.java @@ -0,0 +1,55 @@ +package istlab.KisoJikken; + +import java.io.File; +import java.io.IOException; + +import javax.swing.JButton; + +public class ScriptRunner implements Runnable { + String scriptfile; + + Thread thread; + Process process; +JButton runB; + + public ScriptRunner(String shfile, JButton rB){ + scriptfile = shfile; + runB = rB; + } + public void startstop(){ + if (thread == null) { + thread = new Thread(this); + thread.start(); + runB.setText("Stop"); + } else { + process.destroy(); + thread = null; + runB.setText("Run"); + } + } + + @Override + public void run() { + // Run script + System.out.println(scriptfile); + ProcessBuilder processBuilder = new ProcessBuilder("bash", scriptfile); + // 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("Exit"); + thread = null; + runB.setText("Run"); + } + +} diff --git a/src/main/java/istlab/KisoJikken/ShellScriptPanel.java b/src/main/java/istlab/KisoJikken/ShellScriptPanel.java index 0c6518d..49ec7d7 100644 --- a/src/main/java/istlab/KisoJikken/ShellScriptPanel.java +++ b/src/main/java/istlab/KisoJikken/ShellScriptPanel.java @@ -58,11 +58,10 @@ @Override public void run() { // Run script - String userHomeDir = System.getProperty("user.home"); - System.out.println(userHomeDir + "/NWP/src/" + script); - ProcessBuilder processBuilder = new ProcessBuilder("bash", userHomeDir + "/NWP/src/" + script); + System.out.println(App.userhome + App.nwpsrc+ "/" + script); + ProcessBuilder processBuilder = new ProcessBuilder("bash", App.userhome + App.nwpsrc +"/"+ script); // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); - processBuilder.directory(new File(userHomeDir+"/NWP/src")); + processBuilder.directory(new File(App.userhome+App.nwpsrc)); processBuilder.inheritIO(); try { process = processBuilder.start(); @@ -75,7 +74,7 @@ } catch (IOException | InterruptedException e1) { e1.printStackTrace(); } - System.out.println("Exit"); + System.out.println("======== Exit ========"); thread = null; }