1 /*
2  *****************************************************************************
3  * Copyright (C) 2000-2004, International Business Machines Corporation and  *
4  * others. All Rights Reserved.                                              *
5  *****************************************************************************
6  */
7 package com.ibm.rbm.gui;
8 
9 import java.awt.*;
10 import java.awt.event.*;
11 import java.util.Vector;
12 
13 import javax.swing.*;
14 
15 import com.ibm.rbm.*;
16 
17 /**
18  */
19 class RBProjectItemPanel extends JPanel implements ActionListener {
20 	RBManagerGUI gui;
21 
22 	// Visual Components
23 	Box mainBox;
24 	JTextField itemFields[];
25 	JLabel     itemLabels[];
26 	JButton    commitButtons[];
27 	JButton    commitButton;
28 	JLabel     titleLabel;
29 	JLabel     keyLabel;
30 	JLabel     commentLabel;
31 
RBProjectItemPanel(RBManagerGUI gui)32 	public RBProjectItemPanel(RBManagerGUI gui) {
33 		super();
34 		this.gui = gui;
35 		initComponents();
36 	}
37 
actionPerformed(ActionEvent ev)38 	public void actionPerformed(ActionEvent ev) {
39 		JButton button = (JButton)ev.getSource();
40 		String buttonName = button.getName();
41 		if (buttonName == null) {
42 			// Save all components
43 			RBManager bundle = gui.getSelectedProjectBundle();
44 			Vector bundles = bundle.getBundles();
45 			for (int i=0; i < itemFields.length; i++) {
46 				String encoding = commitButtons[i].getName();
47 				String translation = itemFields[i].getText();
48 				String key = itemFields[i].getName();
49 				for (int j=0; j < bundles.size(); j++) {
50 					Bundle rbundle = (Bundle)bundles.elementAt(j);
51 					if (rbundle.encoding.equals(encoding)) {
52 						BundleItem item = rbundle.getBundleItem(key);
53 						if (item != null) item.setTranslation(translation);
54 						break;
55 					}
56 				}
57 			}
58 			gui.saveResources(bundle);
59 		} else {
60 			// Save a particular encoding
61 			String encoding = buttonName;
62 			RBManager bundle = gui.getSelectedProjectBundle();
63 			int index = -1;
64 			for (int i=0; i < commitButtons.length; i++) {
65 				if (commitButtons[i] == button) {
66 					index = i;
67 					break;
68 				}
69 			}
70 			String translation = itemFields[index].getText();
71 			String key = itemFields[index].getName();
72 			Vector bundles = bundle.getBundles();
73 			for (int i=0; i < bundles.size(); i++) {
74 				Bundle rbundle = (Bundle)bundles.elementAt(i);
75 				if (rbundle.encoding.equals(encoding)) {
76 					BundleItem item = rbundle.getBundleItem(key);
77 					if (item != null) {
78 						item.setTranslation(translation);
79 						RBManagerGUI.debugMsg("Set translation to : " + translation);
80 					}
81 					else
82 					    RBManagerGUI.debugMsg("Item was null");
83 					break;
84 				}
85 				RBManagerGUI.debugMsg("Compared " + rbundle.encoding + " with " + encoding);
86 			}
87 			gui.saveResources(bundle, encoding);
88 		}
89 		updateComponents();
90 	}
91 
initComponents()92 	private void initComponents() {
93 		setLayout(new BorderLayout());
94 		JPanel topPanel = new JPanel(new GridLayout(2,1));
95 		titleLabel = new JLabel(Resources.getTranslation("project_panel_default_title"), SwingConstants.CENTER);
96 		titleLabel.setFont(new Font("serif",Font.BOLD,18));
97 		JPanel commentPanel = new JPanel(new GridLayout(2,1));
98 		JLabel commentLabel2 = new JLabel(Resources.getTranslation("project_panel_comment"), SwingConstants.LEFT);
99 		commentLabel = new JLabel(Resources.getTranslation("project_panel_comment_none"), SwingConstants.LEFT);
100 		commentPanel.add(commentLabel2);
101 		commentPanel.add(commentLabel);
102 		topPanel.add(titleLabel);
103 		topPanel.add(commentPanel);
104 		JPanel centerPanel = new JPanel(new BorderLayout());
105 		mainBox = new Box(BoxLayout.Y_AXIS);
106 		JScrollPane scrollPane = new JScrollPane(mainBox,
107 												ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
108 												ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
109 		centerPanel.add(scrollPane, BorderLayout.NORTH);
110 		centerPanel.setBorder(BorderFactory.createEtchedBorder());
111 		JPanel botPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
112 		commitButton = new JButton(Resources.getTranslation("project_panel_commit_button_all"));
113 		commitButton.addActionListener(this);
114 		botPanel.add(commitButton);
115 		add(topPanel, BorderLayout.NORTH);
116 		add(centerPanel, BorderLayout.CENTER);
117 		add(botPanel, BorderLayout.SOUTH);
118 
119 		updateComponents();
120 	}
121 
updateComponents()122 	public void updateComponents() {
123 		BundleItem item = gui.getSelectedProjectBundleItem();
124 
125 		if (item == null) {
126 			commentLabel.setText(Resources.getTranslation("project_panel_comment_none"));
127 			titleLabel.setText(Resources.getTranslation("project_panel_default_title"));
128 			itemFields = null;
129 			itemLabels = null;
130 			commitButtons = null;
131 			commitButton.setEnabled(false);
132 		} else {
133 			String comment = item.getComment();
134 			String key = item.getKey();
135 			commentLabel.setText(comment);
136 			titleLabel.setText(Resources.getTranslation("project_panel_title", key));
137 
138 			RBManager manager = gui.getSelectedProjectBundle();
139 			Vector bundles = manager.getBundles();
140 			itemFields = new JTextField[bundles.size()];
141 			itemLabels = new JLabel[bundles.size()];
142 			commitButtons = new JButton[bundles.size()];
143 			for (int i=0; i < bundles.size(); i++) {
144 				Bundle bundle = (Bundle)bundles.elementAt(i);
145 				BundleItem bundleItem = bundle.getBundleItem(key);
146 				//boolean translated = bundleItem.isTranslated();
147 				JLabel encodingLabel = new JLabel(Resources.getTranslation("project_panel_bundle", bundle.toString()),
148 												  SwingConstants.LEFT);
149 				if (bundleItem == null || !bundleItem.isTranslated()) {
150 				    encodingLabel.setText(Resources.getTranslation("project_panel_bundle_untranslated",
151 																	bundle.toString()));
152 				}
153 				String fieldText = (bundleItem == null ? Resources.getTranslation("project_panel_item_inherits") :
154 														 bundleItem.getTranslation());
155 				JTextField itemField = new JTextField(fieldText);
156 				itemField.setMaximumSize(new Dimension(this.getSize().width-150, 200));
157 				itemField.setName(key);
158 				JButton commitItemButton = new JButton(Resources.getTranslation("project_panel_commit_button"));
159 				commitItemButton.addActionListener(this);
160 				commitItemButton.setName(bundle.encoding);
161 				itemFields[i] = itemField;
162 				itemLabels[i] = encodingLabel;
163 				commitButtons[i] = commitItemButton;
164 			}
165 			commitButton.setEnabled(true);
166 		}
167 
168 		mainBox.removeAll();
169 		if (itemFields != null) {
170 			for (int i=0; i < itemFields.length; i++) {
171 				JPanel bundlePanel = new JPanel(new BorderLayout());
172 				bundlePanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));
173 				bundlePanel.add(itemLabels[i], BorderLayout.NORTH);
174 				bundlePanel.add(itemFields[i], BorderLayout.CENTER);
175 				bundlePanel.add(commitButtons[i], BorderLayout.EAST);
176 				mainBox.add(bundlePanel);
177 			}
178 		}
179 
180 		revalidate();
181 	}
182 }
183 
184