Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/cybertivity/powerjournal/MainView.java


1   package com.cybertivity.powerjournal;
2   import java.awt.BorderLayout;
3   import java.awt.CardLayout;
4   import java.awt.Color;
5   import java.awt.Container;
6   import java.awt.FlowLayout;
7   import java.awt.Image;
8   import java.awt.Insets;
9   import java.awt.Toolkit;
10  import java.awt.event.ActionEvent;
11  import java.awt.event.InputEvent;
12  import java.awt.event.KeyAdapter;
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.net.URL;
18  import java.util.ArrayList;
19  import java.util.HashMap;
20  import java.util.Iterator;
21  import java.util.Set;
22  import javax.swing.BorderFactory;
23  import javax.swing.JButton;
24  import javax.swing.JCheckBox;
25  import javax.swing.JComponent;
26  import javax.swing.JFrame;
27  import javax.swing.JLabel;
28  import javax.swing.JList;
29  import javax.swing.JMenu;
30  import javax.swing.JMenuBar;
31  import javax.swing.JOptionPane;
32  import javax.swing.JPanel;
33  import javax.swing.JScrollPane;
34  import javax.swing.JTextArea;
35  import javax.swing.JTextField;
36  import javax.swing.SwingConstants;
37  import javax.swing.SwingUtilities;
38  import javax.swing.UIManager;
39  import javax.swing.border.Border;
40  import javax.swing.event.ChangeEvent;
41  import javax.swing.event.ChangeListener;
42  import com.cybertivity.powerjournal.framework.*;
43  import com.cybertivity.powerjournal.gridpanel.*;
44  import com.l2fprod.gui.plaf.skin.CompoundSkin;
45  import com.l2fprod.gui.plaf.skin.Skin;
46  import com.l2fprod.gui.plaf.skin.SkinLookAndFeel;
47  
48  /**
49   * Title:        PowerJournal
50   * Description:  $Id: MainView.java,v 1.12 2001/12/27 20:28:12 arrowood Exp $
51   * Copyright:    Copyright (c) 2001
52   * Company:      <A HREF="http://www.cybertivity.com">Cybertivity</A>
53   *
54   * @author <A HREF="mailto:chris.arrowood@cybertivity.com">Chris Arrowood</A>
55   * @created November 17, 2001
56   * @version 1.0
57   */
58  
59  public class MainView extends FrameView {
60  
61    private CardLayout cardLayout = null;
62    private Container contentPane = null;
63    private ActionFactory.DefaultAction quitAction = null;
64    private ActionFactory.DefaultAction aboutAction = null;
65    private ActionFactory.DefaultAction viewEntryAction = null;
66    private ActionFactory.DefaultAction viewEntriesAction = null;
67    private ActionFactory.DefaultAction optionsDatabaseAction = null;
68    private ActionFactory.DefaultAction newJournalAction = null;
69    private ActionFactory.DefaultAction deleteJournalAction = null;
70    private ActionFactory.DefaultAction changePasswordAction = null;
71    private ActionFactory.DefaultAction changeJournalAction = null;
72    private ActionFactory.DefaultAction exportAsCSVAction = null;
73    private ActionFactory.DefaultAction exportAsTextAction = null;
74    private ActionFactory.DefaultAction exportAsHTMLAction = null;
75    private ActionFactory.ToggleAction optionsUseSkinsAction = null;
76    private ActionFactory.DefaultAction optionChooseSkinAction = null;
77    private HashMap menus = new HashMap();
78    private String appName = "";
79    public final static String IMAGE_PATH = "/com/cybertivity/powerjournal/resources/images";
80    private final static String SI_FRAME_ICON_NAME = "/draw32x32.gif";
81    private boolean guestMode = true;
82    private SingleEntryView singleEntryView = null;
83    private EntryView entryView = null;
84    private MultiEntryView multiEntryView = null;
85    public final static String EVENT_EASTEREGG = "Easter Egg";
86    String LOOK_AND_FEEL_WINDOWS = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
87    String LOOK_AND_FEEL_MOTIF = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
88  
89  
90  
91    public MainView(String appNameArg) {
92      this.setLookAndFeel(LOOK_AND_FEEL_WINDOWS);
93      this.getContent().addKeyListener(new KeyPressListener());
94      appName = appNameArg;
95      contentPane = content.getContentPane();
96      content.addWindowListener(new DeadlyWindowListener());
97      content.setTitle(appName);
98      setFrameIcon();
99      createActions();
100     createMenu();
101     createWindow();
102     content.setResizable(true);
103     content.setVisible(false);
104     content.pack();
105     moveToCenter();
106   }
107 
108 
109   public JFrame getContainer() {
110     return content;
111   }
112 
113 
114   private void setFrameIcon() {
115     Image SI_FRAME_ICON = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource(IMAGE_PATH + SI_FRAME_ICON_NAME));
116     content.setIconImage(SI_FRAME_ICON);
117   }
118 
119 
120   protected void cleanUp() { }
121 
122 
123   protected void handleModelEvent(ModelEvent event) { }
124 
125 
126   public void enableControls() {
127     singleEntryView.enableControls();
128     multiEntryView.enableControls();
129     menusSetEnabled(true);
130   }
131 
132 
133   public void disableControls() {
134     singleEntryView.disableControls();
135     multiEntryView.disableControls();
136     menusSetEnabled(false);
137   }
138 
139 
140   private void menusSetEnabled(boolean enable) {
141     Set set = menus.keySet();
142     Iterator iter = set.iterator();
143     while (iter.hasNext()) {
144       String name = (String) iter.next();
145       JMenu menu = (JMenu) menus.get(name);
146       menu.setEnabled(enable);
147     }
148   }
149 
150 
151   /**
152    *  Sets the LookAndFeel attribute of the object
153    */
154   public void setLookAndFeel(String lookAndFeel ) {
155     try {
156       UIManager.setLookAndFeel(lookAndFeel);
157       SwingUtilities.updateComponentTreeUI(content);
158     } catch (Exception e) {
159     }
160   }
161   public String getLookAndFeel( ) {
162     try {
163       return UIManager.getLookAndFeel().getClass().getName();
164     } catch (Exception e) {
165       return "Unknown";
166     }
167   }
168 
169   public boolean updateSkin(String skinPath) {
170     boolean success = true;
171     if (skinPath != null) {
172       if (optionsUseSkinsAction.getState()) {
173         try {
174           Skin skin = SkinLookAndFeel.loadThemePack(skinPath);
175           SkinLookAndFeel.setSkin(skin);
176 
177           SkinLookAndFeel lnf = new SkinLookAndFeel();
178           UIManager.setLookAndFeel(lnf);
179 
180           UIManager.getLookAndFeelDefaults().put("ClassLoader", lnf.getClass().getClassLoader());
181           SwingUtilities.updateComponentTreeUI(content);
182         } catch (Exception e) {
183           Dialogs.showError("Unable to update skin", "The specified skin could not be loaded.\n\nMake sure it is a valid skin.");
184           success = false;
185         }
186       }
187     }
188     return success;
189   }
190 
191 
192   /*
193    *  MainView has one instance of this. It listens out for window
194    *  closing events and notifies the controller.
195    */
196   private class DeadlyWindowListener extends WindowAdapter {
197     public void windowClosing(WindowEvent evt) {
198       fireEvent(MainActionFactory.ACTION_QUIT);
199     }
200   }
201 
202 
203   public void setVisible(boolean arg) {
204     content.pack();
205     content.setVisible(arg);
206   }
207 
208 
209   private void createMenu() {
210     JMenuBar menuBar = new JMenuBar();
211     JMenu menuMain = new JMenu("Main");
212     JMenu menuView = new JMenu("Entry");
213     JMenu menuExport = new JMenu("Export");
214     JMenu menuOptions = new JMenu("Options");
215     JMenu menuHelp = new JMenu("Help");
216 
217     menus.put("Main", menuMain);
218     menus.put("View", menuView);
219     menus.put("Export", menuExport);
220     menus.put("Options", menuOptions);
221     menus.put("Help", menuHelp);
222 
223     //populate menu main
224     viewEntryAction.menuItemFactory(menuView);
225     viewEntriesAction.menuItemFactory(menuView);
226     exportAsCSVAction.menuItemFactory(menuExport);
227     exportAsTextAction.menuItemFactory(menuExport);
228     exportAsHTMLAction.menuItemFactory(menuExport);
229     newJournalAction.menuItemFactory(menuMain);
230     changeJournalAction.menuItemFactory(menuMain);
231     deleteJournalAction.menuItemFactory(menuMain);
232     changePasswordAction.menuItemFactory(menuMain);
233     quitAction.menuItemFactory(menuMain);
234 
235     //populate menu options
236     optionsDatabaseAction.menuItemFactory(menuOptions);
237     optionsUseSkinsAction.menuItemFactory(menuOptions);
238     optionChooseSkinAction.menuItemFactory(menuOptions);
239 
240     //populate menu help
241     aboutAction.menuItemFactory(menuHelp);
242 
243     menuBar.add(menuMain);
244     menuBar.add(menuView);
245     menuBar.add(menuExport);
246     menuBar.add(menuOptions);
247     menuBar.add(menuHelp);
248 
249     content.setJMenuBar(menuBar);
250   }
251 
252 
253   private void createActions() {
254     MainActionFactory factory =
255         new MainActionFactory(IMAGE_PATH);
256     quitAction = factory.createAction(MainActionFactory.ACTION_QUIT);
257     aboutAction = factory.createAction(MainActionFactory.ACTION_ABOUT);
258     viewEntryAction = factory.createAction(MainActionFactory.ACTION_VIEW_ENTRY);
259     viewEntriesAction = factory.createAction(MainActionFactory.ACTION_VIEW_ALL_ENTRIES);
260     newJournalAction = factory.createAction(MainActionFactory.ACTION_NEW_JOURNAL);
261     deleteJournalAction = factory.createAction(MainActionFactory.ACTION_DELETE_JOURNAL);
262     changePasswordAction = factory.createAction(MainActionFactory.ACTION_CHANGE_PASSWORD);
263     changeJournalAction = factory.createAction(MainActionFactory.ACTION_CHANGE_JOURNAL);
264     //export menu
265     exportAsCSVAction = factory.createAction(MainActionFactory.ACTION_EXPORT_CSV);
266     exportAsTextAction = factory.createAction(MainActionFactory.ACTION_EXPORT_TEXT);
267     exportAsHTMLAction = factory.createAction(MainActionFactory.ACTION_EXPORT_HTML);
268     //options menu
269     optionsDatabaseAction = factory.createAction(MainActionFactory.ACTION_DB_OPTIONS);
270     optionChooseSkinAction = factory.createAction(MainActionFactory.ACTION_SKINS_CHOOSE);
271     optionsUseSkinsAction = factory.createToggleAction(MainActionFactory.ACTION_SKINS_USE);
272 
273     //add listeners
274     quitAction.addActionListener(actionListener);
275     aboutAction.addActionListener(actionListener);
276     viewEntryAction.addActionListener(actionListener);
277     viewEntriesAction.addActionListener(actionListener);
278     optionsDatabaseAction.addActionListener(actionListener);
279     newJournalAction.addActionListener(actionListener);
280     deleteJournalAction.addActionListener(actionListener);
281     changePasswordAction.addActionListener(actionListener);
282     changeJournalAction.addActionListener(actionListener);
283     exportAsCSVAction.addActionListener(actionListener);
284     exportAsTextAction.addActionListener(actionListener);
285     exportAsHTMLAction.addActionListener(actionListener);
286     optionChooseSkinAction.addActionListener(actionListener);
287     optionsUseSkinsAction.addActionListener(actionListener);
288   }
289 
290 
291   private void createWindow() {
292     contentPane.removeAll();
293     cardLayout = new CardLayout();
294     contentPane.setLayout(cardLayout);
295   }
296 
297 
298   public void addEntryView(EntryView entryViewArg, String name) {
299     contentPane.add(entryViewArg.getContent(), name);
300     if (name.equals(MainController.CARD_SINGLE)) {
301       singleEntryView = (SingleEntryView) entryViewArg;
302     } else if (name.equals(MainController.CARD_MULTI)) {
303       multiEntryView = (MultiEntryView) entryViewArg;
304     }
305     entryView = entryViewArg;
306     content.pack();
307     moveToCenter();
308   }
309 
310 
311   public void showEntryView(String name) {
312     cardLayout.show(contentPane, name);
313   }
314 
315 
316   public void displayEntries(ArrayList entries) {
317     multiEntryView.displayEntries(entries);
318     cardLayout.show(contentPane, MainController.CARD_MULTI);
319     content.pack();
320   }
321 
322 
323   protected void displayEntry(Entry entry, boolean guestMode) {
324     cardLayout.show(contentPane, MainController.CARD_SINGLE);
325     singleEntryView.displayEntry(entry, guestMode);
326     content.pack();
327   }
328 
329 
330 
331   class KeyPressListener extends KeyAdapter implements KeyListener {
332     public void keyPressed(KeyEvent event) {
333       int keyCode = event.getKeyCode();
334       if ((event.getModifiers() == (InputEvent.SHIFT_MASK + InputEvent.CTRL_MASK + InputEvent.ALT_MASK))) {
335         if (keyCode == KeyEvent.VK_ENTER) {
336           fireEvent(EVENT_EASTEREGG);
337         }
338       }
339       event.consume();
340     }
341   }
342   public boolean getUseSkins() {
343     return optionsUseSkinsAction.getState();
344   }
345   public void setUseSkins(boolean _useSkins) {
346     optionsUseSkinsAction.setState(_useSkins);
347     if (!_useSkins) {
348       updateSkin(null);
349     }
350 
351   }
352 
353 
354   public void setUseSkins(String enabled){
355     if (enabled==null) {
356       enabled="1";
357     }
358     if (enabled.equals("1")) {
359       setUseSkins(true);
360     }
361     else {
362       setUseSkins(false);
363     }
364 
365   }
366 }