HeadersMenu.java :  » Mail-Clients » columba-1.4 » org » columba » mail » gui » message » action » Java Open Source

Java Open Source » Mail Clients » columba 1.4 
columba 1.4 » org » columba » mail » gui » message » action » HeadersMenu.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.message.action;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;

import javax.swing.ButtonGroup;
import javax.swing.JRadioButtonMenuItem;

import org.columa.core.config.IDefaultItem;
import org.columba.api.gui.frame.IFrameMediator;
import org.columba.core.config.DefaultItem;
import org.columba.core.gui.menu.IMenu;
import org.columba.core.xml.XmlElement;
import org.columba.mail.config.MailConfig;

/**
 * Submenu containing three choices: Show default headers, show custom headers
 * and show all available headers.
 * 
 * @author fdietz
 */
public class HeadersMenu extends IMenu implements ActionListener, Observer {

  private XmlElement element;

  private JRadioButtonMenuItem defaultMenuItem;

  private JRadioButtonMenuItem customMenuItem;

  private JRadioButtonMenuItem allMenuItem;
  
  /**
   * @param controller
   * @param caption
   */
  public HeadersMenu(IFrameMediator controller) {
    super(controller, "Show Headers","show_headers_menu");

    ButtonGroup group = new ButtonGroup();

    defaultMenuItem = new JRadioButtonMenuItem("Default");
    defaultMenuItem.setActionCommand("DEFAULT");
    defaultMenuItem.addActionListener(this);
    group.add(defaultMenuItem);

    add(defaultMenuItem);

    customMenuItem = new JRadioButtonMenuItem("Custom");
    customMenuItem.setActionCommand("CUSTOM");
    customMenuItem.addActionListener(this);
    group.add(customMenuItem);
    add(customMenuItem);

    allMenuItem = new JRadioButtonMenuItem("Compact");
    allMenuItem.setActionCommand("ALL");
    allMenuItem.addActionListener(this);
    group.add(allMenuItem);
    add(allMenuItem);

    element = MailConfig.getInstance().get("options").getElement(
        "/options/headerviewer");
    element.addObserver(this);

    update(element, null);
  }

  public void actionPerformed(ActionEvent e) {
    String action = e.getActionCommand();

    if (action.equals("DEFAULT")) {
      element.addAttribute("style", "0");

      new ViewMessageAction(getFrameMediator()).actionPerformed(null);
    } else if (action.equals("CUSTOM")) {
      element.addAttribute("style", "1");

      new ViewMessageAction(getFrameMediator()).actionPerformed(null);
    } else if (action.equals("ALL")) {
      element.addAttribute("style", "2");

      new ViewMessageAction(getFrameMediator()).actionPerformed(null);
    }
  }

  /**
   * Method is called when configuration changes.
   * 
   * @param arg0
   * @param arg1
   */
  public void update(Observable arg0, Object arg1) {
    IDefaultItem item = new DefaultItem(element);
    int style = item.getIntegerWithDefault("style", 0);
    switch (style) {
    case 0:
      defaultMenuItem.setSelected(true);
      break;
    case 1:
      customMenuItem.setSelected(true);
      break;
    case 2:
      allMenuItem.setSelected(true);
      break;
    }
  }
}
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.