KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > messageframe > MessageFrameController


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18

19 package org.columba.mail.gui.messageframe;
20
21 import java.awt.BorderLayout JavaDoc;
22 import java.io.IOException JavaDoc;
23 import java.io.InputStream JavaDoc;
24
25 import javax.swing.JComponent JavaDoc;
26 import javax.swing.JPanel JavaDoc;
27
28 import org.columba.api.gui.frame.IContainer;
29 import org.columba.api.gui.frame.IDock;
30 import org.columba.api.gui.frame.IDockable;
31 import org.columba.core.gui.frame.FrameManager;
32 import org.columba.core.io.DiskIO;
33 import org.columba.mail.command.IMailFolderCommandReference;
34 import org.columba.mail.gui.frame.AbstractMailFrameController;
35 import org.columba.mail.gui.frame.TableViewOwner;
36 import org.columba.mail.gui.frame.ThreePaneMailFrameController;
37 import org.columba.mail.gui.table.ITableController;
38 import org.columba.mail.util.MailResourceLoader;
39
40 /**
41  * Mail frame controller which contains a message viewer only.
42  * <p>
43  * Note that this frame depends on its parent frame controller for viewing
44  * messages.
45  *
46  * @see org.columba.mail.gui.action.NextMessageAction
47  * @see org.columba.mail.gui.action.PreviousMessageAction
48  * @see org.columba.mail.gui.action.NextUnreadMessageAction
49  * @see org.columba.mail.gui.action.PreviousMessageAction
50  *
51  * @author fdietz
52  */

53 public class MessageFrameController extends AbstractMailFrameController
54         implements TableViewOwner {
55
56     IMailFolderCommandReference treeReference;
57
58     IMailFolderCommandReference tableReference;
59
60     FixedTableSelectionHandler tableSelectionHandler;
61
62     private ThreePaneMailFrameController parentController;
63
64     private IDockable messageViewerDockable;
65     
66     /**
67      * @param viewItem
68      */

69     public MessageFrameController() {
70         super(FrameManager.getInstance().createCustomViewItem("Messageframe"));
71
72 // messageViewerDockable = registerDockable("mail_messageviewer", MailResourceLoader.getString(
73
// "global", "dockable_messageviewer"),
74
// messageController, null);
75

76         tableSelectionHandler = new FixedTableSelectionHandler(tableReference);
77         getSelectionManager().addSelectionHandler(tableSelectionHandler);
78
79     }
80
81     /**
82      * @param parent
83      * parent frame controller
84      */

85     public MessageFrameController(ThreePaneMailFrameController parent) {
86         this();
87
88         this.parentController = parent;
89
90     }
91
92     /**
93      *
94      * @see org.columba.mail.gui.frame.MailFrameInterface#getTableSelection()
95      */

96     public IMailFolderCommandReference getTableSelection() {
97         return tableReference;
98     }
99
100     /**
101      *
102      * @see org.columba.mail.gui.frame.MailFrameInterface#getTreeSelection()
103      */

104     public IMailFolderCommandReference getTreeSelection() {
105         return treeReference;
106     }
107
108     /**
109      * @param references
110      */

111     public void setTreeSelection(IMailFolderCommandReference references) {
112         treeReference = references;
113     }
114
115     /**
116      * @param references
117      */

118     public void setTableSelection(IMailFolderCommandReference references) {
119         tableReference = references;
120
121         // TODO: re-enable feature, the following code violates our
122
// design, accessing folders is only allowed in Command.execute()
123
/*
124          * try { // Get the subject from the cached Header AbstractMessageFolder
125          * folder = (AbstractMessageFolder) references .getSourceFolder();
126          * IColumbaHeader header = folder.getHeaderList().get(
127          * references.getUids()[0]); String subject = (String)
128          * header.get("columba.subject");
129          *
130          * getContainer().getFrame().setTitle(subject); } catch (Exception e) {
131          * LOG.warning(e.toString()); }
132          */

133
134         tableSelectionHandler.setSelection(tableReference);
135     }
136
137     /**
138      * @see org.columba.mail.gui.frame.TableViewOwner#getTableController()
139      */

140     public ITableController getTableController() {
141         if (parentController == null)
142             return null;
143
144         // pass it along to parent frame
145
return parentController.getTableController();
146     }
147
148     /**
149      * @see org.columba.api.gui.frame.IContentPane#getComponent()
150      */

151 // public JComponent getComponent() {
152
// JPanel panel = new JPanel();
153
// panel.setLayout(new BorderLayout());
154
//
155
// panel.add(messageController, BorderLayout.CENTER);
156
//
157
//
158
//
159
// return panel;
160
// }
161

162     /**
163      * @see org.columba.api.gui.frame.IFrameMediator#getString(java.lang.String,
164      * java.lang.String, java.lang.String)
165      */

166     public String JavaDoc getString(String JavaDoc sPath, String JavaDoc sName, String JavaDoc sID) {
167         return MailResourceLoader.getString(sPath, sName, sID);
168     }
169
170     /**
171      * @see org.columba.core.gui.frame.DockFrameController#loadDefaultPosition()
172      */

173     public void loadDefaultPosition() {
174
175         //super.dock(messageViewerDockable, IDock.REGION.CENTER);
176

177     }
178
179     /** *********************** container callbacks ************* */
180
181     
182     /**
183      * @see org.columba.api.gui.frame.IFrameMediator#extendMenu(org.columba.api.gui.frame.IContainer)
184      */

185     public void extendMenu(IContainer container) {
186         try {
187             InputStream JavaDoc is = DiskIO
188                     .getResourceStream("org/columba/mail/action/messageframe_menu.xml");
189
190             container.extendMenu(this, is);
191
192         } catch (IOException JavaDoc e) {
193             e.printStackTrace();
194         }
195     }
196
197     /**
198      * @see org.columba.api.gui.frame.IFrameMediator#extendToolBar(org.columba.api.gui.frame.IContainer)
199      */

200     public void extendToolBar(IContainer container) {
201         try {
202             InputStream JavaDoc is = DiskIO
203                     .getResourceStream("org/columba/mail/config/messageframe_toolbar.xml");
204
205             container.extendToolbar(this, is);
206
207         } catch (IOException JavaDoc e) {
208             e.printStackTrace();
209         }
210     }
211
212     @Override JavaDoc
213     public JPanel JavaDoc getContentPane() {
214         JPanel JavaDoc panel = new JPanel JavaDoc();
215         panel.setLayout(new BorderLayout JavaDoc());
216
217         panel.add(messageController, BorderLayout.CENTER);
218
219         
220
221         return panel;
222     }
223
224 }
Popular Tags