/* * FindBugs - Find Bugs in Java programs * Copyright (C) 2006, University of Maryland * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package edu.umd.cs.findbugs.gui2; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; /** * This is the properties dialog of the GUI. It allows the user to set the * size of the tabs and font size. If the user changes the font size they * will be told to restart the computer before the new size takes affect. * @author Kristin Stephens */ public class PropertiesDialog extends FBDialog { private static PropertiesDialog instance; private JTextField tabTextField; private JTextField fontTextField; public static PropertiesDialog getInstance() { if(instance == null) instance = new PropertiesDialog(); return instance; } private PropertiesDialog() { JPanel contentPanel = new JPanel(new BorderLayout()); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new GridLayout(2,2)); mainPanel.add(new JLabel("Tab Size")); tabTextField = new JTextField(Integer.toString(GUISaveState.getInstance().getTabSize())); mainPanel.add(tabTextField); mainPanel.add(new JLabel("Font Size")); fontTextField = new JTextField(Float.toString(GUISaveState.getInstance().getFontSize())); mainPanel.add(fontTextField); contentPanel.add(mainPanel, BorderLayout.CENTER); JPanel bottomPanel = new JPanel(); bottomPanel.add(new JButton(new AbstractAction("Apply") { public void actionPerformed(ActionEvent evt) { if(Integer.decode(tabTextField.getText()).intValue() != GUISaveState.getInstance().getTabSize()){ GUISaveState.getInstance().setTabSize(Integer.decode(tabTextField.getText()).intValue()); MainFrame.getInstance().displayer.clearCache(); MainFrame.getInstance().syncBugInformation(); //This causes the GUI to redisplay the current code } if(Float.parseFloat(fontTextField.getText()) != GUISaveState.getInstance().getFontSize()){ GUISaveState.getInstance().setFontSize(Float.parseFloat(fontTextField.getText())); JOptionPane.showMessageDialog(PropertiesDialog.getInstance(), "To implement the new font size, please restart FindBugs.", "Changing Font", JOptionPane.INFORMATION_MESSAGE); } } })); bottomPanel.add(new JButton(new AbstractAction("Reset") { public void actionPerformed(ActionEvent evt) { tabTextField.setText(Integer.toString(GUISaveState.getInstance().getTabSize())); fontTextField.setText(Float.toString(GUISaveState.getInstance().getFontSize())); } })); contentPanel.add(bottomPanel, BorderLayout.SOUTH); setContentPane(contentPanel); setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); setModal(true); pack(); addWindowListener(new WindowAdapter(){ @Override public void windowDeactivated(WindowEvent e) { if(Integer.decode(tabTextField.getText()).intValue() != GUISaveState.getInstance().getTabSize()) tabTextField.setText(Integer.toString(GUISaveState.getInstance().getTabSize())); if(Float.parseFloat(fontTextField.getText()) != GUISaveState.getInstance().getFontSize()){ fontTextField.setText(Float.toString(GUISaveState.getInstance().getFontSize())); } } }); } }