Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: jmat/io/gui/PanelParameters.java


1   package jmat.io.gui;
2   
3   import java.awt.*;
4   import java.awt.event.*;
5   
6   import javax.swing.*;
7   
8   
9   /**
10   * <p>Titre : JAva MAtrix TOols</p>
11   * <p>Description : builds a JPanel containing fields for setting parameters.</p>
12   * @author Yann RICHET
13   */
14  public class PanelParameters extends JPanel implements FocusListener
15  {
16      //~ Instance fields ////////////////////////////////////////////////////////
17  
18      private Dimension defaultSize;
19      private JComboBox[] fields;
20      private JLabel[] labels;
21      private String[][] paramChoices;
22      private String[] paramLabels;
23      private String[] paramValues;
24  
25      //~ Constructors ///////////////////////////////////////////////////////////
26  
27      public PanelParameters(String[] lab, String[] val)
28      {
29          paramLabels = lab;
30          paramValues = val;
31          paramChoices = new String[paramLabels.length][1];
32  
33          for (int i = 0; i < paramLabels.length; i++)
34          {
35              paramChoices[i][0] = paramValues[i];
36          }
37  
38          setComponents();
39          setAppearence();
40          draw();
41      }
42  
43      public PanelParameters(String[] lab, String[][] ch)
44      {
45          paramLabels = lab;
46          paramValues = new String[paramLabels.length];
47          paramChoices = ch;
48  
49          for (int i = 0; i < paramLabels.length; i++)
50          {
51              paramValues[i] = paramChoices[i][0];
52          }
53  
54          setComponents();
55          setAppearence();
56          draw();
57      }
58  
59      public PanelParameters(String[] lab)
60      {
61          paramLabels = lab;
62          paramValues = new String[paramLabels.length];
63          paramChoices = new String[paramLabels.length][1];
64  
65          setComponents();
66          setAppearence();
67          draw();
68      }
69  
70      //~ Methods ////////////////////////////////////////////////////////////////
71  
72      public String[] getValues()
73      {
74          updateValues();
75  
76          return paramValues;
77      }
78  
79      public void focusGained(FocusEvent e)
80      {
81      }
82  
83      public void focusLost(FocusEvent e)
84      {
85          updateValues();
86      }
87  
88      private void setAppearence()
89      {
90          setPreferredSize(defaultSize);
91          setSize(defaultSize);
92      }
93  
94      private void setComponents()
95      {
96          labels = new JLabel[paramLabels.length];
97          fields = new JComboBox[paramLabels.length];
98  
99          for (int i = 0; i < paramLabels.length; i++)
100         {
101             labels[i] = new JLabel(paramLabels[i], JLabel.RIGHT);
102             fields[i] = new JComboBox(paramChoices[i]);
103             fields[i].setEditable(true);
104         }
105 
106         defaultSize = new Dimension(400, paramLabels.length * 30);
107     }
108 
109     private void buildConstraints(GridBagConstraints gbc, int gx, int gy,
110         int gw, int gh, int wx, int wy)
111     {
112         gbc.gridx = gx;
113         gbc.gridy = gy;
114         gbc.gridwidth = gw;
115         gbc.gridheight = gh;
116         gbc.weightx = wx;
117         gbc.weighty = wy;
118     }
119 
120     private void draw()
121     {
122         JPanel panel = new JPanel();
123 
124         GridBagLayout gbl = new GridBagLayout();
125         GridBagConstraints c = new GridBagConstraints();
126         panel.setLayout(gbl);
127 
128         for (int i = 0; i < paramLabels.length; i++)
129         {
130             fields[i].addFocusListener(this);
131 
132             // Ajout du panel de la chaine
133             buildConstraints(c, 0, i, 1, 1, 50, 20);
134             c.anchor = GridBagConstraints.EAST;
135             gbl.setConstraints(labels[i], c);
136             panel.add(labels[i]);
137 
138             // Ajout du panel de la chaine
139             buildConstraints(c, 1, i, 1, 1, 50, 20);
140             c.fill = GridBagConstraints.HORIZONTAL;
141             gbl.setConstraints(fields[i], c);
142             panel.add(fields[i]);
143         }
144 
145         JScrollPane scrollPane = new JScrollPane(panel);
146 
147         scrollPane.setPreferredSize(getSize());
148         scrollPane.setSize(getSize());
149 
150         this.setLayout(new BorderLayout());
151         this.add(scrollPane, BorderLayout.CENTER);
152     }
153 
154     private void updateValues()
155     {
156         for (int i = 0; i < paramLabels.length; i++)
157         {
158             paramValues[i] = (String) (fields[i].getSelectedItem());
159         }
160     }
161 }
162 ///////////////////////////////////////////////////////////////////////////////
163 //  END OF FILE.
164 ///////////////////////////////////////////////////////////////////////////////