1   /*
2    *  AbstractVisualResource.java
3    *
4    *  Copyright (c) 1998-2001, The University of Sheffield.
5    *
6    *  This file is part of GATE (see http://gate.ac.uk/), and is free
7    *  software, licenced under the GNU Library General Public License,
8    *  Version 2, June 1991 (in the distribution as file licence.html,
9    *  and also available at http://gate.ac.uk/gate/licence.html).
10   *
11   *  Cristian URSU, 24/Jan/2001
12   *
13   *  $Id: AbstractVisualResource.java,v 1.11 2001/11/12 18:54:50 kalina Exp $
14   */
15  
16  package gate.creole;
17  
18  import javax.swing.JPanel;
19  
20  
21  import gate.*;
22  import gate.util.*;
23  import gate.gui.Handle;
24  
25  import java.beans.*;
26  import java.util.*;
27  import java.lang.reflect.*;
28  
29  /** A convenience implementation of VisualResource with some default code. */
30  public abstract class AbstractVisualResource extends JPanel
31                                               implements VisualResource{
32  
33    /**
34     * Package access constructor to stop normal initialisation.
35     * This kind of resources should only be created by the Factory class
36     */
37    public AbstractVisualResource(){
38    }
39  
40    /** Accessor for features. */
41    public FeatureMap getFeatures(){
42      return features;
43    }//getFeatures()
44  
45    /** Mutator for features*/
46    public void setFeatures(FeatureMap features){
47      this.features = features;
48    }// setFeatures()
49  
50    /** Initialise this resource, and return it. */
51    public Resource init() throws ResourceInstantiationException {
52      return this;
53    }//init()
54  
55    /** Does nothing now, but meant to clear all internal data **/
56    public void cleanup() {
57    }//clear()
58  
59    /**
60     * Called by the GUI when this viewer/editor has to initialise itself for a
61     * specific object.
62     * @param target the object (be it a {@link gate.Resource},
63     * {@link gate.DataStore} or whatever) this viewer has to display
64     */
65    public void setTarget(Object target){
66      throw new RuntimeException(
67        "Class " + getClass() + " hasn't implemented the setTarget() method!");
68    }
69  
70  
71    /**
72     * Used by the main GUI to tell this VR what handle created it. The VRs can
73     * use this information e.g. to add items to the popup for the resource.
74     */
75    public void setHandle(Handle handle){
76    }
77  
78    //Parameters utility methods
79    /**
80     * Gets the value of a parameter of this resource.
81     * @param paramaterName the name of the parameter
82     * @return the current value of the parameter
83     */
84    public Object getParameterValue(String paramaterName)
85                  throws ResourceInstantiationException{
86      return AbstractResource.getParameterValue(this, paramaterName);
87    }
88  
89    /**
90     * Sets the value for a specified parameter.
91     *
92     * @param paramaterName the name for the parameteer
93     * @param parameterValue the value the parameter will receive
94     */
95    public void setParameterValue(String paramaterName, Object parameterValue)
96                throws ResourceInstantiationException{
97      // get the beaninfo for the resource bean, excluding data about Object
98      BeanInfo resBeanInf = null;
99      try {
100       resBeanInf = Introspector.getBeanInfo(this.getClass(), Object.class);
101     } catch(Exception e) {
102       throw new ResourceInstantiationException(
103         "Couldn't get bean info for resource " + this.getClass().getName()
104         + Strings.getNl() + "Introspector exception was: " + e
105       );
106     }
107     AbstractResource.setParameterValue(this, resBeanInf, paramaterName, parameterValue);
108   }
109 
110   /**
111    * Sets the values for more parameters in one step.
112    *
113    * @param parameters a feature map that has paramete names as keys and
114    * parameter values as values.
115    */
116   public void setParameterValues(FeatureMap parameters)
117               throws ResourceInstantiationException{
118     AbstractResource.setParameterValues(this, parameters);
119   }
120 
121   // Properties for the resource
122   protected FeatureMap features;
123 
124 }//AbstractVisualResource