Package org.w3c.jigadmin.attributes

Source Code of org.w3c.jigadmin.attributes.StringChoiceEditor$StringChoiceComponent

// StringChoiceEditor.java
// $Id: StringChoiceEditor.java,v 1.5 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.Dimension;

import java.awt.event.TextListener;
import java.awt.event.TextEvent;
import java.awt.event.ItemEvent;

import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;

import java.util.Properties;

import org.w3c.tools.resources.Attribute;

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

import org.w3c.jigadmin.widgets.StringChoice;

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

/**
* An editor for StringChoice attributes. 
* @author Benoit Mahe <bmahe@sophia.inria.fr>
*/

public class StringChoiceEditor extends AttributeEditor {

    class StringChoiceComponent extends StringChoice
  implements DocumentListener
    {

  EditorFeeder       feeder   = null;
  EditorModifier     modifier = null;
  StringChoiceEditor editor   = null;

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

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

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

  protected void setTextInternal(String stext) {
      if (modifier != null)
    setText(modifier.modify(stext));
      else
    setText(stext);
  }

  StringChoiceComponent(StringChoiceEditor editor,
            String selected,
            EditorFeeder feeder,
            EditorModifier modifier)
  {
      super();
      this.editor = editor;
      this.feeder = feeder;
      this.modifier = modifier;
      String items[] = feeder.getDefaultItems();
      super.initialize(items);
      setText(selected);
      addDocumentListener(this);
  }
    }

    /**
     * Properties - The feeder's class name.
     */
    public static final String FEEDER_CLASS_P = "feeder.class";
    public static final String MODIFIER_CLASS_P = "modifier.class";

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

    protected Dimension getPopupSize() {
  return new Dimension(400,160);
    }

    protected void createComponent(EditorFeeder feeder,
           EditorModifier modifier,
           String selected)
    {
  if ( comp == null )
      comp = new StringChoiceComponent(this, selected, feeder, modifier);
    }

    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() {
  String ct = comp.getText();
  if ((ct != null) && (ct.length() > 0)) {
      return ct;
  }
  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
    {
  // Get the feeder class fromproperties:
  EditorFeeder   feeder        = null;
  EditorModifier modifier      = null;
  String         feederClass   = null;
  String         modifierClass = null;

  feederClass = (String)p.get(FEEDER_CLASS_P);
  if ( feederClass == null )
      throw new RuntimeException("StringChoiceEditor mis-configuration:"+
               FEEDER_CLASS_P +
               " property undefined.");
  try {
      Class c = Class.forName(feederClass);
      feeder  = (EditorFeeder) c.newInstance();
      feeder.initialize(w,p);
  } catch (Exception ex) {
      ex.printStackTrace();
      throw new RuntimeException("StringChoiceEditor mis-configured: "+
               " unable to instantiate "+
               feederClass +".");
  }

  modifierClass = (String)p.get(MODIFIER_CLASS_P);
  if (modifierClass != null) {
      try {
    Class cm = Class.forName(modifierClass);
    modifier = (EditorModifier) cm.newInstance();
      } catch (Exception ex) {
    ex.printStackTrace();
    throw new RuntimeException("SelectEditor mis-configured: "+
             " unable to instantiate "+
             modifierClass +".");
      }
  }
  createComponent(feeder, modifier, (String) o);
  oldvalue = (String) o;
    }

    public StringChoiceEditor() {
  super();
    }
}
TOP

Related Classes of org.w3c.jigadmin.attributes.StringChoiceEditor$StringChoiceComponent

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.