You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(30) |
Jun
(37) |
Jul
(1) |
Aug
(4) |
Sep
(8) |
Oct
(27) |
Nov
(88) |
Dec
(138) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(117) |
Feb
(33) |
Mar
|
Apr
|
May
|
Jun
(15) |
Jul
|
Aug
(20) |
Sep
(214) |
Oct
(58) |
Nov
|
Dec
(5) |
2006 |
Jan
|
Feb
(23) |
Mar
(249) |
Apr
(168) |
May
(56) |
Jun
(68) |
Jul
(61) |
Aug
(352) |
Sep
(94) |
Oct
(492) |
Nov
(258) |
Dec
(70) |
2007 |
Jan
(152) |
Feb
(183) |
Mar
(97) |
Apr
(92) |
May
|
Jun
(47) |
Jul
(79) |
Aug
(21) |
Sep
(49) |
Oct
(58) |
Nov
(62) |
Dec
(28) |
2008 |
Jan
(26) |
Feb
(34) |
Mar
(11) |
Apr
(9) |
May
(1) |
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
(2) |
Feb
(6) |
Mar
(66) |
Apr
(46) |
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
(17) |
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2011 |
Jan
(87) |
Feb
(16) |
Mar
(6) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(10) |
May
(19) |
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(2) |
Apr
(53) |
May
(28) |
Jun
(45) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
|
Nov
|
Dec
|
From: <jtc...@li...> - 2004-06-28 11:43:26
|
Update of /cvsroot/jtcfrost/frost-wot/lib/skinlfFix/com/l2fprod/gui/plaf/skin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21356/lib/skinlfFix/com/l2fprod/gui/plaf/skin Modified Files: SkinLookAndFeel.java Log Message: Refactoring: some variables renamed from "enum" to "enumeration", to be able to easily compile it with java 1.5 (by popular request) Index: SkinLookAndFeel.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/lib/skinlfFix/com/l2fprod/gui/plaf/skin/SkinLookAndFeel.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** SkinLookAndFeel.java 25 May 2004 23:38:00 -0000 1.7 --- SkinLookAndFeel.java 28 Jun 2004 11:43:17 -0000 1.8 *************** *** 972,978 **** UIManager.put("JSplitPane.alternateUI", Boolean.FALSE); ! Enumeration enum = element.enumerateChildren(); ! while (enum.hasMoreElements()) { ! element = (XMLElement) enum.nextElement(); String tagName = element.getTagName().toLowerCase(); if ("skin".equals(tagName)) { --- 972,978 ---- UIManager.put("JSplitPane.alternateUI", Boolean.FALSE); ! Enumeration enumeration = element.enumerateChildren(); ! while (enumeration.hasMoreElements()) { ! element = (XMLElement) enumeration.nextElement(); String tagName = element.getTagName().toLowerCase(); if ("skin".equals(tagName)) { |
From: <jtc...@li...> - 2004-06-28 11:33:00
|
Update of /cvsroot/jtcfrost/frost-wot/lib/genChkImpl/freenet/crypt/ciphers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19172/lib/genChkImpl/freenet/crypt/ciphers Modified Files: Twofish_Properties.java Rijndael_Properties.java Log Message: Refactoring: some variables renamed from "enum" to "enumeration", to be able to easily compile it with java 1.5 (by popular request) Index: Twofish_Properties.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/lib/genChkImpl/freenet/crypt/ciphers/Twofish_Properties.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Twofish_Properties.java 20 Jul 2003 16:15:38 -0000 1.2 --- Twofish_Properties.java 28 Jun 2004 11:32:51 -0000 1.3 *************** *** 98,104 **** out.println("#"); String key, value; ! Enumeration enum = properties.propertyNames(); ! while (enum.hasMoreElements()) { ! key = (String) enum.nextElement(); value = getProperty(key); out.println(key + " = " + value); --- 98,104 ---- out.println("#"); String key, value; ! Enumeration enumeration = properties.propertyNames(); ! while (enumeration.hasMoreElements()) { ! key = (String) enumeration.nextElement(); value = getProperty(key); out.println(key + " = " + value); Index: Rijndael_Properties.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/lib/genChkImpl/freenet/crypt/ciphers/Rijndael_Properties.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Rijndael_Properties.java 20 Jul 2003 16:15:38 -0000 1.2 --- Rijndael_Properties.java 28 Jun 2004 11:32:51 -0000 1.3 *************** *** 98,104 **** out.println("#"); String key, value; ! Enumeration enum = properties.propertyNames(); ! while (enum.hasMoreElements()) { ! key = (String) enum.nextElement(); value = getProperty(key); out.println(key + " = " + value); --- 98,104 ---- out.println("#"); String key, value; ! Enumeration enumeration = properties.propertyNames(); ! while (enumeration.hasMoreElements()) { ! key = (String) enumeration.nextElement(); value = getProperty(key); out.println(key + " = " + value); |
From: <jtc...@li...> - 2004-06-28 11:33:00
|
Update of /cvsroot/jtcfrost/frost-wot/lib/genChkImpl/freenet/crypt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19172/lib/genChkImpl/freenet/crypt Modified Files: Yarrow.java Log Message: Refactoring: some variables renamed from "enum" to "enumeration", to be able to easily compile it with java 1.5 (by popular request) Index: Yarrow.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/lib/genChkImpl/freenet/crypt/Yarrow.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Yarrow.java 1 Feb 2004 00:10:37 -0000 1.3 --- Yarrow.java 28 Jun 2004 11:32:51 -0000 1.4 *************** *** 71,76 **** // Consume the system properties list ! for (Enumeration enum=sys.propertyNames(); enum.hasMoreElements();) { ! String key=(String)enum.nextElement(); consumeString(key); consumeString(sys.getProperty(key)); --- 71,76 ---- // Consume the system properties list ! for (Enumeration enumeration=sys.propertyNames(); enumeration.hasMoreElements();) { ! String key=(String)enumeration.nextElement(); consumeString(key); consumeString(sys.getProperty(key)); *************** *** 267,272 **** if (slow_entropy >= (SLOW_THRESHOLD * 2)) { int kc=0; ! for (Enumeration enum=entropySeen.keys(); enum.hasMoreElements();) { ! Object key=enum.nextElement(); Integer v=(Integer)entropySeen.get(key); --- 267,272 ---- if (slow_entropy >= (SLOW_THRESHOLD * 2)) { int kc=0; ! for (Enumeration enumeration=entropySeen.keys(); enumeration.hasMoreElements();) { ! Object key=enumeration.nextElement(); Integer v=(Integer)entropySeen.get(key); *************** *** 383,388 **** Integer ZERO=new Integer(0); ! for (Enumeration enum=entropySeen.keys(); enum.hasMoreElements(); ) ! entropySeen.put(enum.nextElement(), ZERO); } --- 383,388 ---- Integer ZERO=new Integer(0); ! for (Enumeration enumeration=entropySeen.keys(); enumeration.hasMoreElements(); ) ! entropySeen.put(enumeration.nextElement(), ZERO); } |
From: <jtc...@li...> - 2004-06-28 11:08:24
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14332/source/frost/gui Modified Files: OptionsFrame.java Log Message: Refactoring: news panel turned into an inner class. Index: OptionsFrame.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/gui/OptionsFrame.java,v retrieving revision 1.81 retrieving revision 1.82 diff -C2 -d -r1.81 -r1.82 *** OptionsFrame.java 27 Jun 2004 20:58:32 -0000 1.81 --- OptionsFrame.java 28 Jun 2004 11:08:14 -0000 1.82 *************** *** 45,49 **** public class OptionsFrame extends JDialog implements ListSelectionListener { - /** * Display Panel. Contains appearace options: skins and more in the future --- 45,48 ---- *************** *** 1402,1405 **** --- 1401,1574 ---- } } + + /** + * + * @author $Author$ + * @version $Revision$ + */ + private class NewsPanel extends JPanel { + + private JLabel uploadHtlLabel = new JLabel(); + private JLabel downloadHtlLabel = new JLabel(); + private JLabel displayDaysLabel = new JLabel(); + private JLabel downloadDaysLabel = new JLabel(); + private JLabel messageBaseLabel = new JLabel(); + private JLabel signatureLabel = new JLabel(); + + private JTextField uploadHtlTextField = new JTextField(8); + private JTextField downloadHtlTextField = new JTextField(8); + private JTextField displayDaysTextField = new JTextField(8); + private JTextField downloadDaysTextField = new JTextField(8); + private JTextField messageBaseTextField = new JTextField(16); + + private AntialiasedTextArea signatureTextArea; + + /** + * + */ + public NewsPanel() { + super(); + initialize(); + } + + /** + * + */ + private void initialize() { + setName("NewsPanel"); + setLayout(new GridBagLayout()); + refreshLanguage(); + + // Adds all of the components + GridBagConstraints constraints = new GridBagConstraints(); + constraints.fill = GridBagConstraints.NONE; + constraints.anchor = GridBagConstraints.WEST; + Insets insets5555 = new Insets(5, 5, 5, 5); + constraints.weighty = 1; + constraints.weightx = 0; + + constraints.insets = insets5555; + constraints.weightx = 0.4; + constraints.gridx = 0; + constraints.gridy = 0; + add(uploadHtlLabel, constraints); + constraints.weightx = 0.6; + constraints.gridx = 1; + add(uploadHtlTextField, constraints); + + constraints.gridx = 0; + constraints.gridy = 1; + add(downloadHtlLabel, constraints); + constraints.gridx = 1; + add(downloadHtlTextField, constraints); + + constraints.gridx = 0; + constraints.gridy = 2; + add(displayDaysLabel, constraints); + constraints.gridx = 1; + add(displayDaysTextField, constraints); + + constraints.gridx = 0; + constraints.gridy = 3; + add(downloadDaysLabel, constraints); + constraints.gridx = 1; + add(downloadDaysTextField, constraints); + + constraints.gridx = 0; + constraints.gridy = 4; + add(messageBaseLabel, constraints); + constraints.gridx = 1; + add(messageBaseTextField, constraints); + + constraints.fill = GridBagConstraints.HORIZONTAL; + constraints.gridwidth = 2; + constraints.weightx = 1; + constraints.weighty = 0; + constraints.gridx = 0; + constraints.gridy = 5; + add(signatureLabel, constraints); + constraints.gridy = 6; + JScrollPane signatureScrollPane = new JScrollPane(getSignatureTextArea()); + add(signatureScrollPane, constraints); + } + + /** + * @return + */ + private AntialiasedTextArea getSignatureTextArea() { + if (signatureTextArea == null) { + signatureTextArea = new AntialiasedTextArea(4, 50); + + String fontName = frostSettings.getValue(SettingsClass.MESSAGE_BODY_FONT_NAME); + int fontStyle = frostSettings.getIntValue(SettingsClass.MESSAGE_BODY_FONT_STYLE); + int fontSize = frostSettings.getIntValue(SettingsClass.MESSAGE_BODY_FONT_SIZE); + Font tofFont = new Font(fontName, fontStyle, fontSize); + if (!tofFont.getFamily().equals(fontName)) { + logger.severe( + "The selected font was not found in your system\n" + + "That selection will be changed to \"Monospaced\"."); + frostSettings.setValue(SettingsClass.MESSAGE_BODY_FONT_NAME, "Monospaced"); + tofFont = new Font("Monospaced", fontStyle, fontSize); + } + signatureTextArea.setFont(tofFont); + signatureTextArea.setAntiAliasEnabled(frostSettings.getBoolValue("messageBodyAA")); + } + return signatureTextArea; + } + + /** + * Load the settings of this panel + * @param newsSettings class the settings will be loaded from + */ + public void loadSettings(SettingsClass newsSettings) { + uploadHtlTextField.setText(frostSettings.getValue("tofUploadHtl")); + downloadHtlTextField.setText(frostSettings.getValue("tofDownloadHtl")); + displayDaysTextField.setText(frostSettings.getValue("maxMessageDisplay")); + downloadDaysTextField.setText(frostSettings.getValue("maxMessageDownload")); + messageBaseTextField.setText(frostSettings.getValue("messageBase")); + + //Load signature + File signature = new File("signature.txt"); + if (signature.isFile()) { + getSignatureTextArea().setText(FileAccess.readFile("signature.txt", "UTF-8")); + } + } + + public void ok() { + saveSettings(frostSettings); + } + + /** + * + */ + private void refreshLanguage() { + uploadHtlLabel.setText(languageResource.getString("Message upload HTL") + " (21)"); + downloadHtlLabel.setText(languageResource.getString("Message download HTL") + " (23)"); + displayDaysLabel.setText( + languageResource.getString("Number of days to display") + " (10)"); + downloadDaysLabel.setText( + languageResource.getString("Number of days to download backwards") + " (3)"); + messageBaseLabel.setText(languageResource.getString("Message base") + " (news)"); + signatureLabel.setText(languageResource.getString("Signature")); + } + + /** + * @param frostSettings + */ + private void saveSettings(SettingsClass frostSettings) { + frostSettings.setValue("tofUploadHtl", uploadHtlTextField.getText()); + frostSettings.setValue("tofDownloadHtl", downloadHtlTextField.getText()); + frostSettings.setValue("maxMessageDisplay", displayDaysTextField.getText()); + frostSettings.setValue("maxMessageDownload", downloadDaysTextField.getText()); + frostSettings.setValue( + "messageBase", + messageBaseTextField.getText().trim().toLowerCase()); + + //Save signature + FileAccess.writeFile(getSignatureTextArea().getText(), "signature.txt", "UTF-8"); + } + + } + /** * *************** *** 1858,1861 **** --- 2027,2031 ---- private MiscPanel miscPanel = null; private News2Panel news2Panel = null; + private NewsPanel newsPanel = null; JList optionsGroupsList = null; JPanel optionsGroupsPanel = null; *************** *** 1869,1881 **** JPanel tof3Panel = null; JCheckBox tofBoardUpdateVisualization = new JCheckBox(); ! JTextField tofDisplayDaysTextField = new JTextField(5); ! JTextField tofDownloadDaysTextField = new JTextField(5); ! JTextField tofDownloadHtlTextField = new JTextField(5); ! JTextField tofMessageBaseTextField = new JTextField(8); ! JPanel tofPanel = null; ! ! AntialiasedTextArea tofTextArea = new AntialiasedTextArea(4, 50); ! ! JTextField tofUploadHtlTextField = new JTextField(5); private UploadPanel uploadPanel = null; --- 2039,2043 ---- JPanel tof3Panel = null; JCheckBox tofBoardUpdateVisualization = new JCheckBox(); ! private UploadPanel uploadPanel = null; *************** *** 1891,1895 **** frostSettings = newSettingsClass; setDataElements(); - loadSignature(); enableEvents(AWTEvent.WINDOW_EVENT_MASK); --- 2053,2056 ---- *************** *** 2032,2035 **** --- 2193,2207 ---- return news2Panel; } + + /** + * Build the news panel (general options). + */ + private NewsPanel getNewsPanel() { + if (newsPanel == null) { + newsPanel = new NewsPanel(); + newsPanel.loadSettings(frostSettings); + } + return newsPanel; + } /** *************** *** 2051,2055 **** new ListBoxData( " " + languageResource.getString("News") + " (1) ", ! getTofPanel())); listData.add( new ListBoxData( --- 2223,2227 ---- new ListBoxData( " " + languageResource.getString("News") + " (1) ", ! getNewsPanel())); listData.add( new ListBoxData( *************** *** 2223,2314 **** /** - * Build the tof panel. - */ - protected JPanel getTofPanel() { - if (tofPanel == null) { - // Initialize AA and fot fot the tofTextArea - String fontName = frostSettings.getValue(SettingsClass.MESSAGE_BODY_FONT_NAME); - int fontStyle = frostSettings.getIntValue(SettingsClass.MESSAGE_BODY_FONT_STYLE); - int fontSize = frostSettings.getIntValue(SettingsClass.MESSAGE_BODY_FONT_SIZE); - Font tofFont = new Font(fontName, fontStyle, fontSize); - if (!tofFont.getFamily().equals(fontName)) { - logger.severe("The selected font was not found in your system\n" + - "That selection will be changed to \"Monospaced\"."); - frostSettings.setValue(SettingsClass.MESSAGE_BODY_FONT_NAME, "Monospaced"); - tofFont = new Font("Monospaced", fontStyle, fontSize); - } - tofTextArea.setFont(tofFont); - tofTextArea.setAntiAliasEnabled(frostSettings.getBoolValue("messageBodyAA")); - - //Build the panel - tofPanel = new JPanel(new GridBagLayout()); - GridBagConstraints constr = new GridBagConstraints(); - constr.anchor = GridBagConstraints.WEST; - constr.insets = new Insets(5, 5, 5, 5); - constr.gridx = 0; - constr.gridy = 0; - tofPanel.add( - new JLabel(languageResource.getString("Message upload HTL") + " (21)"), - constr); - constr.gridx = 1; - tofPanel.add(tofUploadHtlTextField, constr); - constr.gridy++; - constr.gridx = 0; - tofPanel.add( - new JLabel( - languageResource.getString("Message download HTL") + " (23)"), - constr); - constr.gridx = 1; - tofPanel.add(tofDownloadHtlTextField, constr); - constr.gridy++; - constr.gridx = 0; - tofPanel.add( - new JLabel( - languageResource.getString("Number of days to display") + " (10)"), - constr); - constr.gridx = 1; - tofPanel.add(tofDisplayDaysTextField, constr); - constr.gridy++; - constr.gridx = 0; - tofPanel.add( - new JLabel( - languageResource.getString("Number of days to download backwards") - + " (3)"), - constr); - constr.gridx = 1; - tofPanel.add(tofDownloadDaysTextField, constr); - constr.gridy++; - constr.gridx = 0; - tofPanel.add( - new JLabel(languageResource.getString("Message base") + " (news)"), - constr); - constr.gridx = 1; - tofPanel.add(tofMessageBaseTextField, constr); - constr.gridy++; - constr.gridx = 0; - - tofPanel.add(new JLabel(languageResource.getString("Signature")), constr); - constr.gridy++; - constr.gridx = 0; - constr.gridwidth = 2; - constr.weightx = 0.7; - constr.fill = GridBagConstraints.HORIZONTAL; - constr.insets = new Insets(0, 5, 5, 5); - JScrollPane tofSignatureScrollPane = new JScrollPane(); - tofSignatureScrollPane.getViewport().add(tofTextArea); - tofPanel.add(tofSignatureScrollPane, constr); - // filler (glue) - constr.gridy++; - constr.gridx = 1; - constr.weightx = 0.7; - constr.weighty = 0.7; - constr.insets = new Insets(0, 0, 0, 0); - constr.fill = GridBagConstraints.BOTH; - tofPanel.add(new JLabel(" "), constr); - } - return tofPanel; - } - - /** * Build the upload panel. */ --- 2395,2398 ---- *************** *** 2357,2370 **** /** - * Loads signature.txt into tofTextArea - */ - private void loadSignature() { - File signature = new File("signature.txt"); - if (signature.isFile()) { - tofTextArea.setText(FileAccess.readFile("signature.txt", "UTF-8")); - } - } - - /** * Close window and save settings */ --- 2441,2444 ---- *************** *** 2397,2400 **** --- 2471,2479 ---- } + if (newsPanel != null) { + //If the news panel has been used, commit its changes + newsPanel.ok(); + } + if (news2Panel != null) { //If the news 2 panel has been used, commit its changes *************** *** 2403,2407 **** saveSettings(); - saveSignature(); dispose(); --- 2482,2485 ---- *************** *** 2438,2455 **** */ private void saveSettings() { - frostSettings.setValue("tofUploadHtl", tofUploadHtlTextField.getText()); - frostSettings.setValue( - "tofDownloadHtl", - tofDownloadHtlTextField.getText()); - frostSettings.setValue( - "maxMessageDisplay", - tofDisplayDaysTextField.getText()); - frostSettings.setValue( - "maxMessageDownload", - tofDownloadDaysTextField.getText()); - frostSettings.setValue( - "messageBase", - ((tofMessageBaseTextField.getText()).trim()).toLowerCase()); - frostSettings.setValue( "automaticUpdate.concurrentBoardUpdates", --- 2516,2519 ---- *************** *** 2497,2507 **** } - /** - * Saves signature.txt to disk - */ - private void saveSignature() { - FileAccess.writeFile(tofTextArea.getText(), "signature.txt", "UTF-8"); - } - //------------------------------------------------------------------------ --- 2561,2564 ---- *************** *** 2523,2534 **** // now load - tofUploadHtlTextField.setText(frostSettings.getValue("tofUploadHtl")); - tofDownloadHtlTextField.setText( - frostSettings.getValue("tofDownloadHtl")); - tofDisplayDaysTextField.setText( - frostSettings.getValue("maxMessageDisplay")); - tofDownloadDaysTextField.setText( - frostSettings.getValue("maxMessageDownload")); - tofMessageBaseTextField.setText(frostSettings.getValue("messageBase")); TFautomaticUpdate_concurrentBoardUpdates.setText( frostSettings.getValue("automaticUpdate.concurrentBoardUpdates")); --- 2580,2583 ---- |
From: <jtc...@li...> - 2004-06-27 20:58:42
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5782/source/frost/gui Modified Files: OptionsFrame.java Log Message: Refactoring: code layout improved (with eclipse) Index: OptionsFrame.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/gui/OptionsFrame.java,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** OptionsFrame.java 22 May 2004 02:46:51 -0000 1.80 --- OptionsFrame.java 27 Jun 2004 20:58:32 -0000 1.81 *************** *** 47,327 **** /** ! * */ ! private class News2Panel extends JPanel { ! /** * */ ! private class Listener implements ActionListener { [...3668 lines suppressed...] ! JList theList = (JList) e.getSource(); ! Object Olbdata = theList.getSelectedValue(); ! contentAreaPanel.removeAll(); ! if (Olbdata instanceof ListBoxData) { ! ListBoxData lbdata = (ListBoxData) Olbdata; ! JPanel newPanel = lbdata.getPanel(); ! contentAreaPanel.add(newPanel, BorderLayout.CENTER); ! newPanel.revalidate(); ! newPanel.repaint(); } ! SwingUtilities.invokeLater(new Runnable() { ! public void run() { ! contentAreaPanel.revalidate(); ! } ! }); } |
From: <jtc...@li...> - 2004-06-10 20:29:14
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19220/source/frost Modified Files: Mixed.java Log Message: Optimization: the local variable invalidChars in method makeFilename turned into a static attribute Index: Mixed.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/Mixed.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Mixed.java 22 May 2004 02:53:40 -0000 1.1 --- Mixed.java 10 Jun 2004 20:29:05 -0000 1.2 *************** *** 27,30 **** --- 27,33 ---- { private static Logger logger = Logger.getLogger(Mixed.class.getName()); + + private static char[] invalidChars = { '/', '\\', '?', '*', '<', '>', '\"', ':', '|', '#' }; + //FIXME: this one is missing the "&" char as opposed to MessageObject() /** *************** *** 77,132 **** return text; } ! /** ! * Replaces characters that are not 0-9, a-z or in 'allowedCharacters' ! * with '_' and returns a lowerCase String ! * ! * NEW: does not allow the '#' char, because that will be used for internal folders ! * in keypool, e.g. '#unsent#' ! * ! * @param text original String ! * @return modified String ! */ ! public static String makeFilename(String text) ! { ! if( text == null ) ! { ! logger.severe("ERROR: mixed.makeFilename() was called with NULL!"); ! return null; ! } ! ! StringBuffer newText = new StringBuffer(); ! //text = text.toLowerCase(); ! //if (frame1.frostSettings.getBoolValue("allowEvilBert")) ! // { ! // I hope that this allows the display of 2 byte characters ! char[] invalidChars = ! { '/', '\\', '?', '*', '<', '>', '\"', ':', '|', '#' }; //FIXME: this one is missing the "&" char as opposed to MessageObject() ! if( text.startsWith(".") ) ! newText.append("_"); // dont allow a boardfilename like "." ! for (int i = 0; i < invalidChars.length; i++) ! text = text.replace(invalidChars[i], '_'); ! newText.append(text); ! // } ! // else ! // { ! // String allowedCharacters = "()-!."; ! // for (int i = 0; i < text.length(); i++) ! // { ! // int value = Character.getNumericValue(text.charAt(i)); ! // char character = text.charAt(i); ! // if ((value >= 0 && value < 36) ! // || allowedCharacters.indexOf(character) != -1) ! // newText.append(character); ! // else ! // newText.append("_"); ! // } ! // } ! return newText.toString(); ! } /** --- 80,133 ---- return text; } ! /** ! * Replaces characters that are not 0-9, a-z or in 'allowedCharacters' ! * with '_' and returns a lowerCase String ! * ! * NEW: does not allow the '#' char, because that will be used for internal folders ! * in keypool, e.g. '#unsent#' ! * ! * @param text original String ! * @return modified String ! */ ! public static String makeFilename(String text) { ! if (text == null) { ! logger.severe("ERROR: mixed.makeFilename() was called with NULL!"); ! return null; ! } ! StringBuffer newText = new StringBuffer(); ! ! //text = text.toLowerCase(); ! //if (frame1.frostSettings.getBoolValue("allowEvilBert")) ! // { ! // I hope that this allows the display of 2 byte characters ! if (text.startsWith(".")) ! newText.append("_"); // dont allow a boardfilename like "." ! for (int i = 0; i < invalidChars.length; i++) ! text = text.replace(invalidChars[i], '_'); ! newText.append(text); ! ! // } ! // else ! // { ! // String allowedCharacters = "()-!."; ! // for (int i = 0; i < text.length(); i++) ! // { ! // int value = Character.getNumericValue(text.charAt(i)); ! // char character = text.charAt(i); ! // if ((value >= 0 && value < 36) ! // || allowedCharacters.indexOf(character) != -1) ! // newText.append(character); ! // else ! // newText.append("_"); ! // } ! // } ! ! return newText.toString(); ! } /** |
From: <jtc...@li...> - 2004-06-10 07:19:40
|
Update of /cvsroot/jtcfrost/contrib/hsqldb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1510/hsqldb Added Files: startDBManagerSwing.bat Log Message: Initial version: windows script to start the database manager (Swing version) in hsqldb.jar --- NEW FILE: startDBManagerSwing.bat --- java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing |
From: <jtc...@li...> - 2004-06-10 07:18:33
|
Update of /cvsroot/jtcfrost/contrib/hsqldb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32399/hsqldb Modified Files: hsqldb.jar Log Message: Bugfix: the 1.7.1 version was missing a gif file. Added from the 1.7.2RC6. Index: hsqldb.jar =================================================================== RCS file: /cvsroot/jtcfrost/contrib/hsqldb/hsqldb.jar,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsPrNnC7 and /tmp/cvsPfKNEB differ |
From: <jtc...@li...> - 2004-06-10 06:45:26
|
Update of /cvsroot/jtcfrost/contrib/hsqldb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2088/hsqldb Added Files: startDBManagerAWT.bat Log Message: Initial version: windows script to start the database manager (AWT version) in hsqldb.jar --- NEW FILE: startDBManagerAWT.bat --- javaw -cp hsqldb.jar org.hsqldb.util.DatabaseManager |
From: <jtc...@li...> - 2004-06-09 05:13:01
|
Update of /cvsroot/jtcfrost/contrib/hsqldb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11266/hsqldb Added Files: hsqldb.jar hsqlGuide.html Log Message: Added: hsqldb version 1.7.1 (with tools) compiled for java 1.4. To start the tools, have a look at hsqlGuide.html. --- NEW FILE: hsqldb.jar --- (This appears to be a binary file; contents omitted.) --- NEW FILE: hsqlGuide.html --- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> <title>HSQLDB Guide</title></head> <body> <h2>RUNNING HSQLDB COMPONENTS AND TOOLS</h2> <p>The HSQLDB jar package consists of several programs: </p> <p>HSQLDB RDBMS</p> <p>HSQLDB JDBC Driver</p> <p>Database Manager (Swing and AWT versions)</p> <p>Transfer Tool (AWT version)</p> <p>Query Tool (AWT)</p> <p>Script Tool</p> <p>The HSQLDB RDBMS and JDBC Driver provide the core functionality. The rest are general-purpose database tools that can be used with any database engine that has a JDBC driver.</p> <h3>RUNNING TOOLS</h3> <p>All tools can be run in the standard way for archived Java classes. In the following example the AWT version of the Database Manager, the hsqldb.jar is located in the directory ../lib relative to the current directory.</p> <pre>java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager </pre> <p></p> <p>If hsqldb.jar is in the current directory, the command would change to:</p> <pre>java -cp hsqldb.jar org.hsqldb.util.DatabaseManager</pre> <p>The list of main classes for the tools are follows:</p> <pre>org.hsqldb.util.DatabaseManager org.hsqldb.util.DatabaseManagerSwing org.hsqldb.util.Transfer org.hsqldb.util.QueryTool org.hsqldb.util.ScriptTool</pre> <p>Some tools, such as the Database Manager or Script Tool, can use command line arguments or entirely rely on them. You can add the command line argument -? to get a list of available arguments for these tools. Database Manager and Transfer Tool feature a graphical user interface and can be explored interactively.</p> <h3>RUNNING HSQLDB</h3> <p>HSQLDB can be run in a number of different ways. In general these are divided into Server Modes and In-Process Mode (also called Standalone Mode). A different sub-program from the jar is used to run HSQLDB in each mode.</p> <p>Each HSQLDB database consists of between 2 to 4 files, all named the same but with different extensions, located in the same directory. For example, the database named "test" consists of the following files:</p> <pre>test.properties<br>test.script<br>test.data<br>test.backup</pre> <p>The properties files contains general settings about the database. The script file contains the definition of tables and other database objects, plus the data for non-cached tables. The data file contains the data for cached tables and the backup file is a zipped backup of the last known consistent state of the cache. All these files are essential and should never be deleted. If the database has no cached tables, the <code>test.data</code> and <code>test.backup</code> files will not be present. In addition to those files, HSQLDB database may link to any formatted text files, such as CSV lists, anywhere on the disk. <em>When the engine closes the database at a shutdown, it creates temporary files with the extension</em><code> .new </code><em>which it then renames to those listed above.</em></p> <h3>SERVER MODES</h3> <p>Server modes provide the maximum accessibility. The database engine runs in a JVM and listens for connections from programs on the same computer or other computers on the network. Several different programs can connect to the server and retrieve or update information. Applications programs (clients) connect to the server using the HSQLDB JDBC driver. In all server modes, the server serves only one database that is specified at the time of running the server. If you need to provide connectivity to several databases, you should run several instances of the server each on a different port.</p> <p>Server modes can use preset properties or command line arguments detailed in <a href="hsqlAdvancedGuide.html">hsqlAdvancedGuide.html</a>. There are three server modes, based on the protocol used for communications between the client and server.</p> <h4>HSQLDB Server</h4> <p>This is the preferred way of running a database server and the fastest one. A proprietary communications protocol is used for this mode. A command similar to those used for running tools and described above is used for running the server. An example of the command for starting the server is:</p> <pre>java -cp ../lib/hsqldb.jar org.hsqldb.Server -database mydb</pre> <p>The command line argument <code>-?</code> can be used to get a list of available arguments.</p> <h4>HSQLDB Web Server</h4> <p>This mode is used when access to the computer hosting the database server is restricted to the HTTP protocol. The only reason for using the Web Server mode is restrictions imposed by firewalls on the client or server machines and it should not be used where there are no such restrictions. The HSQLDB Web Server is a special web server that allows JDBC clients to connect via HTTP. As the HTTP protocol is stateless, connections to a web server do not have a persistent session. This limits the range of actions that can be performed on the database. Each time you issue a JDBC command, it is treated as a new connection to the database. As a result transactions cannot be rolled back.</p> <p>To run a web server, replace the main class for the server in the example command line above with the following:</p> <pre>org.hsqldb.WebServer</pre> <p>The command line argument -? can be used to get a list of available arguments.</p> <h4>HSQLDB Servlet</h4> <p>This uses the same protocol as the Web Server and has the same limitations. It is used when a separate servlet engine (or application server) such as Tomcat or Resin provides access to the database. The Servlet Mode cannot be started independently from the servlet engine. The <code>hsqlServlet</code> class, in the HSQLDB jar, should be installed on the application server to provide the connection. The database is specified using an application server property. Refer to the source file <code>hsqlServlet.java</code> to see the details.</p> <p>Both Web Server and Servlet modes can only be accessed using the JDBC driver at the client end. They do not provide a web front end to the database.</p> <h4>Connecting to a Databases Running as Server</h4> <p>Once an HSQLDB server is running, client programs can connect to it using the HSQLDB JDBC Driver contained in <code>hsqldb.jar</code>. Full information on how to connect to a server is provided in the Java Documentation for <a href="src/org/hsqldb/jdbcConnection.html"><code>jdbcConnection</code></a> (located in the <code>/doc/src</code> directory of HSQLDB distribution. A common example is connection to the default port (9001) used for the hsql protocol on the same machine:</p> <pre>try { Class.<b>forName</b> ( "org.hsqldb.jdbcDriver" ); } catch (Exception e) { System.out.println("ERROR: failed to load HSQLDB JDBC driver."); e.printStackTrace(); return; } Connection c = DriverManager.<b>getConnection</b> ("jdbc:hsqldb:hsql://localhost", "sa", ""); </pre> <p>Note in the above connection URL, there is no mention of the database (file) as this was specified when running the server.</p> <h3>IN-PROCESS (Standalone) MODE</h3> <p>This mode runs the database engine as part of your application program in the same Java Virtual Machine. For some applications this mode can be faster, as the data is not converted and sent over the network. The main drawback is that it is not possible to connect to the database from outside your application. As a result you cannot check the contents of the database with external tools such as Database Manager while your application is running. The recommended way of using this mode in an application is to use an HSQLDB Server instance for the database while developing the application and then switch to In-Process mode for deployment.</p> <p>An In-Process Mode database is started from JDBC, with the database file path specified in the connection URL. For example, if the database name is testdb and its files are located in the same directory as where the command to run your application was issued, the following code is used for the connection:</p> <pre>Connection c = DriverManager.<b>getConnection</b> ("jdbc:hsqldb:testdb", "sa", ""); </pre> <p>The database file path format can be specified using forward slashes in Windows hosts as well as Linux hosts. So relative paths or paths that refer to the same directory on the same drive can be identical. For example if your database path in Linux is <code>/opt/db/testdb</code> and you create an identical directory structure on the <code>C:</code> drive of a Windows host, you can use the same URL in both Windows and Linux:</p> <pre>Connection c = DriverManager.<b>getConnection</b> ("jdbc:hsqldb:/opt/db/testdb", "sa", ""); </pre> <p>Refer to Javadoc for <a href="src/org/hsqldb/jdbcConnection.html"><code>jdbcConnection</code></a> for more details.</p> <h4>Memory Only Databases</h4> <p>It is possible to run HSQLDB in a way that the database is not persistent and exists entirely in random access memory. As no information is written to disk, this mode should be used only for internal processing of application data, in applets or certain special applications. This mode is specified by using a dot "." as the database file path.</p> <pre>Connection c = DriverManager.<b>getConnection</b> ("jdbc:hsqldb:.", "sa", ""); </pre> <p>You can also run a memory only server instance by specifying a dot as the name of the database. This usage is not common and is limited to special applications where the database server is used only for exchanging information between clients.</p> <h4>Closing the Database</h4> <p>All databases running in different modes can be closed with the SHUTDOWN command, issued as an SQL query. In-process databases are closed also when the last connection to the database is explicitly closed via JDBC. When SHUTDOWN is issued, all active transactions are rolled back. A special form of closing the database is via the SHUTDOWN COMPACT command. This command rewrites the <code>.data</code> file that contains the information stored in CACHED tables and compacts it to size. This command should be issued periodically, especially when lots of inserts, updates or deletes are performed on the cached tables. Changes to the structure of the database, such as dropping or modifying tables or indexes also create large amounts of unused space that can be reclaimed using this command.</p> <h3>USING THE DATABASE ENGINE</h3> <p>Once a connection is established to a database in any mode, JDBC methods are used to interact with the database. The Javadoc for <code><a href="src/org/hsqldb/jdbcConnection.html">jdbcConnection</a></code>, <code><a href="src/org/hsqldb/jdbcDriver.html">jdbcDriver</a></code>, <code><a href="src/org/hsqldb/jdbcDatabaseMetaData.html">jdbcDatabaseMetadata</a></code>, <code><a href="src/org/hsqldb/jdbcResultSet.html">jdbcResultSet</a></code>, <code><a href="src/org/hsqldb/jdbcStatement.html">jdbcStatement</a></code> and <code><a href="src/org/hsqldb/jdbcPreparedStatement.html">jdbcPreparedStatement</a></code> list all the supported JDBC methods together with information that is specific to HSQLDB. JDBC methods are broadly divided into: connection related methods, metadata methods and database access methods. The database access methods use SQL commands to perform actions on the database and return the results either as a Java primitive type or as an instance of the <code>java.sql.ResultSet</code> class.</p> <p>You can use Database Manager or other Java database access tools to explore your database and update it with SQL commands. These programs use JDBC internally to submit your commands to the database engine and to display the results in a human readable format.</p> <p>The SQL dialect used in HSQLDB is as close to the SQL92 standard as it has been possible to achieve so far in a small footprint database engine. The full list of SQL commands is in <a href="hsqlSyntax.html">hsqlSyntax.html</a>.</p> <h4>Different Types of Table</h4> <p>HSQLDB supports TEMP tables and three types of persistent tables.</p> <p>TEMP tables are not written to disk and last only for the lifetime of the Connection object. Each TEMP table is visible only from the Connection that was used to create it; other concurrent connections to the database will not have access to the table.</p> <p>The three types of persistent tables are MEMORY tables, CACHED tables and TEXT tables.</p> <p>Memory tables are the default type when the CREATE TABLE command is used. Their data is held entirely in memory but any change to their structure or contents is written to the <code><dbname>.script</code> file. The script file is read the next time the database is opened, and the MEMORY tables are recreated with all their contents.</p> <p>CACHED tables are created with the CREATE CACHED TABLE command. Only part of their data is held in memory, allowing large tables that would otherwise take up to several hundred megabytes of memory. Another advantage of cached tables is that the database engine takes less time to start up when a cached table is used for large amounts of data. The disadvantage of cached tables is a reduction in speed. Do not use cached tables if your data set is relatively small.</p> <p>TEXT tables are new to version 1.7.0 and use a CSV (Comma Separated Value) or other delimited text file as the source of their data. You can specify an existing CSV file, such as a dump from another database or program, as the source of a TEXT table. Alternatively, you can specify an empty file to be filled with data by the database engine. TEXT tables are efficient in memory usage and faster than CACHED tables. Two commands are needed to set up a TEXT table as detailed in <a href="hsqlTextTables.html">hsqlTextTables.html</a> document.</p> <p>With memory-only databases (see above), both MEMORY table and CACHED table declarations are treated as declarations for non-persistent memory tables. TEXT table declarations are not allowed in this mode.</p> <h4>CONSTRAINTS and INDEXES</h4> <p>HSQLDB supports PRIMARY KEY, NOT NULL, UNIQUE and FOREIGN KEY constraints. In addition, it supports UNIQUE or ordinary indexes. This support is fairly comprehensive and covers multi-column constraints and indexes, plus cascading deletes for foreign keys.</p> <p>HSQLDB creates indexes internally to support PRIMARY KEY, UNIQUE and FOREIGN KEY constraints: a unique index is created for each PRIMARY KEY or UNIQUE constraint; an ordinary index is created for each FOREIGN KEY constraint. Because of this, you should not create duplicate user-defined indexes on the same column sets covered by these constraints. This would result in unnecessary memory and speed overheads. See the discussion in <a href="hsqlAdvancedGuide.html">hsqlAdvancedGuide.html</a> for more information.</p> <p>Indexes are crucial for adequate query speed. When queries joining multiple tables are used, there must be an index on each joined column of each table. When range or equality conditions are used e.g. SELECT ... WHERE a >10 AND b = 0, an indexes is required on column used in the condition. Indexes have no effect on LIKE conditions or ORDER BY clauses.</p> <p>As a rule of thumb, HSQLDB is capable of processing queries and returning over 100,000 rows per second. Any query that runs into several seconds should be checked and indexes should be added to the relevant columns of the tables if necessary.</p> <p>Author: Fred Toussi - 14 July 2002 - updated 18 Oct 2002</p> <p>Copyright 2002 Fred Toussi. Permission is granted to distribute this document without any alteration under the terms of the HSQLDB license. Additional permission is granted to the HSQLDB Development Group to distribute this document with or without alterations under the terms of the HSQLDB license.</p> <p><a href="http://hsqldb.sourceforge.net/">http://hsqldb.sourceforge.net</a> </p> </body> </html> |
From: <jtc...@li...> - 2004-06-09 04:59:23
|
Update of /cvsroot/jtcfrost/contrib/hsqldb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1967/hsqldb Log Message: Directory /cvsroot/jtcfrost/contrib/hsqldb added to the repository |
From: <jtc...@li...> - 2004-06-07 16:34:48
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20460/source/frost Modified Files: XMLTools.java Log Message: Added: more info added to the logging of the exceptions in the parseXmlFile method Index: XMLTools.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/XMLTools.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** XMLTools.java 22 May 2004 02:53:41 -0000 1.23 --- XMLTools.java 7 Jun 2004 16:34:25 -0000 1.24 *************** *** 125,129 **** logger.log( Level.SEVERE, ! "Parsing of xml file failed. Send badfile.xml to a dev for analysis", e); file.renameTo(new File("badfile.xml")); --- 125,130 ---- logger.log( Level.SEVERE, ! "Parsing of xml file failed (send badfile.xml to a dev for analysis) - " + ! "File name: '" + file.getName() + "'", e); file.renameTo(new File("badfile.xml")); |
From: <jtc...@li...> - 2004-06-07 10:25:05
|
Update of /cvsroot/jtcfrost/frost-wot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5968 Modified Files: HISTORY.txt Log Message: Added: country flags to the language menu and a title to the "Enabled" column of the downloads table. Index: HISTORY.txt =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/HISTORY.txt,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** HISTORY.txt 4 Jun 2004 01:53:29 -0000 1.16 --- HISTORY.txt 7 Jun 2004 10:24:57 -0000 1.17 *************** *** 2,5 **** --- 2,7 ---- Changes since version 28-May-2004 dev: + Added: a title to the "Enabled" column of the downloads table. + Added: country flags to the language menu. Added: now the user can choose which columns the search, download and upload tables should show. That selection is made via a contextual menu that pops up when right clicking on the table header. |
From: <jtc...@li...> - 2004-06-07 09:40:02
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30710/source/frost/util/model/gui Modified Files: SortedModelTable.java Log Message: Bugfix: the currentColumnNumber index is now adapted to the fact that column indexes in the ModelTable may be different to those in the TableFormat Index: SortedModelTable.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui/SortedModelTable.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SortedModelTable.java 3 Jun 2004 16:46:50 -0000 1.6 --- SortedModelTable.java 7 Jun 2004 09:39:48 -0000 1.7 *************** *** 22,25 **** --- 22,29 ---- private static Logger logger = Logger.getLogger(SortedModelTable.class.getName()); + /** + * Index in the ModelTable of the column the model is + * sorted by (or -1 if it is not currently sorted). + */ private int currentColumnNumber = -1; private boolean ascending; *************** *** 57,61 **** protected void doNonUILogic() throws RuntimeException { ! ((SortedModel) model).sort(columnNumberFinal, ascending); } --- 61,66 ---- protected void doNonUILogic() throws RuntimeException { ! int index = convertColumnIndexToFormat(columnNumberFinal); ! ((SortedModel) model).sort(index, ascending); } *************** *** 97,99 **** --- 102,118 ---- } + /* (non-Javadoc) + * @see frost.util.model.gui.ModelTable#setColumnVisible(int, boolean) + */ + public void setColumnVisible(int index, boolean visible) { + super.setColumnVisible(index, visible); + if (!visible) { + if (index == currentColumnNumber) { + currentColumnNumber = -1; + } else if (index < currentColumnNumber) { + currentColumnNumber--; + } + } + } + } |
From: <jtc...@li...> - 2004-06-07 09:04:45
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24448/source/frost Modified Files: MainFrame.java Log Message: Added: small flags to the language menu. Useless but nice. Index: MainFrame.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/MainFrame.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MainFrame.java 29 May 2004 04:06:35 -0000 1.4 --- MainFrame.java 7 Jun 2004 09:04:36 -0000 1.5 *************** *** 2074,2086 **** languageDefaultMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("res.LangRes"); frostSettings.setValue("locale", "default"); setLanguageResource(bundle); } }); languageGermanMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("de")); frostSettings.setValue("locale", "de"); setLanguageResource(bundle); --- 2074,2095 ---- languageDefaultMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes"); frostSettings.setValue("locale", "default"); setLanguageResource(bundle); } }); + + languageBulgarianMenuItem.setIcon(getScaledImage("/data/flag_bg.png")); + languageGermanMenuItem.setIcon(getScaledImage("/data/flag_de.png")); + languageEnglishMenuItem.setIcon(getScaledImage("/data/flag_en.png")); + languageSpanishMenuItem.setIcon(getScaledImage("/data/flag_es.png")); + languageFrenchMenuItem.setIcon(getScaledImage("/data/flag_fr.png")); + languageItalianMenuItem.setIcon(getScaledImage("/data/flag_it.png")); + languageJapaneseMenuItem.setIcon(getScaledImage("/data/flag_jp.png")); + languageDutchMenuItem.setIcon(getScaledImage("/data/flag_nl.png")); + languageGermanMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("de")); frostSettings.setValue("locale", "de"); setLanguageResource(bundle); *************** *** 2089,2094 **** languageEnglishMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("en")); frostSettings.setValue("locale", "en"); setLanguageResource(bundle); --- 2098,2102 ---- languageEnglishMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("en")); frostSettings.setValue("locale", "en"); setLanguageResource(bundle); *************** *** 2097,2102 **** languageDutchMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("nl")); frostSettings.setValue("locale", "nl"); setLanguageResource(bundle); --- 2105,2109 ---- languageDutchMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("nl")); frostSettings.setValue("locale", "nl"); setLanguageResource(bundle); *************** *** 2105,2110 **** languageFrenchMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("fr")); frostSettings.setValue("locale", "fr"); setLanguageResource(bundle); --- 2112,2116 ---- languageFrenchMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("fr")); frostSettings.setValue("locale", "fr"); setLanguageResource(bundle); *************** *** 2113,2118 **** languageJapaneseMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("ja")); frostSettings.setValue("locale", "ja"); setLanguageResource(bundle); --- 2119,2123 ---- languageJapaneseMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("ja")); frostSettings.setValue("locale", "ja"); setLanguageResource(bundle); *************** *** 2121,2126 **** languageItalianMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("it")); frostSettings.setValue("locale", "it"); setLanguageResource(bundle); --- 2126,2130 ---- languageItalianMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("it")); frostSettings.setValue("locale", "it"); setLanguageResource(bundle); *************** *** 2129,2134 **** languageSpanishMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("es")); frostSettings.setValue("locale", "es"); setLanguageResource(bundle); --- 2133,2137 ---- languageSpanishMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("es")); frostSettings.setValue("locale", "es"); setLanguageResource(bundle); *************** *** 2137,2142 **** languageBulgarianMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! java.util.ResourceBundle bundle = ! java.util.ResourceBundle.getBundle("res.LangRes", new Locale("bg")); frostSettings.setValue("locale", "bg"); setLanguageResource(bundle); --- 2140,2144 ---- languageBulgarianMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! ResourceBundle bundle = ResourceBundle.getBundle("res.LangRes", new Locale("bg")); frostSettings.setValue("locale", "bg"); setLanguageResource(bundle); |
Update of /cvsroot/jtcfrost/frost-wot/res/data In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24448/res/data Added Files: flag_de.png flag_es.png flag_en.png flag_nl.png flag_fr.png flag_bg.png flag_it.png flag_jp.png Log Message: Added: small flags to the language menu. Useless but nice. --- NEW FILE: flag_de.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_it.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_nl.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_en.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_bg.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_es.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_jp.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: flag_fr.png --- (This appears to be a binary file; contents omitted.) |
From: <jtc...@li...> - 2004-06-07 06:48:02
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30940/source/frost/util/model/gui Modified Files: ModelTable.java Log Message: Refactoring: visibleColumns made private now. Index: ModelTable.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui/ModelTable.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ModelTable.java 7 Jun 2004 06:44:22 -0000 1.16 --- ModelTable.java 7 Jun 2004 06:47:53 -0000 1.17 *************** *** 188,192 **** * This ArrayList contains the model indexes of the columns that are being shown */ ! protected ArrayList visibleColumns = new ArrayList(); /** --- 188,192 ---- * This ArrayList contains the model indexes of the columns that are being shown */ ! private ArrayList visibleColumns = new ArrayList(); /** |
From: <jtc...@li...> - 2004-06-07 06:44:32
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30471/source/frost/util/model/gui Modified Files: ModelTable.java Log Message: Refactoring: the conversion between the column indexes used by the ModelTable and those used by the TableFormat has been made more explicit. Index: ModelTable.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui/ModelTable.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ModelTable.java 7 Jun 2004 05:32:14 -0000 1.15 --- ModelTable.java 7 Jun 2004 06:44:22 -0000 1.16 *************** *** 53,57 **** int[] columns = tableFormat.getColumnNumbers(fieldID); for (int i = 0; i < columns.length; i++) { ! int columnIndex = visibleColumns.indexOf(new Integer(columns[i])); fireTableCellUpdated(position, columnIndex); } --- 53,57 ---- int[] columns = tableFormat.getColumnNumbers(fieldID); for (int i = 0; i < columns.length; i++) { ! int columnIndex = convertColumnIndexToModel(columns[i]); fireTableCellUpdated(position, columnIndex); } *************** *** 266,271 **** */ public Object getValueAt(int rowIndex, int columnIndex) { ! Integer index = (Integer) visibleColumns.get(columnIndex); ! return tableFormat.getCellValue(model.getItemAt(rowIndex), index.intValue()); } --- 266,271 ---- */ public Object getValueAt(int rowIndex, int columnIndex) { ! int index = convertColumnIndexToFormat(columnIndex); ! return tableFormat.getCellValue(model.getItemAt(rowIndex), index); } *************** *** 322,327 **** */ public String getColumnName(int column) { ! Integer index = (Integer) visibleColumns.get(column); ! return tableFormat.getColumnName(index.intValue()); } --- 322,327 ---- */ public String getColumnName(int column) { ! int index = convertColumnIndexToFormat(column); ! return tableFormat.getColumnName(index); } *************** *** 349,354 **** */ public boolean isCellEditable(int rowIndex, int columnIndex) { ! Integer index = (Integer) visibleColumns.get(columnIndex); ! return tableFormat.isColumnEditable(index.intValue()); } --- 349,354 ---- */ public boolean isCellEditable(int rowIndex, int columnIndex) { ! int index = convertColumnIndexToFormat(columnIndex); ! return tableFormat.isColumnEditable(index); } *************** *** 361,365 **** */ public boolean isColumnVisible(int columnIndex) { ! int position = visibleColumns.indexOf(new Integer(columnIndex)); if (position != -1) { return true; --- 361,365 ---- */ public boolean isColumnVisible(int columnIndex) { ! int position = convertColumnIndexToModel(columnIndex); if (position != -1) { return true; *************** *** 379,383 **** public void setColumnVisible(int index, boolean visible) { TableColumnModel columnModel = getTable().getColumnModel(); ! int position = visibleColumns.indexOf(new Integer(index)); if (visible) { --- 379,383 ---- public void setColumnVisible(int index, boolean visible) { TableColumnModel columnModel = getTable().getColumnModel(); ! int position = convertColumnIndexToModel(index); if (visible) { *************** *** 409,414 **** */ public void setValueAt(Object aValue, int rowIndex, int columnIndex) { ! Integer index = (Integer) visibleColumns.get(columnIndex); ! tableFormat.setCellValue(aValue, model.getItemAt(rowIndex), index.intValue()); } --- 409,414 ---- */ public void setValueAt(Object aValue, int rowIndex, int columnIndex) { ! int index = convertColumnIndexToFormat(columnIndex); ! tableFormat.setCellValue(aValue, model.getItemAt(rowIndex), index); } *************** *** 431,434 **** --- 431,457 ---- return columns.iterator(); } + + /** + * This method maps the index that a column has in the associated TableFormat to + * the index that column has in this ModelTable. + * + * @param formatColumnIndex the index a column has in the associated TableFormat + * @return the index that column has in this ModelTable + */ + protected int convertColumnIndexToModel(int formatColumnIndex) { + return visibleColumns.indexOf(new Integer(formatColumnIndex)); + } + + /** + * This method maps the index that a column has in this ModelTable to + * the index that column has in the associated TableFormat. + * + * @param formatColumnIndex the index a column has in this ModelTable + * @return the index that column has in the associated TableFormat + */ + protected int convertColumnIndexToFormat(int modelColumnIndex) { + Integer index = (Integer) visibleColumns.get(modelColumnIndex); + return index.intValue(); + } } |
From: <jtc...@li...> - 2004-06-07 05:32:27
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20896/source/frost/util/model/gui Modified Files: ModelTable.java Log Message: Bugfix: now, if the setColumnVisible method is told to hide a column that is already hidden, the command is really ignored. Index: ModelTable.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui/ModelTable.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** ModelTable.java 4 Jun 2004 00:50:06 -0000 1.14 --- ModelTable.java 7 Jun 2004 05:32:14 -0000 1.15 *************** *** 380,384 **** TableColumnModel columnModel = getTable().getColumnModel(); int position = visibleColumns.indexOf(new Integer(index)); ! if (visible) { if (position == -1) { --- 380,384 ---- TableColumnModel columnModel = getTable().getColumnModel(); int position = visibleColumns.indexOf(new Integer(index)); ! if (visible) { if (position == -1) { *************** *** 389,402 **** } } else { ! visibleColumns.remove(new Integer(index)); ! columnModel.removeColumn((TableColumn) columns.get(index)); ! //Here we have to decrease the model index of all the columns ! //that were to the right of the one we have removed. ! for (int i = 0; i < columnModel.getColumnCount(); i++) { ! TableColumn column = columnModel.getColumn(i); ! int modelIndex = column.getModelIndex(); ! if (modelIndex >= position) { ! column.setModelIndex(modelIndex - 1); ! } } } --- 389,404 ---- } } else { ! if (position != -1) { ! visibleColumns.remove(new Integer(index)); ! columnModel.removeColumn((TableColumn) columns.get(index)); ! //Here we have to decrease the model index of all the columns ! //that were to the right of the one we have removed. ! for (int i = 0; i < columnModel.getColumnCount(); i++) { ! TableColumn column = columnModel.getColumn(i); ! int modelIndex = column.getModelIndex(); ! if (modelIndex >= position) { ! column.setModelIndex(modelIndex - 1); ! } ! } } } |
From: <jtc...@li...> - 2004-06-04 22:31:23
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/fileTransfer/download In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14686/source/frost/fileTransfer/download Modified Files: DownloadTableFormat.java Log Message: Bugfix: changed the gender of the Spanish translation of DownloadTableFormat.Enabled (as "descarga" is female) Index: DownloadTableFormat.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/fileTransfer/download/DownloadTableFormat.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DownloadTableFormat.java 4 Jun 2004 22:12:58 -0000 1.5 --- DownloadTableFormat.java 4 Jun 2004 22:31:12 -0000 1.6 *************** *** 295,299 **** */ private void refreshLanguage() { ! setColumnName(0, languageResource.getString("Enabled")); setColumnName(1, languageResource.getString("Filename")); setColumnName(2, languageResource.getString("Size")); --- 295,299 ---- */ private void refreshLanguage() { ! setColumnName(0, languageResource.getString("DownloadTableFormat.Enabled")); setColumnName(1, languageResource.getString("Filename")); setColumnName(2, languageResource.getString("Size")); |
From: <jtc...@li...> - 2004-06-04 22:28:32
|
Update of /cvsroot/jtcfrost/frost-wot/source/res In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14181/source/res Modified Files: LangRes_es.java Log Message: Bugfix: changed the gender of the Spanish translation of DownloadTableFormat.Enabled (as "descarga" is female) Index: LangRes_es.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/res/LangRes_es.java,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** LangRes_es.java 4 Jun 2004 21:24:24 -0000 1.49 --- LangRes_es.java 4 Jun 2004 22:28:22 -0000 1.50 *************** *** 371,375 **** /// DownloadTableFormat /// ! {"Enabled", "Activo"}, {"Blocks", "Bloques"}, {"Tries", "Intentos"}, --- 371,375 ---- /// DownloadTableFormat /// ! {"DownloadTableFormat.Enabled", "Activa"}, {"Blocks", "Bloques"}, {"Tries", "Intentos"}, |
From: <jtc...@li...> - 2004-06-04 22:27:21
|
Update of /cvsroot/jtcfrost/frost-wot/source/res In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13949/source/res Modified Files: LangRes.java Log Message: Bugfix: changed the gender of the Spanish translation of DownloadTableFormat.Enabled (as "descarga" is female) Index: LangRes.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/res/LangRes.java,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** LangRes.java 4 Jun 2004 21:24:24 -0000 1.74 --- LangRes.java 4 Jun 2004 22:27:12 -0000 1.75 *************** *** 542,546 **** /// ! {"Enabled", "Enabled"}, {"Blocks", "Blocks"}, {"Tries", "Tries"}, --- 542,546 ---- /// ! {"DownloadTableFormat.Enabled", "Enabled"}, {"Blocks", "Blocks"}, {"Tries", "Tries"}, |
From: <jtc...@li...> - 2004-06-04 22:13:07
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/fileTransfer/download In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11382/source/frost/fileTransfer/download Modified Files: DownloadTableFormat.java Log Message: Changed: now the "Enabled" column has a proper title (instead of an space). It has been made resizable too. Index: DownloadTableFormat.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/fileTransfer/download/DownloadTableFormat.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** DownloadTableFormat.java 22 May 2004 02:46:51 -0000 1.4 --- DownloadTableFormat.java 4 Jun 2004 22:12:58 -0000 1.5 *************** *** 295,299 **** */ private void refreshLanguage() { ! setColumnName(0, " "); setColumnName(1, languageResource.getString("Filename")); setColumnName(2, languageResource.getString("Size")); --- 295,299 ---- */ private void refreshLanguage() { ! setColumnName(0, languageResource.getString("Enabled")); setColumnName(1, languageResource.getString("Filename")); setColumnName(2, languageResource.getString("Size")); *************** *** 507,511 **** // Sets the relative widths of the columns TableColumnModel columnModel = modelTable.getTable().getColumnModel(); ! int[] widths = { 0, 170, 80, 70, 80, 85, 25, 60, 60, 30 }; for (int i = 0; i < widths.length; i++) { // col 0 default width columnModel.getColumn(i).setPreferredWidth(widths[i]); --- 507,511 ---- // Sets the relative widths of the columns TableColumnModel columnModel = modelTable.getTable().getColumnModel(); ! int[] widths = { 30, 170, 80, 70, 80, 85, 25, 60, 60, 30 }; for (int i = 0; i < widths.length; i++) { // col 0 default width columnModel.getColumn(i).setPreferredWidth(widths[i]); *************** *** 513,517 **** // Column "Enabled" - columnModel.getColumn(0).setResizable(false); columnModel.getColumn(0).setCellRenderer(BooleanCell.RENDERER); columnModel.getColumn(0).setCellEditor(BooleanCell.EDITOR); --- 513,516 ---- |
From: <jtc...@li...> - 2004-06-04 21:24:33
|
Update of /cvsroot/jtcfrost/frost-wot/source/res In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2018/source/res Modified Files: LangRes_es.java LangRes.java Log Message: Added: a new string ("Enabled") for the DownloadTableFormat Index: LangRes.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/res/LangRes.java,v retrieving revision 1.73 retrieving revision 1.74 diff -C2 -d -r1.73 -r1.74 *** LangRes.java 27 May 2004 10:42:10 -0000 1.73 --- LangRes.java 4 Jun 2004 21:24:24 -0000 1.74 *************** *** 229,236 **** {"Remove finished downloads", "Remove finished downloads"}, //{"Cancel", "Cancel"}, // Defined above - - //Download table - {"Blocks", "Blocks"}, - {"Tries", "Tries"}, /////////////////////////////////////////////////// --- 229,232 ---- *************** *** 546,549 **** --- 542,548 ---- /// + {"Enabled", "Enabled"}, + {"Blocks", "Blocks"}, + {"Tries", "Tries"}, {"Waiting", "Waiting"}, {"Trying", "Trying"}, Index: LangRes_es.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/res/LangRes_es.java,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** LangRes_es.java 27 May 2004 10:42:10 -0000 1.48 --- LangRes_es.java 4 Jun 2004 21:24:24 -0000 1.49 *************** *** 43,47 **** {"Block messages with body containing (separate by ';' )","Bloquea mensajes cuyo cuerpo contiene (separados por ';' )"}, {"Block messages with subject containing (separate by ';' )","Bloquea mensajes cuyo asunto contiene (separados por ';' )"}, - {"Blocks", "Bloques"}, {"block user (sets to BAD)","bloquea usuario (marca como MALO)"}, {"board","foro"}, --- 43,46 ---- *************** *** 262,266 **** {"TOFUP","TOFSU"}, {"Translate Frost into another language","Traduce Frost a otro idioma"}, - {"Tries", "Intentos"}, {"Trust","ConfÃa"}, {"Try to download all segments, even if one fails","Intenta descargar todos los segmentos, aunque alguno falle"}, --- 261,264 ---- *************** *** 373,377 **** /// DownloadTableFormat /// ! {"Waiting","Esperando"}, {"Trying","Intentando"}, --- 371,377 ---- /// DownloadTableFormat /// ! {"Enabled", "Activo"}, ! {"Blocks", "Bloques"}, ! {"Tries", "Intentos"}, {"Waiting","Esperando"}, {"Trying","Intentando"}, |
From: <jtc...@li...> - 2004-06-04 07:54:52
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5822/source/frost/util/model/gui Modified Files: ModelTableHeader.java Log Message: Changed: if there is only one column showing, we disable its associated JCheckBoxMenuItem to prevent the user from hding that one too. Index: ModelTableHeader.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/util/model/gui/ModelTableHeader.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ModelTableHeader.java 4 Jun 2004 01:50:31 -0000 1.2 --- ModelTableHeader.java 4 Jun 2004 07:54:43 -0000 1.3 *************** *** 36,48 **** Iterator columns = modelTable.getColumns(); int i = 0; while (columns.hasNext()) { TableColumn column = (TableColumn) columns.next(); JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(column.getIdentifier().toString()); ! menuItem.setSelected(modelTable.isColumnVisible(i)); menuItem.addActionListener(listener); add(menuItem); i++; } super.show(invoker, x, y); } --- 36,61 ---- Iterator columns = modelTable.getColumns(); int i = 0; + int shownColumns = 0; + JCheckBoxMenuItem lastShownItem = null; while (columns.hasNext()) { TableColumn column = (TableColumn) columns.next(); JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(column.getIdentifier().toString()); ! if (modelTable.isColumnVisible(i)) { ! menuItem.setSelected(true); ! shownColumns++; ! lastShownItem = menuItem; ! } else { ! menuItem.setSelected(false); ! } menuItem.addActionListener(listener); add(menuItem); i++; } + //If there is only one column showing, we disable its + //checkbox to prevent the user from hiding that one too. + if (shownColumns == 1) { + lastShownItem.setEnabled(false); + } super.show(invoker, x, y); } |