Package org.w3c.jigadmin.attributes

Source Code of org.w3c.jigadmin.attributes.MimeTypeAttributeEditor$MimeTypeAttributeComponent

// MimeTypeAttributeEditor.java
// $Id: MimeTypeAttributeEditor.java,v 1.4 2000/08/16 21:37:29 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigadmin.attributes;

import java.awt.Component;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;

import java.util.Properties;
import java.util.Hashtable;
import java.util.Enumeration;

import org.w3c.jigadmin.PropertyManager;
import org.w3c.jigadmin.widgets.ClosableFrame;

import org.w3c.jigadm.RemoteResourceWrapper;
import org.w3c.jigadm.editors.AttributeEditor;

import org.w3c.jigsaw.admin.RemoteResource;
import org.w3c.jigsaw.admin.RemoteAccessException;

import org.w3c.tools.resources.Attribute;

import org.w3c.www.mime.MimeType;

/**
* MimeTypeAttributeEditor :
* @author Benoit Mahe <bmahe@sophia.inria.fr>
*/

public class MimeTypeAttributeEditor extends AttributeEditor {

    class MimeTypeAttributeComponent extends JPanel
  implements ActionListener, DocumentListener
    {

  protected JTextField              type   = null;
  protected MimeTypeAttributeEditor editor = null;

  //DocumentListener
  public void insertUpdate(DocumentEvent e) {
      setModified();
  }

  //DocumentListener
  public void changedUpdate(DocumentEvent e) {
      setModified();
  }

  //DocumentListener
  public void removeUpdate(DocumentEvent e) {
      setModified();
  }

  public void actionPerformed(ActionEvent e) {
      String command = e.getActionCommand();
      if (command != null) {
    type.setText(command);
      }
  }

  public String getText() {
      return type.getText();
  }

  public void setText(String text) {
      type.setText(text);
      editor.setModified();
  }

  private void addMenuListener(JMenuItem item, String action) {
      item.addActionListener(this);
      item.setActionCommand(action);
  }

  protected void build(String type) {
      JMenuBar    menubar   = null;
      JMenu       menu      = null;
      JMenuItem   item      = null;
      Hashtable   mimeTypes = null;
      Enumeration e         = null;
      String      minor[]   = null;

      this.type = new JTextField(20);
      this.type.setBorder(BorderFactory.createLoweredBevelBorder());
      this.type.setText(type);
      this.type.getDocument().addDocumentListener(this);
      //build the menu
      menubar = new JMenuBar();
      menubar.setBorderPainted(false);
      menu    = new JMenu("MimeTypes");
      menubar.setAlignmentX(LEFT_ALIGNMENT);
      menubar.setAlignmentY(TOP_ALIGNMENT);

      mimeTypes = PropertyManager.getPropertyManager().getMimeTypes();
      e = mimeTypes.keys();

      while(e.hasMoreElements()) {
    String major = (String)e.nextElement();
    JMenu imenu = new JMenu(major);
    imenu.addActionListener(this);
    minor = (String[]) mimeTypes.get(major);
    for(int i = 0 ; i < minor.length ; i++) {
        item = new JMenuItem(minor[i]);
        addMenuListener(item, major + "/" + minor[i]);
        imenu.add(item);
    }
    menu.add(imenu);
      }
      menubar.add(menu);
      //end
      setLayout(new BorderLayout());
      add(this.type,BorderLayout.WEST);
      add(menubar,BorderLayout.CENTER);
  }

  MimeTypeAttributeComponent (MimeTypeAttributeEditor editor,
            String type)
  {
      super();
      this.editor = editor;
      build(type);
  }

    }

    // The MimeTypeAttributeEditor itself

    protected MimeTypeAttributeComponent comp = null;
    protected boolean hasChanged = false;
    protected String oldvalue  = null;

    protected void createComponent(String type) {
  if ( comp == null )
      comp = new MimeTypeAttributeComponent(this,type);
    }

    protected void setModified() {
  hasChanged = true;
    }

    /**
     * Tells if the edited value has changed
     * @return true if the value changed.
     */
    public boolean hasChanged() {
  return hasChanged;
    }

    /**
     * set the current value to be the original value, ie: changed
     * must return <strong>false</strong> after a reset.
     */ 
    public void clearChanged() {
  hasChanged = false;
    }

    /**
     * reset the changes (if any)
     */
    public void resetChanges() {
  hasChanged = false;
  comp.setText(oldvalue);
    }

    /**
     * Get the current value of the edited value
     * @return an object or <strong>null</strong> if the object was not
     * initialized
     */
    public Object getValue() {
  try {
      return new MimeType(comp.getText());
  } catch (Exception ex) {
      // no mime type then!
  }
  return null;
    }

    /**
     * Set the value of the edited value
     * @param o the new value.
     */ 
    public void setValue(Object o) {
  this.oldvalue = (String) o;
  comp.setText(oldvalue);
    }

    /**
     * get the Component created by the editor.
     * @return a Component
     */
    public Component getComponent() {
  return comp;
    }

    /**
     * Initialize the editor
     * @param w the ResourceWrapper father of the attribute
     * @param a the Attribute we are editing
     * @param o the value of the above attribute
     * @param p some Properties, used to fine-tune the editor
     * @exception RemoteAccessException if a remote access error occurs.
     */
    public void initialize(RemoteResourceWrapper w
         , Attribute a
         , Object o
         , Properties p)
  throws RemoteAccessException
    {
  MimeType type = (MimeType)o;
  if (o == null) {
      oldvalue = "*none*";
      createComponent(oldvalue);;
  } else {
      createComponent(type.toString());
      oldvalue = type.toString();
  }
    }

}
TOP

Related Classes of org.w3c.jigadmin.attributes.MimeTypeAttributeEditor$MimeTypeAttributeComponent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.