diff --git a/src/main/java/istlab/KisoJikken/App.java b/src/main/java/istlab/KisoJikken/App.java index 62daf33..d781d4c 100644 --- a/src/main/java/istlab/KisoJikken/App.java +++ b/src/main/java/istlab/KisoJikken/App.java @@ -38,10 +38,19 @@ public static Path execPath; public static String downloadurl = "https://cit.istlab.info/KisoJikkenNWP/target/"; - public App() { + public static boolean isWindows; + static { + userhome = System.getProperty("user.home"); + userhome_escaped = App.userhome.replaceAll("\\\\", "\\\\\\\\"); // なんじゃこの意味不明なエスケープは + // https://stackoverflow.com/questions/1701839/string-replaceall-single-backslashes-with-double-backslashes + String os = System.getProperty("os.name").toLowerCase(); + isWindows = os.contains("windows"); } + // public App() { + // } + public static void main(String[] args) { try { App.execPath = getApplicationPath(new App().getClass()); @@ -63,10 +72,6 @@ } // ファイルがあるかチェック - userhome = System.getProperty("user.home"); - userhome_escaped = App.userhome.replaceAll("\\\\", "\\\\\\\\"); // なんじゃこの意味不明なエスケープは - // https://stackoverflow.com/questions/1701839/string-replaceall-single-backslashes-with-double-backslashes - getNWPifnotexist(false); SwingUtilities.invokeLater(() -> { diff --git a/src/main/java/istlab/KisoJikken/Launcher.java b/src/main/java/istlab/KisoJikken/Launcher.java index 98cf9d0..21188d5 100644 --- a/src/main/java/istlab/KisoJikken/Launcher.java +++ b/src/main/java/istlab/KisoJikken/Launcher.java @@ -26,12 +26,16 @@ import javax.swing.event.MouseInputListener; import javax.swing.tree.TreePath; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.errors.NoWorkTreeException; + public class Launcher extends JFrame implements MouseInputListener, KeyListener { public static Launcher theapp; public static String version = "0.76"; // JPanel mainP; File root; + GitManager gitrepom; JTree tree; JCheckBoxMenuItem jcbmi; Hashtable file2editor; @@ -51,6 +55,13 @@ else root = new MyFile(App.userhome + App.nwpsrc); + try { + gitrepom = new GitManager(root); + gitrepom.checkClean(); + } catch (IOException | NoWorkTreeException | GitAPIException e) { + e.printStackTrace(); + } + // Create a TreeModel object to represent our tree of files FileTreeModel model = new FileTreeModel(root, false); @@ -72,66 +83,61 @@ getContentPane().add(scrollpane, BorderLayout.CENTER); // Menu + boolean isEnglish = false; + JMenuItem mi; + JMenu menu; JMenuBar menuBar = new JMenuBar(); - JMenu menu = new JMenu("App"); /**************************************************** */ - menuBar.add(menu); - JMenuItem mi = new JMenuItem("show version"); - mi.addActionListener(ae -> JOptionPane.showMessageDialog(this, "Kiso NWP Launcher v" + version)); - menu.add(mi); - mi = new JMenuItem("最新版をチェック"); - mi.addActionListener(ae -> downloadLatest()); - menu.add(mi); - mi = new JMenuItem("open download site"); - mi.addActionListener(ae -> openURL(App.downloadurl)); - menu.add(mi); - - mi = new JMenuItem("open JAR folder"); - mi.addActionListener(ae -> openExecPath()); - menu.add(mi); - - mi = new JMenuItem("exit"); - mi.addActionListener(ae -> System.exit(0)); - menu.add(mi); - - menu = new JMenu("File"); /**************************************************** */ + menu = new JMenu(isEnglish ? "File" : "ファイル"); /**************************************************** */ menuBar.add(menu); - jcbmi = new JCheckBoxMenuItem("exclude class files from filetree"); + jcbmi = new JCheckBoxMenuItem("classファイルを非表示にする"); jcbmi.addItemListener(ae -> reloadFiles()); menu.add(jcbmi); - mi = new JMenuItem("reload filetree"); + mi = new JMenuItem("ファイル一覧を再読み込み"); mi.addActionListener(ae -> reloadFiles()); menu.add(mi); menu.addSeparator(); - mi = new JMenuItem("rename/delete NWP folder"); - mi.addActionListener(ae -> renameOrDeleteNWPFolder()); + mi = new JMenuItem("Launcherを終了"); + mi.addActionListener(ae -> System.exit(0)); menu.add(mi); - mi = new JMenuItem("get NWP folder"); + menu.addSeparator(); + + mi = new JMenuItem("NWPフォルダの再取得(または初期状態に戻す)"); mi.addActionListener(ae -> App.getNWPifnotexist(true)); menu.add(mi); - boolean isEnglish = false; + mi = new JMenuItem("NWPフォルダを削除orリネームする"); + mi.addActionListener(ae -> renameOrDeleteNWPFolder()); + menu.add(mi); + + menu = new JMenu(isEnglish ? "Process" : "プロセス"); /**************************************************** */ menuBar.add(menu); - mi = new JMenuItem("stop alive"); + mi = new JMenuItem("jps (Javaのプロセス確認)"); + mi.addActionListener(ae -> runCommand(ae.getActionCommand(), null)); + menu.add(mi); + + //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"); }); + menu.add(mi); + + mi = new JMenuItem("アクティブなJavaプロセスを停止"); mi.addActionListener(ae -> stopProcess(false)); menu.add(mi); - mi = new JMenuItem("stop all"); + mi = new JMenuItem("すべてのJavaプロセスを停止"); mi.addActionListener(ae -> stopProcess(true)); menu.add(mi); - mi = new JMenuItem("jps (Javaのプロセス確認)"); - mi.addActionListener(ae -> runCommand(ae.getActionCommand(), null)); - menu.add(mi); - mi = new JMenuItem("killall java (Javaプロセスをすべて強制終了)"); mi.addActionListener(ae -> runCommand(ae.getActionCommand(), null)); menu.add(mi); @@ -147,6 +153,24 @@ mi.addActionListener(ae -> openURL("https://ss.istlab.info/users/login")); menu.add(mi); + menu = new JMenu("App"); /**************************************************** */ + menuBar.add(menu); + mi = new JMenuItem("Launcherのバージョン情報を表示"); + mi.addActionListener(ae -> JOptionPane.showMessageDialog(this, "Kiso NWP Launcher v" + version)); + menu.add(mi); + + mi = new JMenuItem("Launcherの最新版をチェック"); + mi.addActionListener(ae -> downloadLatest()); + menu.add(mi); + + mi = new JMenuItem("ダウンロードサイトを開く"); + mi.addActionListener(ae -> openURL(App.downloadurl)); + menu.add(mi); + + mi = new JMenuItem("JARファイルの場所を開く"); + mi.addActionListener(ae -> openExecPath()); + menu.add(mi); + setJMenuBar(menuBar); // getContentPane().add(mainP, BorderLayout.WEST); @@ -204,8 +228,9 @@ JOptionPane.showMessageDialog(this, "すでに最新版です : v" + version + "\n(download folder: " + App.execPath.getParent().toString() + ")"); } else { - int res = JOptionPane.showConfirmDialog(this, "最新版 \n(" + App.latestVersion + ") をダウンロードする?\n(download folder: " - + App.execPath.getParent().toString() + ")"); + int res = JOptionPane.showConfirmDialog(this, + "最新版 \n(" + App.latestVersion + ") をダウンロードする?\n(download folder: " + + App.execPath.getParent().toString() + ")"); if (res == JOptionPane.YES_OPTION) { App.download(); openExecPath();