| /* |
| ***************************************************************************** |
| * Copyright (C) 2000-2002, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ***************************************************************************** |
| * |
| * $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/rbm/Attic/RBManagerGUI.java,v $ |
| * $Date: 2002/05/20 18:53:09 $ |
| * $Revision: 1.1 $ |
| * |
| ***************************************************************************** |
| */ |
| package com.ibm.rbm; |
| |
| import java.awt.*; |
| import java.awt.event.*; |
| import java.io.*; |
| import java.text.DateFormat; |
| import java.util.*; |
| import javax.swing.*; |
| import javax.swing.event.*; |
| import javax.swing.table.*; |
| import javax.swing.text.*; |
| import javax.swing.tree.*; |
| import javax.swing.filechooser.*; |
| |
| /** |
| * The Graphical User Interface for working with and through a Resource Bundle Manager. The GUI has no public main |
| * method. It is instead instantiated from running the main method in RBManager. For help with using this interface, |
| * consult the documentation included in the project. |
| * |
| * @author Jared Jackson - Email: <a href="mailto:jjared@almaden.ibm.com">jjared@almaden.ibm.com</a> |
| * @see com.ibm.rbm.RBManager |
| */ |
| public class RBManagerGUI extends JFrame implements ActionListener, MouseListener, ChangeListener, TreeSelectionListener |
| { |
| // CONSTANTS |
| private static final int buffer = 20; |
| private static final Dimension dimMain = new Dimension(750,550); |
| private static final Dimension dimMainMax = new Dimension(2000,1500); |
| private static final Dimension dimMainMin = new Dimension(550,350); |
| private static final Dimension dimTop = new Dimension(dimMain.width - buffer,50); |
| private static final Dimension dimTopMax = new Dimension(dimMainMax.width - buffer,50); |
| private static final Dimension dimTopMin = new Dimension(dimMainMin.width - buffer,50); |
| private static final Dimension dimBottom = new Dimension(dimMain.width - buffer,dimMain.height-dimTop.height - buffer); |
| private static final Dimension dimBottomMax = new Dimension(dimMainMax.width - buffer,dimMainMax.height-dimTopMin.height - buffer); |
| private static final Dimension dimBottomMin = new Dimension(dimMainMin.width - buffer,dimMainMin.height-dimTopMax.height - buffer); |
| private static final Dimension dimLeft = new Dimension(175,dimBottom.height - buffer); |
| private static final Dimension dimRight = new Dimension(dimMain.width-dimLeft.width - buffer,dimBottom.height - buffer); |
| |
| /** |
| * Used for toggling the debug mode |
| */ |
| public static final boolean debug = false; |
| /** |
| * Used to count debug messages |
| */ |
| public static int debugcount = 0; |
| |
| // member declarations |
| |
| // ** DATA ** |
| RBManager rbm = null; |
| String userName = Resources.getTranslation("unknown_user"); |
| |
| DefaultMutableTreeNode activeNode = null; |
| |
| // ** MAIN MENU ** |
| RBManagerMenuBar jMenuBarMain = null; |
| |
| // ** CONTENT PANES ** |
| Box boxMain = new Box(BoxLayout.Y_AXIS); |
| JPanel jPanelTop = new JPanel(); |
| JPanel jPanelBottom = new JPanel(); |
| JSplitPane jSplitPaneMain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); |
| |
| // ** TOP COMPONENTS ** |
| JLabel jLabelTitle = new JLabel(new ImageIcon(this.getClass().getResource("images/" + |
| Resources.getTranslation("logo_filename")))); |
| //JLabel jLabelTitle = new JLabel(new ImageIcon(this.getClass().getResource("images/TitleLogo_transparent.gif"))); |
| |
| // ** SPLIT PANE COMPONENTS ** |
| JTree jTreeDisplay = new JTree(); |
| JTabbedPane jTabbedPaneMain = new JTabbedPane(); |
| RBStatisticsPanel jPanelStats = new RBStatisticsPanel(); |
| RBUntranslatedPanel jPanelUntrans = new RBUntranslatedPanel(this); |
| RBGroupPanel jPanelGroups = new RBGroupPanel(this); |
| RBSearchPanel jPanelSearch = new RBSearchPanel(this); |
| JScrollPane jScrollPaneTree = new JScrollPane(jTreeDisplay, |
| JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, |
| JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); |
| // ** PROJECT VIEW SPLIT PANE COMPONENTS |
| JTabbedPane treeTabbedPane = new JTabbedPane(); |
| JTree projectTree = new JTree(); |
| JScrollPane projectScrollPane = new JScrollPane(projectTree, |
| JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, |
| JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); |
| RBProjectItemPanel projectPanel = new RBProjectItemPanel(this); |
| RBProject project = null; |
| |
| // ** File Chooser ** |
| JFileChooser openFileChooser = new JFileChooser(); |
| JFileChooser saveFileChooser = new JFileChooser(); |
| JFileChooser projectFileChooser = new JFileChooser(); |
| |
| /** |
| * Creation of the GUI should be immediately followed by the method calls to initComponents() and setVisible(true). |
| * These methods were not called by default for programming discretion |
| */ |
| |
| public RBManagerGUI() |
| { |
| } |
| |
| /** |
| * Inherits from JFrame.validate(), with some component updates |
| */ |
| |
| public void validate() { |
| super.validate(); |
| updateDisplayPanels(); |
| } |
| |
| /** |
| * Initial construction of all of the GUI components. This method should be called immediately following the |
| * construction of the GUI object. |
| */ |
| |
| public void initComponents() throws Exception |
| { |
| this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); |
| // the following code sets the frame's initial state |
| |
| openFileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() { |
| public boolean accept(File f) { |
| if (f.isDirectory()) return true; |
| |
| String name = f.getName(); |
| if (!(name.toLowerCase().endsWith(".properties"))) return false; |
| if (name.indexOf("_") > 0) return false; |
| return true; |
| } |
| |
| public String getDescription() { |
| return Resources.getTranslation("dialog_file_filter_description"); |
| } |
| }); |
| |
| saveFileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() { |
| public boolean accept(File f) { |
| if (f.isDirectory()) return true; |
| |
| String name = f.getName(); |
| if (!(name.toLowerCase().endsWith(".properties"))) return false; |
| if (name.indexOf("_") > 0) return false; |
| return true; |
| } |
| |
| public String getDescription() { |
| return Resources.getTranslation("dialog_file_filter_description"); |
| } |
| }); |
| |
| projectFileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() { |
| public boolean accept(File f) { |
| if (f.isDirectory()) return true; |
| |
| String name = f.getName(); |
| if (!(name.toLowerCase().endsWith(".rbproject"))) return false; |
| return true; |
| } |
| |
| public String getDescription() { |
| return Resources.getTranslation("dialog_project_filter_description"); |
| } |
| }); |
| |
| // ** The Main program icon ** |
| setIconImage((new ImageIcon(getClass().getResource("images/tree_icon_bundle.gif"))).getImage()); |
| |
| // ** MAIN MENU BAR ITEMS ** |
| jMenuBarMain = new RBManagerMenuBar(this); |
| |
| // ** DISPLAY TREE ** |
| //jScrollPaneTree.setSize(dimLeft); |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| |
| jPanelStats.setSize(dimRight); |
| jPanelUntrans.setSize(dimRight); |
| jPanelGroups.setSize(dimRight); |
| jPanelSearch.setSize(dimRight); |
| |
| // ** MAIN TABBED PANE ** |
| jTabbedPaneMain.setSize(dimRight); |
| jTabbedPaneMain.addTab(Resources.getTranslation("tab_statistics"), jPanelStats); |
| jTabbedPaneMain.addTab(Resources.getTranslation("tab_untranslated"), jPanelUntrans); |
| jTabbedPaneMain.addTab(Resources.getTranslation("tab_groups"), jPanelGroups); |
| jTabbedPaneMain.addTab(Resources.getTranslation("tab_search"), jPanelSearch); |
| |
| // ** LEFT TABBED PANE ** |
| treeTabbedPane.setSize(dimLeft); |
| treeTabbedPane.setPreferredSize(dimLeft); |
| treeTabbedPane.addTab(Resources.getTranslation("tab_bundle"), jScrollPaneTree); |
| treeTabbedPane.addTab(Resources.getTranslation("tab_project"), projectScrollPane); |
| treeTabbedPane.addChangeListener(this); |
| |
| // ** MAIN SPLIT PANE ** |
| //jSplitPaneMain.setSize(dimBottom); |
| //jSplitPaneMain.setLeftComponent(jScrollPaneTree); |
| jSplitPaneMain.setLeftComponent(treeTabbedPane); |
| jSplitPaneMain.setRightComponent(jTabbedPaneMain); |
| jSplitPaneMain.setContinuousLayout(true); |
| |
| // ** TOP PANEL ** |
| //jPanelTop.setPreferredSize(dimTop); |
| jPanelTop.setMaximumSize(dimTopMax); |
| jPanelTop.setMinimumSize(dimTopMin); |
| jPanelTop.setBorder(BorderFactory.createLineBorder(Color.black)); |
| jPanelTop.add(jLabelTitle); |
| |
| // ** BOTTOM PANEL ** |
| //jPanelBottom.setPreferredSize(dimBottom); |
| jPanelBottom.setMaximumSize(dimBottomMax); |
| jPanelBottom.setMinimumSize(dimBottomMin); |
| jPanelBottom.setBorder(BorderFactory.createLineBorder(Color.black)); |
| jPanelBottom.setLayout(new BorderLayout(1,1)); |
| jPanelBottom.removeAll(); |
| jPanelBottom.add(jSplitPaneMain, BorderLayout.CENTER); |
| |
| // ** MAIN FRAME SETUP ** |
| setLocation(new java.awt.Point(0, 0)); |
| dimMain.height += jMenuBarMain.getPreferredSize().height; |
| setSize(dimMain); |
| ((JComponent)getContentPane()).setMaximumSize(dimMainMax); |
| ((JComponent)getContentPane()).setMinimumSize(dimMainMin); |
| setJMenuBar(jMenuBarMain); |
| getContentPane().removeAll(); |
| getContentPane().add(jPanelTop,BorderLayout.NORTH); |
| getContentPane().add(jPanelBottom, BorderLayout.CENTER); |
| setTitle(Resources.getTranslation("resource_bundle_manager")); |
| validateTree(); |
| |
| addWindowListener(new java.awt.event.WindowAdapter() { |
| public void windowClosing(java.awt.event.WindowEvent e) { |
| thisWindowClosing(e); |
| } |
| }); |
| } |
| |
| private boolean mShown = false; |
| |
| /** |
| * Reveals the private method of JFrame.validateTree() |
| */ |
| |
| public void validateMyTree() { |
| validateTree(); |
| } |
| |
| /** |
| * Creates a new Resource File (i.e. English, English Canada, Finnish, etc.) |
| */ |
| |
| public void createResourceFile() { |
| new ResourceCreationDialog(rbm, this, Resources.getTranslation("dialog_title_new_file"), true); |
| } |
| |
| /** |
| * Creates a new group for grouping BundleItems |
| */ |
| |
| public void createBundleGroup() { |
| new BundleGroupCreationDialog(rbm, this, Resources.getTranslation("dialog_title_new_group"), true); |
| updateDisplayPanels(); |
| } |
| |
| /** |
| * Creates a new BundleItem |
| */ |
| |
| public void createBundleItem() { |
| new BundleItemCreationDialog(rbm, this, Resources.getTranslation("dialog_title_new_item"), true); |
| } |
| |
| /** |
| * Handles events generated |
| */ |
| |
| public void valueChanged(TreeSelectionEvent ev) { |
| if (ev.getSource() == projectTree) updateProjectPanels(); |
| else if (ev.getSource() == jTreeDisplay) { |
| TreePath selPath = jTreeDisplay.getSelectionPath(); |
| activeNode = (DefaultMutableTreeNode)selPath.getLastPathComponent(); |
| updateDisplayPanels(); |
| /* |
| int selRow = jTreeDisplay.getRowForLocation(ev.getX(), ev.getY()); |
| TreePath selPath = jTreeDisplay.getPathForLocation(ev.getX(), ev.getY()); |
| if (selRow != -1) { |
| if (ev.getClickCount() == 1 && ev.getSource() == jTreeDisplay) { |
| |
| System.out.println("Other tree"); |
| } else if (ev.getClickCount() == 1 && ev.getSource() == projectTree) { |
| System.out.println("Mouse pressed"); |
| updateProjectPanels(); |
| } else System.out.println(String.valueOf(ev.getClickCount()) + " " + ev.getSource().toString()); |
| |
| */ |
| } |
| } |
| |
| public void stateChanged(ChangeEvent ev) { |
| if (ev.getSource() == treeTabbedPane) { |
| int index = treeTabbedPane.getSelectedIndex(); |
| String title = treeTabbedPane.getTitleAt(index); |
| if (title.equals(Resources.getTranslation("tab_bundle"))) { |
| jSplitPaneMain.setRightComponent(jTabbedPaneMain); |
| updateDisplayPanels(); |
| } else if (title.equals(Resources.getTranslation("tab_project"))) { |
| jSplitPaneMain.setRightComponent(projectPanel); |
| updateProjectPanels(); |
| } |
| } |
| } |
| |
| public void actionPerformed(ActionEvent ev) { |
| if (ev.getID() == ActionEvent.ACTION_PERFORMED) { |
| if (ev.getSource() instanceof JMenuItem && ((JMenuItem)ev.getSource()).getName() != null && |
| ((JMenuItem)ev.getSource()).getName().startsWith("__")) { // Menu -> File -> __Recent File |
| // This item is a recent file selection. We need to open that file |
| String fileLocation = ((JMenuItem)ev.getSource()).getName(); |
| fileLocation = fileLocation.substring(2,fileLocation.length()); |
| try { |
| rbm = new RBManager(new File(fileLocation)); |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this,Resources.getTranslation("error_opening_file", ev.getActionCommand()), |
| Resources.getTranslation("dialog_title_error_opening_file"), |
| JOptionPane.ERROR_MESSAGE); |
| rbm = null; |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_save")) && |
| ((JMenuItem)ev.getSource()).getName() != null) { // Popup Tree Menu -> Save |
| String selectedEncoding = ((JMenuItem)ev.getSource()).getName(); |
| saveResources(selectedEncoding); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_hide")) && |
| ((JMenuItem)ev.getSource()).getName() != null) { // Popup Tree Menu -> Hide |
| String selectedEncoding = ((JMenuItem)ev.getSource()).getName(); |
| // Should I prompt for this? |
| hideResources(selectedEncoding); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_delete")) && |
| ((JMenuItem)ev.getSource()).getName() != null) { // Popup Tree Menu -> Delete |
| String selectedEncoding = ((JMenuItem)ev.getSource()).getName(); |
| int response = JOptionPane.showConfirmDialog(this, |
| Resources.getTranslation("dialog_delete_warning"), |
| Resources.getTranslation("dialog_title_quit"), JOptionPane.YES_NO_CANCEL_OPTION, |
| JOptionPane.WARNING_MESSAGE); |
| if (response == JOptionPane.YES_OPTION) { |
| deleteResources(selectedEncoding); |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_new_project"))) { |
| String response = JOptionPane.showInputDialog(this, // Popup Project Menu -> New Project |
| Resources.getTranslation("dialog_new_project"), Resources.getTranslation("dialog_title_new_project"), |
| JOptionPane.QUESTION_MESSAGE); |
| if (response == null || response.trim().equals("")) return; |
| project = new RBProject(response); |
| updateProjectTree(); |
| updateProjectPanels(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_open_project"))) { |
| int result = projectFileChooser.showOpenDialog(this); // Popup Project Menu -> Open Project |
| if (result == JFileChooser.APPROVE_OPTION) { |
| File f = projectFileChooser.getSelectedFile(); |
| try { |
| project = new RBProject(f); |
| updateProjectTree(); |
| updateProjectPanels(); |
| } catch (Exception ex) { |
| JOptionPane.showMessageDialog(this, |
| Resources.getTranslation("error_creating_project"), |
| Resources.getTranslation("dialog_title_error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_save_project"))) { |
| int result = projectFileChooser.showSaveDialog(this); // Popup Project Menu -> Save Project |
| if (result == JFileChooser.APPROVE_OPTION) { |
| File f = projectFileChooser.getSelectedFile(); |
| try { |
| project.write(f); |
| } catch (Exception ex) { |
| JOptionPane.showMessageDialog(this, |
| Resources.getTranslation("error_saving_project"), |
| Resources.getTranslation("dialog_title_error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_add_project_bundle"))) { |
| int result = openFileChooser.showOpenDialog(this); // Popup Project Menu -> Add Bundle |
| if (result == JFileChooser.APPROVE_OPTION) { |
| File f = openFileChooser.getSelectedFile(); |
| try { |
| project.addBundle(f.getAbsolutePath()); |
| updateProjectTree(); |
| updateProjectPanels(); |
| } catch (Exception ex) { |
| JOptionPane.showMessageDialog(this, |
| Resources.getTranslation("error_adding_project_bundle"), |
| Resources.getTranslation("dialog_title_error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_remove_project_bundle"))) { |
| String bundleName = ((JMenuItem)ev.getSource()).getName(); // Popup Project Menu -> Remove Bundle |
| project.removeBundle(bundleName); |
| updateProjectTree(); |
| updateProjectPanels(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_tree_select_project_bundle"))) { |
| String bundleName = ((JMenuItem)ev.getSource()).getName(); // Popup Project Menu -> Select Bundle |
| RBManager bundle = project.getBundle(bundleName); |
| rbm = bundle; |
| updateDisplayTree(); |
| updateDisplayPanels(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_quit"))) { |
| // Menu -> File -> Quit |
| thisWindowClosing(null); |
| return; |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_new"))) { |
| // Menu -> File -> New Resource Bundle |
| promptForSave(null); |
| String oldUser = getUser(); |
| if (rbm != null && rbm.getUser() != null && !(rbm.getUser().equals(Resources.getTranslation("unknown_user")))) |
| oldUser = rbm.getUser(); |
| String response = JOptionPane.showInputDialog(this, |
| Resources.getTranslation("dialog_new_baseclass"), Resources.getTranslation("dialog_title_new_bundle"), |
| JOptionPane.QUESTION_MESSAGE); |
| if (response != null) { |
| // Test the response for white space |
| if (response.indexOf(" ") > 0 || response.indexOf("\t") > 0 || response.indexOf("\n") > 0) { |
| JOptionPane.showMessageDialog(this, |
| Resources.getTranslation("error_baseclass_whitespace") + "\n" + Resources.getTranslation("error_bundle_not_created"), |
| Resources.getTranslation("dialog_title_error_creating_bundle"), JOptionPane.ERROR_MESSAGE); |
| } else { |
| rbm = new RBManager(response); |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| updateDisplayPanels(); |
| } |
| } |
| // Update the user information |
| if (oldUser.equals(Resources.getTranslation("unknown_user"))) { |
| String user = JOptionPane.showInputDialog(this, |
| Resources.getTranslation("dialog_user_name"), Resources.getTranslation("dialog_title_user_name"), |
| JOptionPane.QUESTION_MESSAGE); |
| if (user != null && !(user.equals(""))) setUser(user); |
| } else rbm.setUser(oldUser); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_open"))) { |
| // Menu -> File -> Open Resource Bundle |
| promptForSave(null); |
| String oldUser = getUser(); |
| if (rbm != null && rbm.getUser() != null && !(rbm.getUser().equals(Resources.getTranslation("unknown_user")))) |
| oldUser = rbm.getUser(); |
| openFileChooser.setSelectedFile(new File("Resources" + File.separator + "RBManager.properties")); |
| int status = openFileChooser.showOpenDialog(this); |
| if (status == JFileChooser.CANCEL_OPTION) { |
| // File opening canceled |
| } else if (status == JFileChooser.ERROR_OPTION) { |
| // Error in file open |
| } else { |
| // A file has been selected |
| try { |
| rbm = new RBManager(openFileChooser.getSelectedFile()); |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| } catch (IOException ioe) { |
| // Should provide some alert here |
| System.err.println("Could not open the file " + openFileChooser.getSelectedFile().getAbsolutePath() + |
| ": " + ioe.getMessage()); |
| rbm = null; |
| } |
| } |
| if (rbm == null) return; |
| // Update the user information |
| if (oldUser.equals(Resources.getTranslation("unknown_user"))) { |
| String user = JOptionPane.showInputDialog(this, |
| Resources.getTranslation("dialog_user_name"), Resources.getTranslation("dialog_title_user_name"), |
| JOptionPane.QUESTION_MESSAGE); |
| if (user != null && !(user.equals(""))) setUser(user); |
| } else rbm.setUser(oldUser); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_save"))) { |
| // Menu -> File -> Save Resource Bundle |
| saveResources(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_saveas"))) { |
| // Menu -> File -> Save Resource Bundle As |
| saveResourcesAs(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_import_properties"))) { |
| // Menu -> File -> Import -> Properties |
| if (rbm == null || rbm.getBundles() == null) return; |
| RBPropertiesImporter importer = new RBPropertiesImporter(Resources.getTranslation("import_properties_title"), rbm, this); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_import_java"))) { |
| // Menu -> File -> Import -> Java |
| if (rbm == null || rbm.getBundles() == null) return; |
| RBJavaImporter importer = new RBJavaImporter(Resources.getTranslation("import_java_title"), rbm, this); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_import_TMX"))) { |
| // Menu -> File -> Import -> TMX |
| if (rbm == null || rbm.getBundles() == null) return; |
| RBTMXImporter importer = new RBTMXImporter(Resources.getTranslation("import_TMX_title"), rbm, this); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_export_properties"))) { |
| // Menu -> File -> Export -> Properties |
| RBPropertiesExporter exp = new RBPropertiesExporter(); |
| try { |
| if (rbm != null && rbm.getBundles() != null) exp.export(rbm); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_export"), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_export_java"))) { |
| // Menu -> File -> Export -> Java |
| RBJavaExporter exp = new RBJavaExporter(); |
| try { |
| if (rbm != null && rbm.getBundles() != null) exp.export(rbm); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_export"), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_export_ICU"))) { |
| // Menu -> File -> Export -> Java |
| RBICUExporter exp = new RBICUExporter(); |
| try { |
| if (rbm != null && rbm.getBundles() != null) exp.export(rbm); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_export"), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_file_export_TMX"))) { |
| // Menu -> File -> Export -> TMX |
| RBTMXExporter exp = new RBTMXExporter(); |
| try { |
| if (rbm != null && rbm.getBundles() != null) exp.export(rbm); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_export"), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_options_addfile"))) { |
| // Menu -> Options -> Add New Resource |
| createResourceFile(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_options_addgroup")) || |
| ev.getActionCommand().equals(Resources.getTranslation("button_create_group"))) { |
| // Menu -> Options -> Add New Group |
| createBundleGroup(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_options_addentry"))) { |
| // Menu -> Options -> Add New Entry |
| createBundleItem(); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_options_preferences"))) { |
| // Menu -> Options -> Preferences |
| PreferencesDialog pd = new PreferencesDialog(this); |
| } else if (ev.getActionCommand().equals(Resources.getTranslation("menu_help_about"))) { |
| // Menu -> Help -> About RBManager |
| AboutDialog.showDialog(this); |
| } else RBManagerGUI.debugMsg("Missed Action Command: " + ev.getActionCommand()); |
| |
| } |
| |
| } |
| |
| /** |
| * Handles events generated |
| */ |
| |
| public void mousePopup(MouseEvent ev) { |
| if (ev.getSource() == jTreeDisplay) { |
| int selRow = jTreeDisplay.getRowForLocation(ev.getX(), ev.getY()); |
| TreePath selPath = jTreeDisplay.getPathForLocation(ev.getX(), ev.getY()); |
| if (selRow != -1) { |
| if (ev.getClickCount() == 1) { |
| DefaultMutableTreeNode node = (DefaultMutableTreeNode)selPath.getLastPathComponent(); |
| Object obj = node.getUserObject(); |
| if (obj == null || !(obj instanceof Bundle)) return; |
| Bundle bundle = (Bundle)obj; |
| String encoding = bundle.encoding; |
| if (encoding == null) encoding = new String(); |
| |
| // Create the menu to display |
| JPopupMenu popupMenu = new JPopupMenu(); |
| JMenuItem saveItem = new JMenuItem(Resources.getTranslation("menu_tree_save")); |
| JMenuItem hideItem = new JMenuItem(Resources.getTranslation("menu_tree_hide")); |
| JMenuItem deleteItem = new JMenuItem(Resources.getTranslation("menu_tree_delete")); |
| |
| saveItem.setName(encoding); saveItem.addActionListener(this); |
| hideItem.setName(encoding); hideItem.addActionListener(this); |
| deleteItem.setName(encoding); deleteItem.addActionListener(this); |
| |
| popupMenu.add(saveItem); |
| if (node.getLevel() != 1) { |
| popupMenu.add(hideItem); |
| popupMenu.add(deleteItem); |
| } |
| |
| popupMenu.show(ev.getComponent(), ev.getX(), ev.getY()); |
| } |
| } |
| } else if (ev.getSource() == projectTree) { |
| int selRow = projectTree.getRowForLocation(ev.getX(), ev.getY()); |
| TreePath selPath = projectTree.getPathForLocation(ev.getX(), ev.getY()); |
| if (selRow != -1 && ev.getClickCount() == 1) { |
| DefaultMutableTreeNode node = (DefaultMutableTreeNode)selPath.getLastPathComponent(); |
| Object obj = node.getUserObject(); |
| if (obj == null) return; |
| else if (obj instanceof String) { |
| JPopupMenu popupMenu = new JPopupMenu(); |
| JMenuItem newItem = new JMenuItem(Resources.getTranslation("menu_tree_new_project")); |
| JMenuItem openItem = new JMenuItem(Resources.getTranslation("menu_tree_open_project")); |
| JMenuItem saveItem = new JMenuItem(Resources.getTranslation("menu_tree_save_project")); |
| newItem.addActionListener(this); |
| openItem.addActionListener(this); |
| saveItem.addActionListener(this); |
| popupMenu.add(newItem); |
| popupMenu.add(openItem); |
| popupMenu.add(saveItem); |
| popupMenu.show(ev.getComponent(), ev.getX(), ev.getY()); |
| } else if (obj instanceof RBProject) { |
| JPopupMenu popupMenu = new JPopupMenu(); |
| JMenuItem newItem = new JMenuItem(Resources.getTranslation("menu_tree_new_project")); |
| JMenuItem openItem = new JMenuItem(Resources.getTranslation("menu_tree_open_project")); |
| JMenuItem saveItem = new JMenuItem(Resources.getTranslation("menu_tree_save_project")); |
| JMenuItem addItem = new JMenuItem(Resources.getTranslation("menu_tree_add_project_bundle")); |
| newItem.addActionListener(this); |
| openItem.addActionListener(this); |
| saveItem.addActionListener(this); |
| addItem.addActionListener(this); |
| popupMenu.add(newItem); |
| popupMenu.add(openItem); |
| popupMenu.add(saveItem); |
| popupMenu.add(addItem); |
| popupMenu.show(ev.getComponent(), ev.getX(), ev.getY()); |
| } else if (obj instanceof RBManager) { |
| RBManager rbm = (RBManager)obj; |
| JPopupMenu popupMenu = new JPopupMenu(); |
| JMenuItem selectItem = new JMenuItem(Resources.getTranslation("menu_tree_select_project_bundle")); |
| JMenuItem removeItem = new JMenuItem(Resources.getTranslation("menu_tree_remove_project_bundle")); |
| selectItem.setName(rbm.getBaseClass()); |
| removeItem.setName(rbm.getBaseClass()); |
| selectItem.addActionListener(this); |
| removeItem.addActionListener(this); |
| popupMenu.add(selectItem); |
| popupMenu.add(removeItem); |
| popupMenu.show(ev.getComponent(), ev.getX(), ev.getY()); |
| } |
| } |
| } |
| } |
| |
| public void mousePressed(MouseEvent ev) { |
| if (ev.isPopupTrigger()) { |
| mousePopup(ev); |
| } |
| } |
| |
| public void mouseReleased(MouseEvent ev) { |
| if (ev.isPopupTrigger()) { |
| mousePopup(ev); |
| return; |
| } |
| // Not the popup trigger |
| } |
| |
| public void mouseEntered(MouseEvent ev) { } |
| |
| public void mouseExited(MouseEvent ev) { } |
| |
| public void mouseClicked(MouseEvent ev) { |
| if (ev.getClickCount() == 2 && ev.getSource() instanceof JTable) { |
| // We are going to display the edit frame for the item selected |
| BundleItem item = null; |
| JTable table = (JTable) ev.getSource(); |
| if (table.getModel() instanceof UntranslatedItemsTableModel) { |
| int row = table.getSelectedRow(); |
| UntranslatedItemsTableModel model = (UntranslatedItemsTableModel)table.getModel(); |
| item = model.getBundleItem(row); |
| BundleItemDialog biDialog = new BundleItemDialog(rbm, item, (rbm == null ? "" : rbm.getUser()), |
| this, Resources.getTranslation("dialog_title_edit_item"), true); |
| model.update(); |
| } else if (table.getModel() instanceof SearchItemsTableModel) { |
| int row = table.getSelectedRow(); |
| SearchItemsTableModel model = (SearchItemsTableModel)table.getModel(); |
| item = model.getBundleItem(row); |
| BundleItemDialog biDialog = new BundleItemDialog(rbm, item, (rbm == null ? "" : rbm.getUser()), |
| this, Resources.getTranslation("dialog_title_edit_item"), true); |
| model.update(); |
| } else if (table.getModel() instanceof GroupItemsTableModel) { |
| int row = table.getSelectedRow(); |
| GroupItemsTableModel model = (GroupItemsTableModel)table.getModel(); |
| item = model.getBundleItem(row); |
| BundleItemDialog biDialog = new BundleItemDialog(rbm, item, (rbm == null ? "" : rbm.getUser()), |
| this, Resources.getTranslation("dialog_title_edit_item"), true); |
| model.update(); |
| } |
| } |
| } |
| |
| protected void updateProjectPanels() { |
| projectPanel.updateComponents(); |
| } |
| |
| // Update the display of the main panels (stats, untrans, groups). Should be called after a new tree selection |
| protected void updateDisplayPanels() { |
| debugMsg("Updating Display Panels"); |
| |
| Bundle bundle = null; |
| if (activeNode == null) return; |
| Object o = activeNode.getUserObject(); |
| if (o == null) return; |
| if (o instanceof String) { |
| // A node that is not a root was selected.... I need to do something here |
| String str = (String)o; |
| if (rbm == null) return; |
| if (str.equals(rbm.getBaseClass())) { |
| // The base class node was selected |
| jPanelStats.setManager(rbm); |
| jPanelUntrans.setManager(rbm); |
| jPanelGroups.setManager(rbm); |
| jPanelSearch.setManager(rbm); |
| } else { |
| jPanelStats.removeElements(); |
| jPanelUntrans.removeElements(); |
| jPanelGroups.removeElements(); |
| jPanelSearch.removeElements(); |
| } |
| //return; |
| } else if (o instanceof Bundle) { |
| bundle = (Bundle) activeNode.getUserObject(); |
| jPanelStats.setBundle(bundle); |
| jPanelUntrans.setBundle(bundle); |
| jPanelGroups.setBundle(bundle); |
| jPanelSearch.setBundle(bundle); |
| } else RBManagerGUI.debugMsg(o.toString()); |
| |
| jPanelStats.updateComponents(); |
| jPanelUntrans.updateComponents(); |
| jPanelGroups.updateComponents(); |
| jPanelSearch.updateComponents(); |
| |
| validateTree(); |
| } |
| |
| protected void updateProjectTree() { |
| debugMsg("Updating Project Trees"); |
| |
| DefaultMutableTreeNode root = null; |
| |
| if (project != null) { |
| root = new DefaultMutableTreeNode(project); |
| for (int i=0; i < project.getSize(); i++) { |
| RBManager rbm = project.getBundle(i); |
| DefaultMutableTreeNode bundleNode = new DefaultMutableTreeNode(rbm); |
| root.add(bundleNode); |
| Bundle mainBundle = (Bundle)rbm.getBundles().firstElement(); |
| Vector groups = mainBundle.getGroupsAsVector(); |
| for (int j=0; j < groups.size(); j++) { |
| BundleGroup group = (BundleGroup)groups.elementAt(j); |
| DefaultMutableTreeNode groupNode = new DefaultMutableTreeNode(group); |
| bundleNode.add(groupNode); |
| Vector items = group.getItemsAsVector(); |
| for (int k=0; k < items.size(); k++) { |
| BundleItem item = (BundleItem)items.elementAt(k); |
| DefaultMutableTreeNode itemNode = new DefaultMutableTreeNode(item); |
| groupNode.add(itemNode); |
| } |
| } |
| } |
| } else if (rbm != null) { |
| // There is a resource bundle open, but no project |
| root = new DefaultMutableTreeNode(Resources.getTranslation("no_project")); |
| Bundle mainBundle = (Bundle)rbm.getBundles().firstElement(); |
| DefaultMutableTreeNode bundleNode = new DefaultMutableTreeNode(rbm);//(rbm.getBaseClass()); |
| root.add(bundleNode); |
| Vector groups = mainBundle.getGroupsAsVector(); |
| for (int i=0; i < groups.size(); i++) { |
| BundleGroup group = (BundleGroup)groups.elementAt(i); |
| DefaultMutableTreeNode groupNode = new DefaultMutableTreeNode(group); |
| bundleNode.add(groupNode); |
| Vector items = group.getItemsAsVector(); |
| for (int j=0; j < items.size(); j++) { |
| BundleItem item = (BundleItem)items.elementAt(j); |
| DefaultMutableTreeNode itemNode = new DefaultMutableTreeNode(item); |
| groupNode.add(itemNode); |
| } |
| } |
| } else { |
| root = new DefaultMutableTreeNode(Resources.getTranslation("no_project_bundle")); |
| } |
| |
| // Create the tree from the roots |
| projectTree = new JTree(root); |
| projectTree.addMouseListener(this); |
| projectTree.addTreeSelectionListener(this); |
| projectTree.setCellRenderer(RBTreeCellRenderer.getInstance()); |
| projectScrollPane.getViewport().removeAll(); |
| projectScrollPane.getViewport().add(projectTree); |
| repaint(); |
| validateTree(); |
| return; |
| } |
| |
| // Update the display of the tree file map. Should be called when the tree is changed/updated |
| protected void updateDisplayTree() { |
| debugMsg("Updating Display Trees"); |
| |
| DefaultMutableTreeNode root = null; |
| |
| if (rbm == null || rbm.getBundles() == null) { |
| root = new DefaultMutableTreeNode(Resources.getTranslation("no_resource_bundle")); |
| } else { |
| // From here on out, there is a defined resource bundle manager |
| Bundle mainBundle = (Bundle)rbm.getBundles().firstElement(); |
| root = new DefaultMutableTreeNode(rbm.getBaseClass()); |
| // Add the base class |
| root.add(new DefaultMutableTreeNode(mainBundle)); |
| |
| DefaultMutableTreeNode currNode = root; |
| for (int i = 1; i < rbm.getBundles().size(); i++) { |
| Bundle currBundle = (Bundle)rbm.getBundles().elementAt(i); |
| String variant = currBundle.getVariantEncoding(); |
| String country = currBundle.getCountryEncoding(); |
| String language = currBundle.getLanguageEncoding(); |
| DefaultMutableTreeNode languageNode = null; |
| // Look for a node representing this language |
| if (language == null || language.equals("")) continue; |
| boolean languageNodeFound = false; |
| for (int j=0; j < root.getChildCount(); j++) { |
| DefaultMutableTreeNode langNode = (DefaultMutableTreeNode)root.getChildAt(j); |
| Object o = langNode.getUserObject(); |
| if (o == null || !(o instanceof String)) continue; |
| String str = (String)o; |
| if (str.equals(Resources.getTranslation("tree_language_node", language))) { |
| // There is a non-leaf node with this language |
| languageNodeFound = true; |
| if (country == null || country.equals("")) |
| langNode.add(new DefaultMutableTreeNode(currBundle)); |
| else { |
| // We need to look at country, variant |
| boolean countryNodeFound = false; |
| for (int k=0; k < langNode.getChildCount(); k++) { |
| DefaultMutableTreeNode countryNode = (DefaultMutableTreeNode)langNode.getChildAt(k); |
| Object o2 = countryNode.getUserObject(); |
| if (o2 == null || !(o2 instanceof String)) continue; |
| String str2 = (String)o2; |
| if (str2.equals(Resources.getTranslation("tree_country_node", country))) { |
| // There is a non-leaf node for this country |
| countryNodeFound = true; |
| if (variant == null || variant.equals("")) { |
| countryNode.add(new DefaultMutableTreeNode(currBundle)); |
| } else { |
| // We need to look at variant |
| boolean variantNodeFound = false; |
| for (int l=0; l < countryNode.getChildCount(); l++) { |
| DefaultMutableTreeNode variantNode = (DefaultMutableTreeNode)countryNode.getChildAt(l); |
| Object o3 = variantNode.getUserObject(); |
| if (o3 == null || !(o3 instanceof String)) continue; |
| String str3 = (String)o3; |
| if (str3.equals(Resources.getTranslation("tree_variant_node"))) { |
| variantNodeFound = true; |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } // end for - country node loop |
| if (!variantNodeFound) { |
| DefaultMutableTreeNode variantNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_variant_node")); |
| countryNode.add(variantNode); |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } |
| } |
| } // end for - language node loop |
| if (!countryNodeFound) { |
| DefaultMutableTreeNode countryNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_country_node", country)); |
| langNode.add(countryNode); |
| if (variant == null || variant.equals("")) { |
| countryNode.add(new DefaultMutableTreeNode(currBundle)); |
| } else { |
| // We need to look at the variant |
| boolean variantNodeFound = false; |
| for (int l=0; l < countryNode.getChildCount(); l++) { |
| DefaultMutableTreeNode variantNode = (DefaultMutableTreeNode)countryNode.getChildAt(l); |
| Object o3 = variantNode.getUserObject(); |
| if (o3 == null || !(o3 instanceof String)) continue; |
| String str3 = (String)o3; |
| if (str3.equals(Resources.getTranslation("tree_variant_node"))) { |
| variantNodeFound = true; |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } // end for - country node loop |
| if (!variantNodeFound) { |
| DefaultMutableTreeNode variantNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_variant_node")); |
| countryNode.add(variantNode); |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } |
| } |
| } |
| } |
| } |
| if (!languageNodeFound) { |
| // We need to create a node for this country |
| DefaultMutableTreeNode langNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_language_node", language)); |
| root.add(langNode); |
| if (country == null || country.equals("")) { |
| langNode.add(new DefaultMutableTreeNode(currBundle)); |
| } else { |
| // We need to look at the country, variant |
| boolean countryNodeFound = false; |
| for (int k=0; k < langNode.getChildCount(); k++) { |
| DefaultMutableTreeNode countryNode = (DefaultMutableTreeNode)langNode.getChildAt(k); |
| Object o2 = countryNode.getUserObject(); |
| if (o2 == null || !(o2 instanceof String)) continue; |
| String str2 = (String)o2; |
| if (str2.equals(Resources.getTranslation("tree_country_node", country))) { |
| // There is a non-leaf node for this country |
| countryNodeFound = true; |
| if (variant == null || variant.equals("")) { |
| countryNode.add(new DefaultMutableTreeNode(currBundle)); |
| } else { |
| // We need to look at variant |
| boolean variantNodeFound = false; |
| for (int l=0; l < countryNode.getChildCount(); l++) { |
| DefaultMutableTreeNode variantNode = (DefaultMutableTreeNode)countryNode.getChildAt(l); |
| Object o3 = variantNode.getUserObject(); |
| if (o3 == null || !(o3 instanceof String)) continue; |
| String str3 = (String)o3; |
| if (str3.equals(Resources.getTranslation("tree_variant_node"))) { |
| variantNodeFound = true; |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } // end for - country node loop |
| if (!variantNodeFound) { |
| DefaultMutableTreeNode variantNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_variant_node")); |
| countryNode.add(variantNode); |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } |
| } |
| } // end for - language node loop |
| if (!countryNodeFound) { |
| DefaultMutableTreeNode countryNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_country_node", country)); |
| langNode.add(countryNode); |
| if (variant == null || variant.equals("")) { |
| countryNode.add(new DefaultMutableTreeNode(currBundle)); |
| } else { |
| // We need to look at the variant |
| boolean variantNodeFound = false; |
| for (int l=0; l < countryNode.getChildCount(); l++) { |
| DefaultMutableTreeNode variantNode = (DefaultMutableTreeNode)countryNode.getChildAt(l); |
| Object o3 = variantNode.getUserObject(); |
| if (o3 == null || !(o3 instanceof String)) continue; |
| String str3 = (String)o3; |
| if (str3.equals(Resources.getTranslation("tree_variant_node"))) { |
| variantNodeFound = true; |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } // end for - country node loop |
| if (!variantNodeFound) { |
| DefaultMutableTreeNode variantNode = new DefaultMutableTreeNode(Resources.getTranslation("tree_variant_node", variant)); |
| countryNode.add(variantNode); |
| variantNode.add(new DefaultMutableTreeNode(currBundle)); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| // Create the tree from the roots |
| jTreeDisplay = new JTree(root); |
| jTreeDisplay.addMouseListener(this); |
| jTreeDisplay.addTreeSelectionListener(this); |
| jTreeDisplay.setCellRenderer(RBTreeCellRenderer.getInstance()); |
| jScrollPaneTree.getViewport().removeAll(); |
| jScrollPaneTree.getViewport().add(jTreeDisplay); |
| repaint(); |
| validateTree(); |
| return; |
| } |
| |
| /** |
| * Inherits from JFrame.addNotify(), but also inserts the menu bar |
| */ |
| |
| public void addNotify() |
| { |
| super.addNotify(); |
| |
| if (mShown) |
| return; |
| |
| // resize frame to account for menubar |
| JMenuBar jMenuBar = getJMenuBar(); |
| if (jMenuBar != null) { |
| int jMenuBarHeight = jMenuBar.getPreferredSize().height; |
| Dimension dimension = getSize(); |
| dimension.height += jMenuBarHeight; |
| setSize(dimension); |
| } |
| |
| mShown = true; |
| } |
| |
| /** |
| * Called when it may be appropriate to check with the user if they want to save the file |
| */ |
| |
| boolean promptForSave(String message) { |
| if (rbm != null) { |
| int response = JOptionPane.showConfirmDialog(this, |
| (message == null ? Resources.getTranslation("dialog_save") : message), |
| Resources.getTranslation("dialog_title_quit"), JOptionPane.YES_NO_CANCEL_OPTION, |
| JOptionPane.QUESTION_MESSAGE); |
| if (response == JOptionPane.CANCEL_OPTION) return true; |
| if (response == JOptionPane.YES_OPTION) { |
| return saveResources(); |
| } |
| } |
| return true; |
| } |
| |
| public boolean deleteResources(String encoding) { |
| if (rbm == null) return false; // This should never happen |
| try { |
| rbm.eraseFile(encoding); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_deleting", ioe.getMessage()), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| if (RBManagerGUI.debug) System.err.println(ioe); |
| return false; |
| } |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| updateDisplayPanels(); |
| return true; |
| } |
| |
| public void hideResources(String encoding) { |
| rbm.hideResource(encoding); |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| updateDisplayPanels(); |
| } |
| |
| /** |
| * Save a particular resources file within the bundle. |
| */ |
| |
| public boolean saveResources(String encoding) { |
| if (rbm == null) return false; // This should never happen |
| return saveResources(rbm, encoding); |
| } |
| |
| public boolean saveResources(RBManager bundle, String encoding) { |
| try { |
| bundle.writeToFile(encoding); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_saving", ioe.getMessage()), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| if (RBManagerGUI.debug) System.err.println(ioe); |
| return false; |
| } |
| return true; |
| } |
| |
| /** |
| * Called when the resources are to be saved |
| */ |
| |
| public boolean saveResources() { |
| if (rbm == null) return true; |
| return saveResources(rbm); |
| } |
| |
| public boolean saveResources(RBManager bundle) { |
| try { |
| bundle.writeToFile(); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_saving", ioe.getMessage()), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| if (RBManagerGUI.debug) System.err.println(ioe); |
| return false; |
| } |
| return true; |
| } |
| |
| /** |
| * Called when the resource bundle is to be saved, but displays a window to the user allowing them |
| * to selecte the file destination of the folder in which to save the bundle as well as the base |
| * class name for the bundle. |
| */ |
| |
| public boolean saveResourcesAs() { |
| if (rbm == null) return true; |
| int result = saveFileChooser.showSaveDialog(this); |
| if (result == JFileChooser.APPROVE_OPTION) { |
| try { |
| File newFile = saveFileChooser.getSelectedFile(); |
| String fileName = newFile.getName(); |
| String baseName = fileName; |
| if (fileName.toLowerCase().endsWith(".properties")) |
| baseName = baseName.substring(0,baseName.length()-11); |
| rbm.setBaseClass(baseName); |
| rbm.setFileDirectory(newFile.getParentFile()); |
| rbm.writeToFile(); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_saving", ioe.getMessage()), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| if (RBManagerGUI.debug) System.err.println(ioe); |
| return false; |
| } |
| } |
| return true; |
| } |
| |
| void updateLocale(Locale l) { |
| // Update the menubars |
| jMenuBarMain.updateLocale(); |
| |
| updateLocale(getContentPane(), l); |
| updateLocale(openFileChooser, l); |
| updateLocale(saveFileChooser, l); |
| // Redraw the panes |
| updateDisplayTree(); |
| updateProjectTree(); |
| updateProjectPanels(); |
| updateDisplayPanels(); |
| // update the tab titles |
| jTabbedPaneMain.setTitleAt(0,Resources.getTranslation("tab_statistics")); |
| jTabbedPaneMain.setTitleAt(1,Resources.getTranslation("tab_untranslated")); |
| jTabbedPaneMain.setTitleAt(2,Resources.getTranslation("tab_groups")); |
| setTitle(Resources.getTranslation("resource_bundle_manager")); |
| } |
| |
| static void updateLocale(Container c, Locale l) { |
| Component comp[] = c.getComponents(); |
| for (int i=0; i < comp.length; i++) { |
| if (comp[i] instanceof JComponent) { |
| ((JComponent)comp[i]).setLocale(l); |
| } |
| if (comp[i] instanceof Container) { |
| updateLocale((Container)comp[i],l); |
| } |
| } |
| if (c instanceof JMenu) { |
| comp = ((JMenu)c).getMenuComponents(); |
| for (int i=0; i < comp.length; i++) { |
| if (comp[i] instanceof JComponent) { |
| ((JComponent)comp[i]).setLocale(l); |
| } |
| if (comp[i] instanceof Container) { |
| updateLocale((Container)comp[i],l); |
| } |
| } |
| } |
| } |
| |
| void updateUI() { |
| updateUI(getContentPane()); |
| jMenuBarMain.updateUI(); |
| updateUI(jMenuBarMain); |
| updateUI(openFileChooser); |
| updateUI(saveFileChooser); |
| } |
| |
| static void updateUI(Container c) { |
| Component comp[] = c.getComponents(); |
| for (int i=0; i < comp.length; i++) { |
| if (comp[i] instanceof JComponent) { |
| ((JComponent)comp[i]).updateUI(); |
| } |
| if (comp[i] instanceof Container) { |
| updateUI((Container)comp[i]); |
| } |
| } |
| if (c instanceof JMenu) { |
| comp = ((JMenu)c).getMenuComponents(); |
| for (int i=0; i < comp.length; i++) { |
| if (comp[i] instanceof JComponent) { |
| ((JComponent)comp[i]).updateUI(); |
| } |
| if (comp[i] instanceof Container) { |
| updateUI((Container)comp[i]); |
| } |
| } |
| } |
| } |
| |
| // Close the window when the close box is clicked |
| void thisWindowClosing(java.awt.event.WindowEvent e) |
| { |
| if (promptForSave(Resources.getTranslation("dialog_quit_save"))) { |
| setVisible(false); |
| dispose(); |
| System.exit(0); |
| } |
| } |
| |
| public void setUser(String userName) { |
| this.userName = userName; |
| if (rbm != null) rbm.setUser(userName); |
| } |
| |
| public String getUser() { |
| return userName; |
| } |
| |
| public BundleItem getSelectedProjectBundleItem() { |
| TreePath path = projectTree.getSelectionPath(); |
| if (path == null) return null; |
| DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent(); |
| Object obj = node.getUserObject(); |
| if (obj == null || !(obj instanceof BundleItem)) return null; |
| return (BundleItem)obj; |
| } |
| |
| public RBManager getSelectedProjectBundle() { |
| TreePath path = projectTree.getSelectionPath(); |
| if (path == null) return null; |
| for (int i=0; i < path.getPathCount(); i++) { |
| DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getPathComponent(i); |
| Object obj = node.getUserObject(); |
| if (obj != null && obj instanceof RBManager) return (RBManager)obj; |
| } |
| return null; |
| } |
| |
| public static void debugMsg(String msg) { |
| if (debug) System.out.println("Debug Message [" + debugcount++ + "]: " + msg); |
| } |
| } |
| |
| /* |
| class ProjectFrame extends JFrame implements ActionListener { |
| private RBManagerGUI parent; |
| private JTable table; |
| private JButton addButton; |
| private JButton selectButton; |
| private JButton removeButton; |
| private JButton newButton; |
| private JButton openButton; |
| private JButton closeButton; |
| |
| private JFileChooser openFileChooser; |
| private JFileChooser saveFileChooser; |
| |
| private File activeFile = null; |
| |
| public ProjectFrame(RBManagerGUI parent) { |
| super(Resources.getTranslation("dialog_project_title",Resources.getTranslation("dialog_project_none_selected"))); |
| this.parent = parent; |
| initComponents(); |
| } |
| |
| public void actionPerformed(ActionEvent ev) { |
| if (ev.getSource() == openButton) { |
| int result = openFileChooser.showOpenDialog(this); |
| if (result == JFileChooser.APPROVE_OPTION) { |
| File file = openFileChooser.getSelectedFile(); |
| try { |
| table.setModel(new ProjectTableModel(file)); |
| activeFile = file; |
| String fileName = file.getName().substring(0,file.getName().length()-10); |
| setTitle(Resources.getTranslation("dialog_project_title",fileName)); |
| } catch (IOException ex) { |
| String alert = Resources.getTranslation("error_bad_project_file"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), |
| JOptionPane.ERROR_MESSAGE); |
| activeFile = null; |
| } |
| } |
| } else if (ev.getSource() == selectButton) { |
| if (table.getSelectedRow() >= 0) { |
| int rowIndex = table.getSelectedRow(); |
| // This item is a recent file selection. We need to open that file |
| String fileLocation = (String)table.getValueAt(rowIndex,1); |
| try { |
| parent.rbm = new RBManager(new File(fileLocation)); |
| parent.updateDisplayTree(); |
| parent.updateProjectTree(); |
| parent.updateDisplayPanels(); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this,Resources.getTranslation("error_opening_file", ev.getActionCommand()), |
| Resources.getTranslation("dialog_title_error_opening_file"), |
| JOptionPane.ERROR_MESSAGE); |
| } |
| } |
| } else if (ev.getSource() == closeButton) { |
| thisWindowClosing(null); |
| } else if (ev.getSource() == newButton) { |
| int result = saveFileChooser.showSaveDialog(this); |
| if (result == JFileChooser.APPROVE_OPTION) { |
| File file = saveFileChooser.getSelectedFile(); |
| try { |
| table.setModel(new ProjectTableModel()); |
| activeFile = file; |
| FileWriter fw = new FileWriter(file); |
| fw.write("\n"); |
| fw.flush(); |
| fw.close(); |
| } catch (IOException ex) { |
| String alert = Resources.getTranslation("error_bad_project_file"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), |
| JOptionPane.ERROR_MESSAGE); |
| activeFile = null; |
| } |
| } |
| } else if (ev.getSource() == removeButton) { |
| if (table.getSelectedRow() >= 0) { |
| int rowIndex = table.getSelectedRow(); |
| ProjectTableModel ptm = (ProjectTableModel)table.getModel(); |
| ptm.removeBundle(ptm.getValueAt(rowIndex,1).toString()); |
| try { ptm.write(activeFile); } catch (IOException ex) {} |
| } |
| } else if (ev.getSource() == addButton) { |
| try { |
| File rbFile = parent.rbm.getBaseFile(); |
| String filePath = rbFile.getAbsolutePath(); |
| ProjectTableModel ptm = (ProjectTableModel)table.getModel(); |
| // Check for duplicates |
| for (int i=0; i < ptm.getRowCount(); i++) { |
| if (ptm.getValueAt(i,1).toString().equals(filePath)) return; |
| } |
| ptm.addBundle(parent.rbm.getBaseClass(),rbFile.getAbsolutePath()); |
| ptm.write(activeFile); |
| } catch (Exception ex) {} |
| } |
| updateComponents(); |
| this.validate(); |
| this.repaint(); |
| } |
| |
| private void thisWindowClosing(WindowEvent ev) { |
| setVisible(false); |
| } |
| |
| private void updateComponents() { |
| newButton.setEnabled(true); |
| openButton.setEnabled(true); |
| closeButton.setEnabled(true); |
| if (activeFile == null) { |
| addButton.setEnabled(false); |
| removeButton.setEnabled(false); |
| selectButton.setEnabled(false); |
| } else { |
| addButton.setEnabled(true); |
| selectButton.setEnabled(true); |
| removeButton.setEnabled(true); |
| } |
| } |
| |
| private void initComponents() { |
| setSize(new Dimension(500,300)); |
| setLocation(200,200); |
| getContentPane().setLayout(new BorderLayout()); |
| |
| this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); |
| // the following code sets the frame's initial state |
| |
| addWindowListener(new java.awt.event.WindowAdapter() { |
| public void windowClosing(java.awt.event.WindowEvent e) { |
| thisWindowClosing(e); |
| } |
| }); |
| |
| openFileChooser = new JFileChooser("."); |
| saveFileChooser = new JFileChooser("."); |
| |
| openFileChooser.setFileFilter(new filechooser.FileFilter() { |
| public boolean accept(File f) { |
| if (f.isDirectory()) return true; |
| |
| String name = f.getName(); |
| if (!(name.toLowerCase().endsWith(".rbproject"))) return false; |
| return true; |
| } |
| |
| public String getDescription() { |
| return Resources.getTranslation("dialog_project_file_filter_description"); |
| } |
| }); |
| |
| saveFileChooser.setFileFilter(new filechooser.FileFilter() { |
| public boolean accept(File f) { |
| if (f.isDirectory()) return true; |
| |
| String name = f.getName(); |
| if (!(name.toLowerCase().endsWith(".rbproject"))) return false; |
| return true; |
| } |
| |
| public String getDescription() { |
| return Resources.getTranslation("dialog_project_file_filter_description"); |
| } |
| }); |
| |
| table = new JTable(); |
| initTable(); |
| |
| openButton = new JButton(Resources.getTranslation("button_project_open")); |
| selectButton = new JButton(Resources.getTranslation("button_project_select")); |
| closeButton = new JButton(Resources.getTranslation("button_project_close")); |
| newButton = new JButton(Resources.getTranslation("button_project_new")); |
| addButton = new JButton(Resources.getTranslation("button_project_add")); |
| removeButton = new JButton(Resources.getTranslation("button_project_remove")); |
| openButton.addActionListener(this); |
| selectButton.addActionListener(this); |
| closeButton.addActionListener(this); |
| newButton.addActionListener(this); |
| addButton.addActionListener(this); |
| removeButton.addActionListener(this); |
| |
| JPanel buttonPanel = new JPanel(new GridLayout(2,3)); |
| buttonPanel.setBorder(BorderFactory.createEtchedBorder()); |
| buttonPanel.add(selectButton); |
| buttonPanel.add(addButton); |
| buttonPanel.add(removeButton); |
| buttonPanel.add(newButton); |
| buttonPanel.add(openButton); |
| buttonPanel.add(closeButton); |
| |
| getContentPane().add(table, BorderLayout.CENTER); |
| getContentPane().add(buttonPanel, BorderLayout.SOUTH); |
| |
| updateComponents(); |
| validate(); |
| } |
| |
| private void initTable() { |
| table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
| table.setModel(new ProjectTableModel()); |
| } |
| } |
| */ |
| |
| class RBTreeCellRenderer extends DefaultTreeCellRenderer { |
| private static RBTreeCellRenderer cellRend = null; |
| private static ImageIcon bundleIcon = null; |
| private static ImageIcon languageIcon = null; |
| private static ImageIcon countryIcon = null; |
| private static ImageIcon variantIcon = null; |
| private static ImageIcon fileIcon = null; |
| private static ImageIcon groupIcon = null; |
| private static ImageIcon itemIcon = null; |
| private static ImageIcon projectIcon = null; |
| |
| private RBTreeCellRenderer() { |
| |
| } |
| |
| public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, |
| boolean leaf, int row, boolean hasFocus) { |
| super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); |
| |
| DefaultMutableTreeNode node = (DefaultMutableTreeNode)value; |
| int level = node.getLevel(); |
| Object obj = node.getUserObject(); |
| |
| if (obj instanceof BundleGroup) { |
| setIcon(groupIcon); |
| } else if (obj instanceof BundleItem) { |
| setIcon(itemIcon); |
| } else if (obj instanceof RBManager) { |
| setIcon(bundleIcon); |
| } else if (obj instanceof RBProject) { |
| setIcon(projectIcon); |
| } else if (leaf) { |
| if (level != 0) setIcon(fileIcon); |
| } else { |
| if (level == 0) { |
| if (obj instanceof String && ((String)obj).equals(Resources.getTranslation("no_project"))) |
| setIcon(projectIcon); |
| else setIcon(bundleIcon); |
| } |
| else if (level == 1) setIcon(languageIcon); |
| else if (level == 2) setIcon(countryIcon); |
| else if (level == 3) setIcon(variantIcon); |
| } |
| |
| return this; |
| } |
| |
| public static RBTreeCellRenderer getInstance() { |
| if (cellRend == null) { |
| try { |
| Class thisClass = Class.forName("com.ibm.rbm.RBManagerGUI"); |
| // Create instances of the icons |
| Image scaledImage = (new ImageIcon(thisClass.getResource("images/tree_icon_bundle.gif"))).getImage().getScaledInstance(16, 16, Image.SCALE_DEFAULT); |
| bundleIcon = new ImageIcon(scaledImage); |
| languageIcon = new ImageIcon(thisClass.getResource("images/tree_icon_language.gif")); |
| countryIcon = new ImageIcon(thisClass.getResource("images/tree_icon_country.gif")); |
| variantIcon = new ImageIcon(thisClass.getResource("images/tree_icon_variant.gif")); |
| fileIcon = new ImageIcon(thisClass.getResource("images/tree_icon_file.gif")); |
| groupIcon = new ImageIcon(thisClass.getResource("images/tree_icon_group.gif")); |
| itemIcon = new ImageIcon(thisClass.getResource("images/tree_icon_item.gif")); |
| projectIcon = new ImageIcon(thisClass.getResource("images/tree_icon_project.gif")); |
| } catch (ClassNotFoundException e) { |
| RBManagerGUI.debugMsg(e.toString()); |
| } |
| // Create the instance of the renderer |
| cellRend = new RBTreeCellRenderer(); |
| } |
| return cellRend; |
| } |
| } |
| |
| // A dialog which allows the user to create a new Bundle Item |
| |
| class BundleItemCreationDialog extends JDialog { |
| RBManager rbm; |
| String groupName; |
| BundleItem item; |
| boolean firstInit = true; |
| |
| // Helper data |
| int left_col_width = 125; |
| int right_col_width = 275; |
| int row_height = 25; |
| Dimension leftDim = new Dimension(left_col_width, row_height); |
| Dimension rightDim = new Dimension(right_col_width, row_height); |
| |
| // Components |
| Box mainBox = new Box(BoxLayout.Y_AXIS); |
| Box box1 = new Box(BoxLayout.X_AXIS); |
| Box box2 = new Box(BoxLayout.X_AXIS); |
| Box box3 = new Box(BoxLayout.X_AXIS); |
| Box box4 = new Box(BoxLayout.X_AXIS); |
| Box box5 = new Box(BoxLayout.X_AXIS); |
| Box box6 = new Box(BoxLayout.X_AXIS); |
| |
| JLabel instructionsLabel = new JLabel(""); |
| JLabel groupLabel = new JLabel(Resources.getTranslation("dialog_group")); |
| JLabel nameLabel = new JLabel(Resources.getTranslation("dialog_key")); |
| JLabel transLabel = new JLabel(Resources.getTranslation("dialog_translation")); |
| JLabel commentLabel = new JLabel(Resources.getTranslation("dialog_comment")); |
| JLabel lookupLabel = new JLabel(Resources.getTranslation("dialog_lookups")); |
| |
| JComboBox groupComboBox = new JComboBox(); |
| JTextField nameField = new JTextField(""); |
| JTextField transField = new JTextField(""); |
| JTextField commentField = new JTextField(""); |
| JTextField lookupFields[] = null; |
| JLabel noLookupLabel = null; |
| Box lookupBox = null; |
| Box lookupBoxes[] = null; |
| JLabel lookupLabels[] = null; |
| |
| JButton createButton = new JButton(Resources.getTranslation("button_create")); |
| JButton createMoreButton = new JButton(Resources.getTranslation("button_create_more")); |
| JButton cancelButton = new JButton(Resources.getTranslation("button_cancel")); |
| |
| Hashtable lookups = new Hashtable(); |
| |
| public BundleItemCreationDialog(RBManager rbm, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.rbm = rbm; |
| groupName = null; |
| item = null; |
| initComponents(); |
| } |
| |
| public BundleItemCreationDialog(String groupName, RBManager rbm, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.rbm = rbm; |
| this.groupName = groupName; |
| item = null; |
| initComponents(); |
| } |
| |
| public BundleItemCreationDialog(BundleItem item, RBManager rbm, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.item = item; |
| this.rbm = rbm; |
| groupName = item.getParentGroup().getName(); |
| initComponents(); |
| } |
| |
| boolean createItem() { |
| if (rbm == null) return false; |
| Hashtable lookupHash = new Hashtable(); |
| if (lookupBoxes != null) { |
| for (int i=0; i < lookupBoxes.length; i++) { |
| String nameText = lookupLabels[i].getText().trim(); |
| String name = nameText.substring(nameText.indexOf("{")+1,nameText.indexOf("}")); |
| String value = lookupFields[i].getText().trim(); |
| lookupHash.put(name,value); |
| } |
| } |
| return rbm.createItem(nameField.getText().trim(), transField.getText().trim(), |
| ((BundleGroup)groupComboBox.getSelectedItem()).getName(), |
| commentField.getText().trim(), lookupHash); |
| } |
| |
| boolean editItem() { |
| if (item == null) return false; |
| Hashtable lookupHash = new Hashtable(); |
| if (lookupBoxes != null) { |
| for (int i=0; i < lookupBoxes.length; i++) { |
| String nameText = lookupLabels[i].getText().trim(); |
| String name = nameText.substring(nameText.indexOf("{")+1,nameText.indexOf("}")); |
| String value = lookupFields[i].getText().trim(); |
| lookupHash.put(name,value); |
| } |
| } |
| return rbm.editItem(item, nameField.getText().trim(), |
| transField.getText().trim(), ((BundleGroup)groupComboBox.getSelectedItem()).getName(), |
| commentField.getText().trim(), lookupHash); |
| } |
| |
| private void clearComponents() { |
| nameField.setText(""); |
| transField.setText(""); |
| commentField.setText(""); |
| initComponents(); |
| } |
| |
| protected void processKeyEvent(KeyEvent ev) { |
| if (ev.getKeyCode() == KeyEvent.VK_ENTER && ev.getID() == KeyEvent.KEY_RELEASED) { |
| if (transField.hasFocus()) { |
| // If we are in the translation field, then enter should create a new line character, not exit the dialog |
| int caretPos = transField.getCaretPosition(); |
| String oldText = transField.getText(); |
| transField.setText(oldText.substring(0,caretPos) + "\n" + oldText.substring(caretPos,oldText.length())); |
| transField.setCaretPosition(caretPos+1); |
| validate(); |
| setSize(getPreferredSize()); |
| return; |
| } |
| |
| BundleItemCreationDialog dialog = this; |
| boolean success = false; |
| if (dialog.item == null) success = dialog.createItem(); |
| else success = dialog.editItem(); |
| if (!success) { |
| String alert = (item == null ? Resources.getTranslation("error_create_item") : |
| Resources.getTranslation("error_modify_item")); |
| alert += " " + Resources.getTranslation("error_try_again_item"); |
| JOptionPane.showMessageDialog(dialog, alert, Resources.getTranslation("error"), |
| JOptionPane.ERROR_MESSAGE); |
| } else { |
| ((RBManagerGUI)dialog.getParent()).updateDisplayPanels(); |
| ((RBManagerGUI)dialog.getParent()).invalidate(); |
| //((RBManagerGUI)dialog.getParent()).validateMyTree(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| } else if (ev.getKeyCode() == KeyEvent.VK_ESCAPE) { |
| closeWindow(); |
| } |
| } |
| |
| public void initComponents(){ |
| enableEvents(AWTEvent.KEY_EVENT_MASK); |
| // Error check |
| if (rbm == null || rbm.bundles == null) { |
| String alert = Resources.getTranslation("error_no_bundle_for_item"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| closeWindow(); |
| return; |
| } |
| |
| // Initialize values |
| Bundle mainBundle = (Bundle)rbm.bundles.firstElement(); |
| if (firstInit) { |
| groupComboBox = new JComboBox(mainBundle.getGroupsAsVector()); |
| if (groupName != null) { |
| for (int i = 0; i < groupComboBox.getItemCount(); i++) { |
| BundleGroup bg = (BundleGroup)groupComboBox.getItemAt(i); |
| if (bg.getName().equals(groupName)) { |
| groupComboBox.setSelectedIndex(i); |
| break; |
| } |
| } |
| } |
| } |
| |
| if (firstInit && item != null) { |
| // We are editing, not creating an item |
| createButton.setText(Resources.getTranslation("button_edit")); |
| createMoreButton.setText(Resources.getTranslation("button_edit_more")); |
| if (item.getKey() != null) nameField.setText(item.getKey()); |
| if (item.getComment() != null) commentField.setText(item.getComment()); |
| if (item.getTranslation() != null) transField.setText(item.getTranslation()); |
| if (item.getLookups() != null) lookups = item.getLookups(); |
| } |
| |
| String currentTrans = transField.getText(); |
| // ** LOOKUPS ** |
| // Update the lookups if necessary |
| if (lookupBoxes != null) { |
| for (int i=0; i < lookupBoxes.length; i++) { |
| String nameText = lookupLabels[i].getText().trim(); |
| String name = nameText.substring(nameText.indexOf("{")+1,nameText.indexOf("}")); |
| String value = lookupFields[i].getText().trim(); |
| lookups.put(name,value); |
| } |
| } |
| // Remove old lookups if necessary |
| Enumeration enum = lookups.keys(); |
| while (enum.hasMoreElements()) { |
| String name = (String)enum.nextElement(); |
| if (currentTrans.indexOf("{" + name + "}") < 0) { |
| lookups.remove(name); |
| } |
| } |
| // Add new lookups if neccesary |
| if (currentTrans != null && currentTrans.indexOf("{") >= 0) { |
| while (currentTrans.indexOf("{") >= 0) { |
| currentTrans = currentTrans.substring(currentTrans.indexOf("{")+1,currentTrans.length()); |
| String name = currentTrans.substring(0,currentTrans.indexOf("}")); |
| if (!lookups.containsKey(name)) { |
| lookups.put(name,""); |
| } |
| } |
| } |
| // Remove components |
| box5.removeAll(); |
| |
| // Now create the visual components for the lookups |
| if (lookups.size() > 0) { |
| noLookupLabel = null; |
| lookupBox = new Box(BoxLayout.Y_AXIS); |
| lookupBoxes = new Box[lookups.size()]; |
| lookupFields = new JTextField[lookups.size()]; |
| lookupLabels = new JLabel[lookups.size()]; |
| int count = 0; |
| enum = lookups.keys(); |
| while (enum.hasMoreElements()) { |
| String name = (String)enum.nextElement(); |
| String value = (String)lookups.get(name); |
| RBManagerGUI.debugMsg("Lookup: " + name + " -> " + value); |
| RBManagerGUI.debugMsg(lookups.toString()); |
| lookupBoxes[count] = new Box(BoxLayout.X_AXIS); |
| lookupFields[count] = new JTextField((value == null ? "" : value)); |
| lookupLabels[count] = new JLabel("{" + name + "}"); |
| lookupBoxes[count].add(Box.createHorizontalGlue()); |
| lookupBoxes[count].add(lookupLabels[count]); |
| lookupBoxes[count].add(Box.createHorizontalStrut(5)); |
| lookupBoxes[count].add(lookupFields[count]); |
| lookupBox.add(lookupBoxes[count]); |
| count++; |
| } |
| } else { |
| lookupBox = null; |
| lookupBoxes = null; |
| lookupFields = null; |
| lookupLabels = null; |
| noLookupLabel = new JLabel(Resources.getTranslation("none")); |
| } |
| |
| // Set up the components |
| if (firstInit) { |
| groupLabel.setPreferredSize(leftDim); |
| groupComboBox.setPreferredSize(rightDim); |
| nameLabel.setPreferredSize(leftDim); |
| nameField.setColumns(30); |
| commentLabel.setPreferredSize(leftDim); |
| commentField.setColumns(30); |
| transLabel.setPreferredSize(leftDim); |
| transField.setColumns(30); |
| lookupLabel.setPreferredSize(leftDim); |
| |
| box1.add(groupLabel); box1.add(groupComboBox); |
| box2.add(nameLabel); box2.add(nameField); |
| box4.add(commentLabel); box4.add(commentField); |
| box3.add(transLabel); box3.add(transField); |
| |
| createButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_create_trigger"))); |
| createMoreButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_create_more_trigger"))); |
| } |
| box5.add(Box.createHorizontalGlue()); box5.add(lookupLabel); box5.add(Box.createHorizontalStrut(5)); |
| if (noLookupLabel != null) { |
| noLookupLabel.setPreferredSize(rightDim); |
| box5.add(noLookupLabel); |
| } |
| else box5.add(lookupBox); |
| if (firstInit) { |
| box6.add(createButton); |
| box6.add(Box.createHorizontalStrut(5)); |
| if (item == null) box6.add(createMoreButton); |
| box6.add(Box.createHorizontalStrut(5)); |
| box6.add(cancelButton); |
| } |
| |
| instructionsLabel.setBorder(BorderFactory.createEtchedBorder()); |
| |
| // Add the appropriate listeners |
| if (firstInit) { |
| cancelButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| JDialog dialog = (JDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| }); |
| |
| createButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| BundleItemCreationDialog dialog = |
| (BundleItemCreationDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| boolean success = false; |
| if (dialog.item == null) success = dialog.createItem(); |
| else success = dialog.editItem(); |
| if (!success) { |
| String alert = (item == null ? Resources.getTranslation("error_create_item") : |
| Resources.getTranslation("error_modify_item")); |
| alert += " " + Resources.getTranslation("error_try_again_item"); |
| JOptionPane.showMessageDialog(dialog, alert, Resources.getTranslation("error"), |
| JOptionPane.ERROR_MESSAGE); |
| } else { |
| ((RBManagerGUI)dialog.getParent()).updateDisplayPanels(); |
| ((RBManagerGUI)dialog.getParent()).invalidate(); |
| //((RBManagerGUI)dialog.getParent()).validateMyTree(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| } |
| }); |
| |
| createMoreButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| BundleItemCreationDialog dialog = |
| (BundleItemCreationDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| boolean success = false; |
| if (dialog.item == null) success = createItem(); |
| else success = dialog.editItem(); |
| if (!success) { |
| String alert = (item == null ? Resources.getTranslation("error_create_item") : |
| Resources.getTranslation("error_modify_item")); |
| alert += " " + Resources.getTranslation("error_try_again_item"); |
| JOptionPane.showMessageDialog(dialog, alert, Resources.getTranslation("error"), |
| JOptionPane.ERROR_MESSAGE); |
| } else { |
| ((RBManagerGUI)dialog.getParent()).updateDisplayPanels(); |
| ((RBManagerGUI)dialog.getParent()).invalidate(); |
| //((RBManagerGUI)dialog.getParent()).validateMyTree(); |
| dialog.clearComponents(); |
| } |
| } |
| }); |
| |
| transField.addFocusListener(new FocusListener() { |
| public void focusGained(FocusEvent ev) {} |
| public void focusLost(FocusEvent ev) { |
| BundleItemCreationDialog dialog = |
| (BundleItemCreationDialog)((JTextField)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| firstInit = false; |
| dialog.initComponents(); |
| } |
| }); |
| } |
| |
| // Complete the initialization of the frame |
| if (firstInit) setLocation(new java.awt.Point(50, 50)); |
| mainBox.removeAll(); |
| //mainBox.add(instructionsLabel); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box1); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box2); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box3); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box4); |
| mainBox.add(Box.createVerticalStrut(5)); |
| if (noLookupLabel == null) { |
| mainBox.add(box5); |
| mainBox.add(Box.createVerticalStrut(5)); |
| } |
| mainBox.add(box6); |
| getContentPane().add(mainBox, BorderLayout.CENTER); |
| validateTree(); |
| pack(); |
| setVisible(true); |
| //setResizable(false); |
| firstInit = false; |
| } |
| |
| void closeWindow() { |
| setVisible(false); |
| dispose(); |
| } |
| } |
| |
| |
| // A dialog which allows the user to create a new Bundle Group |
| |
| class BundleGroupCreationDialog extends JDialog { |
| RBManager rbm; |
| |
| // Helper data |
| int left_col_width = 125; |
| int right_col_width = 275; |
| int row_height = 25; |
| Dimension leftDim = new Dimension(left_col_width, row_height); |
| Dimension rightDim = new Dimension(right_col_width, row_height); |
| |
| // Components |
| Box mainBox = new Box(BoxLayout.Y_AXIS); |
| Box box1 = new Box(BoxLayout.X_AXIS); |
| Box box2 = new Box(BoxLayout.X_AXIS); |
| Box box3 = new Box(BoxLayout.X_AXIS); |
| |
| JTextArea instructionsArea = new JTextArea(""); |
| JLabel nameLabel = new JLabel(Resources.getTranslation("dialog_group")); |
| JLabel commentLabel = new JLabel(Resources.getTranslation("dialog_group_comment")); |
| JTextField nameField = new JTextField(""); |
| JTextField commentField = new JTextField(""); |
| JButton createButton = new JButton(Resources.getTranslation("button_create")); |
| JButton cancelButton = new JButton(Resources.getTranslation("button_cancel")); |
| |
| |
| public BundleGroupCreationDialog(RBManager rbm, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.rbm = rbm; |
| initComponents(); |
| enableEvents(AWTEvent.KEY_EVENT_MASK); |
| } |
| |
| boolean createGroup() { |
| if (rbm == null) return false; |
| return rbm.createGroup(nameField.getText().trim(), commentField.getText().trim()); |
| } |
| |
| protected void processKeyEvent(KeyEvent ev) { |
| if (ev.getKeyCode() == KeyEvent.VK_ENTER) { |
| boolean success = createGroup(); |
| if (!success) { |
| String alert = Resources.getTranslation("error_create_group") + " " + |
| Resources.getTranslation("error_try_again_group"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } else { |
| setVisible(false); |
| dispose(); |
| } |
| } else if (ev.getKeyCode() == KeyEvent.VK_CANCEL) { |
| closeWindow(); |
| } |
| } |
| |
| public void initComponents(){ |
| // Error check |
| if (rbm == null) { |
| String alert = Resources.getTranslation("error_no_bundle_for_group"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| closeWindow(); |
| return; |
| } |
| |
| // Initialize values |
| |
| // Set up the components |
| nameLabel.setPreferredSize(leftDim); |
| nameField.setColumns(30); |
| commentLabel.setPreferredSize(leftDim); |
| commentField.setColumns(30); |
| |
| box1.add(nameLabel); box1.add(nameField); |
| box2.add(commentLabel); box2.add(commentField); |
| box3.add(createButton); |
| box3.add(Box.createHorizontalStrut(5)); |
| box3.add(cancelButton); |
| |
| instructionsArea.setBorder(BorderFactory.createEtchedBorder()); |
| |
| // Add the appropriate listeners |
| cancelButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| JDialog dialog = (JDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| }); |
| |
| createButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| BundleGroupCreationDialog dialog = |
| (BundleGroupCreationDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent(); |
| boolean success = dialog.createGroup(); |
| if (!success) { |
| String alert = Resources.getTranslation("error_create_group") + " " + |
| Resources.getTranslation("error_try_again_group"); |
| JOptionPane.showMessageDialog(dialog, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } else { |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| } |
| }); |
| |
| // Complete the initialization of the frame |
| setLocation(new java.awt.Point(50, 50)); |
| mainBox.removeAll(); |
| mainBox.add(box1); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box2); |
| getContentPane().setLayout(new BorderLayout()); |
| getContentPane().removeAll(); |
| //getContentPane().add(instructionsArea, BorderLayout.NORTH); |
| getContentPane().add(mainBox, BorderLayout.CENTER); |
| getContentPane().add(box3, BorderLayout.SOUTH); |
| validateTree(); |
| pack(); |
| setVisible(true); |
| //setResizable(false); |
| } |
| |
| void closeWindow() { |
| setVisible(false); |
| dispose(); |
| } |
| } |
| |
| // A dialog which allows the user to create a new Bundle Group |
| |
| class BundleGroupEditDialog extends JDialog { |
| BundleGroup group; |
| |
| // Helper data |
| int left_col_width = 125; |
| int right_col_width = 275; |
| int row_height = 25; |
| Dimension leftDim = new Dimension(left_col_width, row_height); |
| Dimension rightDim = new Dimension(right_col_width, row_height); |
| |
| // Components |
| Box mainBox = new Box(BoxLayout.Y_AXIS); |
| Box box1 = new Box(BoxLayout.X_AXIS); |
| Box box2 = new Box(BoxLayout.X_AXIS); |
| Box box3 = new Box(BoxLayout.X_AXIS); |
| |
| JLabel nameLabel = new JLabel(Resources.getTranslation("dialog_group")); |
| JLabel commentLabel = new JLabel(Resources.getTranslation("dialog_group_comment")); |
| JTextField nameField = new JTextField(""); |
| JTextField commentField = new JTextField(""); |
| JButton editButton = new JButton(Resources.getTranslation("button_edit")); |
| JButton cancelButton = new JButton(Resources.getTranslation("button_cancel")); |
| |
| |
| public BundleGroupEditDialog(BundleGroup group, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.group = group; |
| initComponents(); |
| enableEvents(AWTEvent.KEY_EVENT_MASK); |
| } |
| |
| protected void processKeyEvent(KeyEvent ev) { |
| if (ev.getKeyCode() == KeyEvent.VK_ENTER) { |
| boolean success = editGroup(); |
| if (!success) { |
| String alert = Resources.getTranslation("error_modify_group"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error_internal"), |
| JOptionPane.ERROR_MESSAGE); |
| } else { |
| setVisible(false); |
| dispose(); |
| } |
| } else if (ev.getKeyCode() == KeyEvent.VK_CANCEL) { |
| closeWindow(); |
| } |
| } |
| |
| boolean editGroup() { |
| if (group == null) return false; |
| group.setName(nameField.getText().trim()); |
| group.setComment(commentField.getText().trim()); |
| return true; |
| } |
| |
| public void initComponents(){ |
| // Error check |
| if (group == null) { |
| String alert = Resources.getTranslation("error_modify_group"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error_internal"), JOptionPane.ERROR_MESSAGE); |
| closeWindow(); |
| return; |
| } |
| |
| // Initialize values |
| |
| // Set up the components |
| nameLabel.setPreferredSize(leftDim); |
| nameField.setColumns(30); |
| commentLabel.setPreferredSize(leftDim); |
| commentField.setColumns(30); |
| |
| nameField.setText(group.getName()); |
| commentField.setText(group.getComment()); |
| |
| box1.add(nameLabel); box1.add(nameField); |
| box2.add(commentLabel); box2.add(commentField); |
| box3.add(editButton); |
| box3.add(Box.createHorizontalStrut(5)); |
| box3.add(cancelButton); |
| |
| // Add the appropriate listeners |
| cancelButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| JDialog dialog = (JDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| }); |
| |
| editButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| BundleGroupEditDialog dialog = |
| (BundleGroupEditDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent(); |
| boolean success = dialog.editGroup(); |
| if (!success) { |
| String alert = Resources.getTranslation("error_modify_group"); |
| JOptionPane.showMessageDialog(dialog, alert, Resources.getTranslation("error_internal"), |
| JOptionPane.ERROR_MESSAGE); |
| } else { |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| } |
| }); |
| |
| // Complete the initialization of the frame |
| setLocation(new java.awt.Point(50, 50)); |
| mainBox.removeAll(); |
| mainBox.add(box1); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box2); |
| getContentPane().setLayout(new BorderLayout()); |
| getContentPane().removeAll(); |
| getContentPane().add(mainBox, BorderLayout.CENTER); |
| getContentPane().add(box3, BorderLayout.SOUTH); |
| validateTree(); |
| pack(); |
| setVisible(true); |
| //setResizable(false); |
| } |
| |
| void closeWindow() { |
| setVisible(false); |
| dispose(); |
| } |
| } |
| |
| // A dialog for creating new Resource Files |
| |
| class ResourceCreationDialog extends JDialog { |
| RBManager rbm; |
| RBManagerGUI gui; |
| |
| // Components |
| Box mainBox = new Box(BoxLayout.Y_AXIS); |
| Box infoBox = new Box(BoxLayout.Y_AXIS); |
| JPanel infoPanel = new JPanel(); |
| JPanel infoTitlePanel = new JPanel(); |
| JPanel infoCommentPanel = new JPanel(); |
| JPanel infoManagerPanel = new JPanel(); |
| JPanel langPanel = new JPanel(); |
| JPanel counPanel = new JPanel(); |
| JPanel variPanel = new JPanel(); |
| JPanel buttPanel = new JPanel(); |
| |
| JLabel instructionsLabel = new JLabel(""); |
| JLabel titleLabel = new JLabel(Resources.getTranslation("dialog_file_title")); |
| JLabel commentLabel = new JLabel(Resources.getTranslation("dialog_file_comment")); |
| JLabel managerLabel = new JLabel(Resources.getTranslation("dialog_file_manager")); |
| JLabel enc1Label = new JLabel(Resources.getTranslation("dialog_encoding")); |
| JLabel enc2Label = new JLabel(Resources.getTranslation("dialog_encoding")); |
| JLabel enc3Label = new JLabel(Resources.getTranslation("dialog_encoding")); |
| JLabel nam1Label = new JLabel(Resources.getTranslation("dialog_name")); |
| JLabel nam2Label = new JLabel(Resources.getTranslation("dialog_name")); |
| JLabel nam3Label = new JLabel(Resources.getTranslation("dialog_name")); |
| |
| JTextField titleField = new JTextField(""); |
| JTextField commentField = new JTextField(""); |
| JTextField managerField = new JTextField(""); |
| JTextField enc1Field = new JTextField(""); |
| JTextField enc2Field = new JTextField(""); |
| JTextField enc3Field = new JTextField(""); |
| JTextField nam1Field = new JTextField(""); |
| JTextField nam2Field = new JTextField(""); |
| JTextField nam3Field = new JTextField(""); |
| |
| JCheckBox copyCheckBox = new JCheckBox(Resources.getTranslation("dialog_checkbox_copy_elements"), true); |
| |
| JButton createButton = new JButton(Resources.getTranslation("button_create")); |
| JButton cancelButton = new JButton(Resources.getTranslation("button_cancel")); |
| |
| public ResourceCreationDialog(RBManager rbm, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.gui = (RBManagerGUI)frame; |
| this.rbm = rbm; |
| initComponents(); |
| enableEvents(AWTEvent.KEY_EVENT_MASK); |
| } |
| |
| protected void processKeyEvent(KeyEvent ev) { |
| if (ev.getKeyCode() == KeyEvent.VK_ENTER) { |
| boolean success = createResource(); |
| if (!success) { |
| String alert = Resources.getTranslation("error_create_file") + " " + |
| Resources.getTranslation("error_try_again_file"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } else { |
| setVisible(false); |
| dispose(); |
| } |
| } else if (ev.getKeyCode() == KeyEvent.VK_CANCEL) { |
| closeWindow(); |
| } |
| } |
| |
| boolean createResource() { |
| if (rbm == null) return false; |
| String encoding = enc1Field.getText().trim(); |
| String enc2 = enc2Field.getText().trim(); |
| if (enc2 != null && !enc2.equals("")) encoding += "_" + enc2; |
| String enc3 = enc3Field.getText().trim(); |
| if (enc3 != null && !enc3.equals("")) encoding += "_" + enc3; |
| boolean ret = rbm.createResource(titleField.getText().trim(), commentField.getText().trim(), managerField.getText().trim(), |
| encoding, nam1Field.getText().trim(), nam2Field.getText().trim(), |
| nam3Field.getText().trim(), copyCheckBox.isSelected()); |
| if (ret) { |
| gui.updateDisplayTree(); |
| gui.updateProjectTree(); |
| gui.updateProjectPanels(); |
| } |
| return ret; |
| } |
| |
| public void initComponents(){ |
| // Error check |
| if (rbm == null) { |
| String alert = Resources.getTranslation("error_no_bundle_for_file"); |
| JOptionPane.showMessageDialog(this, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| closeWindow(); |
| return; |
| } |
| |
| // Initialize values |
| int tempWidth = 175; |
| Dimension labelDim = new Dimension(tempWidth, 30); |
| titleLabel.setPreferredSize(labelDim); |
| commentLabel.setPreferredSize(labelDim); |
| managerLabel.setPreferredSize(labelDim); |
| |
| infoPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("dialog_file_info"))); |
| langPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("dialog_language"))); |
| counPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("dialog_country"))); |
| variPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("dialog_variant"))); |
| |
| Dimension encDim = new Dimension(50,20); |
| Dimension namDim = new Dimension(350,20); |
| Dimension othDim = new Dimension(400,20); |
| |
| titleField.setColumns(30); |
| commentField.setColumns(30); |
| managerField.setColumns(30); |
| |
| enc1Field.setColumns(3); |
| enc2Field.setColumns(3); |
| enc3Field.setColumns(3); |
| nam1Field.setColumns(20); |
| nam2Field.setColumns(20); |
| nam3Field.setColumns(20); |
| |
| // Set up the components |
| infoTitlePanel.add(titleLabel); infoTitlePanel.add(titleField); |
| infoCommentPanel.add(commentLabel); infoCommentPanel.add(commentField); |
| infoManagerPanel.add(managerLabel); infoManagerPanel.add(managerField); |
| infoBox.add(infoTitlePanel); |
| infoBox.add(infoCommentPanel); |
| infoBox.add(infoManagerPanel); |
| infoPanel.add(infoBox); |
| |
| langPanel.add(enc1Label); langPanel.add(enc1Field); langPanel.add(nam1Label); langPanel.add(nam1Field); |
| counPanel.add(enc2Label); counPanel.add(enc2Field); counPanel.add(nam2Label); counPanel.add(nam2Field); |
| variPanel.add(enc3Label); variPanel.add(enc3Field); variPanel.add(nam3Label); variPanel.add(nam3Field); |
| |
| buttPanel.add(createButton); buttPanel.add(cancelButton); |
| |
| // Add the appropriate listeners |
| cancelButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| JDialog dialog = (JDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| }); |
| |
| createButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| ResourceCreationDialog dialog = |
| (ResourceCreationDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| boolean success = dialog.createResource(); |
| if (!success) { |
| String alert = Resources.getTranslation("error_create_file") + " " + |
| Resources.getTranslation("error_try_again_file"); |
| JOptionPane.showMessageDialog(dialog, alert, Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| } else { |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| } |
| }); |
| |
| // Complete the component layout |
| mainBox.removeAll(); |
| //mainBox.add(instructionsLabel); |
| mainBox.add(infoPanel); |
| mainBox.add(langPanel); |
| mainBox.add(counPanel); |
| mainBox.add(variPanel); |
| mainBox.add(copyCheckBox); |
| mainBox.add(buttPanel); |
| |
| setLocation(new java.awt.Point(50, 50)); |
| getContentPane().add(mainBox, BorderLayout.CENTER); |
| validateTree(); |
| pack(); |
| setVisible(true); |
| //setResizable(false); |
| } |
| |
| void closeWindow() { |
| setVisible(false); |
| dispose(); |
| } |
| } |
| |
| // A dialog which displays the properties of a Bundle Item in an editable way |
| |
| class BundleItemDialog extends JDialog implements ActionListener { |
| RBManager rbm; |
| BundleItem item; |
| String user; |
| boolean firstInit = true; |
| |
| // Helper data |
| int left_col_width = 125; |
| int right_col_width = 375; |
| int row_height = 25; |
| Dimension leftDim = new Dimension(left_col_width, row_height); |
| Dimension rightDim = new Dimension(right_col_width, row_height); |
| |
| // Components |
| Box mainBox = new Box(BoxLayout.Y_AXIS); |
| Box box0 = new Box(BoxLayout.X_AXIS); |
| Box box1 = new Box(BoxLayout.X_AXIS); |
| Box box2 = new Box(BoxLayout.X_AXIS); |
| Box box3 = new Box(BoxLayout.X_AXIS); |
| Box box4 = new Box(BoxLayout.X_AXIS); |
| Box box5 = new Box(BoxLayout.X_AXIS); |
| Box box6 = new Box(BoxLayout.X_AXIS); |
| Box box7 = new Box(BoxLayout.X_AXIS); |
| Box box8 = new Box(BoxLayout.X_AXIS); |
| |
| JLabel groupLabel = new JLabel(Resources.getTranslation("dialog_group")); |
| JLabel keyLabel = new JLabel(Resources.getTranslation("dialog_key")); |
| JLabel defTransLabel = new JLabel(Resources.getTranslation("dialog_default_translation")); |
| JLabel transLabel = new JLabel(Resources.getTranslation("dialog_translation")); |
| JLabel commentLabel = new JLabel(Resources.getTranslation("dialog_comment")); |
| JLabel lookupLabel = new JLabel(Resources.getTranslation("dialog_lookups")); |
| JLabel createdLabel = new JLabel(Resources.getTranslation("dialog_created")); |
| JLabel modifiedLabel = new JLabel(Resources.getTranslation("dialog_modified")); |
| |
| JComboBox groupComboBox; |
| JTextField keyField; |
| JTextField transField; |
| JTextField defTransField; |
| JTextField commentField; |
| JLabel createdLabel2; |
| JLabel modifiedLabel2; |
| JLabel lookupLabel2 = null; |
| JCheckBox transCheckBox; |
| JButton saveButton = new JButton(Resources.getTranslation("button_edit")); |
| JButton cancelButton = new JButton(Resources.getTranslation("button_cancel")); |
| Box lookupBox = null; |
| Box lookups[] = null; |
| JLabel lookupLabels[] = null; |
| JTextField lookupFields[] = null; |
| |
| public BundleItemDialog(RBManager rbm, BundleItem item, String user, JFrame frame, String title, boolean modal) { |
| super(frame, title, modal); |
| this.rbm = rbm; |
| this.user = user; |
| this.item = item; |
| initComponents(); |
| enableEvents(AWTEvent.KEY_EVENT_MASK); |
| } |
| |
| protected void processKeyEvent(KeyEvent ev) { |
| if (ev.getKeyCode() == KeyEvent.VK_ENTER && ev.getID() == KeyEvent.KEY_RELEASED) { |
| actionPerformed(null); |
| } else if (ev.getKeyCode() == KeyEvent.VK_CANCEL) { |
| closeWindow(); |
| } |
| } |
| |
| public void initComponents(){ |
| // Error check |
| if (item == null) closeWindow(); |
| if (!firstInit) closeWindow(); |
| |
| // Initialize values |
| DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); |
| Bundle bundle = item.getParentGroup().getParentBundle(); |
| |
| // Lookup the default translation |
| String defTrans = new String(); |
| Object o = ((Bundle)rbm.bundles.firstElement()).allItems.get(item.getKey()); |
| if (o != null) defTrans = ((BundleItem)o).getTranslation(); |
| |
| keyField = new JTextField(item.getKey()); |
| keyField.setEnabled(false); |
| defTransField = new JTextField(defTrans); |
| defTransField.setEnabled(false); |
| transField = new JTextField(item.getTranslation()); |
| commentField = new JTextField(item.getComment()); |
| String created[] = {df.format(item.getCreatedDate()), item.getCreator()}; |
| String modified[] = {df.format(item.getModifiedDate()), item.getModifier()}; |
| String createdString = Resources.getTranslation("dialog_date_person", created); |
| String modifiedString = Resources.getTranslation("dialog_date_person", modified); |
| createdLabel2 = new JLabel(item.getCreator() == null ? df.format(item.getCreatedDate()) : createdString); |
| modifiedLabel2 = new JLabel(item.getModifier() == null ? df.format(item.getModifiedDate()) : modifiedString); |
| transCheckBox = new JCheckBox(Resources.getTranslation("dialog_checkbox_translated"),item.isTranslated()); |
| |
| groupComboBox = new JComboBox(bundle.getGroupsAsVector()); |
| for (int i=0; i < groupComboBox.getItemCount(); i++) { |
| BundleGroup bg = (BundleGroup)groupComboBox.getItemAt(i); |
| if (bg.getName().equals(item.getParentGroup().getName())) { |
| groupComboBox.setSelectedIndex(i); |
| break; |
| } |
| } |
| groupComboBox.setEnabled(false); |
| |
| // Set up the components |
| groupLabel.setPreferredSize(leftDim); |
| groupComboBox.setPreferredSize(rightDim); |
| keyLabel.setPreferredSize(leftDim); |
| //keyField.setPreferredSize(rightDim); |
| keyField.setColumns(30); |
| defTransLabel.setPreferredSize(leftDim); |
| //defTransField.setPreferredSize(rightDim); |
| defTransField.setColumns(30); |
| transLabel.setPreferredSize(leftDim); |
| //transField.setPreferredSize(rightDim); |
| transField.setColumns(30); |
| commentLabel.setPreferredSize(leftDim); |
| //commentField.setPreferredSize(rightDim); |
| commentField.setColumns(30); |
| lookupLabel.setPreferredSize(leftDim); |
| createdLabel.setPreferredSize(leftDim); |
| createdLabel2.setPreferredSize(rightDim); |
| modifiedLabel.setPreferredSize(leftDim); |
| modifiedLabel2.setPreferredSize(rightDim); |
| // Special setup for the lookup items if they exist |
| if (item.getLookups().size() < 1) { |
| lookupLabel2 = new JLabel(Resources.getTranslation("none")); |
| lookupLabel2.setPreferredSize(rightDim); |
| } else { |
| lookupBox = new Box(BoxLayout.Y_AXIS); |
| lookups = new Box[item.getLookups().size()]; |
| lookupLabels = new JLabel[item.getLookups().size()]; |
| lookupFields = new JTextField[item.getLookups().size()]; |
| Enumeration enum = item.getLookups().keys(); |
| for (int i = 0; i < item.getLookups().size(); i++) { |
| String name = (String)enum.nextElement(); |
| String value = (String)item.getLookups().get(name); |
| RBManagerGUI.debugMsg("X - Lookup: " + name + " -> " + value); |
| lookups[i] = new Box(BoxLayout.X_AXIS); |
| lookupLabels[i] = new JLabel("{" + name + "}"); |
| lookupLabels[i].setPreferredSize(new Dimension(30,row_height)); |
| lookupFields[i] = new JTextField(value); |
| lookupFields[i].setPreferredSize(new Dimension(right_col_width-35,row_height)); |
| lookups[i].add(Box.createHorizontalGlue()); |
| lookups[i].add(lookupLabels[i]); |
| lookups[i].add(Box.createHorizontalStrut(5)); |
| lookups[i].add(lookupFields[i]); |
| lookupBox.add(lookups[i]); |
| } |
| } |
| |
| // Add the appropriate listeners |
| if (firstInit) { |
| cancelButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| JDialog dialog = (JDialog)((JButton)ev.getSource()).getParent().getParent().getParent().getParent().getParent().getParent(); |
| dialog.setVisible(false); |
| dialog.dispose(); |
| } |
| }); |
| |
| saveButton.addActionListener(this); |
| |
| transField.addFocusListener(new TranslationFocusListener(item.getTranslation(),transCheckBox)); |
| } |
| |
| box0.add(groupLabel); box0.add(groupComboBox); |
| box1.add(keyLabel); box1.add(keyField); |
| box8.add(defTransLabel); box8.add(defTransField); |
| box2.add(transLabel); box2.add(transField); |
| box3.add(commentLabel); box3.add(commentField); |
| box4.add(Box.createHorizontalGlue()); box4.add(lookupLabel); |
| if (lookupLabel2 != null) { |
| box4.add(Box.createHorizontalStrut(5)); |
| box4.add(lookupLabel2); |
| } else if (lookupBox != null) { |
| box4.add(Box.createHorizontalStrut(5)); |
| box4.add(lookupBox); |
| } |
| box5.add(Box.createHorizontalGlue()); box5.add(createdLabel); |
| box5.add(Box.createHorizontalStrut(5)); box5.add(createdLabel2); |
| box6.add(Box.createHorizontalGlue()); box6.add(modifiedLabel); |
| box6.add(Box.createHorizontalStrut(5)); box6.add(modifiedLabel2); |
| box7.add(transCheckBox); box7.add(saveButton); box7.add(cancelButton); |
| |
| // Complete the initialization of the frame |
| setLocation(new java.awt.Point(50, 50)); |
| mainBox.removeAll(); |
| mainBox.add(box0); |
| mainBox.add(box1); |
| mainBox.add(box8); |
| mainBox.add(box2); |
| mainBox.add(box3); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box4); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box5); |
| mainBox.add(box6); |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(box7); |
| getContentPane().add(mainBox, BorderLayout.CENTER); |
| validateTree(); |
| pack(); |
| setVisible(true); |
| //setResizable(false); |
| |
| firstInit = false; |
| } |
| |
| void closeWindow() { |
| setVisible(false); |
| dispose(); |
| } |
| |
| public void actionPerformed(ActionEvent ev) { |
| if (ev == null && transField.hasFocus()) { |
| // If we are in the translation field, then enter should create a new line character, not exit the dialog |
| int caretPos = transField.getCaretPosition(); |
| String oldText = transField.getText(); |
| transField.setText(oldText.substring(0,caretPos) + "\n" + oldText.substring(caretPos,oldText.length())); |
| transField.setCaretPosition(caretPos+1); |
| validate(); |
| setSize(getPreferredSize()); |
| return; |
| } |
| |
| // This action is called when the 'Edit' button is pressed |
| item.setTranslation(transField.getText().trim()); |
| if (!item.getKey().equals(keyField.getText())) item.setKey(keyField.getText().trim()); |
| item.setComment(commentField.getText()); |
| item.setModifiedDate(new Date()); |
| item.setModifier(user); |
| item.setTranslated(transCheckBox.isSelected()); |
| if (transCheckBox.isSelected()) { |
| // Remove this item from the untranslated items, if it is there |
| item.getParentGroup().getParentBundle().removeUntranslatedItem(item.getKey()); |
| } else { |
| item.getParentGroup().getParentBundle().addUntranslatedItem(item); |
| } |
| if (lookups != null) { |
| item.setLookups(new Hashtable()); |
| for (int i=0; i < lookups.length; i++) { |
| String name = lookupLabels[i].getText().trim(); |
| if (name.indexOf("{") >= 0) name = name.substring(name.indexOf("{")+1,name.length()); |
| if (name.indexOf("}") >= 0) name = name.substring(0, name.indexOf("}")); |
| String value = lookupFields[i].getText().trim(); |
| item.getLookups().put(name,value); |
| } |
| } |
| closeWindow(); |
| } |
| } |
| |
| // The action listener which monitors changes in the group to display |
| |
| class GroupComboActionListener implements ActionListener { |
| JTable table; |
| JList list; |
| |
| protected GroupComboActionListener(JTable table) { |
| list = null; |
| this.table = table; |
| } |
| |
| protected GroupComboActionListener(JList list) { |
| table = null; |
| this.list = list; |
| } |
| |
| public void actionPerformed(ActionEvent ev) { |
| JComboBox cbox = (JComboBox)ev.getSource(); |
| |
| if (table != null) { |
| BundleGroup bg = (BundleGroup)cbox.getSelectedItem(); |
| ((GroupItemsTableModel)table.getModel()).setGroup((BundleGroup)cbox.getSelectedItem()); |
| //table.validate(); |
| Container c = table.getParent(); |
| while (!(c instanceof RBGroupPanel)) { c = c.getParent(); } |
| ((RBGroupPanel)c).updateComponents(); |
| } else if (list != null) { |
| list.setListData(((BundleGroup)cbox.getSelectedItem()).getItemsAsVector()); |
| //list.validate(); |
| Container c = list.getParent(); |
| while (!(c instanceof RBGroupPanel)) { c = c.getParent(); } |
| ((RBGroupPanel)c).updateComponents(); |
| } else RBManagerGUI.debugMsg("Selection changed, but no active components"); |
| } |
| } |
| |
| class PreferencesDialog extends JDialog { |
| String userName; |
| Locale locale; |
| LookAndFeel laf; |
| RBManagerGUI gui; |
| |
| // ** COMPONENTS ** |
| JTextField nameField; |
| JRadioButton machineRadio; |
| JRadioButton definedRadio; |
| JRadioButton isoRadio; |
| JComboBox machineCombo; |
| JComboBox definedCombo; |
| JComboBox isoLangCombo; |
| JComboBox isoCounCombo; |
| JComboBox lafCombo; |
| JButton okButton; |
| JButton cancelButton; |
| |
| public PreferencesDialog(RBManagerGUI gui) { |
| super(gui, Resources.getTranslation("dialog_title_preferences"), true); |
| this.gui = gui; |
| userName = gui.getUser(); |
| locale = Resources.getLocale(); |
| laf = UIManager.getLookAndFeel(); |
| |
| initComponents(); |
| enableEvents(AWTEvent.KEY_EVENT_MASK); |
| } |
| |
| protected void processKeyEvent(KeyEvent ev) { |
| if (ev.getKeyCode() == KeyEvent.VK_ENTER) { |
| updatePreferences(); |
| } else if (ev.getKeyCode() == KeyEvent.VK_CANCEL) { |
| thisWindowClosing(); |
| } |
| } |
| |
| private void initComponents() { |
| UIManager.LookAndFeelInfo lafi[] = UIManager.getInstalledLookAndFeels(); |
| String lafn[] = new String[lafi.length]; |
| for (int i=0; i < lafi.length; i++) { |
| lafn[i] = lafi[i].getName(); |
| } |
| |
| // COMPONENTS |
| |
| JPanel panel1 = new JPanel(); |
| JPanel panel2 = new JPanel(); |
| JPanel panel3 = new JPanel(); |
| JPanel panel4 = new JPanel(); |
| Box mainBox = new Box(BoxLayout.Y_AXIS); |
| Box localeBox1 = new Box(BoxLayout.Y_AXIS); |
| Box localeBox2 = new Box(BoxLayout.Y_AXIS); |
| JPanel localePanel = new JPanel(); |
| |
| Dimension localeDim1 = new Dimension(200,25); |
| Dimension localeDim2 = new Dimension(150,25); |
| Dimension localeDim3 = new Dimension(50,25); |
| |
| JLabel nameLabel = new JLabel(Resources.getTranslation("dialog_preferences_username")); |
| JLabel lafLabel = new JLabel(Resources.getTranslation("dialog_preferences_lookandfeel")); |
| JLabel warnLabel = new JLabel(Resources.getTranslation("dialog_preferences_locale_warning")); |
| JLabel underscoreLabel = new JLabel("_"); |
| |
| nameField = new JTextField(userName); |
| machineRadio = new JRadioButton(Resources.getTranslation("dialog_preferences_locale_machine"), false); |
| definedRadio = new JRadioButton(Resources.getTranslation("dialog_preferences_locale_defined"), true); |
| isoRadio = new JRadioButton(Resources.getTranslation("dialog_preferences_locale_iso"), false); |
| machineCombo = new JComboBox(Locale.getAvailableLocales()); |
| definedCombo = new JComboBox(Resources.getAvailableLocales()); |
| isoLangCombo = new JComboBox(Locale.getISOLanguages()); |
| isoCounCombo = new JComboBox(Locale.getISOCountries()); |
| lafCombo = new JComboBox(lafn); |
| okButton = new JButton(Resources.getTranslation("button_update")); |
| cancelButton = new JButton(Resources.getTranslation("button_cancel")); |
| |
| machineRadio.setPreferredSize(localeDim1); |
| definedRadio.setPreferredSize(localeDim1); |
| isoRadio.setPreferredSize(localeDim1); |
| |
| nameLabel.setPreferredSize(localeDim1); |
| lafLabel.setPreferredSize(localeDim1); |
| |
| //localePanel.setPreferredSize(localeDim2); |
| machineCombo.setPreferredSize(localeDim2); |
| definedCombo.setPreferredSize(localeDim2); |
| |
| nameField.setPreferredSize(localeDim2); |
| lafCombo.setPreferredSize(localeDim2); |
| |
| isoLangCombo.setPreferredSize(localeDim3); |
| isoCounCombo.setPreferredSize(localeDim3); |
| |
| // Select the appropriate entries in the combo boxes |
| String lafname = UIManager.getLookAndFeel().getName(); |
| for (int i = 0; i < lafCombo.getItemCount(); i++) { |
| if (lafCombo.getItemAt(i).toString().equals(lafname)) { |
| lafCombo.setSelectedIndex(i); |
| break; |
| } |
| } |
| String locname = Resources.getLocale().toString(); |
| String loclang = Resources.getLocale().getLanguage(); |
| String loccoun = Resources.getLocale().getCountry(); |
| for (int i = 0; i < machineCombo.getItemCount(); i++) { |
| if (machineCombo.getItemAt(i).toString().equalsIgnoreCase(locname)) { |
| machineCombo.setSelectedIndex(i); |
| break; |
| } |
| } |
| for (int i = 0; i < definedCombo.getItemCount(); i++) { |
| if (definedCombo.getItemAt(i).toString().equalsIgnoreCase(locname)) { |
| definedCombo.setSelectedIndex(i); |
| break; |
| } |
| } |
| for (int i = 0; i < isoLangCombo.getItemCount(); i++) { |
| if (isoLangCombo.getItemAt(i).toString().equalsIgnoreCase(loclang)) { |
| isoLangCombo.setSelectedIndex(i); |
| break; |
| } |
| } |
| for (int i = 0; i < isoCounCombo.getItemCount(); i++) { |
| if (isoCounCombo.getItemAt(i).toString().equalsIgnoreCase(loccoun)) { |
| isoCounCombo.setSelectedIndex(i); |
| break; |
| } |
| } |
| |
| // Set the radio button group |
| ButtonGroup group = new ButtonGroup(); |
| group.add(machineRadio); |
| group.add(definedRadio); |
| group.add(isoRadio); |
| |
| nameField.setColumns(15); |
| |
| // Add action listeners |
| cancelButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| thisWindowClosing(); |
| } |
| }); |
| |
| okButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| updatePreferences(); |
| } |
| }); |
| |
| panel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("dialog_preferences_locale"))); |
| panel3.setLayout(new BorderLayout()); |
| |
| localePanel.add(isoLangCombo); |
| localePanel.add(underscoreLabel); |
| localePanel.add(isoCounCombo); |
| |
| localeBox1.add(machineRadio); |
| localeBox1.add(definedRadio); |
| localeBox1.add(isoRadio); |
| localeBox2.add(machineCombo); |
| localeBox2.add(definedCombo); |
| localeBox2.add(localePanel); |
| localeBox1.add(Box.createVerticalStrut(5)); |
| localeBox2.add(Box.createVerticalStrut(5)); |
| |
| panel1.add(nameLabel); |
| panel1.add(nameField); |
| panel2.add(lafLabel); |
| panel2.add(lafCombo); |
| panel3.add(localeBox1, BorderLayout.WEST); |
| panel3.add(localeBox2, BorderLayout.EAST); |
| panel3.add(warnLabel, BorderLayout.SOUTH); |
| panel4.add(okButton); |
| panel4.add(cancelButton); |
| |
| mainBox.add(panel1); |
| mainBox.add(panel2); |
| mainBox.add(panel3); |
| mainBox.add(panel4); |
| |
| getContentPane().add(mainBox); |
| //validate(); |
| pack(); |
| setVisible(true); |
| } |
| |
| public void thisWindowClosing() { |
| setVisible(false); |
| dispose(); |
| } |
| |
| void updatePreferences() { |
| // Set the user name |
| gui.setUser(nameField.getText().trim()); |
| // Set the look and feel |
| try { |
| UIManager.LookAndFeelInfo lafi[] = UIManager.getInstalledLookAndFeels(); |
| for (int i=0; i < lafi.length; i++) { |
| if (lafi[i].getName().equals(lafCombo.getSelectedItem().toString())) { |
| UIManager.setLookAndFeel(lafi[i].getClassName()); |
| gui.updateUI(); |
| break; |
| } |
| } |
| } catch (Exception e) { |
| System.err.println("Could not change the look and feel"); |
| e.printStackTrace(System.err); |
| } |
| // Set the locale |
| String language = null; |
| String country = null; |
| String variant = null; |
| if (definedRadio.isSelected()) { |
| String encoding = definedCombo.getSelectedItem().toString(); |
| language = Resources.getLanguage(encoding); |
| country = Resources.getCountry(encoding); |
| variant = Resources.getVariant(encoding); |
| RBManagerGUI.debugMsg("Before: " + language + "_" + country + "_" + variant); |
| if (country == null) country = new String(); |
| if (variant == null) locale = new Locale(language, country); |
| else locale = new Locale(language, country, variant); |
| RBManagerGUI.debugMsg("After: " + locale.toString()); |
| } else if (machineRadio.isSelected()) { |
| String encoding = machineCombo.getSelectedItem().toString(); |
| language = Resources.getLanguage(encoding); |
| country = Resources.getCountry(encoding); |
| variant = Resources.getVariant(encoding); |
| if (country == null) country = new String(); |
| if (variant == null) locale = new Locale(language, country); |
| else locale = new Locale(language, country, variant); |
| } else if (isoRadio.isSelected()) { |
| language = isoLangCombo.getSelectedItem().toString(); |
| country = isoCounCombo.getSelectedItem().toString(); |
| if (variant == null) locale = new Locale(language, country); |
| else locale = new Locale(language, country, variant); |
| } |
| Resources.setLocale(locale); |
| gui.updateLocale(locale); |
| |
| // Write the preferences |
| Preferences.setPreference("username", gui.getUser()); |
| Preferences.setPreference("lookandfeel", UIManager.getLookAndFeel().getClass().getName()); |
| Preferences.setPreference("locale", locale.toString()); |
| try { |
| Preferences.savePreferences(); |
| } catch (IOException ioe) { |
| JOptionPane.showMessageDialog(this, Resources.getTranslation("error_preferences_save"), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| ioe.printStackTrace(System.err); |
| } |
| |
| // Close the window |
| thisWindowClosing(); |
| } |
| } |
| |
| // A dialog displaying information about this application |
| |
| class AboutDialog { |
| public static JDialog dialog = null; |
| |
| public static void showDialog(Frame parent) { |
| if (dialog == null) { |
| dialog = new JDialog(parent, Resources.getTranslation("dialog_title_about_rbmanager"), false); |
| initComponents(); |
| } |
| dialog.setVisible(true); |
| } |
| |
| private static void initComponents() { |
| dialog.getContentPane().setLayout(new BorderLayout()); |
| JLabel logoLabel = null; |
| JLabel titleLabel = new JLabel(Resources.getTranslation("rbmanager")); |
| JLabel versionLabel = new JLabel(Resources.getTranslation("version", Package.getPackage("com.ibm.rbm").getImplementationVersion())); |
| JLabel copyrightLabel = new JLabel(Resources.getTranslation("copyright")); |
| JLabel contactLabel = new JLabel(Resources.getTranslation("rbmanager_contact")); |
| JPanel panel = new JPanel(); |
| Box box = new Box(BoxLayout.Y_AXIS); |
| |
| try { |
| Class thisClass = Class.forName("com.ibm.rbm.AboutDialog"); |
| logoLabel = new JLabel(new ImageIcon(thisClass.getResource("images/" + |
| Resources.getTranslation("logo_filename")))); |
| } catch (ClassNotFoundException e) { |
| RBManagerGUI.debugMsg(e.toString()); |
| } |
| |
| box.add(titleLabel); |
| box.add(versionLabel); |
| box.add(Box.createVerticalStrut(10)); |
| box.add(copyrightLabel); |
| box.add(Box.createVerticalStrut(5)); |
| box.add(contactLabel); |
| |
| panel.add(box); |
| dialog.getContentPane().add(logoLabel, BorderLayout.WEST); |
| dialog.getContentPane().add(panel, BorderLayout.CENTER); |
| |
| dialog.addMouseListener(new MouseListener() { |
| public void mousePressed(MouseEvent ev) { } |
| public void mouseReleased(MouseEvent ev) { |
| hideDialog(); |
| } |
| public void mouseEntered(MouseEvent ev) { } |
| public void mouseExited(MouseEvent ev) { } |
| public void mouseClicked(MouseEvent ev) { } |
| }); |
| |
| //dialog.validate(); |
| dialog.pack(); |
| dialog.setLocation(new Point(50,50)); |
| //dialog.setResizable(false); |
| } |
| |
| private static void hideDialog() { |
| dialog.setVisible(false); |
| } |
| } |
| |
| // The list model for groups |
| |
| class GroupItemsListModel extends AbstractListModel { |
| BundleGroup group; |
| |
| public void setGroup(BundleGroup group) { |
| this.group = group; |
| } |
| |
| public GroupItemsListModel(BundleGroup group) { |
| this.group = group; |
| } |
| |
| public int getSize() { |
| if (group == null) return 0; |
| return group.getItemCount(); |
| } |
| |
| public Object getElementAt(int index) { |
| return group.getBundleItem(index); |
| } |
| |
| public void update() { |
| fireContentsChanged(this, 0, getSize()-1); |
| } |
| } |
| |
| // Table model for resource bundle projects |
| |
| class RBProject { |
| java.util.List bundleNames; |
| java.util.List bundleFileNames; |
| java.util.List bundles; |
| String projectName; |
| |
| public RBProject(String projectName) { |
| this.projectName = projectName; |
| bundleNames = new java.util.LinkedList(); |
| bundleFileNames = new java.util.LinkedList(); |
| bundles = new java.util.LinkedList(); |
| } |
| |
| public RBProject(File inputFile) throws IOException { |
| this(inputFile.getName()); |
| |
| if (projectName.indexOf(".") > 0) { |
| projectName = projectName.substring(0,projectName.lastIndexOf(".")); |
| } |
| |
| FileReader fr = new FileReader(inputFile); |
| BufferedReader br = new BufferedReader(fr); |
| String line = null; |
| int linecount = 0; |
| while ((line = br.readLine()) != null) { |
| if (linecount % 2 == 0) { |
| bundleNames.add(line.trim()); |
| } else { |
| bundleFileNames.add(line.trim()); |
| } |
| linecount++; |
| } |
| fr.close(); |
| try { |
| for (int i=0; i < bundleFileNames.size(); i++) { |
| RBManager rbm = new RBManager(new File((String)bundleFileNames.get(i))); |
| bundles.add(rbm); |
| } |
| } catch (Exception ex) { |
| JOptionPane.showMessageDialog(new JFrame(), Resources.getTranslation("error_load_project"), |
| Resources.getTranslation("error"), JOptionPane.ERROR_MESSAGE); |
| ex.printStackTrace(); |
| bundleNames.clear(); |
| bundleFileNames.clear(); |
| } |
| } |
| |
| public String toString() { return projectName; } |
| |
| public int getSize() { return bundleNames.size(); } |
| |
| public String getBundleName(int index) { |
| return (String)bundleNames.get(index); |
| } |
| |
| public String getFileName(int index) { |
| return (String)bundleFileNames.get(index); |
| } |
| |
| public RBManager getBundle(int index) { |
| return (RBManager)bundles.get(index); |
| } |
| |
| public RBManager getBundle(String bundleName) { |
| int index = bundleNames.indexOf(bundleName); |
| if (index >= 0) return getBundle(index); |
| return null; |
| } |
| |
| public void write(File outputFile) throws IOException { |
| FileWriter fw = new FileWriter(outputFile); |
| for (int i=0; i < bundleNames.size(); i++) { |
| fw.write((String)bundleNames.get(i)); |
| fw.write("\n"); |
| fw.write((String)bundleFileNames.get(i)); |
| if (i != bundleNames.size()-1) fw.write("\n"); |
| } |
| fw.flush(); |
| fw.close(); |
| } |
| |
| public void addBundle(String bundleFileName) throws IOException { |
| RBManager bundle = new RBManager(new File(bundleFileName)); |
| bundles.add(bundle); |
| bundleNames.add(bundle.getBaseClass()); |
| bundleFileNames.add(bundleFileName); |
| } |
| |
| public void removeBundle(String bundleName) { |
| int index = bundleNames.indexOf(bundleName); |
| if (index >= 0) { |
| bundleNames.remove(index); |
| bundleFileNames.remove(index); |
| bundles.remove(index); |
| } |
| } |
| } |
| |
| // The table model for bundle groups |
| |
| class GroupItemsTableModel extends AbstractTableModel { |
| BundleGroup group; |
| |
| public GroupItemsTableModel(BundleGroup group) { |
| this.group = group; |
| } |
| |
| public int getColumnCount() { return 3; } |
| |
| public int getRowCount() { |
| return group.getItemCount(); |
| } |
| |
| public void setGroup(BundleGroup bg) { |
| group = bg; |
| fireTableChanged(new TableModelEvent(this)); |
| } |
| |
| public Object getValueAt(int row, int col) { |
| BundleItem item = group.getBundleItem(row); |
| |
| String retStr = null; |
| |
| switch(col) { |
| case 0: |
| retStr = item.getKey(); |
| break; |
| case 1: |
| retStr = item.getTranslation(); |
| break; |
| case 2: |
| retStr = (item.getComment() == null ? "" : item.getComment()); |
| break; |
| default: |
| retStr = Resources.getTranslation("table_cell_error"); |
| } |
| |
| return retStr; |
| } |
| |
| public String getColumnName(int col) { |
| if (col == 0) return Resources.getTranslation("languagegroup_column_key"); |
| else if (col == 1) return Resources.getTranslation("languagegroup_column_translation"); |
| else if (col == 2) return Resources.getTranslation("languagegroup_column_comment"); |
| else return Resources.getTranslation("table_column_error"); |
| } |
| |
| public BundleItem getBundleItem(int row) { |
| if (row >= group.getItemCount()) return null; |
| return (BundleItem)group.getBundleItem(row); |
| } |
| |
| public void update() { |
| fireTableDataChanged(); |
| } |
| } |
| |
| // The table model for untranslated Items |
| |
| class UntranslatedItemsTableModel extends AbstractTableModel { |
| Bundle bundle; |
| |
| public UntranslatedItemsTableModel(Bundle bundle) { |
| this.bundle = bundle; |
| } |
| |
| public void setBundle(Bundle bundle) { |
| this.bundle = bundle; |
| } |
| |
| public int getColumnCount() { return 3; } |
| |
| public int getRowCount() { |
| return bundle.getUntranslatedItemsSize(); |
| } |
| |
| public Object getValueAt(int row, int col) { |
| BundleItem item = bundle.getUntranslatedItem(row); |
| String retStr = null; |
| |
| switch(col) { |
| case 0: |
| retStr = item.getKey(); |
| break; |
| case 1: |
| retStr = item.getTranslation(); |
| break; |
| case 2: |
| retStr = (item.getParentGroup() == null ? "" : item.getParentGroup().getName()); |
| break; |
| default: |
| retStr = Resources.getTranslation("table_cell_error"); |
| } |
| |
| return retStr; |
| } |
| |
| public String getColumnName(int col) { |
| if (col == 0) return Resources.getTranslation("languageuntrans_column_key"); |
| else if (col == 1) return Resources.getTranslation("languageuntrans_column_translation"); |
| else if (col == 2) return Resources.getTranslation("languageuntrans_column_group"); |
| else return Resources.getTranslation("table_column_error"); |
| } |
| |
| public BundleItem getBundleItem(int row) { |
| return bundle.getUntranslatedItem(row); |
| } |
| |
| public void update() { |
| fireTableDataChanged(); |
| } |
| } |
| |
| // The table model for search and replace Items |
| |
| class SearchItemsTableModel extends AbstractTableModel { |
| Vector items; |
| |
| public SearchItemsTableModel(Vector items) { |
| this.items = items; |
| } |
| |
| public void setItems(Vector items) { |
| this.items = items; |
| } |
| |
| public int getColumnCount() { return 3; } |
| |
| public int getRowCount() { |
| return items.size(); |
| } |
| |
| public Object getValueAt(int row, int col) { |
| BundleItem item = (BundleItem)items.elementAt(row); |
| String retStr = null; |
| |
| switch(col) { |
| case 0: |
| retStr = item.getKey(); |
| break; |
| case 1: |
| retStr = item.getTranslation(); |
| break; |
| case 2: |
| retStr = (item.getParentGroup() == null ? "" : item.getParentGroup().getName()); |
| break; |
| default: |
| retStr = Resources.getTranslation("table_cell_error"); |
| } |
| |
| return retStr; |
| } |
| |
| public String getColumnName(int col) { |
| if (col == 0) return Resources.getTranslation("languageuntrans_column_key"); |
| else if (col == 1) return Resources.getTranslation("languageuntrans_column_translation"); |
| else if (col == 2) return Resources.getTranslation("languageuntrans_column_group"); |
| else return Resources.getTranslation("table_column_error"); |
| } |
| |
| public BundleItem getBundleItem(int row) { |
| return (BundleItem)items.elementAt(row); |
| } |
| |
| public Vector getBundleItems() { |
| return items; |
| } |
| |
| public void update() { |
| fireTableDataChanged(); |
| } |
| } |
| |
| // A listener which checks a translation box to see if it changes, if it does, it marks the word as translated in a check box |
| class TranslationFocusListener implements FocusListener { |
| String original; |
| JCheckBox cbox; |
| boolean selected; |
| |
| public TranslationFocusListener(String original, JCheckBox cbox) { |
| this.original = original; |
| this.cbox = cbox; |
| selected = cbox.isSelected(); |
| } |
| |
| public void focusGained(FocusEvent ev) {} |
| |
| public void focusLost(FocusEvent ev) { |
| JTextField field = (JTextField)ev.getSource(); |
| if (field.getText().equals(original)) { |
| cbox.setSelected(selected); |
| return; |
| } |
| cbox.setSelected(true); |
| } |
| } |
| |
| |
| // Combo box model for display all groups of a bundle |
| |
| class GroupComboBoxModel extends DefaultComboBoxModel { |
| Bundle bundle; |
| |
| public GroupComboBoxModel (Bundle bundle) { |
| this.bundle = bundle; |
| setSelectedItem(bundle.getBundleGroup(0)); |
| } |
| |
| public int getSize() { |
| return bundle.getGroupCount(); |
| } |
| |
| public Object getElementAt(int index) { |
| return bundle.getBundleGroup(index); |
| } |
| |
| public Object getSelectedItem() { |
| return super.getSelectedItem(); |
| //return getElementAt(0); |
| } |
| |
| public void update() { |
| fireContentsChanged(this, 0, getSize()-1); |
| } |
| } |
| |
| 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); |
| } |
| } |
| |
| // The class used to display groups |
| |
| class RBGroupPanel extends JPanel { |
| RBManager rbm; |
| Bundle bundle; |
| RBManagerGUI listener; |
| |
| // Components |
| JLabel jLabelGroupTitle; |
| JLabel jLabelGroupNameTitle; |
| JLabel jLabelGroupCommentTitle; |
| JLabel jLabelGroupComment; |
| JComboBox jComboBoxGroup; |
| JTable jTableGroupTable; |
| JScrollPane jScrollPaneGroupTable; |
| Box boxGroupInfo; |
| Box box1; |
| Box box2; |
| Box box3; |
| Box box4; |
| Dimension topDim = new Dimension(); |
| Dimension leftDim = new Dimension(); |
| Dimension rightDim = new Dimension(); |
| |
| // Components - Manager |
| JList jListGroup; |
| JButton createItemButton; |
| JButton createGroupButton; |
| JButton editItemButton; |
| JButton editGroupButton; |
| JButton deleteItemButton; |
| JButton deleteGroupButton; |
| JPanel itemPanel; |
| JPanel groupPanel; |
| |
| public RBGroupPanel(RBManagerGUI gui) { |
| super(); |
| listener = gui; |
| } |
| |
| 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(); |
| } |
| } |
| |
| // Marks the selected resource as translated and removes from this view |
| private void markSelectedResourceAsTranslated() { |
| if (bundle == null) return; |
| if (jTableGroupTable.getSelectedRow() < 0) return; |
| if (jTableGroupTable.getModel() instanceof GroupItemsTableModel) { |
| int row = jTableGroupTable.getSelectedRow(); |
| GroupItemsTableModel model = (GroupItemsTableModel)jTableGroupTable.getModel(); |
| BundleItem item = model.getBundleItem(row); |
| item.setTranslated(true); |
| model.update(); |
| } |
| } |
| |
| // Removes the selected resource from the resource file |
| private void deleteSelectedResource() { |
| if (bundle == null) return; |
| if (jTableGroupTable.getSelectedRow() < 0) return; |
| if (jTableGroupTable.getModel() instanceof GroupItemsTableModel) { |
| int row = jTableGroupTable.getSelectedRow(); |
| GroupItemsTableModel model = (GroupItemsTableModel)jTableGroupTable.getModel(); |
| BundleItem item = model.getBundleItem(row); |
| if (item.getParentGroup() != null && item.getParentGroup().getParentBundle() != null) { |
| Bundle bundle = item.getParentGroup().getParentBundle(); |
| bundle.removeItem(item.getKey()); |
| } |
| model.update(); |
| } |
| } |
| |
| public void initComponents() { |
| // Initialize components |
| if (bundle != null) { |
| jLabelGroupTitle = new JLabel(bundle.name); |
| jComboBoxGroup = new JComboBox(new GroupComboBoxModel(bundle));//bundle.getGroupsAsVector()); |
| |
| jTableGroupTable = new JTable(new GroupItemsTableModel((BundleGroup)jComboBoxGroup.getSelectedItem())); |
| jScrollPaneGroupTable = new JScrollPane(jTableGroupTable); |
| jLabelGroupNameTitle = new JLabel(Resources.getTranslation("basegroup_group_name")); |
| jLabelGroupCommentTitle = new JLabel(Resources.getTranslation("basegroup_group_comment")); |
| jLabelGroupComment = new JLabel(((BundleGroup)jComboBoxGroup.getSelectedItem()).getComment()); |
| |
| boxGroupInfo = new Box(BoxLayout.Y_AXIS); |
| box1 = new Box(BoxLayout.X_AXIS); |
| box2 = new Box(BoxLayout.X_AXIS); |
| box3 = new Box(BoxLayout.X_AXIS); |
| |
| // Lower panel components |
| JPanel lowerPanel = new JPanel(); |
| JButton deleteButton = new JButton(Resources.getTranslation("button_delete_resource")); |
| JButton translateButton = new JButton(Resources.getTranslation("button_mark_translated")); |
| |
| deleteButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_delete_resource_trigger"))); |
| translateButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_mark_translated_trigger"))); |
| lowerPanel.setBorder(BorderFactory.createTitledBorder(Resources.getTranslation("languageuntrans_selected_resources_options"))); |
| lowerPanel.setLayout(new GridLayout(1,2)); |
| |
| topDim = new Dimension(getSize().width, 35); |
| leftDim = new Dimension(150,25); |
| rightDim = new Dimension(getSize().width - leftDim.width, leftDim.height); |
| |
| jLabelGroupNameTitle.setPreferredSize(leftDim); |
| jLabelGroupNameTitle.setHorizontalAlignment(SwingConstants.LEFT); |
| jLabelGroupCommentTitle.setPreferredSize(leftDim); |
| jComboBoxGroup.setPreferredSize(rightDim); |
| jLabelGroupTitle.setPreferredSize(topDim); |
| jLabelGroupComment.setPreferredSize(rightDim); |
| |
| jTableGroupTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
| jTableGroupTable.addMouseListener(listener); |
| |
| jComboBoxGroup.addActionListener(new GroupComboActionListener(jListGroup)); |
| |
| jLabelGroupTitle.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| |
| // Add action listeners |
| deleteButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| deleteSelectedResource(); |
| } |
| }); |
| |
| translateButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| markSelectedResourceAsTranslated(); |
| } |
| }); |
| |
| // Update the display |
| setLayout(new BorderLayout()); |
| removeAll(); |
| lowerPanel.add(deleteButton); |
| lowerPanel.add(translateButton); |
| box1.add(Box.createHorizontalGlue()); |
| box1.add(jLabelGroupTitle); |
| box2.add(Box.createHorizontalGlue()); |
| box2.add(jLabelGroupNameTitle); |
| box2.add(jComboBoxGroup); |
| box3.add(Box.createHorizontalGlue()); |
| box3.add(jLabelGroupCommentTitle); |
| box3.add(jLabelGroupComment); |
| boxGroupInfo.add(box1); |
| boxGroupInfo.add(box2); |
| boxGroupInfo.add(box3); |
| boxGroupInfo.add(jScrollPaneGroupTable); |
| add(boxGroupInfo, BorderLayout.CENTER); |
| add(lowerPanel, BorderLayout.SOUTH); |
| } else if (rbm != null) { |
| Bundle mainBundle = (Bundle)rbm.bundles.firstElement(); |
| jLabelGroupTitle = new JLabel(rbm.getBaseClass() + " - " + Resources.getTranslation("groups")); |
| jComboBoxGroup = new JComboBox(new GroupComboBoxModel(mainBundle));//mainBundle.getGroupsAsVector()); |
| |
| jListGroup = new JList(new GroupItemsListModel((BundleGroup)jComboBoxGroup.getSelectedItem())); |
| jScrollPaneGroupTable = new JScrollPane(jListGroup); |
| jLabelGroupNameTitle = new JLabel(Resources.getTranslation("basegroup_group_name")); |
| jLabelGroupCommentTitle = new JLabel(Resources.getTranslation("basegroup_group_comment")); |
| try { |
| jLabelGroupComment = new JLabel(((BundleGroup)jComboBoxGroup.getSelectedItem()).getComment()); |
| } catch (NullPointerException npe) { |
| jLabelGroupComment = new JLabel(""); |
| } |
| |
| boxGroupInfo = new Box(BoxLayout.Y_AXIS); |
| box1 = new Box(BoxLayout.X_AXIS); |
| box2 = new Box(BoxLayout.X_AXIS); |
| box3 = new Box(BoxLayout.X_AXIS); |
| box4 = new Box(BoxLayout.Y_AXIS); |
| |
| createItemButton = new JButton(Resources.getTranslation("button_create_resource")); |
| createGroupButton = new JButton(Resources.getTranslation("button_create_group")); |
| deleteItemButton = new JButton(Resources.getTranslation("button_delete_resource")); |
| deleteGroupButton = new JButton(Resources.getTranslation("button_delete_group")); |
| editItemButton = new JButton(Resources.getTranslation("button_edit_resource")); |
| editGroupButton = new JButton(Resources.getTranslation("button_edit_group")); |
| |
| itemPanel = new JPanel(); |
| groupPanel = new JPanel(); |
| |
| itemPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("basegroup_item_options"))); |
| groupPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("basegroup_group_options"))); |
| itemPanel.setLayout(new GridLayout(1,3)); |
| groupPanel.setLayout(new GridLayout(1,3)); |
| itemPanel.setMaximumSize(new Dimension(20000,50)); |
| groupPanel.setMaximumSize(new Dimension(20000,50)); |
| |
| topDim = new Dimension(getSize().width, 35); |
| leftDim = new Dimension(150,25); |
| rightDim = new Dimension(getSize().width - leftDim.width, leftDim.height); |
| |
| createItemButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_create_resource_trigger"))); |
| editItemButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_edit_resource_trigger"))); |
| deleteItemButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_delete_resource_trigger"))); |
| createGroupButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_create_group_trigger"))); |
| |
| jLabelGroupNameTitle.setPreferredSize(leftDim); |
| jLabelGroupCommentTitle.setPreferredSize(leftDim); |
| jComboBoxGroup.setPreferredSize(rightDim); |
| jLabelGroupTitle.setPreferredSize(topDim); |
| jLabelGroupComment.setPreferredSize(rightDim); |
| |
| jListGroup.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
| |
| jComboBoxGroup.addActionListener(new GroupComboActionListener(jListGroup)); |
| |
| jLabelGroupTitle.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| |
| // Add the listeners |
| jListGroup.addMouseListener(new MouseListener() { |
| public void mousePressed(MouseEvent ev) { } |
| public void mouseClicked(MouseEvent ev) { |
| if(ev.getClickCount() == 2 && ev.getSource() instanceof JList) { |
| // A double click means they want to edit a bundle item |
| RBGroupPanel panel = (RBGroupPanel) |
| ((JList)ev.getSource()).getParent().getParent().getParent().getParent(); |
| |
| if (((JList)ev.getSource()).getSelectedValue() != null) |
| new BundleItemCreationDialog((BundleItem)((JList)ev.getSource()).getSelectedValue(), |
| panel.listener.rbm, panel.listener, Resources.getTranslation("dialog_title_edit_item"), true); |
| } |
| } |
| public void mouseReleased(MouseEvent ev) { } |
| public void mouseEntered(MouseEvent ev) { } |
| public void mouseExited(MouseEvent ev) { } |
| }); |
| |
| createItemButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| RBGroupPanel panel = (RBGroupPanel) |
| ((JButton)ev.getSource()).getParent().getParent().getParent().getParent(); |
| new BundleItemCreationDialog(((BundleGroup)panel.jComboBoxGroup.getSelectedItem()).getName(), |
| panel.listener.rbm, panel.listener, |
| Resources.getTranslation("dialog_title_new_item"), true); |
| panel.updateComponents(); |
| } |
| }); |
| createGroupButton.addActionListener(listener); |
| editItemButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| RBGroupPanel panel = (RBGroupPanel) |
| ((JButton)ev.getSource()).getParent().getParent().getParent().getParent(); |
| if (panel.jListGroup.getSelectedValue() != null) |
| new BundleItemCreationDialog((BundleItem)panel.jListGroup.getSelectedValue(), |
| panel.listener.rbm, panel.listener, Resources.getTranslation("dialog_title_edit_item"), true); |
| panel.updateComponents(); |
| } |
| }); |
| editGroupButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| RBGroupPanel panel = (RBGroupPanel) |
| ((JButton)ev.getSource()).getParent().getParent().getParent().getParent(); |
| new BundleGroupEditDialog((BundleGroup)panel.jComboBoxGroup.getSelectedItem(), |
| panel.listener, Resources.getTranslation("dialog_title_edit_group"), true); |
| panel.updateComponents(); |
| } |
| }); |
| deleteGroupButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| RBGroupPanel panel = (RBGroupPanel) |
| ((JButton)ev.getSource()).getParent().getParent().getParent().getParent(); |
| int response = JOptionPane.showConfirmDialog(panel.listener, |
| Resources.getTranslation("dialog_warning_delete_group"), |
| Resources.getTranslation("dialog_title_delete_group"), JOptionPane.OK_CANCEL_OPTION, |
| JOptionPane.WARNING_MESSAGE); |
| if (response == JOptionPane.OK_OPTION) { |
| // Delete the group |
| int index = panel.jComboBoxGroup.getSelectedIndex(); |
| BundleGroup group = (BundleGroup)panel.jComboBoxGroup.getSelectedItem(); |
| if (group.getName().equals("Ungrouped Items")) return; |
| if (index < panel.jComboBoxGroup.getItemCount()-1) panel.jComboBoxGroup.setSelectedIndex(index+1); |
| else panel.jComboBoxGroup.setSelectedIndex(index-1); |
| panel.rbm.deleteGroup(group.getName()); |
| } |
| panel.updateComponents(); |
| } |
| }); |
| |
| deleteItemButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| RBGroupPanel panel = (RBGroupPanel)((JButton)ev.getSource()).getParent().getParent().getParent().getParent(); |
| int response = JOptionPane.showConfirmDialog(panel.listener, |
| Resources.getTranslation("dialog_warning_delete_item"), |
| Resources.getTranslation("dialog_title_delete_item"), JOptionPane.OK_CANCEL_OPTION, |
| JOptionPane.WARNING_MESSAGE); |
| if (response == JOptionPane.OK_OPTION) { |
| Object o = panel.jListGroup.getSelectedValue(); |
| if (o != null) { |
| BundleItem item = (BundleItem) o; |
| handleDeleteItem(item.getKey()); |
| //panel.rbm.deleteItem(item.getKey()); |
| } |
| } |
| panel.updateComponents(); |
| } |
| }); |
| |
| // Update the display |
| setLayout(new BorderLayout()); |
| removeAll(); |
| itemPanel.add(createItemButton, BorderLayout.WEST); |
| itemPanel.add(editItemButton, BorderLayout.CENTER); |
| itemPanel.add(deleteItemButton, BorderLayout.EAST); |
| groupPanel.add(createGroupButton, BorderLayout.WEST); |
| groupPanel.add(editGroupButton, BorderLayout.CENTER); |
| groupPanel.add(deleteGroupButton, BorderLayout.EAST); |
| box1.add(Box.createHorizontalGlue()); |
| box1.add(jLabelGroupTitle); |
| box2.add(Box.createHorizontalGlue()); |
| box2.add(jLabelGroupNameTitle); |
| box2.add(jComboBoxGroup); |
| box3.add(Box.createHorizontalGlue()); |
| box3.add(jLabelGroupCommentTitle); |
| box3.add(jLabelGroupComment); |
| box4.add(Box.createVerticalStrut(5)); |
| box4.add(groupPanel); |
| box4.add(Box.createVerticalStrut(10)); |
| box4.add(itemPanel); |
| box4.add(Box.createVerticalStrut(5)); |
| boxGroupInfo.add(box1); |
| boxGroupInfo.add(box2); |
| boxGroupInfo.add(box3); |
| boxGroupInfo.add(jScrollPaneGroupTable); |
| boxGroupInfo.add(box4); |
| add(boxGroupInfo, BorderLayout.CENTER); |
| } else { |
| removeAll(); |
| } |
| } |
| |
| public void updateComponents() { |
| // Initialize components |
| if (bundle != null) { |
| jLabelGroupTitle.setText(bundle.name); |
| |
| topDim.width = getSize().width; |
| rightDim.width = getSize().width - leftDim.width; |
| |
| box2.removeAll(); |
| box3.removeAll(); |
| boxGroupInfo.remove(jScrollPaneGroupTable); |
| |
| String selName = null; |
| try { |
| selName = ((BundleGroup)jComboBoxGroup.getSelectedItem()).getName(); |
| } catch (Exception e) {} |
| jComboBoxGroup = new JComboBox(new GroupComboBoxModel(bundle));//bundle.getGroupsAsVector()); |
| for (int i = 0; i < jComboBoxGroup.getItemCount(); i++) { |
| BundleGroup bg = (BundleGroup)jComboBoxGroup.getItemAt(i); |
| if (bg.getName().equals(selName)) jComboBoxGroup.setSelectedIndex(i); |
| } |
| |
| ((GroupItemsTableModel)jTableGroupTable.getModel()).setGroup((BundleGroup)jComboBoxGroup.getSelectedItem()); |
| jScrollPaneGroupTable = new JScrollPane(jTableGroupTable); |
| jLabelGroupComment.setText(((BundleGroup)jComboBoxGroup.getSelectedItem()).getComment()); |
| |
| jTableGroupTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
| jComboBoxGroup.addActionListener(new GroupComboActionListener(jTableGroupTable)); |
| |
| // Update the group comment |
| jLabelGroupComment.setText(((BundleGroup)jComboBoxGroup.getSelectedItem()).getComment()); |
| |
| // Update the display |
| jComboBoxGroup.setPreferredSize(rightDim); |
| box2.add(Box.createHorizontalGlue()); |
| box2.add(jLabelGroupNameTitle); |
| box2.add(jComboBoxGroup); |
| box3.add(Box.createHorizontalGlue()); |
| box3.add(jLabelGroupCommentTitle); |
| box3.add(jLabelGroupComment); |
| boxGroupInfo.add(jScrollPaneGroupTable); |
| |
| } else if (rbm != null) { |
| |
| // Update the list of groups |
| try {((GroupComboBoxModel)jComboBoxGroup.getModel()).update();} |
| catch (Exception e) {} |
| // Update the group comment |
| if ((BundleGroup)jComboBoxGroup.getSelectedItem() != null) |
| jLabelGroupComment.setText(((BundleGroup)jComboBoxGroup.getSelectedItem()).getComment()); |
| else jLabelGroupComment.setText(""); |
| // Update the list of resources |
| ListModel lmodel = jListGroup.getModel(); |
| if (lmodel instanceof GroupItemsListModel) |
| ((GroupItemsListModel)lmodel).update(); |
| else { |
| GroupItemsListModel newModel = new GroupItemsListModel((BundleGroup)jComboBoxGroup.getSelectedItem()); |
| RBManagerGUI.debugMsg("List Model not as anticipated: " + lmodel.getClass().getName()); |
| jListGroup.setModel(newModel); |
| newModel.update(); |
| } |
| /* |
| try {GroupItemsListModel mod = (GroupItemsListModel) lmodel; } |
| catch (Exception e) { |
| e.printStackTrace(System.err); |
| } |
| */ |
| if (lmodel instanceof AbstractListModel) { |
| RBManagerGUI.debugMsg("List Model is an AbstractListModel"); |
| } else { |
| RBManagerGUI.debugMsg("List Model is not an AbstractListModel"); |
| } |
| } else { |
| removeAll(); |
| } |
| //validate(); |
| } |
| |
| private void handleDeleteItem(String key) { |
| if (rbm != null) rbm.deleteItem(key); |
| } |
| } |
| |
| // The class used to display untranslated items |
| |
| class RBUntranslatedPanel extends JPanel { |
| RBManager rbm; |
| Bundle bundle; |
| RBManagerGUI listener; |
| |
| // Components - Bundle |
| JLabel jLabelUntransTitle; |
| UntranslatedItemsTableModel untransTableModel; |
| JTable jTableUntrans; |
| JScrollPane jScrollPaneUntransTable; |
| |
| // Components - Bundle Manager |
| Box mainBox; |
| JPanel mainPanels[]; |
| JLabel numUntransLabels[]; |
| JScrollPane mainScroll; |
| JScrollPane listScrolls[]; |
| JList untransLists[]; |
| |
| public RBUntranslatedPanel(RBManagerGUI gui) { |
| super(); |
| listener = gui; |
| } |
| |
| 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(); |
| } |
| } |
| |
| // Marks the selected resource as translated and removes from this view |
| private void markSelectedResourceAsTranslated() { |
| if (bundle == null) return; |
| if (jTableUntrans.getSelectedRow() < 0) return; |
| if (jTableUntrans.getModel() instanceof UntranslatedItemsTableModel) { |
| int row = jTableUntrans.getSelectedRow(); |
| UntranslatedItemsTableModel model = (UntranslatedItemsTableModel)jTableUntrans.getModel(); |
| BundleItem item = model.getBundleItem(row); |
| item.setTranslated(true); |
| model.update(); |
| } |
| } |
| |
| // Removes the selected resource from the resource file |
| private void deleteSelectedResource() { |
| if (bundle == null) return; |
| if (jTableUntrans.getSelectedRow() < 0) return; |
| if (jTableUntrans.getModel() instanceof UntranslatedItemsTableModel) { |
| int row = jTableUntrans.getSelectedRow(); |
| UntranslatedItemsTableModel model = (UntranslatedItemsTableModel)jTableUntrans.getModel(); |
| BundleItem item = model.getBundleItem(row); |
| if (item.getParentGroup() != null && item.getParentGroup().getParentBundle() != null) { |
| Bundle bundle = item.getParentGroup().getParentBundle(); |
| bundle.removeItem(item.getKey()); |
| } |
| model.update(); |
| } |
| } |
| |
| private void printTable() { |
| PrintJob pjob = getToolkit().getPrintJob(new Frame(), |
| "Printing Test", null); |
| |
| if (pjob != null) { |
| Graphics pg = pjob.getGraphics(); |
| |
| if (pg != null) { |
| //jTableUntrans.print(pg); |
| Dimension page_dim = pjob.getPageDimension(); |
| pg.setColor(Color.black); |
| int y_off = 50; |
| int x_off = 30; |
| TableModel model = jTableUntrans.getModel(); |
| pg.setFont(new Font("SansSerif", Font.BOLD, 14)); |
| pg.drawString("Untranslated Items: Page 1", x_off, y_off); |
| pg.setFont(new Font("SansSerif", Font.PLAIN, 10)); |
| |
| for (int i=0 ; i < model.getRowCount(); i++) { |
| if (y_off < page_dim.height - 50) { |
| y_off += 15; |
| String key = model.getValueAt(i, 0).toString(); |
| String translation = model.getValueAt(i,1).toString(); |
| pg.drawString(key + " -> " + translation, x_off, y_off); |
| } |
| } |
| pg.dispose(); // flush page |
| } |
| pjob.end(); |
| |
| } |
| } |
| |
| public void initComponents() { |
| // Initialize components |
| if (bundle != null) { |
| jLabelUntransTitle = new JLabel(bundle.name); |
| untransTableModel = new UntranslatedItemsTableModel(bundle); |
| jTableUntrans = new JTable(untransTableModel); |
| jScrollPaneUntransTable = new JScrollPane(jTableUntrans); |
| |
| // Lower panel components |
| JPanel lowerPanel = new JPanel(); |
| JButton deleteButton = new JButton(Resources.getTranslation("button_delete_resource")); |
| JButton translateButton = new JButton(Resources.getTranslation("button_mark_translated")); |
| JButton printButton = new JButton(Resources.getTranslation("button_print_table")); |
| |
| deleteButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_delete_resource_trigger"))); |
| translateButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_mark_translated_trigger"))); |
| lowerPanel.setBorder(BorderFactory.createTitledBorder(Resources.getTranslation("languageuntrans_selected_resources_options"))); |
| lowerPanel.setLayout(new GridLayout(1,2)); |
| |
| jTableUntrans.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
| jTableUntrans.addMouseListener(listener); |
| |
| jLabelUntransTitle.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| |
| // Add action listeners |
| deleteButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| deleteSelectedResource(); |
| } |
| }); |
| translateButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| markSelectedResourceAsTranslated(); |
| } |
| }); |
| printButton.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent ev) { |
| printTable(); |
| } |
| }); |
| |
| removeAll(); |
| setLayout(new BorderLayout()); |
| lowerPanel.add(deleteButton); |
| lowerPanel.add(translateButton); |
| //lowerPanel.add(printButton); |
| add(jLabelUntransTitle, BorderLayout.NORTH); |
| add(jScrollPaneUntransTable, BorderLayout.CENTER); |
| add(lowerPanel, BorderLayout.SOUTH); |
| } else if (rbm != null) { |
| |
| int langCount = 0; // The number of languages with untranslated Items |
| for (int i=0; i < rbm.bundles.size(); i++) { |
| Bundle bundle = (Bundle)rbm.bundles.elementAt(i); |
| if (bundle.getUntranslatedItemsSize() > 0) langCount++; |
| } |
| |
| // Initialize the components |
| mainPanels = new JPanel[langCount]; |
| numUntransLabels = new JLabel[langCount]; |
| listScrolls = new JScrollPane[langCount]; |
| untransLists = new JList[langCount]; |
| |
| mainBox = new Box(BoxLayout.Y_AXIS); |
| mainScroll = new JScrollPane(mainBox); |
| jLabelUntransTitle = new JLabel(rbm.getBaseClass() + " - " + Resources.getTranslation("untranslated_items")); |
| |
| // Set component properties |
| jLabelUntransTitle.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| mainBox.add(jLabelUntransTitle); |
| |
| int count = 0; |
| for (int i=0; i < rbm.bundles.size(); i++) { |
| Bundle bundle = (Bundle)rbm.bundles.elementAt(i); |
| if (bundle.getUntranslatedItemsSize() > 0) { |
| mainPanels[count] = new JPanel(); |
| mainPanels[count].setLayout(new BorderLayout()); |
| numUntransLabels[count] = new JLabel(Resources.getTranslation("baseuntrans_untrans_count") + |
| bundle.getUntranslatedItemsSize()); |
| // TODO: Implement a List Model for this list, remove use of vector |
| untransLists[count] = new JList(bundle.getUntranslatedItemsAsVector()); |
| listScrolls[count] = new JScrollPane(untransLists[count]); |
| |
| mainPanels[count].setBorder(BorderFactory.createTitledBorder( |
| BorderFactory.createEtchedBorder(), |
| Resources.getTranslation("baseuntrans_file") + " " + bundle.toString())); |
| mainPanels[count].removeAll(); |
| mainPanels[count].add(numUntransLabels[count], BorderLayout.NORTH); |
| mainPanels[count].add(listScrolls[count], BorderLayout.CENTER); |
| |
| mainBox.add(Box.createVerticalStrut(5)); |
| mainBox.add(mainPanels[count]); |
| |
| count++; |
| } |
| } |
| mainScroll.setPreferredSize(getSize()); |
| removeAll(); |
| add(mainScroll); |
| } else { |
| removeAll(); |
| } |
| } |
| |
| public void updateComponents() { |
| // Update components |
| if (bundle != null) { |
| jLabelUntransTitle.setText(bundle.name); |
| untransTableModel.setBundle(bundle); |
| } else if (rbm != null) { |
| initComponents(); |
| } else { |
| removeAll(); |
| } |
| } |
| } |
| |
| // 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); |
| |
| } else if (rbm != null) { |
| |
| } else { |
| 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; |
| } |
| |
| } |
| |
| // The class used to display untranslated items |
| |
| class RBSearchPanel extends JPanel { |
| RBManager rbm; |
| Bundle bundle; |
| RBManagerGUI listener; |
| |
| // Components |
| JLabel titleLabel = new JLabel(); |
| JLabel findLabel = new JLabel(Resources.getTranslation("search_find")); |
| JLabel replaceLabel = new JLabel(Resources.getTranslation("search_replace")); |
| |
| JTextField findField = new JTextField(); |
| JTextField replaceField = new JTextField(); |
| |
| JCheckBox keysCheck = new JCheckBox(Resources.getTranslation("search_keys"), false); |
| JCheckBox transCheck = new JCheckBox(Resources.getTranslation("search_values"), true); |
| JCheckBox commentsCheck = new JCheckBox(Resources.getTranslation("search_comments"), false); |
| JCheckBox caseCheck = new JCheckBox(Resources.getTranslation("search_case_sensitive"), false); |
| |
| JButton findButton = new JButton(Resources.getTranslation("button_search_find_all")); |
| JButton replaceButton = new JButton(Resources.getTranslation("button_search_replace_all")); |
| |
| SearchItemsTableModel model; |
| JTable table; |
| JScrollPane tableScroll; |
| |
| public RBSearchPanel(RBManagerGUI gui) { |
| super(); |
| listener = gui; |
| } |
| |
| 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(); |
| } |
| } |
| |
| protected void performSearch() { |
| String search_term = findField.getText().trim(); |
| if (search_term.length() < 1) return; |
| if (bundle != null) { |
| performSearch(search_term, bundle, caseCheck.isSelected()); |
| } else if (rbm != null) { |
| performSearch(search_term, (Bundle)rbm.getBundles().elementAt(0), caseCheck.isSelected()); |
| } |
| } |
| |
| private void performSearch(String term, Bundle bundle, boolean case_sensitive) { |
| Vector ret_v = new Vector(); |
| Enumeration enum = bundle.allItems.keys(); |
| while (enum.hasMoreElements()) { |
| String key = (String)enum.nextElement(); |
| BundleItem item = (BundleItem)bundle.allItems.get(key); |
| if (case_sensitive) { |
| if (keysCheck.isSelected() && key.indexOf(term) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } // end if - keys |
| if (transCheck.isSelected() && item.getTranslation().indexOf(term) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } // end if - translations |
| if (commentsCheck.isSelected()) { |
| if (item.getComment().indexOf(term) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } |
| Hashtable lookups = item.getLookups(); |
| Enumeration enum2 = lookups.keys(); |
| while (enum2.hasMoreElements()) { |
| String lookup_key = (String)enum2.nextElement(); |
| String lookup_value = (String)lookups.get(lookup_key); |
| if (lookup_value.indexOf(term) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } |
| } // end while |
| } // end if - comments |
| } else { |
| // Not case sensitive |
| if (keysCheck.isSelected() && key.toUpperCase().indexOf(term.toUpperCase()) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } // end if - keys |
| if (transCheck.isSelected() && item.getTranslation().toUpperCase().indexOf(term.toUpperCase()) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } // end if - translations |
| if (commentsCheck.isSelected()) { |
| if (item.getComment().toUpperCase().indexOf(term.toUpperCase()) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } |
| Hashtable lookups = item.getLookups(); |
| Enumeration enum2 = lookups.keys(); |
| while (enum2.hasMoreElements()) { |
| String lookup_key = (String)enum2.nextElement(); |
| String lookup_value = (String)lookups.get(lookup_key); |
| if (lookup_value.toUpperCase().indexOf(term.toUpperCase()) >= 0) { |
| ret_v.addElement(item); |
| continue; |
| } |
| } // end while |
| } // end if - comments |
| } |
| } // end while |
| model.setItems(ret_v); |
| model.update(); |
| } |
| |
| protected void performReplace() { |
| String search_term = findField.getText().trim(); |
| String replace_term = replaceField.getText().trim(); |
| performSearch(); |
| if (search_term.length() < 1 || replace_term.length() < 1) return; |
| if (keysCheck.isSelected()) { |
| JOptionPane.showMessageDialog(this, |
| Resources.getTranslation("error_no_key_replace"), |
| Resources.getTranslation("warning"), JOptionPane.WARNING_MESSAGE); |
| } |
| Vector items = model.getBundleItems(); |
| for (int i=0; i < items.size(); i++) { |
| BundleItem item = (BundleItem)items.elementAt(i); |
| if (transCheck.isSelected()) { |
| item.setTranslation(replace(item.getTranslation(), search_term, replace_term)); |
| } |
| if (commentsCheck.isSelected()) { |
| item.setComment(replace(item.getComment(), search_term, replace_term)); |
| } |
| } |
| model.update(); |
| } |
| |
| // Replaces all instances of match in original with replace |
| |
| private String replace(String original, String match, String replace) { |
| int current_index = -1; |
| while (original.indexOf(match,++current_index) >= 0) { |
| current_index = original.indexOf(match, current_index); |
| original = original.substring(0,current_index) + replace + |
| original.substring(current_index+match.length(), original.length()); |
| } |
| return original; |
| } |
| |
| public void initComponents() { |
| // Initialize components |
| if (bundle != null) { |
| titleLabel.setText(bundle.name); |
| } |
| else if (rbm != null) { |
| titleLabel.setText(rbm.getBaseClass() + " - " + Resources.getTranslation("search")); |
| } |
| model = new SearchItemsTableModel(new Vector()); |
| |
| titleLabel.setFont(new Font("SansSerif",Font.PLAIN,18)); |
| |
| removeAll(); |
| setLayout(new BorderLayout()); |
| table = new JTable(model); |
| tableScroll = new JScrollPane(table); |
| |
| table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); |
| table.addMouseListener(listener); |
| |
| Dimension dim = new Dimension(75,15); |
| |
| findField.setColumns(20); |
| replaceField.setColumns(20); |
| findLabel.setPreferredSize(dim); |
| replaceLabel.setPreferredSize(dim); |
| |
| JPanel innerPanel = new JPanel(new BorderLayout()); |
| JPanel southPanel = new JPanel(); |
| JPanel westPanel1 = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
| JPanel westPanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
| Box rightBox = new Box(BoxLayout.Y_AXIS); |
| Box leftBox = new Box(BoxLayout.Y_AXIS); |
| |
| // Add action listeners |
| findButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| performSearch(); |
| } |
| }); |
| |
| replaceButton.addActionListener(new ActionListener(){ |
| public void actionPerformed(ActionEvent ev) { |
| performReplace(); |
| } |
| }); |
| |
| findButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_search_find_all_trigger"))); |
| replaceButton.setMnemonic(RBManagerMenuBar.getKeyEventKey(Resources.getTranslation("button_search_replace_all_trigger"))); |
| |
| // Place components |
| westPanel1.add(findLabel); |
| westPanel1.add(Box.createHorizontalStrut(5)); |
| westPanel1.add(findField); |
| |
| westPanel2.add(replaceLabel); |
| westPanel2.add(Box.createHorizontalStrut(5)); |
| westPanel2.add(replaceField); |
| |
| leftBox.add(Box.createVerticalGlue()); |
| leftBox.add(westPanel1); |
| leftBox.add(westPanel2); |
| //leftBox.add(caseCheck); |
| |
| rightBox.add(keysCheck); |
| rightBox.add(transCheck); |
| rightBox.add(commentsCheck); |
| |
| southPanel.add(findButton); |
| southPanel.add(Box.createHorizontalStrut(5)); |
| southPanel.add(replaceButton); |
| southPanel.add(Box.createHorizontalStrut(10)); |
| southPanel.add(caseCheck); |
| |
| innerPanel.add(titleLabel, BorderLayout.NORTH); |
| innerPanel.add(leftBox, BorderLayout.CENTER); |
| innerPanel.add(rightBox, BorderLayout.EAST); |
| innerPanel.add(southPanel, BorderLayout.SOUTH); |
| |
| add(innerPanel, BorderLayout.NORTH); |
| add(tableScroll, BorderLayout.CENTER); |
| |
| if (rbm == null && bundle == null) { |
| removeAll(); |
| } |
| } |
| |
| public void updateComponents() { |
| |
| } |
| } |
| |
| class RBProjectItemPanel extends JPanel implements ActionListener { |
| RBManagerGUI gui; |
| |
| // Visual Components |
| Box mainBox; |
| JTextField itemFields[]; |
| JLabel itemLabels[]; |
| JButton commitButtons[]; |
| JButton commitButton; |
| JLabel titleLabel; |
| JLabel keyLabel; |
| JLabel commentLabel; |
| |
| public RBProjectItemPanel(RBManagerGUI gui) { |
| super(); |
| this.gui = gui; |
| initComponents(); |
| } |
| |
| public void actionPerformed(ActionEvent ev) { |
| JButton button = (JButton)ev.getSource(); |
| String buttonName = button.getName(); |
| if (buttonName == null) { |
| // Save all components |
| RBManager bundle = gui.getSelectedProjectBundle(); |
| Vector bundles = bundle.getBundles(); |
| for (int i=0; i < itemFields.length; i++) { |
| String encoding = commitButtons[i].getName(); |
| String translation = itemFields[i].getText(); |
| String key = itemFields[i].getName(); |
| for (int j=0; j < bundles.size(); j++) { |
| Bundle rbundle = (Bundle)bundles.elementAt(j); |
| if (rbundle.encoding.equals(encoding)) { |
| BundleItem item = rbundle.getBundleItem(key); |
| if (item != null) item.setTranslation(translation); |
| break; |
| } |
| } |
| } |
| gui.saveResources(bundle); |
| } else { |
| // Save a particular encoding |
| String encoding = buttonName; |
| RBManager bundle = gui.getSelectedProjectBundle(); |
| int index = -1; |
| for (int i=0; i < commitButtons.length; i++) |
| if (commitButtons[i] == button) { index = i; break; } |
| String translation = itemFields[index].getText(); |
| String key = itemFields[index].getName(); |
| Vector bundles = bundle.getBundles(); |
| for (int i=0; i < bundles.size(); i++) { |
| Bundle rbundle = (Bundle)bundles.elementAt(i); |
| if (rbundle.encoding.equals(encoding)) { |
| BundleItem item = rbundle.getBundleItem(key); |
| if (item != null) {item.setTranslation(translation); System.out.println("Set translation to : " + translation); } |
| else System.out.println("Item was null"); |
| break; |
| } else System.out.println("Compared " + rbundle.encoding + " with " + encoding); |
| } |
| gui.saveResources(bundle, encoding); |
| } |
| updateComponents(); |
| } |
| |
| private void initComponents() { |
| setLayout(new BorderLayout()); |
| JPanel topPanel = new JPanel(new GridLayout(2,1)); |
| titleLabel = new JLabel(Resources.getTranslation("project_panel_default_title"), SwingConstants.CENTER); |
| titleLabel.setFont(new Font("serif",Font.BOLD,18)); |
| JPanel commentPanel = new JPanel(new GridLayout(2,1)); |
| JLabel commentLabel2 = new JLabel(Resources.getTranslation("project_panel_comment"), SwingConstants.LEFT); |
| commentLabel = new JLabel(Resources.getTranslation("project_panel_comment_none"), SwingConstants.LEFT); |
| commentPanel.add(commentLabel2); |
| commentPanel.add(commentLabel); |
| topPanel.add(titleLabel); |
| topPanel.add(commentPanel); |
| JPanel centerPanel = new JPanel(new BorderLayout()); |
| mainBox = new Box(BoxLayout.Y_AXIS); |
| JScrollPane scrollPane = new JScrollPane(mainBox, |
| JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, |
| JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); |
| centerPanel.add(scrollPane, BorderLayout.NORTH); |
| centerPanel.setBorder(BorderFactory.createEtchedBorder()); |
| JPanel botPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); |
| commitButton = new JButton(Resources.getTranslation("project_panel_commit_button_all")); |
| commitButton.addActionListener(this); |
| botPanel.add(commitButton); |
| add(topPanel, BorderLayout.NORTH); |
| add(centerPanel, BorderLayout.CENTER); |
| add(botPanel, BorderLayout.SOUTH); |
| |
| updateComponents(); |
| } |
| |
| public void updateComponents() { |
| BundleItem item = gui.getSelectedProjectBundleItem(); |
| |
| if (item == null) { |
| commentLabel.setText(Resources.getTranslation("project_panel_comment_none")); |
| titleLabel.setText(Resources.getTranslation("project_panel_default_title")); |
| itemFields = null; |
| itemLabels = null; |
| commitButtons = null; |
| commitButton.setEnabled(false); |
| } else { |
| String comment = item.getComment(); |
| String key = item.getKey(); |
| commentLabel.setText(comment); |
| titleLabel.setText(Resources.getTranslation("project_panel_title", key)); |
| |
| RBManager manager = gui.getSelectedProjectBundle(); |
| Vector bundles = manager.getBundles(); |
| itemFields = new JTextField[bundles.size()]; |
| itemLabels = new JLabel[bundles.size()]; |
| commitButtons = new JButton[bundles.size()]; |
| for (int i=0; i < bundles.size(); i++) { |
| Bundle bundle = (Bundle)bundles.elementAt(i); |
| BundleItem bundleItem = bundle.getBundleItem(key); |
| boolean translated = bundleItem.isTranslated(); |
| JLabel encodingLabel = new JLabel(Resources.getTranslation("project_panel_bundle", bundle.toString()), |
| SwingConstants.LEFT); |
| if (!translated) encodingLabel.setText(Resources.getTranslation("project_panel_bundle_untranslated", |
| bundle.toString())); |
| String fieldText = (bundleItem == null ? Resources.getTranslation("project_panel_item_inherits") : |
| bundleItem.getTranslation()); |
| JTextField itemField = new JTextField(fieldText); |
| itemField.setMaximumSize(new Dimension(this.getSize().width-150, 200)); |
| itemField.setName(key); |
| JButton commitItemButton = new JButton(Resources.getTranslation("project_panel_commit_button")); |
| commitItemButton.addActionListener(this); |
| commitItemButton.setName(bundle.encoding); |
| itemFields[i] = itemField; |
| itemLabels[i] = encodingLabel; |
| commitButtons[i] = commitItemButton; |
| } |
| commitButton.setEnabled(true); |
| } |
| |
| mainBox.removeAll(); |
| if (itemFields != null) { |
| for (int i=0; i < itemFields.length; i++) { |
| JPanel bundlePanel = new JPanel(new BorderLayout()); |
| bundlePanel.setBorder(BorderFactory.createLineBorder(Color.darkGray)); |
| bundlePanel.add(itemLabels[i], BorderLayout.NORTH); |
| bundlePanel.add(itemFields[i], BorderLayout.CENTER); |
| bundlePanel.add(commitButtons[i], BorderLayout.EAST); |
| mainBox.add(bundlePanel); |
| } |
| } |
| |
| revalidate(); |
| } |
| } |
| |
| // The main menu bar for the main frame |
| |
| class RBManagerMenuBar extends JMenuBar { |
| RBManagerGUI listener; |
| |
| JMenu jMenuFile = new JMenu(); // Menu -> File |
| JMenuItem jMenuFileNewResourceBundle = new JMenuItem(); |
| JMenuItem jMenuFileOpenResourceBundle = new JMenuItem(); |
| JMenuItem jMenuFileSaveResourceBundle = new JMenuItem(); |
| JMenuItem jMenuFileSaveResourceBundleAs = new JMenuItem(); |
| JMenu jMenuFileImportResourceBundle = new JMenu(); // Menu -> File -> Import |
| JMenuItem jMenuFileImportJava = new JMenuItem(); |
| JMenuItem jMenuFileImportProperties = new JMenuItem(); |
| JMenuItem jMenuFileImportTMX = new JMenuItem(); |
| JMenu jMenuFileExportResourceBundle = new JMenu(); // Menu -> File -> Export |
| JMenuItem jMenuFileExportJava = new JMenuItem(); |
| JMenuItem jMenuFileExportICU = new JMenuItem(); |
| JMenuItem jMenuFileExportProperties = new JMenuItem(); |
| JMenuItem jMenuFileExportTMX = new JMenuItem(); |
| JMenuItem jMenuFileExit = new JMenuItem(); |
| JMenu jMenuEdit = new JMenu(); // Menu -> Edit |
| JMenuItem jMenuEditCut = new JMenuItem(); |
| JMenuItem jMenuEditCopy = new JMenuItem(); |
| JMenuItem jMenuEditPaste = new JMenuItem(); |
| JMenuItem jMenuEditDelete = new JMenuItem(); |
| JMenu jMenuOptions = new JMenu(); // Menu -> Options |
| JMenuItem jMenuOptionsAddNewEntry = new JMenuItem(); |
| JMenuItem jMenuOptionsAddNewGroup = new JMenuItem(); |
| JMenuItem jMenuOptionsAddNewResourceFile = new JMenuItem(); |
| //JMenuItem jMenuOptionsProjectViewer = new JMenuItem(); |
| JMenuItem jMenuOptionsPreferences = new JMenuItem(); |
| JMenu jMenuView = new JMenu(); // Menu -> View |
| JMenuItem jMenuViewViewStatistics = new JMenuItem(); |
| JMenu jMenuHelp = new JMenu(); // Menu -> Help |
| JMenuItem jMenuHelpAboutResourceBundleManager = new JMenuItem(); |
| |
| void updateLocale() { |
| //FILE |
| jMenuFile.setText(Resources.getTranslation("menu_file")); |
| jMenuFile.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_trigger"))); |
| jMenuFileNewResourceBundle.setText(Resources.getTranslation("menu_file_new")); |
| jMenuFileNewResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_new_trigger"))); |
| jMenuFileOpenResourceBundle.setText(Resources.getTranslation("menu_file_open")); |
| jMenuFileOpenResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_open_trigger"))); |
| jMenuFileSaveResourceBundle.setText(Resources.getTranslation("menu_file_save")); |
| jMenuFileSaveResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_save_trigger"))); |
| jMenuFileSaveResourceBundleAs.setText(Resources.getTranslation("menu_file_saveas")); |
| jMenuFileSaveResourceBundleAs.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_saveas_trigger"))); |
| jMenuFileImportResourceBundle.setText(Resources.getTranslation("menu_file_import")); |
| jMenuFileImportResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_trigger"))); |
| jMenuFileImportJava.setText(Resources.getTranslation("menu_file_import_java")); |
| jMenuFileImportJava.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_java_trigger"))); |
| jMenuFileImportProperties.setText(Resources.getTranslation("menu_file_import_properties")); |
| jMenuFileImportProperties.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_properties_trigger"))); |
| jMenuFileImportTMX.setText(Resources.getTranslation("menu_file_import_TMX")); |
| jMenuFileImportTMX.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_TMX_trigger"))); |
| jMenuFileExportResourceBundle.setText(Resources.getTranslation("menu_file_export")); |
| jMenuFileExportResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_trigger"))); |
| jMenuFileExportJava.setText(Resources.getTranslation("menu_file_export_java")); |
| jMenuFileExportJava.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_java_trigger"))); |
| jMenuFileExportICU.setText(Resources.getTranslation("menu_file_export_ICU")); |
| jMenuFileExportICU.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_ICU_trigger"))); |
| jMenuFileExportProperties.setText(Resources.getTranslation("menu_file_export_properties")); |
| jMenuFileExportProperties.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_properties_trigger"))); |
| jMenuFileExportTMX.setText(Resources.getTranslation("menu_file_export_TMX")); |
| jMenuFileExportTMX.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_TMX_trigger"))); |
| jMenuFileExit.setText(Resources.getTranslation("menu_file_quit")); |
| jMenuFileExit.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_quit_trigger"))); |
| //EDIT |
| jMenuEdit.setText(Resources.getTranslation("menu_edit")); |
| jMenuEdit.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_trigger"))); |
| jMenuEditCut.setText(Resources.getTranslation("menu_edit_cut")); |
| jMenuEditCut.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_cut_trigger"))); |
| jMenuEditCopy.setText(Resources.getTranslation("menu_edit_copy")); |
| jMenuEditCopy.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_copy_trigger"))); |
| jMenuEditPaste.setText(Resources.getTranslation("menu_edit_paste")); |
| jMenuEditPaste.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_paste_trigger"))); |
| jMenuEditDelete.setText(Resources.getTranslation("menu_edit_delete")); |
| jMenuEditDelete.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_delete_trigger"))); |
| //OPTIONS |
| jMenuOptions.setText(Resources.getTranslation("menu_options")); |
| jMenuOptions.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_trigger"))); |
| jMenuOptionsAddNewEntry.setText(Resources.getTranslation("menu_options_addentry")); |
| jMenuOptionsAddNewEntry.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_addentry_trigger"))); |
| jMenuOptionsAddNewGroup.setText(Resources.getTranslation("menu_options_addgroup")); |
| jMenuOptionsAddNewGroup.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_addgroup_trigger"))); |
| jMenuOptionsAddNewResourceFile.setText(Resources.getTranslation("menu_options_addfile")); |
| jMenuOptionsAddNewResourceFile.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_addfile_trigger"))); |
| //jMenuOptionsProjectViewer.setText(Resources.getTranslation("menu_options_project_viewer")); |
| //jMenuOptionsProjectViewer.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_project_viewer_trigger"))); |
| jMenuOptionsPreferences.setText(Resources.getTranslation("menu_options_preferences")); |
| jMenuOptionsPreferences.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_preferences_trigger"))); |
| //VIEW |
| jMenuView.setText(Resources.getTranslation("menu_view")); |
| jMenuView.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_view_trigger"))); |
| jMenuViewViewStatistics.setText(Resources.getTranslation("menu_view_statistics")); |
| jMenuViewViewStatistics.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_view_statistics_trigger"))); |
| //HELP |
| jMenuHelp.setText(Resources.getTranslation("menu_help")); |
| jMenuHelp.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_trigger"))); |
| jMenuHelpAboutResourceBundleManager.setText(Resources.getTranslation("menu_help_about")); |
| jMenuHelpAboutResourceBundleManager.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_help_about_trigger"))); |
| } |
| |
| public RBManagerMenuBar(RBManagerGUI gui) { |
| super(); |
| |
| boolean xmlAvailable; |
| try { |
| Class cl = Class.forName("org.apache.xerces.parsers.DOMParser"); |
| xmlAvailable = true; |
| } catch (ClassNotFoundException e) { |
| xmlAvailable = false; |
| } |
| listener = gui; |
| |
| // Add the menus to the menu bar |
| setVisible(true); |
| add(jMenuFile); |
| //add(jMenuEdit); |
| add(jMenuOptions); |
| //add(jMenuView); |
| add(jMenuHelp); |
| |
| // Add File Menu Items to the File Menu |
| jMenuFile.setVisible(true); |
| jMenuFile.setText(Resources.getTranslation("menu_file")); |
| jMenuFile.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_trigger"))); |
| jMenuFile.add(jMenuFileNewResourceBundle); |
| jMenuFile.add(jMenuFileOpenResourceBundle); |
| jMenuFile.add(jMenuFileSaveResourceBundle); |
| jMenuFile.add(jMenuFileSaveResourceBundleAs); |
| jMenuFile.addSeparator(); |
| jMenuFile.add(jMenuFileImportResourceBundle); |
| jMenuFile.add(jMenuFileExportResourceBundle); |
| jMenuFile.addSeparator(); |
| // Add the recent files to the file menu |
| Vector recentFiles = Preferences.getRecentFilesPreferences(); |
| if (recentFiles.size() > 0) { |
| for (int i=0; i < recentFiles.size(); i+=2) { |
| String name = (String)recentFiles.elementAt(i); |
| String location = (String)recentFiles.elementAt(i+1); |
| JMenuItem recentMenuItem = new JMenuItem(); |
| recentMenuItem.setVisible(true); |
| recentMenuItem.setText(name); |
| recentMenuItem.setName("__" + location.trim()); |
| recentMenuItem.addActionListener(listener); |
| jMenuFile.add(recentMenuItem); |
| } |
| jMenuFile.addSeparator(); |
| } |
| jMenuFile.add(jMenuFileExit); |
| |
| //jMenuFileImportResourceBundle.add(jMenuFileImportJava); |
| jMenuFileImportResourceBundle.add(jMenuFileImportProperties); |
| jMenuFileImportTMX.setEnabled(xmlAvailable); |
| jMenuFileImportResourceBundle.add(jMenuFileImportTMX); |
| jMenuFileExportResourceBundle.add(jMenuFileExportJava); |
| jMenuFileExportResourceBundle.add(jMenuFileExportICU); |
| jMenuFileExportResourceBundle.add(jMenuFileExportProperties); |
| jMenuFileExportTMX.setEnabled(xmlAvailable); |
| jMenuFileExportResourceBundle.add(jMenuFileExportTMX); |
| |
| jMenuFileNewResourceBundle.setVisible(true); |
| jMenuFileNewResourceBundle.setText(Resources.getTranslation("menu_file_new")); |
| jMenuFileNewResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_new_trigger"))); |
| jMenuFileNewResourceBundle.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_N, ActionEvent.CTRL_MASK)); |
| jMenuFileNewResourceBundle.addActionListener(listener); |
| |
| jMenuFileOpenResourceBundle.setVisible(true); |
| jMenuFileOpenResourceBundle.setText(Resources.getTranslation("menu_file_open")); |
| jMenuFileOpenResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_open_trigger"))); |
| jMenuFileOpenResourceBundle.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_O, ActionEvent.CTRL_MASK)); |
| jMenuFileOpenResourceBundle.addActionListener(listener); |
| |
| jMenuFileSaveResourceBundle.setVisible(true); |
| jMenuFileSaveResourceBundle.setText(Resources.getTranslation("menu_file_save")); |
| jMenuFileSaveResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_save_trigger"))); |
| jMenuFileSaveResourceBundle.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_S, ActionEvent.CTRL_MASK)); |
| jMenuFileSaveResourceBundle.addActionListener(listener); |
| |
| jMenuFileSaveResourceBundleAs.setVisible(true); |
| jMenuFileSaveResourceBundleAs.setText(Resources.getTranslation("menu_file_saveas")); |
| jMenuFileSaveResourceBundleAs.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_saveas_trigger"))); |
| jMenuFileSaveResourceBundleAs.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK)); |
| jMenuFileSaveResourceBundleAs.addActionListener(listener); |
| |
| jMenuFileImportResourceBundle.setVisible(true); |
| jMenuFileImportResourceBundle.setText(Resources.getTranslation("menu_file_import")); |
| jMenuFileImportResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_trigger"))); |
| jMenuFileImportResourceBundle.addActionListener(listener); |
| |
| jMenuFileImportJava.setVisible(true); |
| jMenuFileImportJava.setText(Resources.getTranslation("menu_file_import_java")); |
| jMenuFileImportJava.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_java_trigger"))); |
| jMenuFileImportJava.addActionListener(listener); |
| |
| jMenuFileImportProperties.setVisible(true); |
| jMenuFileImportProperties.setText(Resources.getTranslation("menu_file_import_properties")); |
| jMenuFileImportProperties.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_properties_trigger"))); |
| jMenuFileImportProperties.addActionListener(listener); |
| |
| jMenuFileImportTMX.setVisible(true); |
| jMenuFileImportTMX.setText(Resources.getTranslation("menu_file_import_TMX")); |
| jMenuFileImportTMX.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_import_TMX_trigger"))); |
| jMenuFileImportTMX.addActionListener(listener); |
| |
| jMenuFileExportResourceBundle.setVisible(true); |
| jMenuFileExportResourceBundle.setText(Resources.getTranslation("menu_file_export")); |
| jMenuFileExportResourceBundle.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_trigger"))); |
| jMenuFileExportResourceBundle.addActionListener(listener); |
| |
| jMenuFileExportJava.setVisible(true); |
| jMenuFileExportJava.setText(Resources.getTranslation("menu_file_export_java")); |
| jMenuFileExportJava.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_java_trigger"))); |
| jMenuFileExportJava.addActionListener(listener); |
| |
| jMenuFileExportICU.setVisible(true); |
| jMenuFileExportICU.setText(Resources.getTranslation("menu_file_export_ICU")); |
| jMenuFileExportICU.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_ICU_trigger"))); |
| jMenuFileExportICU.addActionListener(listener); |
| |
| jMenuFileExportProperties.setVisible(true); |
| jMenuFileExportProperties.setText(Resources.getTranslation("menu_file_export_properties")); |
| jMenuFileExportProperties.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_properties_trigger"))); |
| jMenuFileExportProperties.addActionListener(listener); |
| |
| jMenuFileExportTMX.setVisible(true); |
| jMenuFileExportTMX.setText(Resources.getTranslation("menu_file_export_TMX")); |
| jMenuFileExportTMX.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_export_TMX_trigger"))); |
| jMenuFileExportTMX.addActionListener(listener); |
| |
| jMenuFileExit.setVisible(true); |
| jMenuFileExit.setText(Resources.getTranslation("menu_file_quit")); |
| jMenuFileExit.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_file_quit_trigger"))); |
| jMenuFileExit.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_Q, ActionEvent.CTRL_MASK)); |
| jMenuFileExit.addActionListener(listener); |
| |
| // Add Edit Menu Items to the Edit Menu |
| jMenuEdit.setVisible(true); |
| jMenuEdit.setText(Resources.getTranslation("menu_edit")); |
| jMenuEdit.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_trigger"))); |
| jMenuEdit.add(jMenuEditCut); |
| jMenuEdit.add(jMenuEditCopy); |
| jMenuEdit.add(jMenuEditPaste); |
| jMenuEdit.add(jMenuEditDelete); |
| |
| jMenuEditCut.setVisible(true); |
| jMenuEditCut.setText(Resources.getTranslation("menu_edit_cut")); |
| jMenuEditCut.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_cut_trigger"))); |
| jMenuEditCut.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_X, ActionEvent.CTRL_MASK)); |
| |
| jMenuEditCopy.setVisible(true); |
| jMenuEditCopy.setText(Resources.getTranslation("menu_edit_copy")); |
| jMenuEditCopy.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_copy_trigger"))); |
| jMenuEditCopy.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_C, ActionEvent.CTRL_MASK)); |
| |
| jMenuEditPaste.setVisible(true); |
| jMenuEditPaste.setText(Resources.getTranslation("menu_edit_paste")); |
| jMenuEditPaste.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_paste_trigger"))); |
| jMenuEditPaste.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_V, ActionEvent.CTRL_MASK)); |
| |
| jMenuEditDelete.setVisible(true); |
| jMenuEditDelete.setText(Resources.getTranslation("menu_edit_delete")); |
| jMenuEditDelete.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_edit_delete_trigger"))); |
| |
| // Add Options Menu Items to the Options Menu |
| jMenuOptions.setVisible(true); |
| jMenuOptions.setText(Resources.getTranslation("menu_options")); |
| jMenuOptions.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_trigger"))); |
| jMenuOptions.add(jMenuOptionsAddNewEntry); |
| jMenuOptions.add(jMenuOptionsAddNewGroup); |
| jMenuOptions.add(jMenuOptionsAddNewResourceFile); |
| //jMenuOptions.addSeparator(); |
| //jMenuOptions.add(jMenuOptionsProjectViewer); |
| jMenuOptions.addSeparator(); |
| jMenuOptions.add(jMenuOptionsPreferences); |
| |
| jMenuOptionsAddNewEntry.setVisible(true); |
| jMenuOptionsAddNewEntry.setText(Resources.getTranslation("menu_options_addentry")); |
| jMenuOptionsAddNewEntry.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_addentry_trigger"))); |
| jMenuOptionsAddNewEntry.addActionListener(listener); |
| |
| jMenuOptionsAddNewGroup.setVisible(true); |
| jMenuOptionsAddNewGroup.setText(Resources.getTranslation("menu_options_addgroup")); |
| jMenuOptionsAddNewGroup.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_addgroup_trigger"))); |
| jMenuOptionsAddNewGroup.addActionListener(listener); |
| |
| jMenuOptionsAddNewResourceFile.setVisible(true); |
| jMenuOptionsAddNewResourceFile.setText(Resources.getTranslation("menu_options_addfile")); |
| jMenuOptionsAddNewResourceFile.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_addfile_trigger"))); |
| jMenuOptionsAddNewResourceFile.addActionListener(listener); |
| |
| /* |
| jMenuOptionsProjectViewer.setVisible(true); |
| jMenuOptionsProjectViewer.setText(Resources.getTranslation("menu_options_project_viewer")); |
| jMenuOptionsProjectViewer.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_project_viewer_trigger"))); |
| jMenuOptionsProjectViewer.addActionListener(listener); |
| */ |
| |
| jMenuOptionsPreferences.setVisible(true); |
| jMenuOptionsPreferences.setText(Resources.getTranslation("menu_options_preferences")); |
| jMenuOptionsPreferences.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_options_preferences_trigger"))); |
| jMenuOptionsPreferences.addActionListener(listener); |
| |
| // Add View Menu Items to the View Menu |
| jMenuView.setVisible(true); |
| jMenuView.setText(Resources.getTranslation("menu_view")); |
| jMenuView.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_view_trigger"))); |
| jMenuView.add(jMenuViewViewStatistics); |
| |
| jMenuViewViewStatistics.setVisible(true); |
| jMenuViewViewStatistics.setText(Resources.getTranslation("menu_view_statistics")); |
| jMenuViewViewStatistics.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_view_statistics_trigger"))); |
| |
| // Add Help Menu Items to the Help Menu |
| jMenuHelp.setVisible(true); |
| jMenuHelp.setText(Resources.getTranslation("menu_help")); |
| jMenuHelp.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_help_trigger"))); |
| jMenuHelp.add(jMenuHelpAboutResourceBundleManager); |
| |
| jMenuHelpAboutResourceBundleManager.setVisible(true); |
| jMenuHelpAboutResourceBundleManager.setText(Resources.getTranslation("menu_help_about")); |
| jMenuHelpAboutResourceBundleManager.setMnemonic(getKeyEventKey(Resources.getTranslation("menu_help_about_trigger"))); |
| jMenuHelpAboutResourceBundleManager.setAccelerator(KeyStroke.getKeyStroke( |
| KeyEvent.VK_H, ActionEvent.CTRL_MASK)); |
| jMenuHelpAboutResourceBundleManager.addActionListener(listener); |
| } |
| |
| public static int getKeyEventKey(String character) { |
| if (character == null) return KeyEvent.VK_A; |
| character = character.toUpperCase(); |
| |
| if (character.startsWith("A")) return KeyEvent.VK_A; |
| else if (character.startsWith("B")) return KeyEvent.VK_B; |
| else if (character.startsWith("C")) return KeyEvent.VK_C; |
| else if (character.startsWith("D")) return KeyEvent.VK_D; |
| else if (character.startsWith("E")) return KeyEvent.VK_E; |
| else if (character.startsWith("F")) return KeyEvent.VK_F; |
| else if (character.startsWith("G")) return KeyEvent.VK_G; |
| else if (character.startsWith("H")) return KeyEvent.VK_H; |
| else if (character.startsWith("I")) return KeyEvent.VK_I; |
| else if (character.startsWith("J")) return KeyEvent.VK_J; |
| else if (character.startsWith("K")) return KeyEvent.VK_K; |
| else if (character.startsWith("L")) return KeyEvent.VK_L; |
| else if (character.startsWith("M")) return KeyEvent.VK_M; |
| else if (character.startsWith("N")) return KeyEvent.VK_N; |
| else if (character.startsWith("O")) return KeyEvent.VK_O; |
| else if (character.startsWith("P")) return KeyEvent.VK_P; |
| else if (character.startsWith("Q")) return KeyEvent.VK_Q; |
| else if (character.startsWith("R")) return KeyEvent.VK_R; |
| else if (character.startsWith("S")) return KeyEvent.VK_S; |
| else if (character.startsWith("T")) return KeyEvent.VK_T; |
| else if (character.startsWith("U")) return KeyEvent.VK_U; |
| else if (character.startsWith("V")) return KeyEvent.VK_V; |
| else if (character.startsWith("W")) return KeyEvent.VK_W; |
| else if (character.startsWith("X")) return KeyEvent.VK_X; |
| else if (character.startsWith("Y")) return KeyEvent.VK_Y; |
| else if (character.startsWith("Z")) return KeyEvent.VK_Z; |
| else if (character.startsWith("0")) return KeyEvent.VK_0; |
| else if (character.startsWith("1")) return KeyEvent.VK_1; |
| else if (character.startsWith("2")) return KeyEvent.VK_2; |
| else if (character.startsWith("3")) return KeyEvent.VK_3; |
| else if (character.startsWith("4")) return KeyEvent.VK_4; |
| else if (character.startsWith("5")) return KeyEvent.VK_5; |
| else if (character.startsWith("6")) return KeyEvent.VK_6; |
| else if (character.startsWith("7")) return KeyEvent.VK_7; |
| else if (character.startsWith("8")) return KeyEvent.VK_8; |
| else if (character.startsWith("9")) return KeyEvent.VK_9; |
| |
| return KeyEvent.VK_A; |
| } |
| |
| } |