1fa0dc1773
X-SVN-Rev: 15963
392 lines
13 KiB
Java
392 lines
13 KiB
Java
/*
|
|
*****************************************************************************
|
|
* 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);
|
|
}
|
|
}
|
|
|