Newer
Older
AnchorGarden_M / src / main / java / jaist / css / covis / SrcWindow.java
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()));
			}
		}
	}
}