2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
3 * Copyright (C) 2014 The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11 * Jalview is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
17 * The Jalview Authors are detailed in the 'AUTHORS' file.
24 import java.awt.event.*;
30 import jalview.jbgui.*;
31 import jalview.schemes.*;
32 import jalview.util.MessageManager;
40 public class Preferences extends GPreferences
44 * Holds name and link separated with | character. Sequence ID must be
45 * $SEQUENCE_ID$ or $SEQUENCE_ID=/.possible | chars ./=$
47 public static Vector sequenceURLLinks;
50 * Holds name and link separated with | character. Sequence IDS and Sequences
51 * must be $SEQUENCEIDS$ or $SEQUENCEIDS=/.possible | chars ./=$ and
52 * $SEQUENCES$ or $SEQUENCES=/.possible | chars ./=$ and separation character
53 * for first and second token specified after a pipe character at end |,|.
54 * (TODO: proper escape for using | to separate ids or sequences
57 public static Vector groupURLLinks;
63 "EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");
64 sequenceURLLinks = new Vector();
68 StringTokenizer st = new StringTokenizer(string, "|");
69 while (st.hasMoreElements())
71 String name = st.nextToken();
72 String url = st.nextToken();
73 // check for '|' within a regex
74 int rxstart = url.indexOf("$SEQUENCE_ID$");
75 while (rxstart == -1 && url.indexOf("/=$") == -1)
77 url = url + "|" + st.nextToken();
79 sequenceURLLinks.addElement(name + "|" + url);
81 } catch (Exception ex)
83 System.out.println(ex + "\nError parsing sequence links");
86 // upgrade old SRS link
87 int srsPos = sequenceURLLinks
88 .indexOf("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
91 sequenceURLLinks.setElementAt(
92 "EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$",
98 * TODO: reformulate groupURL encoding so two or more can be stored in the
99 * .properties file as '|' separated strings
102 groupURLLinks = new Vector();
103 // groupURLLinks.addElement("UNIPROT|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewIDs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,");
104 // groupURLLinks.addElement("Seqs|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,");
108 Vector nameLinks, urlLinks;
110 JInternalFrame frame;
112 DasSourceBrowser dasSource;
114 private WsPreferences wsPrefs;
117 * Creates a new Preferences object.
122 frame = new JInternalFrame();
123 frame.setContentPane(this);
124 dasSource = new DasSourceBrowser();
125 dasPanel.add(dasSource, BorderLayout.CENTER);
126 wsPrefs = new WsPreferences();
127 wsPanel.add(wsPrefs, BorderLayout.CENTER);
128 int width = 500, height = 420;
129 if (new jalview.util.Platform().isAMac())
135 Desktop.addInternalFrame(frame, MessageManager.getString("label.preferences"), width, height);
136 frame.setMinimumSize(new Dimension(width, height));
138 seqLimit.setSelected(Cache.getDefault("SHOW_JVSUFFIX", true));
139 rightAlign.setSelected(Cache.getDefault("RIGHT_ALIGN_IDS", false));
140 fullScreen.setSelected(Cache.getDefault("SHOW_FULLSCREEN", false));
141 annotations.setSelected(Cache.getDefault("SHOW_ANNOTATIONS", true));
143 conservation.setSelected(Cache.getDefault("SHOW_CONSERVATION", true));
144 quality.setSelected(Cache.getDefault("SHOW_QUALITY", true));
145 identity.setSelected(Cache.getDefault("SHOW_IDENTITY", true));
146 openoverv.setSelected(Cache.getDefault("SHOW_OVERVIEW", false));
148 .setSelected(Cache.getDefault("SHOW_UNCONSERVED", false));
149 showNpTooltip.setSelected(Cache
150 .getDefault("SHOW_NPFEATS_TOOLTIP", true));
151 showDbRefTooltip.setSelected(Cache.getDefault("SHOW_DBREFS_TOOLTIP",
153 sortByTree.setSelected(Cache.getDefault("SORT_BY_TREE", false));
154 for (int i = ColourSchemeProperty.FIRST_COLOUR; i <= ColourSchemeProperty.LAST_COLOUR; i++)
156 colour.addItem(ColourSchemeProperty.getColourName(i));
159 String string = Cache.getDefault("DEFAULT_COLOUR", "None");
161 colour.setSelectedItem(string);
164 * default min-max colours for annotation shading
166 minColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN",
168 maxColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MAX",
171 String[] fonts = java.awt.GraphicsEnvironment
172 .getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
174 for (int i = 0; i < fonts.length; i++)
176 fontNameCB.addItem(fonts[i]);
179 for (int i = 1; i < 31; i++)
181 fontSizeCB.addItem(i + "");
184 fontStyleCB.addItem("plain");
185 fontStyleCB.addItem("bold");
186 fontStyleCB.addItem("italic");
188 fontNameCB.setSelectedItem(Cache.getDefault("FONT_NAME", "SansSerif"));
189 fontSizeCB.setSelectedItem(Cache.getDefault("FONT_SIZE", "10"));
190 fontStyleCB.setSelectedItem(Cache.getDefault("FONT_STYLE", Font.PLAIN
193 smoothFont.setSelected(Cache.getDefault("ANTI_ALIAS", false));
195 idItalics.setSelected(Cache.getDefault("ID_ITALICS", true));
197 wrap.setSelected(Cache.getDefault("WRAP_ALIGNMENT", false));
199 gapSymbolCB.addItem("-");
200 gapSymbolCB.addItem(".");
202 gapSymbolCB.setSelectedItem(Cache.getDefault("GAP_SYMBOL", "-"));
205 .setSelected(Cache.getDefault("SHOW_STARTUP_FILE", true));
206 startupFileTextfield.setText(Cache.getDefault("STARTUP_FILE",
207 Cache.getDefault("www.jalview.org", "http://www.jalview.org")
208 + "/examples/exampleFile_2_3.jar"));
210 sortby.addItem("No sort");
211 sortby.addItem("Id");
212 sortby.addItem("Pairwise Identity");
213 sortby.setSelectedItem(Cache.getDefault("SORT_ALIGNMENT", "No sort"));
215 epsRendering.addItem("Prompt each time");
216 epsRendering.addItem("Lineart");
217 epsRendering.addItem("Text");
218 epsRendering.setSelectedItem(Cache.getDefault("EPS_RENDERING",
219 "Prompt each time"));
220 autoIdWidth.setSelected(Cache.getDefault("FIGURE_AUTOIDWIDTH", false));
221 userIdWidth.setEnabled(autoIdWidth.isSelected());
222 userIdWidthlabel.setEnabled(autoIdWidth.isSelected());
223 Integer wi = Cache.getIntegerProperty("FIGURE_USERIDWIDTH");
224 userIdWidth.setText(wi == null ? "" : wi.toString());
225 blcjv.setSelected(Cache.getDefault("BLC_JVSUFFIX", true));
226 clustaljv.setSelected(Cache.getDefault("CLUSTAL_JVSUFFIX", true));
227 fastajv.setSelected(Cache.getDefault("FASTA_JVSUFFIX", true));
228 msfjv.setSelected(Cache.getDefault("MSF_JVSUFFIX", true));
229 pfamjv.setSelected(Cache.getDefault("PFAM_JVSUFFIX", true));
230 pileupjv.setSelected(Cache.getDefault("PILEUP_JVSUFFIX", true));
231 pirjv.setSelected(Cache.getDefault("PIR_JVSUFFIX", true));
233 modellerOutput.setSelected(Cache.getDefault("PIR_MODELLER", false));
235 autoCalculateConsCheck.setSelected(Cache.getDefault(
236 "AUTO_CALC_CONSENSUS", true));
237 showGroupConsensus.setSelected(Cache.getDefault("SHOW_GROUP_CONSENSUS",
239 showGroupConservation.setSelected(Cache.getDefault(
240 "SHOW_GROUP_CONSERVATION", false));
241 showConsensHistogram.setSelected(Cache.getDefault(
242 "SHOW_CONSENSUS_HISTOGRAM", true));
243 showConsensLogo.setSelected(Cache.getDefault("SHOW_CONSENSUS_LOGO",
246 padGaps.setSelected(Cache.getDefault("PAD_GAPS", false));
248 /***************************************************************************
251 nameLinks = new Vector();
252 urlLinks = new Vector();
253 for (int i = 0; i < sequenceURLLinks.size(); i++)
255 String link = sequenceURLLinks.elementAt(i).toString();
256 nameLinks.addElement(link.substring(0, link.indexOf("|")));
257 urlLinks.addElement(link.substring(link.indexOf("|") + 1));
262 useProxy.setSelected(Cache.getDefault("USE_PROXY", false));
263 proxyServerTB.setEnabled(useProxy.isSelected());
264 proxyPortTB.setEnabled(useProxy.isSelected());
265 proxyServerTB.setText(Cache.getDefault("PROXY_SERVER", ""));
266 proxyPortTB.setText(Cache.getDefault("PROXY_PORT", ""));
268 defaultBrowser.setText(Cache.getDefault("DEFAULT_BROWSER", ""));
270 usagestats.setSelected(Cache.getDefault("USAGESTATS", false));
272 .setSelected(Cache.getProperty("NOQUESTIONNAIRES") == null); // note
275 versioncheck.setSelected(Cache.getDefault("VERSION_CHECK", true)); // default
278 annotations_actionPerformed(null); // update the display of the annotation
283 } catch (Exception ex)
285 ex.printStackTrace();
296 public void ok_actionPerformed(ActionEvent e)
299 Cache.applicationProperties.setProperty("SHOW_JVSUFFIX",
300 Boolean.toString(seqLimit.isSelected()));
301 Cache.applicationProperties.setProperty("RIGHT_ALIGN_IDS",
302 Boolean.toString(rightAlign.isSelected()));
303 Cache.applicationProperties.setProperty("SHOW_FULLSCREEN",
304 Boolean.toString(fullScreen.isSelected()));
305 Cache.applicationProperties.setProperty("SHOW_OVERVIEW",
306 Boolean.toString(openoverv.isSelected()));
307 Cache.applicationProperties.setProperty("SHOW_ANNOTATIONS",
308 Boolean.toString(annotations.isSelected()));
309 Cache.applicationProperties.setProperty("SHOW_CONSERVATION",
310 Boolean.toString(conservation.isSelected()));
311 Cache.applicationProperties.setProperty("SHOW_QUALITY",
312 Boolean.toString(quality.isSelected()));
313 Cache.applicationProperties.setProperty("SHOW_IDENTITY",
314 Boolean.toString(identity.isSelected()));
316 Cache.applicationProperties.setProperty("DEFAULT_COLOUR", colour
317 .getSelectedItem().toString());
318 Cache.applicationProperties.setProperty("GAP_SYMBOL", gapSymbolCB
319 .getSelectedItem().toString());
321 Cache.applicationProperties.setProperty("FONT_NAME", fontNameCB
322 .getSelectedItem().toString());
323 Cache.applicationProperties.setProperty("FONT_STYLE", fontStyleCB
324 .getSelectedItem().toString());
325 Cache.applicationProperties.setProperty("FONT_SIZE", fontSizeCB
326 .getSelectedItem().toString());
328 Cache.applicationProperties.setProperty("ID_ITALICS",
329 Boolean.toString(idItalics.isSelected()));
330 Cache.applicationProperties.setProperty("SHOW_UNCONSERVED",
331 Boolean.toString(showUnconserved.isSelected()));
332 Cache.applicationProperties.setProperty("SHOW_GROUP_CONSENSUS",
333 Boolean.toString(showGroupConsensus.isSelected()));
334 Cache.applicationProperties.setProperty("SHOW_GROUP_CONSERVATION",
335 Boolean.toString(showGroupConservation.isSelected()));
336 Cache.applicationProperties.setProperty("SHOW_CONSENSUS_HISTOGRAM",
337 Boolean.toString(showConsensHistogram.isSelected()));
338 Cache.applicationProperties.setProperty("SHOW_CONSENSUS_LOGO",
339 Boolean.toString(showConsensLogo.isSelected()));
340 Cache.applicationProperties.setProperty("ANTI_ALIAS",
341 Boolean.toString(smoothFont.isSelected()));
342 Cache.applicationProperties.setProperty("SHOW_NPFEATS_TOOLTIP",
343 Boolean.toString(showNpTooltip.isSelected()));
344 Cache.applicationProperties.setProperty("SHOW_DBREFS_TOOLTIP",
345 Boolean.toString(showDbRefTooltip.isSelected()));
347 Cache.applicationProperties.setProperty("WRAP_ALIGNMENT",
348 Boolean.toString(wrap.isSelected()));
350 Cache.applicationProperties.setProperty("STARTUP_FILE",
351 startupFileTextfield.getText());
352 Cache.applicationProperties.setProperty("SHOW_STARTUP_FILE",
353 Boolean.toString(startupCheckbox.isSelected()));
355 Cache.applicationProperties.setProperty("SORT_ALIGNMENT", sortby
356 .getSelectedItem().toString());
358 Cache.setColourProperty("ANNOTATIONCOLOUR_MIN",
359 minColour.getBackground());
360 Cache.setColourProperty("ANNOTATIONCOLOUR_MAX",
361 maxColour.getBackground());
363 if (epsRendering.getSelectedItem().equals("Prompt each time"))
365 Cache.applicationProperties.remove("EPS_RENDERING");
369 Cache.applicationProperties.setProperty("EPS_RENDERING", epsRendering
370 .getSelectedItem().toString());
373 if (defaultBrowser.getText().trim().length() < 1)
375 Cache.applicationProperties.remove("DEFAULT_BROWSER");
379 Cache.applicationProperties.setProperty("DEFAULT_BROWSER",
380 defaultBrowser.getText());
383 jalview.util.BrowserLauncher.resetBrowser();
385 if (nameLinks.size() > 0)
387 StringBuffer links = new StringBuffer();
388 sequenceURLLinks = new Vector();
389 for (int i = 0; i < nameLinks.size(); i++)
391 sequenceURLLinks.addElement(nameLinks.elementAt(i) + "|"
392 + urlLinks.elementAt(i));
393 links.append(sequenceURLLinks.elementAt(i).toString());
397 links.setLength(links.length() - 1);
398 Cache.applicationProperties.setProperty("SEQUENCE_LINKS",
403 Cache.applicationProperties.remove("SEQUENCE_LINKS");
406 Cache.applicationProperties.setProperty("USE_PROXY",
407 Boolean.toString(useProxy.isSelected()));
409 if (proxyServerTB.getText().trim().length() < 1)
411 Cache.applicationProperties.remove("PROXY_SERVER");
415 Cache.applicationProperties.setProperty("PROXY_SERVER",
416 proxyServerTB.getText());
419 if (proxyPortTB.getText().trim().length() < 1)
421 Cache.applicationProperties.remove("PROXY_PORT");
425 Cache.applicationProperties.setProperty("PROXY_PORT",
426 proxyPortTB.getText());
429 if (useProxy.isSelected())
431 System.setProperty("http.proxyHost", proxyServerTB.getText());
432 System.setProperty("http.proxyPort", proxyPortTB.getText());
436 System.setProperty("http.proxyHost", "");
437 System.setProperty("http.proxyPort", "");
439 Cache.setProperty("VERSION_CHECK",
440 Boolean.toString(versioncheck.isSelected()));
441 if (Cache.getProperty("USAGESTATS") != null || usagestats.isSelected())
443 // default is false - we only set this if the user has actively agreed
444 Cache.setProperty("USAGESTATS",
445 Boolean.toString(usagestats.isSelected()));
447 if (!questionnaire.isSelected())
449 Cache.setProperty("NOQUESTIONNAIRES", "true");
453 // special - made easy to edit a property file to disable questionnaires
454 // by just adding the given line
455 Cache.removeProperty("NOQUESTIONNAIRES");
457 Cache.applicationProperties.setProperty("BLC_JVSUFFIX",
458 Boolean.toString(blcjv.isSelected()));
459 Cache.applicationProperties.setProperty("CLUSTAL_JVSUFFIX",
460 Boolean.toString(clustaljv.isSelected()));
461 Cache.applicationProperties.setProperty("FASTA_JVSUFFIX",
462 Boolean.toString(fastajv.isSelected()));
463 Cache.applicationProperties.setProperty("MSF_JVSUFFIX",
464 Boolean.toString(msfjv.isSelected()));
465 Cache.applicationProperties.setProperty("PFAM_JVSUFFIX",
466 Boolean.toString(pfamjv.isSelected()));
467 Cache.applicationProperties.setProperty("PILEUP_JVSUFFIX",
468 Boolean.toString(pileupjv.isSelected()));
469 Cache.applicationProperties.setProperty("PIR_JVSUFFIX",
470 Boolean.toString(pirjv.isSelected()));
471 Cache.applicationProperties.setProperty("PIR_MODELLER",
472 Boolean.toString(modellerOutput.isSelected()));
473 jalview.io.PIRFile.useModellerOutput = modellerOutput.isSelected();
475 Cache.applicationProperties.setProperty("FIGURE_AUTOIDWIDTH",
476 Boolean.toString(autoIdWidth.isSelected()));
477 userIdWidth_actionPerformed();
478 Cache.applicationProperties.setProperty("FIGURE_USERIDWIDTH",
479 userIdWidth.getText());
481 Cache.applicationProperties.setProperty("AUTO_CALC_CONSENSUS",
482 Boolean.toString(autoCalculateConsCheck.isSelected()));
483 Cache.applicationProperties.setProperty("SORT_BY_TREE",
484 Boolean.toString(sortByTree.isSelected()));
485 Cache.applicationProperties.setProperty("PAD_GAPS",
486 Boolean.toString(padGaps.isSelected()));
488 dasSource.saveProperties(Cache.applicationProperties);
489 wsPrefs.updateAndRefreshWsMenuConfig(false);
490 Cache.saveProperties();
493 frame.setClosed(true);
494 } catch (Exception ex)
502 public void startupFileTextfield_mouseClicked()
504 JalviewFileChooser chooser = new JalviewFileChooser(
505 jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
507 { "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc", "jar" },
509 { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview" },
510 jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));
511 chooser.setFileView(new JalviewFileView());
512 chooser.setDialogTitle("Select startup file");
514 int value = chooser.showOpenDialog(this);
516 if (value == JalviewFileChooser.APPROVE_OPTION)
518 jalview.bin.Cache.applicationProperties.setProperty(
519 "DEFAULT_FILE_FORMAT", chooser.getSelectedFormat());
520 startupFileTextfield.setText(chooser.getSelectedFile()
531 public void cancel_actionPerformed(ActionEvent e)
535 wsPrefs.updateWsMenuConfig(true);
536 wsPrefs.refreshWs_actionPerformed(e);
537 frame.setClosed(true);
538 } catch (Exception ex)
549 public void annotations_actionPerformed(ActionEvent e)
551 conservation.setEnabled(annotations.isSelected());
552 quality.setEnabled(annotations.isSelected());
553 identity.setEnabled(annotations.isSelected());
554 showGroupConsensus.setEnabled(annotations.isSelected());
555 showGroupConservation.setEnabled(annotations.isSelected());
556 showConsensHistogram.setEnabled(annotations.isSelected()
557 && (identity.isSelected() || showGroupConsensus.isSelected()));
558 showConsensLogo.setEnabled(annotations.isSelected()
559 && (identity.isSelected() || showGroupConsensus.isSelected()));
562 public void newLink_actionPerformed(ActionEvent e)
565 GSequenceLink link = new GSequenceLink();
566 boolean valid = false;
569 if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
570 MessageManager.getString("label.new_sequence_url_link"), JOptionPane.OK_CANCEL_OPTION, -1,
571 null) == JOptionPane.OK_OPTION)
573 if (link.checkValid())
575 nameLinks.addElement(link.getName());
576 urlLinks.addElement(link.getURL());
588 public void editLink_actionPerformed(ActionEvent e)
590 GSequenceLink link = new GSequenceLink();
592 int index = linkNameList.getSelectedIndex();
595 JOptionPane.showInternalMessageDialog(Desktop.desktop,
596 MessageManager.getString("label.no_link_selected"), MessageManager.getString("label.no_link_selected"),
597 JOptionPane.WARNING_MESSAGE);
601 link.setName(nameLinks.elementAt(index).toString());
602 link.setURL(urlLinks.elementAt(index).toString());
604 boolean valid = false;
608 if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
609 MessageManager.getString("label.new_sequence_url_link"), JOptionPane.OK_CANCEL_OPTION, -1,
610 null) == JOptionPane.OK_OPTION)
612 if (link.checkValid())
614 nameLinks.setElementAt(link.getName(), index);
615 urlLinks.setElementAt(link.getURL(), index);
628 public void deleteLink_actionPerformed(ActionEvent e)
630 int index = linkNameList.getSelectedIndex();
633 JOptionPane.showInternalMessageDialog(Desktop.desktop,
634 MessageManager.getString("label.no_link_selected"), MessageManager.getString("label.no_link_selected"),
635 JOptionPane.WARNING_MESSAGE);
638 nameLinks.removeElementAt(index);
639 urlLinks.removeElementAt(index);
643 void updateLinkData()
645 linkNameList.setListData(nameLinks);
646 linkURLList.setListData(urlLinks);
649 public void defaultBrowser_mouseClicked(MouseEvent e)
651 JFileChooser chooser = new JFileChooser(".");
652 chooser.setDialogTitle("Select default web browser");
654 int value = chooser.showOpenDialog(this);
656 if (value == JFileChooser.APPROVE_OPTION)
658 defaultBrowser.setText(chooser.getSelectedFile().getAbsolutePath());
667 * jalview.jbgui.GPreferences#showunconserved_actionPerformed(java.awt.event
670 protected void showunconserved_actionPerformed(ActionEvent e)
672 // TODO Auto-generated method stub
673 super.showunconserved_actionPerformed(e);
676 private void jbInit() throws Exception
680 public static Collection getGroupURLLinks()
682 return groupURLLinks;
685 public void minColour_actionPerformed()
687 Color col = JColorChooser.showDialog(this,
688 "Select Colour for Minimum Value", minColour.getBackground());
691 minColour.setBackground(col);
696 public void maxColour_actionPerformed()
698 Color col = JColorChooser.showDialog(this,
699 "Select Colour for Maximum Value", maxColour.getBackground());
702 maxColour.setBackground(col);
708 protected void userIdWidth_actionPerformed()
712 String val = userIdWidth.getText().trim();
713 if (val.length() > 0)
715 Integer iw = Integer.parseInt(val);
716 if (iw.intValue() < 12)
718 throw new NumberFormatException();
720 userIdWidth.setText(iw.toString());
722 } catch (NumberFormatException x)
725 .showInternalMessageDialog(
727 "The user defined width for the\nannotation and sequence ID columns\nin exported figures must be\nat least 12 pixels wide.",
728 "Invalid ID Column width",
729 JOptionPane.WARNING_MESSAGE);
730 userIdWidth.setText("");
735 protected void autoIdWidth_actionPerformed()
737 userIdWidth.setEnabled(!autoIdWidth.isSelected());
738 userIdWidthlabel.setEnabled(!autoIdWidth.isSelected());