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

Quick Search    Search Deep

Source code: myComponents/imageButtonPanel.java


1   /* Evolvo - Image Generator
2    * Copyright (C) 2000 Andrew Molloy
3    *
4    * This program is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU General Public License
6    * as published by the Free Software Foundation; either version 2
7    * of the License, or (at your option) any later version.
8   
9    * This program is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13  
14   * You should have received a copy of the GNU General Public License
15   * along with this program; if not, write to the Free Software
16   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17   */
18  
19  package myComponents;
20  
21  import javax.swing.*;
22  import exptree.utilities.*;
23  import exptree.*;
24  import java.util.Properties;
25  import settings.*;
26  import java.util.Random;
27  import java.awt.*;
28  
29  public class imageButtonPanel extends JPanel
30  {
31     Properties prop;
32     globalSettings settings;
33     variablePackage variables;
34     myButtonGroup imageButtonGroup = new myButtonGroup();
35     imageToggleButton buttons[] = new imageToggleButton[12];
36     Dimension size;
37     Random theRandom;
38  
39     public imageButtonPanel(globalSettings s, 
40           Random randomNumber, 
41           Dimension d, 
42           imageToggleButton[] newButtons)
43     {
44        super(new GridLayout(3,3));
45        settings = s;
46        size = new Dimension(d);
47        theRandom = randomNumber;
48        prop = settings.getProperties();
49        variables = new variablePackage();
50        int start, end;
51  
52        myProgressMonitor pm = new myProgressMonitor(this, 
53                       "Generating Images...", 
54                       "", 
55                       0, 
56                       9 * size.height);
57        pm.setProgress(0);
58        pm.setMillisToDecideToPopup(500);
59  
60        if ( newButtons == null )
61        {
62           start = 0;
63           end   = 9;
64        }
65        else if ( newButtons[1] == null )  
66        {
67           start = 1;
68           end = 9;
69           buttons[0] = newButtons[0];
70        }
71        else if ( newButtons.length == 9 )
72        {
73           start = 0;
74           end = 0;
75           for (int i = 0; i < 9 ; i++)
76           {
77              buttons[i] = newButtons[i];
78           }
79        }
80        else
81        {
82           start = 0;
83           end = 9;
84        }
85  
86        for (int i = start; i < end; i++)
87        {
88           buttons[i] = getImageToggleButton(randomNumber, size, pm);
89        }
90        for (int i = 0; i < 9; i++)
91        {
92           buttons[i].setActionCommand(new Integer(i).toString());
93           imageButtonGroup.add(buttons[i]);
94           add(buttons[i]);
95        }
96     }
97  
98     public imageToggleButton[] getButtons()
99     {
100       return buttons;
101    }
102 
103    public imageToggleButton getSelectedButton()
104    {
105       ButtonModel selected = imageButtonGroup.getSelection();
106       imageToggleButton selectedButton;
107 
108       if (selected == null)
109       {
110          return null;
111       }
112       selectedButton = buttons[new Integer(selected.getActionCommand()).intValue()];
113 
114       return selectedButton;
115    }
116 
117    public void stop()
118    {
119       imageToggleButton selected = getSelectedButton();
120       if (selected == null)
121       {
122          for (int i=0; i < 9; i++)
123          {
124             buttons[i].stop();
125          }
126       }
127       else
128       {
129          for (int i = 0; i < 9; i++)
130          {
131             if (buttons[i] != selected)
132             {
133                buttons[i].stop();
134             }
135          }
136       }
137    }
138  
139    public void makeNewButtons(globalSettings s, imageToggleButton[] newButtons)
140    {
141       settings = s;
142       int start, end;
143 
144       myProgressMonitor pm = new myProgressMonitor(this, 
145                "Generating Images...", 
146                "", 
147                0, 
148                9 * size.height);
149       pm.setProgress(0);
150       pm.setMillisToDecideToPopup(500);
151 
152       for (int i = 0; i < 9; i++)
153       {
154          buttons[i].setVisible(false);
155       }
156 
157       imageButtonGroup = new myButtonGroup();
158       removeAll();
159 
160       if ( newButtons == null )
161       {
162          start = 0;
163          end   = 9;
164       }
165       else if ( newButtons[1] == null )
166       {
167          start = 1;
168          end = 9;
169          buttons[0] = newButtons[0];
170       }
171       else if ( newButtons.length == 9)
172       {
173          start = 0;
174          end = 0;
175          for (int i = 0; i < 9 ; i++)
176          {
177             buttons[i] = newButtons[i];
178          }
179       }
180       else
181       {
182          start = 0;
183          end = 9;
184       }
185 
186       for (int i = start; i < end; i++)
187       {
188          buttons[i].stop();
189          buttons[i] = getImageToggleButton(theRandom, size, pm);
190       }
191       for (int i = 0; i < 9; i++)
192       {
193          buttons[i].setVisible(true);
194          buttons[i].setActionCommand(new Integer(i).toString());
195          imageButtonGroup.add(buttons[i]);
196          add(buttons[i]);
197       }
198 
199       for (int i = start; i < end; i++)
200       {
201     buttons[i].getImageGenerator().startIt();
202       }
203    }
204 
205    imageToggleButton getImageToggleButton(Random randomNumber, 
206             Dimension d, 
207             myProgressMonitor pm)
208    {
209       generator gen[] = new generator[3];
210       for (int i=0; i < 3; i++)
211       {
212          gen[i] = new generator(settings, variables);
213       }
214 
215       expressionTree test[] = new expressionTree[3];
216       for (int i=0; i < 3; i++)
217       {
218          Random newRandom = new Random(randomNumber.nextLong());
219          test[i] = gen[i].generate(newRandom);
220       }
221 
222       imageGenerator imgG = new imageGenerator(
223          settings, 
224          new imageGeneratorParams(variables, test), 
225          pm,
226          d);
227  
228       return new imageToggleButton(imgG);
229    }
230 
231    public void setFirstButton(imageToggleButton imgB)
232    {
233       imageToggleButton buttns[] = new imageToggleButton[9];
234       buttns[0] = imgB;
235       for (int i = 1; i < 9; i++)
236       {
237          buttns[i] = buttons[i];
238       }
239       makeNewButtons(null,buttns);
240    }
241 
242     public void start()
243     {
244   for (int i = 0; i < 9; i++)
245   {
246       buttons[i].getImageGenerator().startIt();
247   }
248     }
249 }