diff --git a/src/main/java/info/istlab/Zemi01/gitmonitor/CommandRunner.java b/src/main/java/info/istlab/Zemi01/gitmonitor/CommandRunner.java index d109b45..872b77c 100644 --- a/src/main/java/info/istlab/Zemi01/gitmonitor/CommandRunner.java +++ b/src/main/java/info/istlab/Zemi01/gitmonitor/CommandRunner.java @@ -16,11 +16,16 @@ String workingDir; JTAConsole con; + GitMonitor mon; - public CommandRunner(String cmd, String workDir) { + public CommandRunner(String cmd, GitMonitor _mon) { command = cmd; - workingDir = workDir; - // runB = rB; + mon = _mon; + con = mon.console; + workingDir = mon.targetDir.getAbsolutePath(); + } + public String toString(){ + return command; } public void startstop() { @@ -36,8 +41,9 @@ } public void invoke() { - if (con != null) - con.frame.setTitle(command + " " + workingDir); + con = mon.console; + // if (con != null) + // con.frame.setTitle(command + " " + workingDir); startstop(); } @@ -56,10 +62,7 @@ processBuilder.directory(new File(workingDir)); // processBuilder.inheritIO(); - if (con == null) - con = new JTAConsole(command + " " + workingDir, this); - else - con.Systemoutprintln("==========================="); + con.Systemoutprintln("==========================="); // con = new JTAConsole("(Exec) " + command); // con.Systemoutprintln("=== 実行開始 ==="); // if (workingDir.equals(App.userhome)) { diff --git a/src/main/java/info/istlab/Zemi01/gitmonitor/GitFinder.java b/src/main/java/info/istlab/Zemi01/gitmonitor/GitFinder.java index 2503e99..5de7caa 100644 --- a/src/main/java/info/istlab/Zemi01/gitmonitor/GitFinder.java +++ b/src/main/java/info/istlab/Zemi01/gitmonitor/GitFinder.java @@ -152,7 +152,8 @@ */ private void chooseDir(File targetDir){ System.out.println("Selected : " + targetDir.getParentFile().getAbsolutePath()); - new CommandRunner("git status", targetDir.getParentFile().getAbsolutePath() ).startstop(); + new GitMonitor(targetDir.getParentFile()); + // new CommandRunner("git status", ).startstop(); } diff --git a/src/main/java/info/istlab/Zemi01/gitmonitor/GitMonitor.java b/src/main/java/info/istlab/Zemi01/gitmonitor/GitMonitor.java new file mode 100644 index 0000000..c69bfb2 --- /dev/null +++ b/src/main/java/info/istlab/Zemi01/gitmonitor/GitMonitor.java @@ -0,0 +1,83 @@ +package info.istlab.Zemi01.gitmonitor; + +import java.awt.BorderLayout; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.io.File; +import java.util.ArrayList; + +import javax.swing.JFrame; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; + +import info.istlab.Zemi01.Launcher; + +/** + * MouseListener はJListに対して適用 + */ +public class GitMonitor extends JFrame implements MouseListener { + File targetDir; + ArrayList crlist; + JList jlist; + JTAConsole console; + + public GitMonitor(File target){ + super(target.getAbsolutePath()); + targetDir = target; + + crlist = new ArrayList(); + String[] coms = {"status", "diff","commit","log --graph","remote -v","branch -avv","checkout -b BR","switch BR"}; + for(String c: coms){ + crlist.add(new CommandRunner(c, this)); + } + + jlist = new JList(crlist.toArray(new CommandRunner[0])); + jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + jlist.addMouseListener(this); + + getContentPane().add(jlist, BorderLayout.WEST); + + console = new JTAConsole(); + + getContentPane().add(new JScrollPane(console)); + setSize(500, 200); + setLocation(Launcher.centerOfScreen(this.getSize())); + setVisible(true); + setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + addWindowListener(console); + + } + + @Override + public void mouseClicked(MouseEvent e) { + int index = jlist.locationToIndex(e.getPoint()); + CommandRunner item = jlist.getModel().getElementAt(index); + item.invoke(); + + } + + @Override + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseEntered(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseExited(MouseEvent e) { + // TODO Auto-generated method stub + + } +} diff --git a/src/main/java/info/istlab/Zemi01/gitmonitor/JTAConsole.java b/src/main/java/info/istlab/Zemi01/gitmonitor/JTAConsole.java index 3ddb56c..52fd539 100644 --- a/src/main/java/info/istlab/Zemi01/gitmonitor/JTAConsole.java +++ b/src/main/java/info/istlab/Zemi01/gitmonitor/JTAConsole.java @@ -1,6 +1,5 @@ package info.istlab.Zemi01.gitmonitor; -import java.awt.Point; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; @@ -18,19 +17,16 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; -import java.util.Stack; import javax.swing.JFrame; -import javax.swing.JScrollPane; +import javax.swing.JList; import javax.swing.text.BadLocationException; -import info.istlab.Zemi01.Launcher; - public class JTAConsole extends MyRSJTextArea implements Runnable, WindowListener, KeyListener, MouseListener, ActionListener { // static JTAConsole lastWindow; // static Point lastActivePoint; - static Stack winStack = new Stack(); + // static Stack winStack = new Stack(); JFrame frame; Process process; Thread thread; @@ -44,35 +40,33 @@ // ProcessBuilder pb; CommandRunner comRunner; + //左側に表示するコマンド。クリックorハイライトで表示する。 + JList comList; + // public JTAConsole(ProcessBuilder prob) { - public JTAConsole(String title, CommandRunner runner) { - comRunner = runner; + public JTAConsole() { + // comRunner = runner; // pb = prob; - frame = new JFrame(title); - frame.getContentPane().add(new JScrollPane(this)); - frame.setSize(500, 200); - frame.setLocation(Launcher.centerOfScreen(frame.getSize())); - frame.setVisible(true); - frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); - frame.addWindowListener(this); - if (winStack.size() > 0) { - JTAConsole last = winStack.peek(); - if (last.isVisible()) { - Point lastFrameP = last.frame.getLocationOnScreen(); - frame.setLocation(lastFrameP.x + 470, lastFrameP.y); - } - } else { - // if (Editor.lastOpened != null) { - // Point lastEditorP = Editor.lastOpened.getLocationOnScreen(); - // Dimension lastEditorD = Editor.lastOpened.getSize(); - // frame.setLocation(lastEditorP.x, lastEditorP.y + lastEditorD.height); - // } + // if (winStack.size() > 0) { + // JTAConsole last = winStack.peek(); + // if (last.isVisible()) { + // Point lastFrameP = last.frame.getLocationOnScreen(); + // frame.setLocation(lastFrameP.x + 470, lastFrameP.y); + // } + // } else { + // // if (Editor.lastOpened != null) { + // // Point lastEditorP = Editor.lastOpened.getLocationOnScreen(); + // // Dimension lastEditorD = Editor.lastOpened.getSize(); + // // frame.setLocation(lastEditorP.x, lastEditorP.y + lastEditorD.height); + // // } - } + // } addKeyListener(this); addMouseListener(this); + + // if (lastActivePoint != null){ // frame.setLocation(lastActivePoint.x+500, lastActivePoint.y); // } else if (lastWindow != null && lastWindow.isVisible()){ @@ -80,7 +74,7 @@ // frame.setLocation(lastFrameP.x+500, lastFrameP.y); // } // lastWindow = this; - winStack.push(this); + // winStack.push(this); // originalContent = new StringBuilder(); } @@ -154,7 +148,7 @@ public void windowClosing(WindowEvent e) { destroyProcess(); - winStack.remove(this); + // winStack.remove(this); setVisible(false); // if (!process.isAlive()) { // Launcher.allProcs.remove(process);