MessageFrameController.java :  » Mail-Clients » columba-1.4 » org » columba » mail » gui » messageframe » Java Open Source

Java Open Source » Mail Clients » columba 1.4 
columba 1.4 » org » columba » mail » gui » messageframe » MessageFrameController.java
// The contents of this file are subject to the Mozilla Public License Version
// 1.1
//(the "License"); you may not use this file except in compliance with the
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
//Software distributed under the License is distributed on an "AS IS" basis,
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
//for the specific language governing rights and
//limitations under the License.
//
//The Original Code is "The Columba Project"
//
//The Initial Developers of the Original Code are Frederik Dietz and Timo
// Stich.
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
//
//All Rights Reserved.

package org.columba.mail.gui.messageframe;

import java.awt.BorderLayout;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.JComponent;
import javax.swing.JPanel;

import org.columba.api.gui.frame.IContainer;
import org.columba.api.gui.frame.IDock;
import org.columba.api.gui.frame.IDockable;
import org.columba.core.gui.frame.FrameManager;
import org.columba.core.io.DiskIO;
import org.columba.mail.command.IMailFolderCommandReference;
import org.columba.mail.gui.frame.AbstractMailFrameController;
import org.columba.mail.gui.frame.TableViewOwner;
import org.columba.mail.gui.frame.ThreePaneMailFrameController;
import org.columba.mail.gui.table.ITableController;
import org.columba.mail.util.MailResourceLoader;

/**
 * Mail frame controller which contains a message viewer only.
 * <p>
 * Note that this frame depends on its parent frame controller for viewing
 * messages.
 * 
 * @see org.columba.mail.gui.action.NextMessageAction
 * @see org.columba.mail.gui.action.PreviousMessageAction
 * @see org.columba.mail.gui.action.NextUnreadMessageAction
 * @see org.columba.mail.gui.action.PreviousMessageAction
 * 
 * @author fdietz
 */
public class MessageFrameController extends AbstractMailFrameController
    implements TableViewOwner {

  IMailFolderCommandReference treeReference;

  IMailFolderCommandReference tableReference;

  FixedTableSelectionHandler tableSelectionHandler;

  private ThreePaneMailFrameController parentController;

  private IDockable messageViewerDockable;
  
  /**
   * @param viewItem
   */
  public MessageFrameController() {
    super(FrameManager.getInstance().createCustomViewItem("Messageframe"));

//    messageViewerDockable = registerDockable("mail_messageviewer", MailResourceLoader.getString(
//        "global", "dockable_messageviewer"),
//        messageController, null);
    
    tableSelectionHandler = new FixedTableSelectionHandler(tableReference);
    getSelectionManager().addSelectionHandler(tableSelectionHandler);

  }

  /**
   * @param parent
   *            parent frame controller
   */
  public MessageFrameController(ThreePaneMailFrameController parent) {
    this();

    this.parentController = parent;

  }

  /**
   * 
   * @see org.columba.mail.gui.frame.MailFrameInterface#getTableSelection()
   */
  public IMailFolderCommandReference getTableSelection() {
    return tableReference;
  }

  /**
   * 
   * @see org.columba.mail.gui.frame.MailFrameInterface#getTreeSelection()
   */
  public IMailFolderCommandReference getTreeSelection() {
    return treeReference;
  }

  /**
   * @param references
   */
  public void setTreeSelection(IMailFolderCommandReference references) {
    treeReference = references;
  }

  /**
   * @param references
   */
  public void setTableSelection(IMailFolderCommandReference references) {
    tableReference = references;

    // TODO: re-enable feature, the following code violates our
    // design, accessing folders is only allowed in Command.execute()
    /*
     * try { // Get the subject from the cached Header AbstractMessageFolder
     * folder = (AbstractMessageFolder) references .getSourceFolder();
     * IColumbaHeader header = folder.getHeaderList().get(
     * references.getUids()[0]); String subject = (String)
     * header.get("columba.subject");
     * 
     * getContainer().getFrame().setTitle(subject); } catch (Exception e) {
     * LOG.warning(e.toString()); }
     */

    tableSelectionHandler.setSelection(tableReference);
  }

  /**
   * @see org.columba.mail.gui.frame.TableViewOwner#getTableController()
   */
  public ITableController getTableController() {
    if (parentController == null)
      return null;

    // pass it along to parent frame
    return parentController.getTableController();
  }

  /**
   * @see org.columba.api.gui.frame.IContentPane#getComponent()
   */
//  public JComponent getComponent() {
//    JPanel panel = new JPanel();
//    panel.setLayout(new BorderLayout());
//
//    panel.add(messageController, BorderLayout.CENTER);
//
//    
//
//    return panel;
//  }

  /**
   * @see org.columba.api.gui.frame.IFrameMediator#getString(java.lang.String,
   *      java.lang.String, java.lang.String)
   */
  public String getString(String sPath, String sName, String sID) {
    return MailResourceLoader.getString(sPath, sName, sID);
  }

  /**
   * @see org.columba.core.gui.frame.DockFrameController#loadDefaultPosition()
   */
  public void loadDefaultPosition() {

    //super.dock(messageViewerDockable, IDock.REGION.CENTER);

  }

  /** *********************** container callbacks ************* */

  
  /**
   * @see org.columba.api.gui.frame.IFrameMediator#extendMenu(org.columba.api.gui.frame.IContainer)
   */
  public void extendMenu(IContainer container) {
    try {
      InputStream is = DiskIO
          .getResourceStream("org/columba/mail/action/messageframe_menu.xml");

      container.extendMenu(this, is);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  /**
   * @see org.columba.api.gui.frame.IFrameMediator#extendToolBar(org.columba.api.gui.frame.IContainer)
   */
  public void extendToolBar(IContainer container) {
    try {
      InputStream is = DiskIO
          .getResourceStream("org/columba/mail/config/messageframe_toolbar.xml");

      container.extendToolbar(this, is);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Override
  public JPanel getContentPane() {
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());

    panel.add(messageController, BorderLayout.CENTER);

    

    return panel;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.