Source code: myComponents/myFileChooser.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 java.awt.*;
22 import javax.swing.*;
23 import settings.*;
24 import java.io.File;
25 import javax.swing.border.*;
26 import java.util.Hashtable;
27 import java.beans.*;
28 import exptree.utilities.*;
29 import utilities.*;
30
31 public class myFileChooser extends JFileChooser
32 {
33 globalSettings settings;
34
35 final ButtonGroup previewButtonGroup = new ButtonGroup();
36
37 final openChooserPreviewListener openChangeListener = new openChooserPreviewListener();
38
39 ImagePanel imgPanel;
40 imageGenerator imgG;
41
42 Dimension maxDimensions;
43
44 final JPanel previewPane = new JPanel();
45 final JPanel preview = new JPanel();
46
47 public myFileChooser()
48 {
49 super();
50 settings = new globalSettings();
51 doInit();
52 }
53
54 public myFileChooser(File directory)
55 {
56 super(directory);
57 settings = new globalSettings();
58 doInit();
59 }
60
61 public myFileChooser(String path)
62 {
63 super(path);
64 settings = new globalSettings();
65 doInit();
66 }
67
68 public myFileChooser(globalSettings s)
69 {
70 super();
71 settings = s;
72 doInit();
73 }
74
75 protected void doInit()
76 {
77 JRadioButton cmRadioButton = new JRadioButton();
78
79 JCheckBox cmCheckBox = new JCheckBox("Show Preview");
80 cmRadioButton.setActionCommand("true");
81 cmRadioButton.setEnabled(false);
82 previewButtonGroup.add(cmCheckBox);
83 if (settings.getStringProperty("loadgenotype.preview").equals("true"))
84 {
85 previewButtonGroup.setSelected(cmCheckBox.getModel(), true);
86 }
87 previewPane.add(cmCheckBox);
88
89 Border previewBorder = BorderFactory.createEtchedBorder();
90 preview.setBorder(BorderFactory.createTitledBorder(previewBorder, "Preview"));
91 preview.setPreferredSize(new Dimension(100,85));
92 previewPane.add(preview);
93 }
94
95 public int showExportDialog(Component f, globalSettings settings)
96 {
97 resetChoosableFileFilters();
98 setAcceptAllFileFilterUsed(false);
99 setAccessory(null);
100
101 String[] formats = exporter.getWriterFormatNames();
102 String[] filtered= new String[formats.length];
103 int i;
104 int j = 0;
105 int k;
106 boolean flag;
107
108 for (i = 0; i < formats.length; i++)
109 {
110 flag = false; // No match
111 for (k = 0; k < j; k++)
112 {
113 if (formats[i].compareToIgnoreCase(filtered[k]) == 0)
114 {
115 flag = true;
116 }
117 }
118 if (!flag && (formats[i].length() == 3)) // If there is no match
119 {
120 filtered[j++] = formats[i].toLowerCase(); // add the format
121 }
122 }
123
124 for (i = 0; i < j; i++)
125 {
126 addChoosableFileFilter(new genericFileFilter(new String[] {filtered[i]}, filtered[i]));
127 }
128
129 return showSaveDialog(f);
130 }
131
132 public int showSaveGeneratorDialog(Component f)
133 {
134 resetChoosableFileFilters();
135
136 setAcceptAllFileFilterUsed(false);
137
138 addChoosableFileFilter(new genericFileFilter(new String[] {"evo"}, "*.evo"));
139
140 setAccessory(null);
141
142 return showSaveDialog(f);
143 }
144
145 public int showOpenGeneratorDialog(Component f)
146 {
147 resetChoosableFileFilters();
148
149 setAcceptAllFileFilterUsed(false);
150
151 addChoosableFileFilter(new genericFileFilter(new String[] {"evo"}, "*.evo"));
152
153 setAccessory(previewPane);
154
155 addPropertyChangeListener(openChangeListener);
156
157 int result = showOpenDialog(f);
158
159 removePropertyChangeListener(openChangeListener);
160
161 if (previewButtonGroup.getSelection() != null)
162 {
163 settings.setProperty("loadgenotype.preview", "true");
164 }
165 else
166 {
167 settings.setProperty("loadgenotype.preview", "false");
168 }
169
170 try
171 {
172 settings.storeProperties();
173 }
174 catch (Exception e)
175 {
176 }
177
178 return result;
179 }
180
181 public globalSettings getSettings()
182 {
183 return settings;
184 }
185
186 class openChooserPreviewListener implements PropertyChangeListener
187 {
188 public void propertyChange(PropertyChangeEvent ce)
189 {
190 if ( ce == null )
191 {
192 return;
193 }
194 if ( ce.getPropertyName().equals("SelectedFileChangedProperty") )
195 {
196 File theFile = ((myFileChooser)(ce.getSource())).getSelectedFile();
197
198 if (previewButtonGroup.getSelection() != null)
199 {
200 try
201 {
202 if (imgG != null)
203 {
204 imgG.stop();
205 imgG.setVisible(false);
206 preview.remove(imgPanel);
207 }
208 imgG = genotypeFileIO.loadFile(((myFileChooser)(ce.getSource())).getSettings(), theFile);
209 imgG.setImageSize(80,50);
210 imgG.setVisible(true);
211 imgG.startIt();
212 imgPanel = new ImagePanel(imgG);
213 preview.add(imgPanel);
214 preview.validate();
215 preview.repaint();
216 }
217 catch (Exception e)
218 {
219 }
220 }
221 }
222 }
223 }
224 }
225
226
227
228