package jaist.css.covis; import jaist.css.covis.cls.Covis_BTree; import jaist.css.covis.cls.Covis_Frac; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JViewport; public class SrcWindow extends JFrame implements ActionListener { // public static boolean doFollowMainWindow = true; private static final long serialVersionUID = 1526947556907544070L; JTextAreaToggleAntiAlias jta; JScrollPane scroll; JButton process; JButton loadNow; CoVisBuffer buffer; AnchorGarden window; public JCheckBoxMenuItem doFollowSrcWin;//ソースコードウィンドウを追従させる? public JCheckBoxMenuItem doFollowSrcWinLeft;//ソースコードウィンドウを追従させる? JTabbedPane tab; public static Font sans14 = new Font("sansserif", Font.BOLD, 14); public static Font sans18 = new Font("sansserif", Font.BOLD, 18); public static Font sans22 = new Font("sansserif", Font.BOLD, 22); public static Font sans26 = new Font("sansserif", Font.BOLD, 26); public static Font sans30 = new Font("sansserif", Font.BOLD, 30); public static Font sans34 = new Font("sansserif", Font.BOLD, 34); public static Font sans38 = new Font("sansserif", Font.BOLD, 38); public static Font sans42 = new Font("sansserif", Font.BOLD, 42); public static Font sans46 = new Font("sansserif", Font.BOLD, 46); public static Font code14 = new Font("sansserif", Font.PLAIN, 14); // public static Font code14 = new Font("DialogInput", Font.BOLD, 14); public SrcWindow(CoVisBuffer buf, AnchorGarden win){ super("Source Code Window"); buffer = buf; window = win; setLayout(new BorderLayout()); jta = new JTextAreaToggleAntiAlias(""); // jta.setLineWrap(true); scroll = new JScrollPane(jta); jta.setFont(sans22); JMenuBar menuBar = new JMenuBar(); JMenu fontM = new JMenu("FontSize"); JMenuItem jmi = new JMenuItem("14"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("18"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("22"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("26"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("30"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("34"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("38"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("42"); fontM.add(jmi); jmi.addActionListener(this); jmi = new JMenuItem("46"); fontM.add(jmi); jmi.addActionListener(this); menuBar.add(fontM); JMenu windowMenu = new JMenu("Window"); doFollowSrcWin = new JCheckBoxMenuItem("Snap to MainWindow"); doFollowSrcWin.setSelected(true); windowMenu.add(doFollowSrcWin); menuBar.add(windowMenu); doFollowSrcWinLeft = new JCheckBoxMenuItem("Align to Left of MainWindow"); doFollowSrcWinLeft.setSelected(true); doFollowSrcWinLeft.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ follow(); } }); windowMenu.add(doFollowSrcWinLeft); setJMenuBar(menuBar); tab = new JTabbedPane(); tab.addTab("(operation code)", scroll); JTextAreaToggleAntiAlias fracclass = new JTextAreaToggleAntiAlias(Covis_Frac.classdef); fracclass.setEditable(false); fracclass.setFont(code14); tab.addTab("class Frac", new JScrollPane(fracclass)); JTextAreaToggleAntiAlias btreeclass = new JTextAreaToggleAntiAlias(Covis_BTree.classdef); btreeclass.setEditable(false); btreeclass.setFont(code14); tab.addTab("class BTree", new JScrollPane(btreeclass)); // tab.addTab("String", new JTextArea()); getContentPane().add(tab, BorderLayout.CENTER); // pack(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setSize((int)(400),(int)(window.frame.getHeight())); follow(); } public void actionPerformed(ActionEvent e){ int fsize = Integer.parseInt(e.getActionCommand()); JScrollPane jsp = (JScrollPane)tab.getComponentAt(tab.getSelectedIndex()); System.out.println(jsp.getComponent(0).getClass().toString()); JViewport v = (JViewport) jsp.getViewport(); JTextAreaToggleAntiAlias target = (JTextAreaToggleAntiAlias) v.getView(); target.setFontSize(fsize); validate(); repaint(); } public String lastLine(){ String[] lines = jta.getText().split("\n"); return lines[lines.length-1]; } public void follow() { if (doFollowSrcWin.isSelected()){ if (doFollowSrcWinLeft.isSelected()){ setLocation((int)(window.frame.getLocation().getX()-this.getWidth()),(int)(window.frame.getLocation().getY())); setSize((int)(this.getWidth()),(int)(window.frame.getHeight())); } else { setLocation((int)(window.frame.getLocation().getX()+window.frame.getWidth()),(int)(window.frame.getLocation().getY())); setSize((int)(this.getWidth()),(int)(window.frame.getHeight())); } } } }