| /* |
| ***************************************************************************** |
| * Copyright (C) 2000-2004, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ***************************************************************************** |
| */ |
| package com.ibm.rbm.gui; |
| |
| import java.awt.*; |
| import java.awt.event.*; |
| |
| import javax.swing.*; |
| import javax.swing.text.JTextComponent; |
| |
| import com.ibm.rbm.*; |
| |
| /** |
| * The class used to display statistics |
| */ |
| class RBStatisticsPanel extends JPanel { |
| RBManager rbm; |
| Bundle bundle; |
| |
| // Components - Bundle |
| JLabel jLabelStatsTitle; |
| |
| JLabel jLabelStatsName; |
| JLabel jLabelStatsComment; |
| JLabel jLabelStatsManager; |
| JLabel jLabelStatsLanguage; |
| JLabel jLabelStatsCountry; |
| JLabel jLabelStatsVariant; |
| JLabel jLabelStatsNumTrans; |
| JLabel jLabelStatsNumUntrans; |
| |
| JTextField jTextFieldStatsName; |
| JTextField jTextFieldStatsComment; |
| JTextField jTextFieldStatsManager; |
| JTextField jTextFieldStatsLanguage; |
| JTextField jTextFieldStatsCountry; |
| JTextField jTextFieldStatsVariant; |
| |
| JButton updateButton; |
| |
| Box boxStatsLeftRight1; |
| Box boxStatsLeftRight2; |
| |
| // Components - bundle manager |
| JLabel titleLabel; |
| JLabel numFileLabel; |
| JLabel numDupLabel; |
| JLabel numGroupLabel; |
| JLabel numItemLabel; |
| |
| JList groupList; |
| JList fileList; |
| JList dupList; |
| |
| JScrollPane groupScroll; |
| JScrollPane dupScroll; |
| JScrollPane fileScroll; |
| |
| JPanel filePanel; |
| JPanel itemPanel; |
| JPanel groupPanel; |
| |
| JButton fileButton; |
| JButton groupButton; |
| JButton itemButton; |
| |
| Box mainBox; |
| Box dupBox; |
| |
| |
| public void setBundle(Bundle b) { |
| rbm = null; |
| if (bundle == null) { |
| bundle = b; |
| initComponents(); |
| } else if (bundle != b) { |
| bundle = b; |
| updateComponents(); |
| } |
| } |
| |
| public void setManager(RBManager m) { |
| bundle = null; |
| if (rbm == null) { |
| rbm = m; |
| initComponents(); |
| } else if (rbm != m) { |
| rbm = m; |
| updateComponents(); |
| } |
| } |
| |
| public void removeElements() { |
| if (rbm != null || bundle != null) { |
| rbm = null; |
| bundle = null; |
| initComponents(); |
| } |
| } |
| |
| public void initComponents() { |
| // Initialize components |
| if (bundle != null) { |
| RBManagerGUI.debugMsg("Initializing components for Resource File"); |
| int untranslated = bundle.getUntranslatedItemsSize(); |
| |
| jLabelStatsTitle = new JLabel(bundle.name); |
| |
| jLabelStatsName = new JLabel(Resources.getTranslation("languagestats_title")); |
| jLabelStatsComment = new JLabel(Resources.getTranslation("languagestats_comment")); |
| jLabelStatsManager = new JLabel(Resources.getTranslation("languagestats_manager")); |
| jLabelStatsLanguage = new JLabel(Resources.getTranslation("languagestats_language")); |
| jLabelStatsCountry = new JLabel(Resources.getTranslation("languagestats_country")); |
| jLabelStatsVariant = new JLabel(Resources.getTranslation("languagestats_variant")); |
| jLabelStatsNumTrans = new JLabel(Resources.getTranslation("languagestats_item_count") + " " + |
| String.valueOf(bundle.allItems.size())); |
| jLabelStatsNumUntrans = new JLabel(Resources.getTranslation("languagestats_translation_count") + |
| String.valueOf(untranslated)); |
| |
| jTextFieldStatsName = new JTextField((bundle.name == null ? Resources.getTranslation("untitled") : bundle.name)); |
| jTextFieldStatsComment = new JTextField((bundle.comment == null ? "" : bundle.comment)); |
| jTextFieldStatsManager = new JTextField((bundle.manager == null ? "" : bundle.manager)); |
| jTextFieldStatsLanguage = new JTextField((bundle.language == null ? "" : bundle.language),25); |
| jTextFieldStatsCountry = new JTextField((bundle.country == null ? "" : bundle.country),25); |
| jTextFieldStatsVariant = new JTextField((bundle.variant == null ? "" : bundle.variant),25); |
| |
| boxStatsLeftRight1 = new Box(BoxLayout.X_AXIS); |
| boxStatsLeftRight2 = new Box(BoxLayout.X_AXIS); |
| |
| updateButton = new JButton(Resources.getTranslation("button_update")); |
| updateButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_update_trigger"))); |
| |
| // Set up the components |
| jLabelStatsTitle.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| |
| ButtonEnablerFocusListener befl = new ButtonEnablerFocusListener(updateButton); |
| |
| // Add listeners |
| updateButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| updateBundleInfo(); |
| } |
| }); |
| |
| jTextFieldStatsName.addFocusListener(befl); |
| jTextFieldStatsComment.addFocusListener(befl); |
| jTextFieldStatsManager.addFocusListener(befl); |
| jTextFieldStatsLanguage.addFocusListener(befl); |
| jTextFieldStatsCountry.addFocusListener(befl); |
| jTextFieldStatsVariant.addFocusListener(befl); |
| |
| jTextFieldStatsName.setColumns(35); |
| jTextFieldStatsComment.setColumns(35); |
| jTextFieldStatsManager.setColumns(35); |
| jTextFieldStatsLanguage.setColumns(25); |
| jTextFieldStatsCountry.setColumns(25); |
| jTextFieldStatsVariant.setColumns(25); |
| |
| //updateButton.setEnabled(false); |
| |
| // Update the display |
| if (mainBox != null){ |
| mainBox.removeAll(); |
| } else { |
| mainBox = new Box(BoxLayout.Y_AXIS); |
| } |
| if (dupBox != null) |
| dupBox.removeAll(); |
| removeAll(); |
| mainBox.add(jLabelStatsTitle); |
| mainBox.add(Box.createVerticalStrut(10)); |
| mainBox.add(jLabelStatsName); |
| mainBox.add(jTextFieldStatsName); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsComment); |
| mainBox.add(jTextFieldStatsComment); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsManager); |
| mainBox.add(jTextFieldStatsManager); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsLanguage); |
| mainBox.add(jTextFieldStatsLanguage); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsCountry); |
| mainBox.add(jTextFieldStatsCountry); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsVariant); |
| mainBox.add(jTextFieldStatsVariant); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsNumTrans); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(jLabelStatsNumUntrans); |
| mainBox.add(Box.createVerticalStrut(10)); |
| mainBox.add(updateButton); |
| mainBox.add(Box.createHorizontalGlue()); |
| if (!(getLayout() instanceof FlowLayout)) { |
| setLayout(new FlowLayout()); |
| } |
| add(mainBox); |
| } else if (rbm != null) { |
| RBManagerGUI.debugMsg("Initializing components for Resource Bundle"); |
| titleLabel = new JLabel(rbm.getBaseClass() + " - " + Resources.getTranslation("baseclass")); |
| |
| numFileLabel = new JLabel(Resources.getTranslation("basestats_file_count") + " " + rbm.getNumberLanguages()); |
| numGroupLabel = new JLabel(Resources.getTranslation("basestats_group_count") + " " + rbm.getNumberGroups()); |
| numItemLabel = new JLabel(Resources.getTranslation("basestats_item_count") + " " + rbm.getNumberTotalTranslations()); |
| numDupLabel = new JLabel(Resources.getTranslation("basestats_duplicates_count") + " " + rbm.getNumberDuplicates()); |
| |
| fileList = new JList(rbm.getLanguageListingVector()); |
| groupList = new JList(rbm.getGroupListingVector()); |
| dupList = new JList(rbm.getDuplicatesListingVector()); |
| |
| fileButton = new JButton(Resources.getTranslation("button_add_file")); |
| groupButton = new JButton(Resources.getTranslation("button_add_group")); |
| itemButton = new JButton(Resources.getTranslation("button_add_resource")); |
| |
| filePanel = new JPanel(); |
| groupPanel = new JPanel(); |
| itemPanel = new JPanel(); |
| |
| fileScroll = new JScrollPane(fileList); |
| groupScroll = new JScrollPane(groupList); |
| dupScroll = new JScrollPane(dupList); |
| |
| if (mainBox == null) { |
| mainBox = new Box(BoxLayout.Y_AXIS); |
| } else { |
| mainBox.removeAll(); |
| } |
| dupBox = new Box(BoxLayout.Y_AXIS); |
| |
| // Set up the components |
| filePanel.setLayout(new BorderLayout()); |
| groupPanel.setLayout(new BorderLayout()); |
| itemPanel.setLayout(new BorderLayout()); |
| |
| filePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("basestats_file_group"))); |
| groupPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("basestats_group_group"))); |
| itemPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("basestats_item_group"))); |
| |
| titleLabel.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| |
| fileButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_add_file_trigger"))); |
| groupButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_add_group_trigger"))); |
| itemButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_add_resource_trigger"))); |
| |
| // Add listeners |
| fileButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| Container c = ((JButton)ev.getSource()).getParent(); |
| RBManagerGUI gui = null; |
| while (!(c.getParent() instanceof RBManagerGUI)) c = c.getParent(); |
| gui = (RBManagerGUI)c.getParent(); |
| gui.createResourceFile(); |
| } |
| }); |
| |
| groupButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| Container c = ((JButton)ev.getSource()).getParent(); |
| RBManagerGUI gui = null; |
| while (!(c.getParent() instanceof RBManagerGUI)) c = c.getParent(); |
| gui = (RBManagerGUI)c.getParent(); |
| gui.createBundleGroup(); |
| } |
| }); |
| |
| itemButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| Container c = ((JButton)ev.getSource()).getParent(); |
| RBManagerGUI gui = null; |
| while (!(c.getParent() instanceof RBManagerGUI)) c = c.getParent(); |
| gui = (RBManagerGUI)c.getParent(); |
| gui.createBundleItem(); |
| } |
| }); |
| |
| // Update the display |
| filePanel.removeAll(); |
| filePanel.add(numFileLabel, BorderLayout.NORTH); |
| filePanel.add(fileScroll, BorderLayout.CENTER); |
| filePanel.add(fileButton, BorderLayout.SOUTH); |
| |
| groupPanel.removeAll(); |
| groupPanel.add(numGroupLabel, BorderLayout.NORTH); |
| groupPanel.add(groupScroll, BorderLayout.CENTER); |
| groupPanel.add(groupButton, BorderLayout.SOUTH); |
| |
| dupBox.removeAll(); |
| dupBox.add(numDupLabel); |
| dupBox.add(dupScroll); |
| |
| itemPanel.removeAll(); |
| itemPanel.add(numItemLabel, BorderLayout.NORTH); |
| itemPanel.add(dupBox, BorderLayout.CENTER); |
| itemPanel.add(itemButton, BorderLayout.SOUTH); |
| |
| mainBox.removeAll(); |
| mainBox.add(titleLabel); |
| mainBox.add(Box.createVerticalStrut(10)); |
| mainBox.add(filePanel); |
| mainBox.add(Box.createVerticalStrut(10)); |
| mainBox.add(groupPanel); |
| mainBox.add(Box.createVerticalStrut(10)); |
| mainBox.add(itemPanel); |
| |
| removeAll(); |
| if (!(getLayout() instanceof BorderLayout)) |
| setLayout(new BorderLayout()); |
| add(mainBox, BorderLayout.CENTER); |
| updateComponents(); |
| } else { |
| removeAll(); |
| } |
| repaint(); |
| } |
| |
| public void updateComponents() { |
| if (bundle != null) { |
| int untranslated = bundle.getUntranslatedItemsSize(); |
| |
| jLabelStatsTitle.setText(bundle.name); |
| |
| jTextFieldStatsName.setText(bundle.name == null ? Resources.getTranslation("untitled") : bundle.name); |
| jTextFieldStatsComment.setText(bundle.comment == null ? "" : bundle.comment); |
| jTextFieldStatsManager.setText(bundle.manager == null ? "" : bundle.manager); |
| jTextFieldStatsLanguage.setText(bundle.language == null ? "" : bundle.language); |
| jTextFieldStatsCountry.setText(bundle.country == null ? "" : bundle.country); |
| jTextFieldStatsVariant.setText(bundle.variant == null ? "" : bundle.variant); |
| jLabelStatsNumTrans.setText(Resources.getTranslation("languagestats_item_count") + " " + |
| String.valueOf(bundle.allItems.size())); |
| jLabelStatsNumUntrans.setText(Resources.getTranslation("languagestats_translation_count") + |
| String.valueOf(untranslated)); |
| } else if (rbm == null) { |
| removeAll(); |
| } |
| |
| } |
| |
| void updateBundleInfo() { |
| bundle.name = jTextFieldStatsName.getText().trim(); |
| bundle.comment = jTextFieldStatsComment.getText().trim(); |
| bundle.manager = jTextFieldStatsManager.getText().trim(); |
| bundle.language = jTextFieldStatsLanguage.getText().trim(); |
| bundle.country = jTextFieldStatsCountry.getText().trim(); |
| bundle.variant = jTextFieldStatsVariant.getText().trim(); |
| updateButton.setEnabled(false); |
| } |
| |
| public RBStatisticsPanel() { |
| super(); |
| bundle = null; |
| rbm = null; |
| } |
| |
| } |
| |
| class ButtonEnablerFocusListener implements FocusListener { |
| JButton button; |
| String beforeText = null; |
| |
| public ButtonEnablerFocusListener(JButton button) { |
| super(); |
| this.button = button; |
| } |
| |
| public void focusGained(FocusEvent ev) { |
| Object o = ev.getSource(); |
| if (o instanceof JTextComponent) { |
| JTextComponent jtc = (JTextComponent)o; |
| beforeText = jtc.getText(); |
| } |
| } |
| |
| public void focusLost(FocusEvent ev) { |
| Object o = ev.getSource(); |
| if (o instanceof JTextComponent) { |
| JTextComponent jtc = (JTextComponent)o; |
| String afterText = jtc.getText(); |
| if (!afterText.equals(beforeText)) button.setEnabled(true); |
| } else button.setEnabled(true); |
| } |
| } |
| |