diff --git a/src/main/java/istlab/KisoJikken/App.java b/src/main/java/istlab/KisoJikken/App.java index d781d4c..bc940c9 100644 --- a/src/main/java/istlab/KisoJikken/App.java +++ b/src/main/java/istlab/KisoJikken/App.java @@ -31,7 +31,7 @@ public class App { public static String userhome; public static String userhome_escaped; - public static String nwp = File.separator + "NWP" ; + public static String nwp = File.separator + "NWP"; public static String nwpsrc = File.separator + "NWP" + File.separator + "src"; public static String gitrepos = "https://git.istlab.info/git/miura250/NWP.git"; public static String latestVersion; @@ -148,17 +148,37 @@ } public static void reboot(String pathfile) { - String com = "sleep 2 ; java -jar " + pathfile; + String com; + ProcessBuilder processBuilder; + if (App.isWindows) { + pathfile = pathfile.replaceAll("\\\\", "\\\\\\\\"); + com = "java -jar " + new File(pathfile).getName(); + processBuilder = new ProcessBuilder("cmd", "/c", com); + } else { + com = "sleep 1 ; java -jar " + pathfile; + processBuilder = new ProcessBuilder("bash", "-c", com); + } System.out.println(com); - ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", com); try { processBuilder.start(); - System.exit(0); } catch (Exception ex) { - } + Thread t = new Thread(Launcher.theapp); + t.start(); } + // public static void reboot(String pathfile) { + // String com = "sleep 2 ; java -jar " + pathfile; + // System.out.println(com); + // ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", com); + // try { + // processBuilder.start(); + // System.exit(0); + // } catch (Exception ex) { + + // } + // } + public static void getNWPifnotexist(boolean showMessageIfExist) { if (Files.notExists(Paths.get(userhome + nwpsrc))) { int res = JOptionPane.showConfirmDialog(Launcher.theapp, diff --git a/src/main/java/istlab/KisoJikken/GitManager.java b/src/main/java/istlab/KisoJikken/GitManager.java index 248f1f4..f0b0ee1 100644 --- a/src/main/java/istlab/KisoJikken/GitManager.java +++ b/src/main/java/istlab/KisoJikken/GitManager.java @@ -36,7 +36,7 @@ * @throws NoWorkTreeException * @throws GitAPIException */ - public void checkClean() throws NoWorkTreeException, GitAPIException { + public void checkClean(boolean skipByConfig) throws NoWorkTreeException, GitAPIException { git = new Git(repository); @@ -45,7 +45,7 @@ if (!status.isClean()) { // もし、延期ファイルがあって、延期ファイルの日付よりも今日の日付のほうが早いなら、チェックをスキップする(イコールのときはスキップしない) - if (configman.readAndCheckDate()) + if (configman.readAndCheckDate() && skipByConfig) return; System.out.println("Gitのローカルリポジトリに変更点があります。"); diff --git a/src/main/java/istlab/KisoJikken/Launcher.java b/src/main/java/istlab/KisoJikken/Launcher.java index 21188d5..d06ecbc 100644 --- a/src/main/java/istlab/KisoJikken/Launcher.java +++ b/src/main/java/istlab/KisoJikken/Launcher.java @@ -29,10 +29,12 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.NoWorkTreeException; -public class Launcher extends JFrame implements MouseInputListener, KeyListener { +public class Launcher extends JFrame implements MouseInputListener, KeyListener, Runnable { public static Launcher theapp; public static String version = "0.76"; + static int reboot_msec = 2000; + // JPanel mainP; File root; GitManager gitrepom; @@ -57,10 +59,10 @@ try { gitrepom = new GitManager(root); - gitrepom.checkClean(); + gitrepom.checkClean(true); } catch (IOException | NoWorkTreeException | GitAPIException e) { e.printStackTrace(); - } + } // Create a TreeModel object to represent our tree of files FileTreeModel model = new FileTreeModel(root, false); @@ -88,7 +90,6 @@ JMenu menu; JMenuBar menuBar = new JMenuBar(); - menu = new JMenu(isEnglish ? "File" : "ファイル"); /**************************************************** */ menuBar.add(menu); @@ -102,12 +103,29 @@ menu.addSeparator(); + mi = new JMenuItem("Launcherを再起動する"); + mi.addActionListener(ae -> restart()); + menu.add(mi); + + mi = new JMenuItem("Launcherを終了"); mi.addActionListener(ae -> System.exit(0)); menu.add(mi); menu.addSeparator(); + mi = new JMenuItem("NWPフォルダの状態確認"); + mi.addActionListener(ae -> { + try { + gitrepom.checkClean(false); + } catch (NoWorkTreeException e) { + e.printStackTrace(); + } catch (GitAPIException e) { + e.printStackTrace(); + } + }); + menu.add(mi); + mi = new JMenuItem("NWPフォルダの再取得(または初期状態に戻す)"); mi.addActionListener(ae -> App.getNWPifnotexist(true)); menu.add(mi); @@ -116,7 +134,6 @@ mi.addActionListener(ae -> renameOrDeleteNWPFolder()); menu.add(mi); - menu = new JMenu(isEnglish ? "Process" : "プロセス"); /**************************************************** */ menuBar.add(menu); @@ -124,10 +141,12 @@ mi.addActionListener(ae -> runCommand(ae.getActionCommand(), null)); menu.add(mi); - //lsof -i -n -P | grep java + // lsof -i -n -P | grep java mi = new JMenuItem("Javaが開いているポートの確認"); - mi.addActionListener(ae -> { JOptionPane.showInputDialog(Launcher.theapp, "お手数ですが、ターミナルで以下を入力してください。\n\n(コピーしやすいようにテキストフィールドに表示)", - "lsof -i -n -P | grep java"); }); + mi.addActionListener(ae -> { + JOptionPane.showInputDialog(Launcher.theapp, "お手数ですが、ターミナルで以下を入力してください。\n\n(コピーしやすいようにテキストフィールドに表示)", + "lsof -i -n -P | grep java"); + }); menu.add(mi); mi = new JMenuItem("アクティブなJavaプロセスを停止"); @@ -188,6 +207,10 @@ reloadFiles(); } } + public void restart() { + reboot_msec = 0; + App.reboot(App.execPath.toString()); + } public void runCommand(String cmd, String chdir) { System.out.println(cmd); @@ -350,4 +373,16 @@ } + @Override + public void run() { + // wait 5sec and shutdown + try { + Thread.sleep(reboot_msec); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.exit(0); + } + + }