//============================================================================== // // Copyright (c) 2002- // Authors: // * Andrew Hinton (University of Birmingham) // * Dave Parker (University of Oxford, formerly University of Birmingham) // //------------------------------------------------------------------------------ // // This file is part of PRISM. // // PRISM is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // PRISM 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with PRISM; if not, write to the Free Software Foundation, // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // //============================================================================== package userinterface.properties; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Insets; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; import javax.swing.DefaultListCellRenderer; import javax.swing.Icon; import javax.swing.JList; import javax.swing.UIManager; import parser.type.*; import prism.DefinedConstant; public class GraphConstantLine extends javax.swing.JPanel { public static final String SINGLE_DEFAULT = "0"; public static final String RANGE_START_DEFAULT = "0"; public static final String RANGE_END_DEFAULT = "1"; public static final String STEP_DEFAULT = "1"; private DefinedConstant dc; private GUIGraphPicker parent; private Type type; /** Creates new form ConstantLine */ public GraphConstantLine(DefinedConstant dc, GUIGraphPicker parent) { this.dc = dc; this.parent = parent; initComponents(); this.valuePicker.setRenderer(new DefaultListCellRenderer() { public Component getListCellRendererComponent(JList list, Object obj, int i, boolean selection, boolean hasFocus) { if(obj instanceof Double) { setComponentOrientation(list.getComponentOrientation()); if (selection) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } if (obj instanceof Icon) { setIcon((Icon)obj); setText(""); } else { setIcon(null); String str; Double d = (Double) obj; NumberFormat n = DecimalFormat.getInstance(Locale.UK); n.setMaximumFractionDigits(6); str = n.format(d.doubleValue()); setText((obj == null) ? "" : str); } setEnabled(list.isEnabled()); setFont(list.getFont()); setBorder((hasFocus) ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder); return this; } else { return super.getListCellRendererComponent(list, obj, i, selection, hasFocus); } } }); setBorder(new BottomBorder()); setConstName(dc.getName()); setConstType(dc.getType()); init(); } private void init() { valuePicker.addItem("All series"); for(int i = 0; i < dc.getNumSteps(); i++) { valuePicker.addItem(dc.getValue(i)); } } public void setConstName(String str) { nameLabel.setText(str); } public void setConstType(Type type) { this.type = type; if (type instanceof TypeDouble) { typeLabel.setText("double"); } else if (type instanceof TypeInt) { typeLabel.setText("int"); } else { typeLabel.setText("unknown"); } } public void setEnabled(boolean b) { //System.out.println("setEnabloed called on a GraphConstantPickerList"); super.setEnabled(b); nameLabel.setEnabled(b); typeLabel.setEnabled(b); valuePicker.setEnabled(b); if(b) { setBackground(Color.white); jPanel1.setBackground(Color.white); jPanel2.setBackground(Color.white); jPanel3.setBackground(Color.white); } else { setBackground(Color.lightGray); jPanel1.setBackground(Color.lightGray); jPanel2.setBackground(Color.lightGray); jPanel3.setBackground(Color.lightGray); } } //ACCESS METHODS public String getName() { return nameLabel.getText(); } public Object getSelectedValue() { return valuePicker.getSelectedItem(); } public DefinedConstant getDC() { return dc; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents()//GEN-BEGIN:initComponents { java.awt.GridBagConstraints gridBagConstraints; choiceButtonGroup = new javax.swing.ButtonGroup(); boolSingleValueCombo = new javax.swing.JComboBox(); sizerPanel = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); nameLabel = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); typeLabel = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); valuePicker = new javax.swing.JComboBox(); boolSingleValueCombo.setBackground(new java.awt.Color(255, 255, 255)); boolSingleValueCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "true", "false" })); boolSingleValueCombo.setMinimumSize(new java.awt.Dimension(4, 19)); boolSingleValueCombo.setPreferredSize(new java.awt.Dimension(4, 19)); setLayout(new java.awt.GridBagLayout()); setBackground(new java.awt.Color(255, 255, 255)); setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0))); setPreferredSize(new java.awt.Dimension(300, 26)); jPanel1.setBackground(new java.awt.Color(255, 255, 255)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; add(jPanel1, gridBagConstraints); nameLabel.setText("a"); nameLabel.setPreferredSize(new java.awt.Dimension(30, 15)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 0.3; add(nameLabel, gridBagConstraints); jPanel2.setBackground(new java.awt.Color(255, 255, 255)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; add(jPanel2, gridBagConstraints); typeLabel.setText("double"); typeLabel.setPreferredSize(new java.awt.Dimension(50, 15)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(typeLabel, gridBagConstraints); jPanel3.setBackground(new java.awt.Color(255, 255, 255)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 0; add(jPanel3, gridBagConstraints); valuePicker.setBackground(new java.awt.Color(255, 255, 255)); valuePicker.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { valuePickerActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 6; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 0.7; add(valuePicker, gridBagConstraints); }//GEN-END:initComponents private void valuePickerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_valuePickerActionPerformed {//GEN-HEADEREND:event_valuePickerActionPerformed parent.resetAutoSeriesName(); }//GEN-LAST:event_valuePickerActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox boolSingleValueCombo; private javax.swing.ButtonGroup choiceButtonGroup; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JLabel nameLabel; private javax.swing.JPanel sizerPanel; private javax.swing.JLabel typeLabel; private javax.swing.JComboBox valuePicker; // End of variables declaration//GEN-END:variables class BottomBorder implements javax.swing.border.Border { public Insets getBorderInsets(Component c) { return new Insets(0,0,1,0); } public boolean isBorderOpaque() { return true; } public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { g.setColor(Color.lightGray); g.drawLine(x,(y+height-1), (x+width), (y+height-1)); } } }