Source code: com/cybertivity/powerjournal/ChooseJournalView.java
1 package com.cybertivity.powerjournal;
2 import java.awt.BorderLayout;
3 import java.awt.BorderLayout;
4 import java.awt.Color;
5 import java.awt.FlowLayout;
6 import java.awt.Insets;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
9 import java.awt.event.ItemEvent;
10 import java.awt.event.ItemListener;
11 import java.awt.event.KeyAdapter;
12 import java.awt.event.KeyEvent;
13 import java.awt.event.KeyEvent;
14 import java.awt.event.KeyListener;
15 import java.awt.event.WindowAdapter;
16 import java.awt.event.WindowEvent;
17 import java.util.ArrayList;
18 import javax.swing.BorderFactory;
19 import javax.swing.BoxLayout;
20 import javax.swing.JButton;
21 import javax.swing.JCheckBox;
22 import javax.swing.JComboBox;
23 import javax.swing.JFrame;
24 import javax.swing.JLabel;
25 import javax.swing.JPanel;
26 import javax.swing.JPasswordField;
27 import javax.swing.JTextField;
28 import com.cybertivity.powerjournal.framework.*;
29 import com.cybertivity.powerjournal.framework.DialogView;
30 import com.cybertivity.powerjournal.framework.Dialogs;
31 import com.cybertivity.powerjournal.framework.ModelEvent;
32 import com.cybertivity.powerjournal.gridpanel.*;
33
34 /**
35 * Title: PowerJournal
36 * Description: $Id: ChooseJournalView.java,v 1.6 2001/12/12 02:41:10 arrowood Exp $
37 * Copyright: Copyright (c) 2001
38 * Company: <A HREF="http://www.cybertivity.com">Cybertivity</A>
39 *
40 * @author <A HREF="mailto:chris.arrowood@cybertivity.com">Chris Arrowood</A>
41 * @created December 1, 2001
42 * @version 1.0
43 */
44
45 public class ChooseJournalView extends DialogView {
46
47 public final static String EVENT_CANCEL = "ChooseJournalView_Cancel";
48 public final static String EVENT_OK = "ChooseJournalView_Ok";
49 public final static String EVENT_NEW_JOURNAL = "ChooseJournalView_New";
50 private JButton okButton = null;
51 private JButton cancelButton = null;
52 private JButton newButton = null;
53 private JPasswordField journalPasswordTextField = null;
54 private JComboBox journalsCombo = null;
55 private ArrayList journals = null;
56 private JCheckBox isGuest = null;
57
58
59 public ChooseJournalView(JFrame parent, ArrayList journalsArg) {
60 super(parent, true);
61 journals = journalsArg;
62 createWindow();
63 content.setTitle("Choose a Journal");
64 content.setResizable(false);
65 content.addWindowListener(new DeadlyWindowListener());
66 content.pack();
67 moveToCenter();
68 }
69
70
71 private void createWindow() {
72 content.getContentPane().add(createMainPanel());
73 }
74
75
76 public void setVisible(boolean arg) {
77 if (arg) {
78 journalPasswordTextField.setText("");
79 }
80 super.setVisible(arg);
81 }
82
83
84 private JPanel createMainPanel() {
85 JPanel panel = null;
86 try {
87 JPanel buttonPanel = createButtonPanel();
88 Insets insets = new Insets(2, 10, 0, 2);
89 GridPanelColumn leftColumn = createMainPanelLeftColumn();
90 GridPanelColumn rightColumn = createMainPanelRightColumn();
91 ArrayList columns = new ArrayList();
92 columns.add(0, leftColumn);
93 columns.add(1, rightColumn);
94 panel = GridPanelBuilder.createGridPanel(insets, columns, buttonPanel, BorderLayout.SOUTH);
95 } catch (GridPanelException ex) {
96 panel = new JPanel();
97 }
98 return panel;
99 }
100
101
102
103 private GridPanelColumn createMainPanelLeftColumn() {
104 GridPanelColumn column = new GridPanelColumn();
105 column.add(new JLabel("Journal Name:"), false, false);
106 column.add(new JLabel("Journal Password:"), false, false);
107 JLabel labelGuest = new JLabel("View as Guest:");
108 labelGuest.setToolTipText("Guests have read-only access to public entries");
109 column.add(labelGuest, false, false);
110 return column;
111 }
112
113
114 private GridPanelColumn createMainPanelRightColumn() {
115 GridPanelColumn column = new GridPanelColumn();
116 journalsCombo = new JComboBox(journals.toArray());
117 journalsCombo.setMaximumRowCount(3);
118 journalPasswordTextField = new JPasswordField(10);
119 journalPasswordTextField.addKeyListener(new KeyPressListener());
120 isGuest = new JCheckBox("", false);
121 isGuest.addItemListener(new CheckboxListener());
122 isGuest.setToolTipText("Guests have read-only access to public entries");
123 column.add(journalsCombo, false, false);
124 column.add(journalPasswordTextField, false, false);
125 column.add(isGuest, false, false);
126 return column;
127 }
128
129
130 private JPanel createButtonPanel() {
131 JPanel buttonPanel = new JPanel();
132 FlowLayout layout = new FlowLayout();
133 buttonPanel.setLayout(layout);
134 okButton = makeButton("OK", EVENT_OK, null);
135 cancelButton = makeButton("Cancel", EVENT_CANCEL, null);
136 newButton = makeButton("New", EVENT_NEW_JOURNAL, null);
137 buttonPanel.add(okButton);
138 buttonPanel.add(newButton);
139 buttonPanel.add(cancelButton);
140 return buttonPanel;
141 }
142
143
144 private JButton makeButton(String name, final String action, Color color) {
145 JButton btn = new JButton();
146 btn.setText(name);
147 if (color != null) {
148 btn.setForeground(color);
149 }
150
151 btn.addActionListener(
152 new java.awt.event.ActionListener() {
153 public void actionPerformed(ActionEvent e) {
154 fireEvent(action);
155 }
156 });
157 return btn;
158 }
159
160
161 private class DeadlyWindowListener extends WindowAdapter {
162 public void windowClosing(WindowEvent evt) {
163 fireEvent(EVENT_CANCEL);
164 }
165 }
166
167
168 class CheckboxListener implements ItemListener {
169 public void itemStateChanged(ItemEvent e) {
170 if (e.getItem() == isGuest) {
171 if ((e.getStateChange() == ItemEvent.SELECTED)) {
172 journalPasswordTextField.disable();
173 journalPasswordTextField.setBackground(Color.lightGray);
174 } else {
175 journalPasswordTextField.enable();
176 journalPasswordTextField.setBackground(Color.white);
177 }
178 }
179 }
180 }
181
182
183 public boolean isGuest() {
184 return isGuest.isSelected();
185 }
186
187
188 public String getJournalName() {
189 return (String) journalsCombo.getSelectedItem();
190 }
191
192
193 public String getJournalPassword() {
194 return journalPasswordTextField.getText();
195 }
196
197
198 protected void cleanUp() { }
199
200
201 protected void handleModelEvent(ModelEvent event) { }
202
203
204 public ArrayList getJournals() {
205 return journals;
206 }
207
208
209 public void setJournals(ArrayList _journals) {
210 journals = _journals;
211 }
212
213
214 class KeyPressListener extends KeyAdapter implements KeyListener {
215 public void keyPressed(KeyEvent event) {
216 int keyCode = event.getKeyCode();
217 if (event.getModifiers() == 0) {
218 if (keyCode == KeyEvent.VK_ENTER) {
219 fireEvent(EVENT_OK);
220 }
221 }
222 event.consume();
223 }
224 }
225 }