📄 settingsframe.java
字号:
/* * Created on 12-Jun-2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */package TreeJuxtaposer;import java.awt.GraphicsConfiguration;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import javax.swing.event.ChangeListener;import javax.swing.event.ChangeEvent;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.Dimension;import java.util.Iterator;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JSlider;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JButton;import javax.swing.JCheckBox;/** * @author jslack * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */public class SettingsFrame extends JFrame implements ActionListener, ChangeListener { private TreeJuxtaposer tj; private final static String title = "Settings"; private JPanel leftPanel; private JPanel rightPanel; private JSlider linewidthSlider; private final static JLabel linewidthLabel = new JLabel("Line Width"); private JSlider labelDensitySlider; private final static JLabel labelDensityLabel = new JLabel("Label Density"); private JSlider bcnScoreSlider; private final static JLabel bcnScoreLabel = new JLabel("BCN Score"); private JSlider labelAngleSlider; private final static JLabel labelAngleLabel = new JLabel("Label Angle"); private final static JLabel fontLabel = new JLabel("Fonts"); private final static String fontString[] = {"Minimum", "Maximum"}; private JTextField fontEntry[]; private JButton fontButton[]; private final static int MIN_FONT = 0; private final static int MAX_FONT = 1; private final static int LEFT_MASK = 0; private final static int RIGHT_MASK = 2; private final static int MIN_FONT_INIT = 14; private final static int MAX_FONT_INIT = MIN_FONT_INIT; private final static int MIN_FONT_THRESHOLD = 5; private final static int MAX_FONT_THRESHOLD = 50; private JCheckBox linkCheck; private final static String linkString = "Linked Navigation"; private final static JLabel showLabel = new JLabel("Show"); private JCheckBox showCheck[]; private final static String showString[] = {"Differences", "Labels"}; private final static int SHOW_DIFF = 0; private final static int SHOW_LABEL = 1; private final static JLabel dimLabel = new JLabel("Dimming"); private JCheckBox dimCheck[]; private final static String dimString[] = {"Marked", "Unmarked"}; private final static int DIM_MARK = 0; private final static int DIM_UNMARK = 1; private JButton snapshotButton; private final static String snapshotLabel = "Snapshot"; private JCheckBox progressiveOn; private final static String toggleProgRenderString = "Progressive Rendering"; /** * @throws java.awt.HeadlessException */ public SettingsFrame(TreeJuxtaposer tj) { super(); this.tj = tj; this.setResizable(false); initComponents(); } /** * @param gc */ public SettingsFrame(TreeJuxtaposer tj, GraphicsConfiguration gc) { super(gc); this.tj = tj; this.setResizable(false); initComponents(); } /** * @param title * @throws java.awt.HeadlessException */ public SettingsFrame(TreeJuxtaposer tj, String title) { super(title); this.tj = tj; this.setResizable(false); initComponents(); } /** * @param title * @param gc */ public SettingsFrame(TreeJuxtaposer tj, String title, GraphicsConfiguration gc) { super(title, gc); this.tj = tj; this.setResizable(false); initComponents(); } private void initComponents() { GridBagConstraints gbc = new GridBagConstraints(); this.setTitle(title); ((JFrame)this).setLocation(10,30); this.getContentPane().setLayout(new GridBagLayout()); gbc.ipadx = 0; gbc.ipady = 0; gbc.gridx = 0; gbc.gridwidth = 1; gbc.gridheight = 1; gbc.gridy = 0; leftPanel = new JPanel(new GridBagLayout()); linewidthSlider = new JSlider(JSlider.HORIZONTAL,1,4,(int)tj.linethickness); linewidthSlider.setPreferredSize(new Dimension(80, linewidthSlider.getPreferredSize().height * 2)); linewidthSlider.setMajorTickSpacing(1); linewidthSlider.setSnapToTicks(true); linewidthSlider.setPaintTicks(true); linewidthSlider.addChangeListener(this); gbc.gridwidth = 2; gbc.gridx = 0; gbc.gridy = 0; leftPanel.add(linewidthSlider, gbc); gbc.gridy = 1; leftPanel.add(linewidthLabel, gbc); labelDensitySlider = new JSlider(JSlider.HORIZONTAL,0,200,10); labelDensitySlider.setPreferredSize(new Dimension(150, labelDensitySlider.getPreferredSize().height * 2)); labelDensitySlider.setMajorTickSpacing(25); labelDensitySlider.setSnapToTicks(false); labelDensitySlider.setPaintTicks(true); labelDensitySlider.addChangeListener(this); // Hashtable labelTable = new Hashtable();// labelTable.put( new Integer( 10/10 ), new JLabel("HIgh") );// labelTable.put( new Integer( 0 ), new JLabel("Low") );// best corresponding score slider bcnScoreSlider = new JSlider(JSlider.HORIZONTAL,0,10,10); bcnScoreSlider.setPreferredSize(new Dimension(100, bcnScoreSlider.getPreferredSize().height * 2)); bcnScoreSlider.setMajorTickSpacing( 1); bcnScoreSlider.setSnapToTicks(false); bcnScoreSlider.setPaintTicks(true); bcnScoreSlider.addChangeListener(this); bcnScoreSlider.setInverted(true);// bcnScoreSlider.setLabelTable(labelTable);// bcnScoreSlider.setPaintLabels(true); labelAngleSlider = new JSlider(JSlider.HORIZONTAL,0,60,30); labelAngleSlider.setPreferredSize(new Dimension(100, labelAngleSlider.getPreferredSize().height * 2)); labelAngleSlider.setMajorTickSpacing( 15); labelAngleSlider.setSnapToTicks(false); labelAngleSlider.setPaintTicks(true); labelAngleSlider.addChangeListener(this); // gbc.gridy = 2;// gbc.ipady = 10;// leftPanel.add(new JPanel(), gbc); gbc.ipady = 0; gbc.gridx = 4; gbc.gridwidth = 4; gbc.gridy = 0; leftPanel.add(labelDensitySlider, gbc); gbc.gridy = 1; leftPanel.add(labelDensityLabel, gbc); gbc.gridx=0; gbc.gridy=3; gbc.gridwidth=2; leftPanel.add(bcnScoreSlider, gbc); gbc.gridy=4; leftPanel.add(bcnScoreLabel, gbc); gbc.gridx=4; gbc.gridy=3; gbc.gridwidth=2; leftPanel.add(labelAngleSlider, gbc); gbc.gridy=4; leftPanel.add(labelAngleLabel, gbc); gbc.gridy = 5; gbc.ipady = 10; leftPanel.add(new JPanel(), gbc); gbc.ipady = 0; gbc.gridy = 6; gbc.gridx = 0; gbc.gridwidth = 7; leftPanel.add(fontLabel, gbc); gbc.gridy = 7; gbc.gridwidth = 1; fontButton = new JButton[fontString.length * 2]; fontEntry = new JTextField[fontString.length]; for (int i = 0; i < fontString.length; i++) { fontButton[i | LEFT_MASK] = new JButton("<"); fontButton[i | RIGHT_MASK] = new JButton(">"); fontEntry[i] = new JTextField(3); gbc.gridx = (i * 4); leftPanel.add(fontButton[i | LEFT_MASK], gbc); gbc.gridx += 1; leftPanel.add(fontEntry[i], gbc); gbc.gridy += 1; gbc.gridx -= 1; gbc.gridwidth = 3; leftPanel.add(new JLabel(fontString[i]), gbc); gbc.gridwidth = 1; gbc.gridy -= 1; gbc.gridx += 2; leftPanel.add(fontButton[i | RIGHT_MASK], gbc); gbc.ipadx = 10; gbc.gridx += 1; if (i < fontString.length - 1) leftPanel.add(new JPanel(), gbc); gbc.ipadx = 0; } fontButton[MIN_FONT | LEFT_MASK].addActionListener(this); fontButton[MIN_FONT | RIGHT_MASK].addActionListener(this); fontButton[MAX_FONT | LEFT_MASK].addActionListener(this); fontButton[MAX_FONT | RIGHT_MASK].addActionListener(this); gbc.gridx = 0; gbc.gridwidth = 7; gbc.gridy++; JPanel linkCheckSpacer = new JPanel(); linkCheckSpacer.setPreferredSize(new Dimension(1, 40)); leftPanel.add(linkCheckSpacer, gbc); gbc.anchor = GridBagConstraints.WEST; gbc.gridy++; linkCheck = new JCheckBox(linkString); linkCheck.addActionListener(this); leftPanel.add(linkCheck, gbc); gbc.gridwidth = 4; gbc.gridx+=3; progressiveOn = new JCheckBox(toggleProgRenderString, true); progressiveOn.addActionListener(this); leftPanel.add(progressiveOn, gbc); gbc.gridwidth = 1; JPanel middlePanel = new JPanel(); middlePanel.setPreferredSize(new Dimension(20, 1)); rightPanel = new JPanel(new GridBagLayout()); gbc.anchor = GridBagConstraints.WEST; gbc.gridx = 0; gbc.gridy = 0; rightPanel.add(showLabel, gbc); gbc.gridy++; showCheck = new JCheckBox[showString.length]; for (int i = 0; i < showString.length; i++) { showCheck[i] = new JCheckBox(showString[i]); showCheck[i].addActionListener(this); rightPanel.add(showCheck[i], gbc); gbc.gridy++; } JPanel checkBoxSpacer = new JPanel(); checkBoxSpacer.setPreferredSize(new Dimension(1, 10)); rightPanel.add(checkBoxSpacer, gbc); gbc.gridy++; rightPanel.add(dimLabel, gbc); gbc.gridy++; dimCheck = new JCheckBox[dimString.length]; for (int i = 0; i < dimString.length; i++) { dimCheck[i] = new JCheckBox(dimString[i]); dimCheck[i].addActionListener(this); rightPanel.add(dimCheck[i], gbc); gbc.gridy++; } rightPanel.add(new JPanel(), gbc); // spacer gbc.gridy++; snapshotButton = new JButton(snapshotLabel); snapshotButton.addActionListener(this); rightPanel.add(snapshotButton, gbc); gbc.gridx = 0; gbc.gridy = 0; getContentPane().add(leftPanel, gbc); // for spacing gbc.gridx = 1; gbc.gridy = 0; getContentPane().add(middlePanel, gbc); gbc.gridx = 2; gbc.gridy = 0; getContentPane().add(rightPanel, gbc); pack(); } public void stateChanged(ChangeEvent evt) { Object obj = evt.getSource(); if (obj == linewidthSlider) { int linewidth = linewidthSlider.getValue(); Iterator tdIter = tj.treeDrawers.iterator(); while (tdIter.hasNext()) { AccordionTreeDrawerFinal atd = (AccordionTreeDrawerFinal)tdIter.next(); atd.setLineThickness(linewidth); atd.newPixelDiv(linewidth, AccordionTreeDrawerFinal.Y); atd.newPixelDiv(linewidth, AccordionTreeDrawerFinal.X); atd.requestRedraw(); } } else if (obj == labelDensitySlider) { float labelBuffer = (float)labelDensitySlider.getValue(); Iterator tdIter = tj.treeDrawers.iterator(); while (tdIter.hasNext()) { AccordionTreeDrawerFinal atd = (AccordionTreeDrawerFinal)tdIter.next(); atd.setLabelBuffer((int)labelBuffer); atd.requestRedraw(); } } else if (obj == bcnScoreSlider) { float bcnScore = (float)bcnScoreSlider.getValue(); tj.setBcnScore(bcnScore/10); Iterator tdIter = tj.treeDrawers.iterator(); tj.clearGroup(TreeJuxtaposer.diffGroup); for (int i = 0; i < tj.treeDrawers.size()-1; i++) {// tj.clearGroup(tj.diffGroup); AccordionTreeDrawerFinal atdA = (AccordionTreeDrawerFinal)tj.treeDrawers.get(i); AccordionTreeDrawerFinal atdB = (AccordionTreeDrawerFinal)tj.treeDrawers.get(TreeJuxtaposer.treeCount-1); tj.doStructuralDiff((AccordionTreeDrawerFinal)tj.treeDrawers.get(i), (AccordionTreeDrawerFinal)tj.treeDrawers.get(TreeJuxtaposer.treeCount-1), TreeJuxtaposer.diffGroup); tj.doStructuralDiff((AccordionTreeDrawerFinal)tj.treeDrawers.get(TreeJuxtaposer.treeCount-1), (AccordionTreeDrawerFinal)tj.treeDrawers.get(i), TreeJuxtaposer.diffGroup); tj.changedMarks(); tj.requestRedrawAll(); } } else if(obj == labelAngleSlider) { float angle = (float)labelAngleSlider.getValue(); if(angle <=10.0) angle = 10.0f; Iterator tdIter = tj.treeDrawers.iterator(); while (tdIter.hasNext()) { AccordionTreeDrawerFinal atd = (AccordionTreeDrawerFinal)tdIter.next(); // atd.setDrawAngle(angle); atd.requestRedraw(); } } } public void actionPerformed(ActionEvent evt) { Object obj = evt.getSource(); AccordionTreeDrawerFinal atd = null; if (tj.treeDrawers != null && tj.treeDrawers.size() > 0) atd = (AccordionTreeDrawerFinal)tj.treeDrawers.get(0); if (obj == fontButton[MIN_FONT | LEFT_MASK]) { if (atd == null) return; if (atd.minFontHeight > MIN_FONT_THRESHOLD) tj.decreaseMinFontHeight(); fontEntry[MIN_FONT].setText(new Integer(atd.minFontHeight).toString()); } else if (obj == fontButton[MAX_FONT | RIGHT_MASK]) { if (atd == null) return; if (atd.maxFontHeight < MAX_FONT_THRESHOLD) tj.increaseMaxFontHeight(); fontEntry[MAX_FONT].setText(new Integer(atd.maxFontHeight).toString()); } else if (obj == fontButton[MIN_FONT | RIGHT_MASK]) { if (atd == null) return; if (atd.minFontHeight < atd.maxFontHeight) tj.increaseMinFontHeight(); fontEntry[MIN_FONT].setText(new Integer(atd.minFontHeight).toString()); } else if (obj == fontButton[MAX_FONT | LEFT_MASK]) { if (atd == null) return; if (atd.maxFontHeight > atd.minFontHeight) tj.decreaseMaxFontHeight(); fontEntry[MAX_FONT].setText(new Integer(atd.maxFontHeight).toString()); } else if (obj == linkCheck) { tj.toggleLinkedNav(); linkCheck.setSelected(tj.getLinkedNav()); } else if (obj == dimCheck[DIM_MARK]) { tj.toggleDimColors(); //dimCheck[DIM_MARK].setSelected(tj.getDimColors()); } else if (obj == dimCheck[DIM_UNMARK]) { tj.toggleDimBrite(); //dimCheck[DIM_UNMARK].setSelected(tj.getDimBrite()); } else if (obj == showCheck[SHOW_DIFF]) { tj.toggleShowDiffs(); showCheck[SHOW_DIFF].setSelected(tj.getShowDiffs()); } else if (obj == showCheck[SHOW_LABEL]) { tj.toggleDrawLabels(); showCheck[SHOW_LABEL].setSelected(tj.getDrawLabels()); } else if (obj == snapshotButton) { tj.doSnapshot(); } else if (obj == progressiveOn) { tj.setProgressiveOn(progressiveOn.isSelected());// sj.setProgressiveOn(progressiveOn.isSelected()); } else { System.out.println("Unknown event: " + obj); } } public void observe() { prepareToShow(); } public void prepareToShow() { if (tj != null && tj.treeDrawers != null) { if (tj.treeDrawers.size() > 0) { AccordionTreeDrawerFinal atd = (AccordionTreeDrawerFinal)tj.treeDrawers.get(0); fontEntry[MIN_FONT].setText(new Integer(atd.minFontHeight).toString()); fontEntry[MAX_FONT].setText(new Integer(atd.maxFontHeight).toString()); linkCheck.setSelected(tj.getLinkedNav()); dimCheck[DIM_MARK].setSelected(tj.getDimColors()); dimCheck[DIM_UNMARK].setSelected(tj.getDimBrite()); //dimCheck[DIM_MARK].setSelected(false); //dimCheck[DIM_UNMARK].setSelected(false); showCheck[SHOW_DIFF].setSelected(tj.getShowDiffs()); showCheck[SHOW_LABEL].setSelected(tj.getDrawLabels()); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -